• Home
  • History
  • Annotate
  • only in /external/clang/include/clang/
History log of /external/clang/include/clang/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4ac73c7514f9e836b4d9781738f333c5cb91cb63 08-Aug-2013 Stephen Hines <srhines@google.com> Merge commit '51e75aecf4fb303b91c9e54fd88e3509e5acc7a6' into merge-20130807

Conflicts:
lib/Basic/Targets.cpp
lib/Sema/SemaDeclAttr.cpp

Change-Id: If457223ecbee9e43c73d15333bf10d36590d05c4
a7b879723d3989d85b9492fd8218e7d745367fe3 07-Aug-2013 Jordan Rose <jordan_rose@apple.com> Eliminate CXXConstructorDecl::IsImplicitlyDefined.

This field is just IsDefaulted && !IsDeleted; in all places it's used,
a simple check for isDefaulted() is superior anyway, and we were forgetting
to set it in a few cases.

Also eliminate CXXDestructorDecl::IsImplicitlyDefined, for the same reasons.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
909930fc19ff69b08f2ea6f6e2996d24c816f311 07-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Use .obj as object file extension instead of .o

Differential Revision: http://llvm-reviews.chandlerc.com/D1302

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187840 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Types.h
ab50ccd7f756a1e617ebd32471ba9565bb240d37 07-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Implement support for the /Fo option

This implements support for the /Fo option, which is used
to set the filename or output dir for object files.

Differential Revision: http://llvm-reviews.chandlerc.com/D1302

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/CLCompatOptions.td
acdbbc7811c6045a718669a8a0740488edbbbd66 06-Aug-2013 Richard Trieu <rtrieu@google.com> Add a new warning to -Wloop-analysis to detect suspicious increments or
decrements inside for loops. Idea for this warning proposed in PR15636:

http://llvm.org/bugs/show_bug.cgi?id=15636


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3151b7c6dd49947b0a91b3e22c31f4864629e355 06-Aug-2013 Larisse Voufo <lvoufo@google.com> Fixing commit r187768: Moved diagnosis of forward declarations of variable templates from Parser to Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
06935f32645c8965e398bbd141f9800eacdfd439 06-Aug-2013 Larisse Voufo <lvoufo@google.com> Moved diagnosis of forward declarations of variable templates from Parser to Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
70ed2db10ca6f5e5556e1ca09bb35aa116b26a7f 06-Aug-2013 NAKAMURA Takumi <geek4civic@gmail.com> AST/DeclTemplate.h: Possibly fix a warning. [-Wuninitialized]

FIXME: Would '0' be an appropriate value in SequenceNumber?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ef4579cda09b73e3d4d98af48201da25adc29326 06-Aug-2013 Larisse Voufo <lvoufo@google.com> Started implementing variable templates. Top level declarations should be fully supported, up to some limitations documented as FIXMEs or TODO. Static data member templates work very partially. Static data member templates of class templates need particular attention...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187762 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ASTMutationListener.h
ST/Decl.h
ST/DeclTemplate.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/TemplateKinds.h
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
erialization/ASTWriter.h
4c587532e108725e38c5546976ee81c8bea04bb7 06-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: Implement the /Tc, /TC, /Tp and /TP options.

These are used to specify source files, and whether to treat source
files as C or C++.

Differential Revision: http://llvm-reviews.chandlerc.com/D1290

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/CLCompatOptions.td
056ec12ca14ee5014ea49786f719ceaa299a7e19 05-Aug-2013 Daniel Jasper <djasper@google.com> Add option to disable module loading.

This patch was created by Lawrence Crowl and reviewed in:
http://llvm-reviews.chandlerc.com/D963

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187738 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ex/HeaderSearchOptions.h
0e2189791acf7fcec4f1b32af24efb2d363f30c1 05-Aug-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++'s restrictions on the type of an expression passed to a vararg
function: it can't be 'void' and it can't be an initializer list. We give a
hard error for these rather than treating them as undefined behavior (we can
and probably should do the same for non-POD types in C++11, but as of this
change we don't).

Slightly rework the checking of variadic arguments in a function with a format
attribute to ensure that certain kinds of format string problem (non-literal
string, too many/too few arguments, ...) don't suppress this error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187735 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6f4f8083931a92f9959168d4430da7ddf9183100 03-Aug-2013 Craig Topper <craig.topper@gmail.com> Add support for passing -1 to __builtin_shufflevector to signify an undefined element value to match IR capabilities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a1c50a1f55086cda654a903abd4ce1908e580faa 03-Aug-2013 Hans Wennborg <hans@hanshq.net> Options.td: remove _DASH_DASH

Since LLVM r187675, this is handled by the option parsing code itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187689 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
09c3463441ffca4bde5e8612222f8cc6ae0ec9a5 03-Aug-2013 Hans Wennborg <hans@hanshq.net> Re-commit r187637: "clang-cl: add more options"

> This adds a bunch of options to clang-cl. Notably, this includes
> all the options that get passed when doing a default build of a
> command-line project with msbuild.exe in Debug and Release modes,
> and I believe all flags from Reid's original patch.

The original commit was reverted in r187640 after it broke the Mac build.

This should now be fixed, by Clang r187668, LLVM r187675, and putting
a -- before %s in the test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187679 91177308-0d34-0410-b5e6-96231b3b80d8
river/CLCompatOptions.td
e490705e6678a2e830cecacbe8142d9b369d8341 02-Aug-2013 Manuel Klimek <klimek@google.com> Implement Allman style.

Patch by Frank Miller.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187678 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
8d3794e06a63578093bd71c3c2520bd01e6197a3 02-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator: Add another family of factory
methods which can be migrated to instancetype.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
0694ad996a492d5bed3e12ae3076e35eadc3785e 02-Aug-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix missing * making the C++ mode thing not work

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
f647b69147c6e640bbccf501783fafc495bbefb2 02-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator: Fixes public buildbot failures,
in my previous patch which was reverted in r187657


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187661 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
6803dbe1ec26539395951b75acbe595ad3e8cc8e 02-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> revert patch I added in r187655. It still breaks public
buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187657 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
906c7f78ee9026c1dc40e062667341f1dd194959 02-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migration. Check-in patch reverted in r187634.
Also removed check for "NS" prefix for class name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187655 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
e7a9a67f9842dcdc13d322a23110f42bd025a306 02-Aug-2013 Hans Wennborg <hans@hanshq.net> Revert r187537 "clang-cl: add more options"

It broke the "phase1 - sanity" buildbot. Reverting until
we can figure out what's going on.

And Eric says it broke all current Mac builds actually.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187640 91177308-0d34-0410-b5e6-96231b3b80d8
river/CLCompatOptions.td
1888b910a5512262228e785cc9caf90296c06a45 02-Aug-2013 Richard Smith <richard-llvm@metafoo.co.uk> When merging redeclaration chains across modules, if a declaration is visible
in one module but is only declared as a friend in another module, keep it
visible in the result of the merge.

This is incomplete on two axes:

1) Our handling of local extern declarations is basically broken (we put them
in the wrong decl context, and don't find them in redeclaration lookup, unless
they've previously been declared), and this results in them making friends
visible after a merge.

2) Eventually we'll need to mark that this has happened, and more carefully
check whether a declaration should be visible if it was only visible in some
of the modules in which it was declared. Fortunately it's rare for the
identifier namespace of a declaration to change along its redeclaration chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
erialization/ASTReader.h
ac8b5f53d4646b4f76565a03ae2a85b6c67cdcc1 02-Aug-2013 Hans Wennborg <hans@hanshq.net> clang-cl: add more options

This adds a bunch of options to clang-cl. Notably, this includes
all the options that get passed when doing a default build of a
command-line project with msbuild.exe in Debug and Release modes,
and I believe all flags from Reid's original patch.

Differential Revision: http://llvm-reviews.chandlerc.com/D1264

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187637 91177308-0d34-0410-b5e6-96231b3b80d8
river/CLCompatOptions.td
cd683986e991f0e60afd6bc6f336cfc1fd844193 02-Aug-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert "ObjectiveC migrator. Migrate to instancetype return type for mehods with certain prefix selector matching their class names' suffix."

This reverts commit r187626.

It is breaking the bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
59944677b0576c19a08db92a6b45619077a00baa 02-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator. Migrate to instancetype return type
for mehods with certain prefix selector matching their class names'
suffix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
0fda0f75f053ad9afdb2bb8d4ea72c5e6a49d657 01-Aug-2013 Rafael Espindola <rafael.espindola@gmail.com> Use llvm::sys::fs::UniqueID for windows and unix.

This unifies the unix and windows versions of FileManager::UniqueDirContainer
and FileManager::UniqueFileContainer by using UniqueID.

We cannot just replace "struct stat" with llvm::sys::fs::file_status, since we
want to be able to construct fake ones, and file_status has different members
on unix and windows.

What the patch does is:

* Record only the information that clang is actually using.
* Use llvm::sys::fs::status instead of stat and fstat.
* Use llvm::sys::fs::UniqueID
* Delete the old windows versions of UniqueDirContainer and
UniqueFileContainer since the "unix" one now works on windows too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/FileSystemStatCache.h
60704acfbdae5d4c95caf042b3fb73f8da7e6122 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Options.td: O0 and O4 are not Joined options

(I'm not sure how to test this because the Driver will still accept
e.g. "-O4foo", but it goes in the catch-all -O option instead of -O4.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187602 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
05c06c069a748cfe97259fec6b8e54028ba7aadf 01-Aug-2013 Joey Gouly <joey.gouly@arm.com> Fix typo in comment.

Thanks Artyom Skrobov!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f10fa8d04773410860cd347aebf77c27434aaf26 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Options: Use AliasArgs for -O -> -O2 translation.

This way we can do the translation in the .td file rather than manually.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187583 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b793f0d3448a15277cd6b6cc4ba558ded39a8084 01-Aug-2013 Tim Northover <tnorthover@apple.com> AArch64: initial NEON support

Patch by Ana Pazos

- Completed implementation of instruction formats:
AdvSIMD three same
AdvSIMD modified immediate
AdvSIMD scalar pairwise

- Completed implementation of instruction classes
(some of the instructions in these classes
belong to yet unfinished instruction formats):
Vector Arithmetic
Vector Immediate
Vector Pairwise Arithmetic

- Initial implementation of instruction formats:
AdvSIMD scalar two-reg misc
AdvSIMD scalar three same

- Intial implementation of instruction class:
Scalar Arithmetic

- Initial clang changes to support arm v8 intrinsics.
Note: no clang changes for scalar intrinsics function name mangling yet.

- Comprehensive test cases for added instructions
To verify auto codegen, encoding, decoding, diagnosis, intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsAArch64.def
asic/TargetBuiltins.h
asic/arm_neon.td
ema/Sema.h
789d82a568264543410a3bf0c2c431ccc11d5d1d 01-Aug-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> Check dynamic_cast is not used with -fno-rtti, unless it is a noop or can be resolved statically.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d145ce71fbe25c578f7d6a56320b64abf808ba78 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Remove the SUPPORT_ALIASARGS define

It is not needed after LLVM r187546.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187550 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.h
river/Options.h
893ea8d0a6420591d966fa0e7135e510b1523b57 01-Aug-2013 Daniel Jasper <djasper@google.com> clang-format: Make alignment of trailing comments optional ..

.. in order to support WebKit style properly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187549 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
b087a5d13d6edd8b54fbb0683d6b9d1768a86c47 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Make -m[no-]pascal-strings an alias of -f[no]pascal-strings in the .td file

This way we don't have to translate it manually in Clang::ConstructJob.

Differential Revision: http://llvm-reviews.chandlerc.com/D1249

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187547 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
3d672e4aa51fcf231de5d5283b1ee3f6c6a79e8c 01-Aug-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC ARC: finishing off issuing error when
retainable pointer is passed to an audited CF function
expecting CF type. // rdar://14569171


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
eff18b9b6f1218a6bbe4869989b08867823a4e75 01-Aug-2013 Daniel Jasper <djasper@google.com> clang-format: Add more options to namespace indentation.

With this patch, clang-format can be configured to:
* not indent in namespace at all (former behavior).
* indent in namespace as in other blocks.
* indent only in inner namespaces (as required by WebKit style).

Also fix alignment of access specifiers in WebKit style.

Patch started by Marek Kurdej. Thank you!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187540 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
438292860a49f6998dff4db0b9ff04bcc0d5ae33 01-Aug-2013 Hans Wennborg <hans@hanshq.net> Option parsing tables: pick up AliasArgs from the OPTION macro.

This depends on LLVM r187537.

The SUPPORT_ALIASARGS macro will be removed once all option parsing
clients have been updated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187538 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.h
river/Options.h
01ad048b70508bf21174cd25512b57f87b7c57a6 31-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC ARC: Do not issue bridge cast diagnostic when
passing a retainable object arg to a CF audited function
expecting a CF object type. Issue a normal type mismatch
diagnostic. This is wip // rdar://14569171


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187532 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
78d0fbfe3aa0dcf158fed95a51460e5d769447ee 31-Jul-2013 Hans Wennborg <hans@hanshq.net> clang-cl: add the /c, /W0 and /W1 options

This adds a few more clang-cl options. It also exposes two core clang
options to the clang-cl mode: we need to be able to claim --driver_mode
so it doesn't show up as unused in cl mode, and we need -### for tests.

Differential Revision: http://llvm-reviews.chandlerc.com/D1232

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187527 91177308-0d34-0410-b5e6-96231b3b80d8
river/CLCompatOptions.td
river/Options.h
river/Options.td
2651b7a44d1db7c2a9fe70689e0708394c343a7e 31-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC arc: Introduce a new initialization kind
for parameters passed to CF audited functions
to be used for better diagnostics. Current set but
unused. // rdar://14569171


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187508 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
baaeb85f07640794f6a4fabb871e33deeab07df2 31-Jul-2013 Kaelyn Uhrain <rikka@google.com> Improve the diagnostic experience, including adding recovery, for
changing '->' to '.' when there is no operator-> defined for a class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187504 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
afb90df95223a2b48f22a3d950328d1d915691f5 31-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix read of uninitialized enum value in test, caught by UBSan. No functionality
change, other than removal of undefined behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187465 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
6365ab91a0cf2f20c73ea9c39b55c14ab438018e 30-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Start keeping track of what work was done to detect a GCC installation
on the system, and report it when running the driver in verbose mode.
Without this it is essentially impossible to understand why a particular
GCC toolchain is used by Clang for libstdc++, libgcc, etc.

This also required threading a hook through the toolchain layers for
a specific toolchain implementation to print custom information under
'clang -v'. The naming here isn't spectacular. Suggestions welcome.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187427 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
750f73aadcfb9810a5825fd57325e310042e5617 30-Jul-2013 Aaron Ballman <aaron@aaronballman.com> err_attribute_missing_parameter_name has been replaced by err_attribute_argument_type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9f939f75c64770c746d78579f75a49f9c657e426 30-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Replacing err_attribute_argument_not_int with err_attribute_not_type_attr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187419 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
635de28950ef84ae26308ff734e778bad1ddde92 30-Jul-2013 Timur Iskhodzhanov <timurrrr@google.com> Add MicrosoftVFTableContext to AST

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187409 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
201bddcfeb53db9f0c84df46ec4afccc65286e5c 30-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Added the notion of Type and TargetSpecific attributes to the clang tablegen. In turn, this fixes a mistake with Ptr32, Ptr64, UPtr and SPtr attribtues generating AST nodes that are never actually used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187401 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
3cd6feb87a62fb52c31cbc83655d76ace020513f 30-Jul-2013 Aaron Ballman <aaron@aaronballman.com> err_attribute_not_string has been subsumed by err_attribute_argument_type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187400 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
aefb1d3312a63ac8d289a2e84747fe61a7f61823 29-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Convert a use of stat with sys::fs::status.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
6981330cc231e4e2ccbd38679209e04b776483eb 27-Jul-2013 Hans Wennborg <hans@hanshq.net> clang-cl: add support for the /? and /help options

This establishes a new Flag in Options.td, which can be assigned to
options that should be made available in clang's cl.exe compatible
mode, and updates the Driver to make use of the flag.

(The whitespace change to CMakeLists forces the build to re-run CMake
and pick up the include dependency on the new .td file. This makes the
build work if someone moves backwards in commit history after this change.)

Differential Revision: http://llvm-reviews.chandlerc.com/D1215

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187280 91177308-0d34-0410-b5e6-96231b3b80d8
river/CLCompatOptions.td
river/Driver.h
river/Makefile
river/Options.h
river/Options.td
b28b04407e6ed06431cb58176268ab719e01fae8 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: rename CCC{Driver,Debug}Opt to Internal{Driver,Debug}Opt

Also rename ccc_Group, ccc_driver_Group and ccc_Debug_Group similarly.

Differential Revision: http://llvm-reviews.chandlerc.com/D1218

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187239 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b16bb3535948c27139753f4e4627008560cfcaf5 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: remove a_Group and L_Group.

They don't seems to serve any purpose.

Differential Revision: http://llvm-reviews.chandlerc.com/D1227

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187236 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c5ae717c2b774bfce6bce4bb51072f664b2d54aa 26-Jul-2013 Daniel Jasper <djasper@google.com> Add matcher for float literals.

Patch by Chris Gray! Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187232 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
6cf69140a4d6d32802b015611833cdab1864bc15 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: Update HelpText of CCCDriverOpt

This should have been part of r186720.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187218 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e8b10d3d5b90efaf60ad89e96f6500f971ceec41 26-Jul-2013 Daniel Jasper <djasper@google.com> clang-format: Add two new style options to support WebKit style.

New options:
* Break before the commas of constructor initializers and align
the commas with the colon.
* Break before binary operators

Additionally, for styles without column limit, don't just accept
linebreaks done by the user, but instead remove 'invalid' (according
to the current style) linebreaks and add 'required' ones.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187210 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
76b5dd48c9dbf2ed3e5830060ea55b81b7d1cca0 26-Jul-2013 Pavel Labath <labath@google.com> [analyzer] Fix FP warnings when binding a temporary to a local static variable

Summary:
When binding a temporary object to a static local variable, the analyzer would
complain about a dangling reference even though the temporary's lifetime should
be extended past the end of the function. This commit tries to detect these
cases and construct them in a global memory region instead of a local one.

Reviewers: jordan_rose

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1133

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187196 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
1652ed1cd2cb63e0d0cb74c67a40d9dc5cab6b89 26-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Tighten type-checking for vector attributes.

Based on patch by Yunzhong Gao.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
34f3bcf7f2907f618f7a10d919bda47e53db60dd 26-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Partially revert r186903.

It turns out that Plum Hall depends on us not emitting an error on
integer literals which fit into long long, but fit into
unsigned long long. So C99 conformance requires not conforming to C99. :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187172 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
6931b4da1f586d72d26773b57c55fb18da641566 26-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Move friend warning into CXX11 warning group.

Also, fix the wording to reflect this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187171 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
19caff4f9a38c23bffdc8ff801a36026ab61ebd7 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: fold the NoForward flag into DriverOption

They seemed to have the same implications, and this makes for one
less flag to worry about.

Differential Revision: http://llvm-reviews.chandlerc.com/D1219

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187168 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
river/Options.td
b775100fea6d8955149897dae1adca50ca471d17 26-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> When we perform dependent name lookup during template instantiation, it's not
sufficient to only consider names visible at the point of instantiation,
because that may not include names that were visible when the template was
defined. More generally, if the instantiation backtrace goes through a module
M, then every declaration visible within M should be available to the
instantiation. Any of those declarations might be part of the interface that M
intended to export to a template that it instantiates.

The fix here has two parts:

1) If we find a non-visible declaration during name lookup during template
instantiation, check whether the declaration was visible from the defining
module of all entities on the active template instantiation stack. The defining
module is not the owning module in all cases: we look at the module in which a
template was defined, not the module in which it was first instantiated.

2) Perform pending instantiations at the end of a module, not at the end of the
translation unit. This is general goodness, since it significantly cuts down
the amount of redundant work that is performed in every TU importing a module,
and also implicitly adds the module containing the point of instantiation to
the set of modules checked for declarations in a lookup within a template
instantiation.

There's a known issue here with template instantiations performed while
building a module, if additional imports are added later on. I'll fix that
in a subsequent commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187167 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/Module.h
ema/Lookup.h
ema/Sema.h
d78aef1f8339fbe6784bf1628dcec19ca1af2b6c 26-Jul-2013 Hans Wennborg <hans@hanshq.net> Options.td: finish comment about CompileOnly_Group

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187163 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
73168db4feadbb5e8915e71369aad33292860427 25-Jul-2013 David Blaikie <dblaikie@gmail.com> Don't forward all assembler arguments untouched to -cc1as

Use the same filtering for assembly arguments to -cc1as as we do for
-cc1, this allows a consistent (& more useful) diagnostic experience for
users (rather than getting an error from -cc1as (which a user shouldn't
really be thinking about) about --foo, they get an error from clang
about --foo in -Wa,)

I'm sort of surprised by the separation of -cc1as & the separate
argument handling, etc, but at least this removes a little bit of the
duplication.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187156 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
7185d6272b8dc75d5492a6ea0ed43d7631554b61 25-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the mblaze backend from clang.

Approval in here http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/064169.html

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
4c7736ec76fb35fe83eb4144137cf14df1c6d056 24-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> Sema: Minor const fixups and control flow tidying.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187047 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
6de440e1989ee7932c942dcba85e862c31bf4604 24-Jul-2013 Samuel Benzaquen <sbenza@google.com> Add support for Adaptative matchers on the dynamic registry.

Summary:
Add support for Adaptative matchers on the dynamic registry.
Each adaptative matcher is created with a function template. We instantiate the function N times, one for each possible From type and apply the techniques used on argument overloaded and polymorphic matchers to add them to the registry.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1201

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187044 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
e05dc6d1b5eb12d47c8d3cb5120452ceef720568 24-Jul-2013 Daniel Jasper <djasper@google.com> clang-format: Initial (incomplete) support for the WebKit coding style.

This is far from implementing all the rules given by
http://www.webkit.org/coding/coding-style.html

The important new feature is the support for styles that don't have a
column limit. For such styles, clang-format will (at the moment) simply
respect the input's formatting decisions within statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187033 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
03ce5f8c68f55405db6001e82bdb18581d0dadce 24-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: track object lifetime during constexpr evaluation, and don't allow
objects to be used once their lifetimes end. This completes the C++1y
constexpr extensions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187025 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
11638f7b922aa0182ab2028ec819001ed2fe8085 24-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: more knobs toward doing
instancetype migration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187000 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
75fcef9a16e98b95fa980f1b2c4fc0d4090955d8 23-Jul-2013 Hans Wennborg <hans@hanshq.net> Remove HelpText for -fno-diagnostics-show-note-include-stack

The help text was wrong, and we already provide help text on the
option that actually changes anything, i.e. -fdiagnostics-show-note-include-stack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186989 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
679efe14c65492c74eaa6dc98671abcdbfac8da8 23-Jul-2013 Richard Trieu <rtrieu@google.com> Changed "an macro" to "a macro" in diagnostic note.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
8d09216f13478b20f9d9088af22146e28c0cc4ce 23-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: Define family of methods
which are candidate for migrating to
'instancetype'. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186981 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
baec77865b3ce64bb942dddc5dc2fada84ce5099 23-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Added the attribute name to the err_attribute_wrong_number_arguments diagnostic for clarity; updated almost all of the affected test cases.

Thanks to Fariborz Jahanian for the suggestion!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e673f8f2412437b83b57a4abdb2c06974bad0bd 23-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Removed useless source loc field in UnresolvedUsingTypenameDecl node.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5940bf33061844c9a61d4d5c1230df9cf9e90342 23-Jul-2013 Richard Trieu <rtrieu@google.com> Add new diagnostic messages when too many arguments are presented to a
function-like macro. Clang will attempt to correct the arguments by detecting
braced initializer lists:

1) If possible, suggest parentheses around arguments
containing braced lists which will give the proper number of arguments.
2) If a braced list is detected at the start of a macro argument, it cannot be
corrected by parentheses. Instead, just point out the location of these
braced lists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186971 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticLexKinds.td
7d3240d3c949b8d0697a23a202cceba4d1a2d21f 23-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the -ccc-echo option that is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186970 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.td
3a16aa968ca357ec34437bbfa1462f4cb5f5e3a4 23-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove unused diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186955 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
73883c3d9bf1a03e5c0240e5a8755d5bea07c386 23-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Removed a redundant diagnostic and replaced it with a more standard one. Added a test case for the diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186942 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
437d43fa2c8e338de3285f4028f0578ddd1b8f80 23-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Consolidate several attribute argument diagnostics into a single, selectable diagnostic. This makes the diagnostic more consistent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5 23-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y literal suffix support:
* Allow ns, us, ms, s, min, h as numeric ud-suffixes
* Allow s as string ud-suffix


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ex/Lexer.h
ex/LiteralSupport.h
e6c8afcf449728a5096834393fc4a1acfad9b49d 23-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Error on more illegal kernel argument types for OpenCL

bool, half, pointers and structs / unions containing any
of these are not allowed. Does not yet reject size_t and
related integer types that are also disallowed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186908 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b3da613977f6b77dee2b382eeff5713168a4ca18 23-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Integers which are too large should be an error.

Switch some warnings over to errors which should never have been warnings
in the first place. (Also, a minor fix to the preprocessor rules for
integer literals while I'm here.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
264d206244bde858471e4b6211aeba28fd8ce7cb 23-Jul-2013 Eli Bendersky <eliben@google.com> Add a -fno-math-builtin option to the Clang -cc1


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186899 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
asic/LangOptions.def
river/Options.td
b22d19493d479bf3ed6e5e60bfcf7047823da7fc 22-Jul-2013 Douglas Gregor <dgregor@apple.com> Make modules depend on the compiler's own module.map, as a proxy for the compiler itself.

The headers in the compiler's own resource include directory are
system headers, which means we don't stat() them eagerly when loading
a module. Use module.map as a proxy for these headers and the compiler
itself. Fixes <rdar://problem/13856838>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186870 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
0474cfdba79f8a89016fbcdc4f7d8aabe00f9456 22-Jul-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Only disable ARC in the second compilation if there were actually ARC errors in the checking phase.

rdar://14490204

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186850 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
0e1896a753845deee5206b28cdbde1640abb9cac 22-Jul-2013 Samuel Benzaquen <sbenza@google.com> Add support for overloaded matchers. ie different matcher function signatures with the same name.

Summary:
Add support for overloaded matchers.
This composes with other features, like supporting polymorphic matchers.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1188

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186836 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersMacros.h
STMatchers/Dynamic/Diagnostics.h
a4130baad9d10b7feabb7e003da53424e986d269 22-Jul-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Emit linkonce complete dtors in TUs that need them

Based on Peter Collingbourne's destructor patches.

Prior to this change, clang was considering ?1 to be the complete
destructor and the base destructor, which was wrong. This lead to
crashes when clang tried to emit two LLVM functions with the same name.

In this ABI, TUs with non-inline dtors might not emit a complete
destructor. They are emitted as inline thunks in TUs that need them,
and they always delegate to the base dtors of the complete class and its
virtual bases. This change uses the DeferredDecls machinery to emit
complete dtors as needed.

Currently in clang try body destructors can catch exceptions thrown by
virtual base destructors. In the Microsoft C++ ABI, clang may not have
the destructor definition, in which case clang won't wrap the virtual
virtual base destructor calls in a try-catch. Diagnosing this in user
code is TODO.

Finally, for classes that don't use virtual inheritance, MSVC always
calls the base destructor (?1) directly. This is a useful code size
optimization that avoids emitting lots of extra thunks or aliases.
Implementing it also means our existing tests continue to pass, and is
consistent with MSVC's output.

We can do the same for Itanium by tweaking GetAddrOfCXXDestructor, but
it will require further testing.

Reviewers: rjmccall

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1066

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186828 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetCXXABI.h
cfa18eacafce73cd35b21ce10a2c5328378647f0 22-Jul-2013 Reid Kleckner <reid@kleckner.net> Forward declare OMPClause in Sema.h to avoid an include

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186824 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b9a5935c58a3bc78c4a511ee77ad2f0c4ca29dc1 22-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Implement the part of C89 6.5.7 p3 requiring a constant initializer list
when initializing aggregate/union types, no matter if static or not.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d030c7a6f36438f6c7dd977f8be0de0cc781ad5 22-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Improve clarity/consistency of a few UsingDecl methods and related helpers.
No functionality change.

In Sema helper functions:
* renamed isTypeName as HasTypenameKeyword
In UsingDecl:
* renamed get/setUsingLocation to get/setUsingLoc
* renamed is/setTypeName as has/setTypename



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
cbc820af7193e3ad9c71fbe6e3c8bd3c1166e540 22-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement DR257 / fix PR16659:
A constructor for an abstract class does not call constructors for virtual
base classes, so it is not an error if no initializer is present for the
virtual base and the virtual base cannot be default initialized.

Also provide a (disabled by default, for now) warning for the case where a
virtual base class's initializer is ignored in an abstract class's constructor,
and address a defect in DR257 where it was not carried through to C++11's rules
for implicit deletion of special member functions.

Based on a patch by Maurice Bos.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186803 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
ddcff1b310b80b63f1a9ba88f2befeab40c3648f 22-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Tighten up the set of operator new/operator delete calls we're permitted to
optimize, to follow the permissions granted in N3664. Under those rules, only
calls generated by new-expressions and delete-expressions are permitted to be
optimized, and direct calls to ::operator new and ::operator delete must be
treated as normal calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186799 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1169e2fa84939325bdf1d0f558c63e87404a6b57 21-Jul-2013 Robert Wilhelm <robert.wilhelm@gmx.net> Convert Sema::MatchTemplateParametersToScopeSpecifier to ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186794 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0189fd61ec72d86e008aa5615be80581f84cf703 20-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Added preproc callback for pragma directives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186770 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/Preprocessor.h
1d3ce65c190ef287ae3fa7bdff7f3621fd53b151 20-Jul-2013 Lubos Lunak <l.lunak@suse.cz> add type attribute warn_unused, for -Wunused-variable warnings (pr#14253)

The functionality is equivalent to the GCC attribute. Variables of tagged
types will be warned about as unused if they are not used in any way
except for possible (even non-trivial) ctors/dtors called. Useful for tagging
classes like std::string (which is not part of this commit).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
cfaa5525b8eea6c5f7767010e04e323f76bed1ab 20-Jul-2013 David Majnemer <david.majnemer@gmail.com> DiagnosticIDs: Forbid Diag ID from being valid

Diag ID is used throughout clang as a sentinel id meaning "this is an
invalid diagnostic id." Confusingly, Diag ID maps to a valid, usable,
diagnostic id. Instead, start diagnostic ids at ID one.

Incidently, remove an unused element from StaticDiagInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
a5e660188a3c654cf0c88ed1093b28207e870b2b 20-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Make IgnoreParens() look through ChooseExprs.

This is the same way GenericSelectionExpr works, and it's generally a
more consistent approach.

A large part of this patch is devoted to caching the value of the condition
of a ChooseExpr; it's needed to avoid threading an ASTContext into
IgnoreParens().

Fixes <rdar://problem/14438917>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186738 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ST/Expr.h
4384712b3a0aedd7c68d6abdb0407850f7b46c8b 20-Jul-2013 Larisse Voufo <lvoufo@google.com> FIXME fix: improving diagnostics for template arguments deduction of class templates and explicit specializations
This patch essentially removes all the FIXMEs following calls to DeduceTemplateArguments() that want to keep track of deduction failure info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186730 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ema/Sema.h
ema/TemplateDeduction.h
8c5d4078bb40642847164e7613828262d32db973 20-Jul-2013 Larisse Voufo <lvoufo@google.com> Revert "Use function overloading instead of template specialization for diagnosis of bad template argument deductions."

This reverts commit a730f548325756d050d4caaa28fcbffdae8dfe95.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186729 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ema/Sema.h
ema/TemplateDeduction.h
a730f548325756d050d4caaa28fcbffdae8dfe95 20-Jul-2013 Larisse Voufo <lvoufo@google.com> Use function overloading instead of template specialization for diagnosis of bad template argument deductions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186727 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ema/Sema.h
ema/TemplateDeduction.h
c2f531a1300cc7a79cb8dde12cb993da82beba1b 19-Jul-2013 Hans Wennborg <hans@hanshq.net> Add a cl.exe compatible driver mode

The mode doesn't actually do anything yet, but this provides a
way to get into it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186720 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
2f5a23103f691b1bf7522494fabeaa8f7bd7122b 19-Jul-2013 Samuel Benzaquen <sbenza@google.com> Add support for raw_ostream on the printing methods of Diagnostics.

Summary:
Add printToStream*(llvm::raw_ostream&) methods to Diagnostics, and reimplement everything based on streams instead of concatenating strings.
Also, fix some functions to start with lowercase to match the style guide.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1187

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186715 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/Dynamic/Diagnostics.h
5b92696c8f1f8ef943ad87397b95c031b5787305 19-Jul-2013 Reid Kleckner <reid@kleckner.net> Create calling convention AttributedType sugar nodes

Canonical types are unchanged. The type printer had to be changed to
avoid printing any non-default implicit calling convention as well as
the calling convention attribute.

Reviewers: rjmccall

Differential Revision: http://llvm-reviews.chandlerc.com/D1132

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
cdbc3b36bd6167fcb1e2de080e0d9bcd35b166ea 19-Jul-2013 Akira Hatanaka <ahatanaka@mips.com> [mips] Add support for command-line options -mno-check-zero-division and
-mcheck-zero-division.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186710 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
fe6dec6efaf860ed3eb20ee13267f35129f7747a 19-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Replace some existing type attribute diagnostics with a
single diagnostic that selects. No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6fb63ab0c74bb777772a3c3ecec09799e275599a 19-Jul-2013 John Thompson <John.Thompson.JTSoftware@gmail.com> Add SourceRange to PPCallbacks::Defined callback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186707 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
de9ed71c696bee936a21323f61548164de0eda13 19-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Fix source range of implicitly instantiated friend declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186702 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
8b1f2f9d36faf28028d232c3a5943c433d63c0e7 19-Jul-2013 Manuel Klimek <klimek@google.com> Allow clang tools to display an overview when using the CommonOptionsParser.

Patch by Guillaume Papin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186671 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CommonOptionsParser.h
46fa4c355bd45197dff580b63240494a53b16c1d 19-Jul-2013 Manuel Klimek <klimek@google.com> Adds overlapsWith and contains predicates on tooling::Range.

Patch by Guillaume Papin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186670 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
06963013d1972f1f7a58875bb40976b60522700b 19-Jul-2013 Manuel Klimek <klimek@google.com> Adds ctorInitializer and forEachConstructorInitializer matchers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186668 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
5806bb59d2d19a9b32b739589865d8bb1e2627c5 19-Jul-2013 NAKAMURA Takumi <geek4civic@gmail.com> StmtOpenMP.h: Prune a stray \param in the comment of OMPExecutableDirective(). [-Wdocumentation]

- /// \param Clauses A list of clauses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtOpenMP.h
7a8918fe69d419c41956a7245874b0196e03127b 19-Jul-2013 NAKAMURA Takumi <geek4civic@gmail.com> StmtOpenMP.h: Fix bogus \param(s). [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186664 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtOpenMP.h
4fa7eab771ab8212e1058bd1a91061ff120c8fbb 19-Jul-2013 Alexey Bataev <a.bataev@hotmail.com> OpenMP: basic support for #pragma omp parallel


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/StmtOpenMP.h
ST/StmtVisitor.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/OpenMPKinds.def
asic/OpenMPKinds.h
asic/StmtNodes.td
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
ac7cc2d37e82181e73fcc265c1d0a619d18b7605 19-Jul-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Include analysis stack in crash traces.

Sample output:

0. Program arguments: ...
1. <eof> parser at end of file
2. While analyzing stack:
#0 void inlined()
#1 void test()
3. crash-trace.c:6:3: Error evaluating statement

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186639 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
cd37a0b6bbd8d46af116c72537e2129e4a077e5e 19-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Fix crash-on-invalid with inheriting constructor.

Fixes PR16656.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c4ef9485252c6a408acb70aac5a153dcd9d860c7 19-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Clean up diagnostics for inheriting constructors.

No new diagnostics, just better wording and notes pointing at more
relevant locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
44b41b12a44d74341fe7d241bfdf57847b728a62 19-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migrator: Remove semicolon after the typedef
declaration when converting to NS_ENUM. This required
some code refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186619 91177308-0d34-0410-b5e6-96231b3b80d8
dit/Rewriters.h
76b86c2e79a58910a641d449f229889d671d8a38 18-Jul-2013 Hans Wennborg <hans@hanshq.net> Turn Driver::CCCIsCXX and CCCIsCPP into a single Mode enum,
and add a new option --driver-mode= to control it explicitly.

The CCCIsCXX and CCCIsCPP flags were non-overlapping, i.e. there
are currently really three modes that Clang can run in: gcc, g++
or cpp, so it makes sense to represent them as an enum.

Having a command line flag to control it helps testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186605 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.td
bbbb0fe4f466d3163fcbf0a64ebf0f5868833efb 18-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC migration. migration to NS_ENUM/SN_OPTION
- wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186604 91177308-0d34-0410-b5e6-96231b3b80d8
dit/Rewriters.h
8a77c20375874c0759a5cd5b4a34e83465d821b2 18-Jul-2013 Samuel Benzaquen <sbenza@google.com> Separate the notion of 'context' when recursing down in the parser and actual errors.

Summary:
Change how error messages are constructed and stored in Diagnostics.
Separate the notion of 'context' when recursing down in the parser and actual errors.
This will simplify adding some new features, like argument overloading and error recovery.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1168

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186602 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/Dynamic/Diagnostics.h
38f71e265aadc5e935347cb8ee91c6916922199b 18-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Changed declarations from Attr to InheritableAttr as they are already being processed that way semantically.

Patch thanks to Dean Sutherland! Reviewed by Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
37a8953f71dcf5145c6dedb6467f50c62c9dd6e1 18-Jul-2013 Aaron Ballman <aaron@aaronballman.com> Replacing a morally duplicate diagnostic by adding it to an existing diagnostic's select list. Updates the tests for the more consistent diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6a04b5e8c4f15c724b8b89a9c0ea702586ad1852 18-Jul-2013 John Thompson <John.Thompson.JTSoftware@gmail.com> Add condition expression result to if and elif callbacks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186547 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PPConditionalDirectiveRecord.h
22050f25e34ba0cd21ee2dc3d765951c48e27cde 18-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Reinstate r186040, with additional fixes and more test coverage (reverted in
r186331).

Original commit log:
If we friend a declaration twice, that should not make it visible to
name lookup in the surrounding context. Slightly rework how we handle
friend declarations to inherit the visibility of the prior
declaration, rather than setting a friend declaration to be visible
whenever there was a prior declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
9a3ecb015448dad705829b683f2392cfda80fc13 17-Jul-2013 Reid Kleckner <reid@kleckner.net> MS wide bitfield error check in Sema

cl.exe treats wide bitfields as an error. This patch causes them to be
an error if IsMsStruct is true, as it is in straight C.

Patch by Warren Hunt!

Reviewers: eli.friedman

Differential Revision: http://llvm-reviews.chandlerc.com/D1125

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186536 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
76a2ea3d8a0c3f3a54f293e305ae16f654eab04f 17-Jul-2013 David Blaikie <dblaikie@gmail.com> Constify Replacements parameter to applyAllReplacements.

http://llvm-reviews.chandlerc.com/D1169

Patch by Guillaume Papin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186526 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
d4de59d3e54421ef88316d650e35802ba9c572cf 17-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Fixed source range of C++03 access declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186522 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
STMatchers/ASTMatchers.h
b17a2c119877b47cb3fb68c76a91dfe4d8cc6199 17-Jul-2013 Hans Wennborg <hans@hanshq.net> Option parsing tables: remove some unnecessary #defines

Also make some strings static and add missing #undef's

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186518 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.h
river/Options.h
012cff97d8b1ffebb028dcf6a0bdbfe8d127f552 17-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> Follow coding convention in argument decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186467 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ad3c2b5faa3f28b0425eb3a0d6c994ec8ca65019 17-Jul-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Remove some dead code.

Patch by Rafael Espíndola.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186462 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/FileRemapper.h
b5dc3f4f53981b681a565cdf1d49f18e817541ff 16-Jul-2013 Daniel Jasper <djasper@google.com> Revamp the formatting of C++11 braced init lists.

The fundamental concept is:
Format as if the braced init list was a function call (with parentheses
replaced by braces). If there is no name/type before the opening brace
(e.g. if the braced list is nested), assume a zero-length identifier
just before the opening brace.

This behavior is gated on a new style flag, which for now replaces the
SpacesInBracedLists style flag. Activate this style flag for Google
style to reflect recent style guide changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186433 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
bdfacea02fa37b64e4eb815448bc5c4d42a67a8e 16-Jul-2013 Samuel Benzaquen <sbenza@google.com> Add more types to ASTNodeKind. Refactor common instantiation code.

Summary:
Add support for CXXCtorInitializer and TemplateArgument types to ASTNodeKind.
This change is to support more matchers from clang/ASTMatchers/ASTMatchers.h in the dynamic layer (clang/ASTMatchers/Dynamic).

Reviewers: klimek

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1143

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTFwd.h
ST/ASTTypeTraits.h
a3c6246950f23d7d4cd748badaf8f05d7bc3f14a 16-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> This patch removes unused parameter allProperties and converts remaining
parameters in ArrayRef'ize Sema::ActOnAtEnd to ArrayRef.
Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186421 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
09df2b066221d869f17f4b5762405f111a65f983 16-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: implement low-level intrinsics for the atomic exclusive operations.

This adds three overloaded intrinsics to Clang:
T __builtin_arm_ldrex(const volatile T *addr)
int __builtin_arm_strex(T val, volatile T *addr)
void __builtin_arm_clrex()

The intent is that these do what users would expect when given most sensible
types. Currently, "sensible" translates to ints, floats and pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
asic/DiagnosticSemaKinds.td
ema/Sema.h
8c355831ac3c9e8c12b23ca69b7587dcbd0439ef 16-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: build conforming interface
declaration (not yet used). wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186369 91177308-0d34-0410-b5e6-96231b3b80d8
dit/Rewriters.h
bf03b375d887403e78837c9453fbad45efaef91d 16-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Fix member refs with using decl + anonymous union.

Make sure we call BuildFieldReferenceExpr with the appropriate decl
when a member of an anonymous union is made public with a using decl.
Also, fix a crash on invalid field access into an anonymous union.

Fixes PR16630.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186367 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ad4aaf11897cc5e9d443b0a80114daacf385f6df 15-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: finding conforming protocol
candidates for each class. wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186349 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3d882faf18532a94aa3c10881ec45aff14fa7336 15-Jul-2013 Kaelyn Uhrain <rikka@google.com> Fix a typo in the diagnostic note added in r186342.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4224347be04594788fc0f26dff7d2c2cc90851e 15-Jul-2013 Kaelyn Uhrain <rikka@google.com> Move the "->" to "." fixit from r186128 into a separate note since
recovery is not attempted with the fixit. Also move the associated test
case from FixIt/fixit.cpp to SemaCXX/member-expr.cpp since the fixit is
no longer automatically applied.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186342 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f84bb341bfb1312842b09db71d76bc3898ba247 15-Jul-2013 Samuel Benzaquen <sbenza@google.com> Add support for type traversal matchers.

Summary:
Fixup the type traversal macros/matchers to specify the supported types.
Make the marshallers a little more generic to support any variadic function.
Update the doc script.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1023

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186340 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTMatchersMacros.h
52c2575fc77a51f36129be89d1a0a90e31617a57 15-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Re-revert r86040, which was un-reverted in r186199.

This breaks the build of basic patterns with repeated friend
declarations. See the added test case in SemaCXX/friend.cpp or the test
case reported to the original commit log.

Original commit log:
If we friend a declaration twice, that should not make it visible to
name lookup in the surrounding context. Slightly rework how we handle
friend declarations to inherit the visibility of the prior
declaration, rather than setting a friend declaration to be visible
whenever there was a prior declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
02d26a82b79999e64218454d19bc70c44ebac548 14-Jul-2013 Craig Topper <craig.topper@gmail.com> Change cxx0x to cxx11 in diagnostic name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186285 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ace21ba7ba8a834a711154d8d1f29c12568dbc54 14-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> If an unimported submodule of an imported module contains a declaration of a
global allocation or deallocation function, that should not cause that global
allocation or deallocation function to become unavailable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e33a0a84a128db0e063d9a0a7a4b899a8a2989de 14-Jul-2013 David Blaikie <dblaikie@gmail.com> Serialization support for TagDecl::IsCompleteDefinitionRequired

Requested by Richard Smith in post-commit review of r186262

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
45a0409e024334ccf2d326d3094a5d5c42dd2463 14-Jul-2013 David Blaikie <dblaikie@gmail.com> Initialize the "IsCompleteDefinitionRequired" field in the ASTContext ctor

Introduced in r186262 & found by the hexagon buildbots (but owing to
this being UB, that's random chance - so there's no additional test case
here)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
658cd2c287b1a0b419f51cd18e5a48d4560d1c56 13-Jul-2013 David Blaikie <dblaikie@gmail.com> PR16214, PR14467: DebugInfo: use "RequireCompleteType" to decide when to emit the full definition of a type in -flimit-debug-info

This simplifies the core benefit of -flimit-debug-info by taking a more
systematic approach to avoid emitting debug info definitions for types
that only require declarations. The previous ad-hoc approach (3 cases
removed in this patch) had many holes.

The general approach (adding a bit to TagDecl and callback through
ASTConsumer) has been discussed with Richard Smith - though always open
to revision.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/Decl.h
ema/Sema.h
226399ce18cdcbb1e83af7c5e644bdabb9d4f2f8 13-Jul-2013 David Blaikie <dblaikie@gmail.com> Correctly classify pack expansions as NON_CANONICAL_UNLESS_DEPENDENT

Test coverage for non-dependent pack expansions doesn't demonstrate a
failure prior to this patch (a follow-up commit improving debug info
will cover this commit specifically) but covers a related hole in our
test coverage.

Reviewed by Richard Smith & Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
f475bf83a45435a211edb4e0ef6ac3481ce7b3fe 13-Jul-2013 David Blaikie <dblaikie@gmail.com> Revert "Revert "PR16540: ASTVector::insert(Context, Iter, Element) doesn't compile""

This reverts commit b18b043a5a37f76803d89467e46bcac286c0ecae.

Reapply with fix for the configure+make build (missing include of
ASTContext.h).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
65732a200987cb4b007fbb3015a8bae175ddb832 13-Jul-2013 David Blaikie <dblaikie@gmail.com> Revert "PR16540: ASTVector::insert(Context, Iter, Element) doesn't compile"

This reverts commit r186253.

This is failing to link under Configure+Make on the buildbots for
reasons I don't immediately understand.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
a995630ca94ca2543678b201d90cf6f07d41a8df 13-Jul-2013 David Blaikie <dblaikie@gmail.com> PR16540: ASTVector::insert(Context, Iter, Element) doesn't compile

Fix some uninstantiable code in ASTVector::insert. I've added a
cheap-and-dirty compile test for this, because I don't have the time to
figure out a nice way to get a real ASTContext to implement executable
tests - but we probably should have them for this ADT.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186253 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
e7bae1597f4a7088f5048695c14a8f1013a86108 13-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++ modules: Don't call DeclContext::lookup when half-way through deserializing
decls. That can reenter deserialization and explode horribly by trying to merge
a declaration that we've not got very far through deserializing yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6e9d86b31813edafb775c93e5b5595ebce1e71e1 12-Jul-2013 Kaelyn Uhrain <rikka@google.com> Provide a better diagnostic and a fixit for a '.' or '->' before the left paren
of a function call.

This fixes PR5898 and means we now have a better diagnostic here than GCC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f9e65a274d4e5c5a45503efc81da43be76503983 12-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Unrevert r186040, reverted in r186185, with fix for PR16597.

Original commit log:
If we friend a declaration twice, that should not make it visible to
name lookup in the surrounding context. Slightly rework how we handle
friend declarations to inherit the visibility of the prior
declaration, rather than setting a friend declaration to be visible
whenever there was a prior declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
1afa611e36e0ab23dd3cde4bbe5aa74ceb7d77c5 12-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Revert r186040 to fix PR16597 while Richard investigates what the best
fix is.

Original commit log:
If we friend a declaration twice, that should not make it visible to
name lookup in the surrounding context. Slightly rework how we handle
friend declarations to inherit the visibility of the prior
declaration, rather than setting a friend declaration to be visible
whenever there was a prior declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186185 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
78c2ec43284537f65bbd95b0628271a140ba0ec4 12-Jul-2013 Anna Zaks <ganna@apple.com> [analyzer] Treat nullPtrType as a location type.

Fixes PR16584 (radar://14415223).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186172 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
cf2901abf346c64792e3beb1e7dfeecff0b313f7 12-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Make CXXBaseSpecifier::getType return unqual type.

Various pieces of code, like base initialization in Sema and RTTI IRGen,
don't properly ignore qualifiers on base classes. Instead of auditing the
whole codebase, just strip them off in the getter. (The type as written is
still available in the TypeSourceInfo for code that cares.)

Fixes PR16596.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186125 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
faec47bcbadf462b3ac82618dcfca6ae3b8ce5d9 11-Jul-2013 Daniel Jasper <djasper@google.com> clang-format: Avoid line breaks before the first <<.

This puts a slight penalty on the linebreak before the first "<<", so
that clang-format generally tries to keep things on the first line.

User feedback has shown that this is generally desirable.

Before:
llvm::outs()
<< "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =" << aaaaaaaaaaaaaaaaaaaaaaaaaaa;

After:
llvm::outs() << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ="
<< aaaaaaaaaaaaaaaaaaaaaaaaaaa;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186115 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
97a03cf921ccc16ef9d16d965a5ef28631090f6a 11-Jul-2013 Eli Bendersky <eliben@google.com> Simplify GetBuiltinNames by hoising the NoBuiltins argument out of it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186106 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
f92a509d870f05a0e26babd8072171957770649e 11-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjectiveC arc[qoi]: When due to change of certain methods'
result type, a diagnostic being issued, issue a 'note'
mentioning reason behind the unexpected warning.
// rdar://14121570.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186105 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
a38253c3e7dbd2b5aadb0556845dc3848168b904 11-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR5066: If a declarator cannot have an identifier, and cannot possibly be
followed by an identifier, then diagnose an identifier as being a bogus part of
the declarator instead of tripping over it. Improves diagnostics for cases like

std::vector<const int *p> my_vec;


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ema/DeclSpec.h
fd5c726ab3db60d3e1be8348f6f03bb3e04ffdde 11-Jul-2013 James Dennett <jdennett@google.com> Documentation fixes - the rest of DeclCXX.h:
* More \brief additions/fixes;
* Fix some misleading comments about C++11's explicit conversion operators;
* Mark up some \code examples;
* Add \file documentation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186059 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2c4b9bd6c58118a40d4a80c0e2fe61038f5d9f5f 11-Jul-2013 James Dennett <jdennett@google.com> Documentation cleanup for DeclCXX.h:
* Fixing up \brief summaries (adding some, making some briefer);
* Standardizing on \commands, not @commands;
* Update C++0x references to C++11;
* Fix typos and Doxygen warnings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186056 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5154dce6388e3aaa445467030df7a45ed1211abe 11-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add a __builtin_addressof that performs the same functionality as the built-in
& operator (ignoring any overloaded operator& for the type). The purpose of
this builtin is for use in std::addressof, to allow it to be made constexpr;
the existing implementation technique (reinterpret_cast to some reference type,
take address, reinterpert_cast back) does not permit this because
reinterpret_cast between reference types is not permitted in a constant
expression in C++11 onwards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
27ec2d0acc51fc661f3ab10693565f5f0653b294 11-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Make CheckAddressOfOperand a member of Sema so it can be reused by
__builtin_addressof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186052 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
433a13d0cdb1c48b828fe5bfb6a835c58e1e758b 11-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> If we friend a declaration twice, that should not make it visible to name
lookup in the surrounding context. Slightly rework how we handle friend
declarations to inherit the visibility of the prior declaration, rather
than setting a friend declaration to be visible whenever there was a prior
declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
07b1bbe648a21b8cdbc073fb6a409422c49921bb 10-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: Improve on hueristics.
migrate to 'copy attribute if Object
class implements NSCopying otherwise
assume implied 'strong'. Remove
lifetime qualifier on property as it has
moved to property's attribute. Added TODO
comment for future work by poking into
setter implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
49007d7561212c0ae168702c1af1404c01ef43ff 10-Jul-2013 James Dennett <jdennett@google.com> Add a hook RecursiveASTVisitor::TraverseLambdaBody, to enable visitors to
use/maintain additional state from the LambdaExpr while visiting the body
of a LambdaExpr.

One use for this arises because Clang's AST currently holds lambda bodies
in a form prior to their adjustment to refer to captured copies of local
variables, and so some clients will need access to the lambda's closure
type in order to query how to map VarDecl*s to the FieldDecls of their
by-copy captures. This hook is sufficient for at least one such client;
to do this without such a hook would require the client to re-implement
the whole of TraverseLambdaExpr, which is non-trivial and would likely be
more brittle.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186024 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
c7bd68f9edcbca95e882d0ab18d09371f0bdb82c 10-Jul-2013 Daniel Jasper <djasper@google.com> Add experimental flag for adaptive parameter bin-packing.

This is not activated for any style, might change or go away
completely.

For those that want to play around with it, set
ExperimentalAutoDetectBinPacking to true.

clang-format will then:
Look at whether function calls/declarations/definitions are currently
formatted with one parameter per line (on a case-by-case basis). If so,
clang-format will avoid bin-packing the parameters. If all parameters
are on one line (thus that line is "inconclusive"), clang-format will
make the choice dependent on whether there are other bin-packed
calls/declarations in the same file.

The reason for this change is that bin-packing in some situations can be
really bad and an author might opt to put one parameter on each line. If
the author does that, he might want clang-format not to mess with that.
If the author is unhappy with the one-per-line formatting, clang-format
can easily be convinced to bin-pack by putting any two parameters on the
same line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186003 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
e5798893b1fb2468a11e8374d340e6fa2f82a9a5 10-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Get rid of dead/useless code for block mangling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
5e867c8a07d82da0d3b0a43402ee4f1c6ba416e9 10-Jul-2013 Eli Friedman <eli.friedman@gmail.com> More local mangling fixes.

Compute mangling numbers for externally visible local variables and tags.
Change the mangler to consistently use discriminators where necessary.
Tweak the scheme we use to number decls which are not externally visible
to avoid unnecessary discriminators in common cases now that we request
them more consistently.

Fixes <rdar://problem/14204721>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/MangleNumberingContext.h
ema/Sema.h
d412999a3da6387dbfaf00f7647132082e94310e 09-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> ObjC migrator: Add -objcmt-migrate-property to do property
migration. Also, fixes an old bug where older migration
flags were not being checked for properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185948 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMTActions.h
river/Options.td
rontend/FrontendOptions.h
4549d7ffc15bdd7ab860aa68db089d9f559b79e7 09-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> ArrayRef'ize Sema::FinalizeDeclaratorGroup, Sema::BuildDeclaratorGroup and
Sema::ActOnDocumentableDecls.

Patch by Robert Wilhelm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185931 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6c4898b6ff23950cddca6948ef3fa0dd1848f6f1 09-Jul-2013 Kaelyn Uhrain <rikka@google.com> Attempt typo correction for function calls with the wrong number of arguments.

Combined with typo correction's new ability to apply global/absolute nested
name specifiers to possible corrections, cases such as in PR12287 where the
desired function is being shadowed by a lexically closer function with the
same name but a different number of parameters will now include a FixIt.

On a side note, since the test for this change caused
test/SemaCXX/typo-correction.cpp to exceed the typo correction limit for
a single file, I've included a test case for exceeding the limit and added
some comments to both the original and part two of typo-correction.cpp
warning future editors of the files about the limit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185881 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
761695fec3e4fe5aaae1544d489389bcf6cd9be4 09-Jul-2013 Kaelyn Uhrain <rikka@google.com> Make a couple of useful typo correction callbacks more widely available.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185880 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
1921b58a2aba4f5073d6634d476356b6a4ff8815 08-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> [Objective-C migrator] replace candidate user setter/getter with
their equivalent property declaration. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185873 91177308-0d34-0410-b5e6-96231b3b80d8
dit/Commit.h
80747a834cf8b0304b314ede9aba3d6ddb8e9520 08-Jul-2013 NAKAMURA Takumi <geek4civic@gmail.com> clang/include/clang/AST/ExprCXX.h:260:5: Fix a warning -- unknown command tag name 'cc'; did you mean 'c'? [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185810 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
010bfc253050626435f006386c0bee4b55329687 08-Jul-2013 James Dennett <jdennett@google.com> Documentation cleanup for include/clang/AST/ExprCXX.h.

This is mostly Doxygen formatting, but also updates some C++0x references
to C++11 and clarifies some wording.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185798 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
bd9cbd22b832ce65a085801259cf2d3df77830e4 07-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Fixed source range for functional cast and unresolved construct expr nodes.
Added testcases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
STMatchers/ASTMatchers.h
251330d5ad22a5d7c813dfdd5bed54fafbdeebad 07-Jul-2013 James Dennett <jdennett@google.com> Documentation cleanup for include/clang/AST/DeclCXX.h, no substantive changes.
* Fix up \brief documentation;
* Update C++0x references to C++11;
* Doxygen formatting: bulleted lists start with a single hyphen, not two;
* Fix a typo, "assosiate" -> "associate".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2d77634e839880704d51656bebd1d2daff661d4e 06-Jul-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Fixed source location info for UnaryTransformTypeLoc nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185765 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
eb9c55fdfa25d97f61c04f4f06fd499d988045c0 06-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> [comment parsing]: Removes an unsafe API whose
use can cause crash. No test is available. It is uncovered
by code browsing. // rdar://14348205


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
afcb16f9cff8d5ccd57a6386d65ddc055368d0bc 05-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> [objc migrator]: More knobs to do migration to
use of objc's properties.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185724 91177308-0d34-0410-b5e6-96231b3b80d8
dit/Rewriters.h
6b9240e058bf3451685df73fc8ce181b3046e92b 05-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& for function arguments instead of SmallVector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185715 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
erialization/ASTReader.h
8540b6e778545008fd521b002929b89ce10506ce 05-Jul-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: diagnose when synthesizing an ivar of
abstract class type. // rdar://14261999


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
ee0a47998ca7db5d31291a397aca38219d3dfd7d 05-Jul-2013 Craig Topper <craig.topper@gmail.com> Add typedefs for Densemaps containing SmallVectors to avoid repeating the SmallVector size when creating iterators for the DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185682 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c65f03498f6c59b5ae5c14086f49ae6e7a173624 05-Jul-2013 James Dennett <jdennett@google.com> Add some more documentation on how to navigate from a LambdaExpr::Capture
to the associated FieldDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
a2405c6e5124126f2b59ba3313ebc14b56e5272d 05-Jul-2013 James Dennett <jdennett@google.com> Minor documentation cleanup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
1686069c03495a3619cc921e3ddeb3417ea6ec25 04-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185623 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
56312023bf62cb40d2e33ea5e14d55c1e42303a7 04-Jul-2013 Alexander Kornienko <alexfh@google.com> Added AlwaysBreakBeforeMultilineStrings option.

Summary:
Always breaking before multiline strings can help format complex
expressions containing multiline strings more consistently, and avoid consuming
too much horizontal space.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D1097

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185622 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
09d19efaa147762f84aed55efa7930bb3616a4e5 04-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185610 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
nalysis/CallGraph.h
dit/Commit.h
ex/MacroInfo.h
ema/Overload.h
ema/TypoCorrection.h
erialization/ModuleManager.h
305e5b4268685aa97d6338fe4362d1b73246cbe9 04-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> Part of PR15673: If a function template has a default argument in which
substitution failed, report that as a substitution failure rather than
pretending that there was no default argument.

The test cases in PR15673 have exposed some pre-existing poor diagnostics here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185604 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
54ca069d1526df84a48a3974871a7c4f46549651 04-Jul-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR16480: Reimplement token-caching for constructor initializer lists. This
previously didn't work if a mem-initializer-id had a template argument which
contained parentheses or braces.

We now implement a simple rule: just look for a ') {' or '} {' that is not
nested. The '{' is assumed to start the function-body. There are still two
cases which we misparse, where the ') {' comes from a compound literal or
from a lambda. The former case is not valid C++, and the latter will probably
not be valid C++ once DR1607 is resolved, so these seem to be of low value,
and we do not regress on them with this change. EDG and g++ also misparse
both of these cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
3e3d20b2b26a885fcae855bb0b02dbc42d7c5739 03-Jul-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> "bool" should be a context-sensitive keyword in Altivec mode.

PR16456 reported that Clang implements a hybrid between AltiVec's
"Keyword and Predefine Method" and its "Context Sensitive Keyword
Method," where "bool" is always a keyword, but "vector" and "pixel"
are context-sensitive keywords. This isn't permitted by the AltiVec
spec. For consistency with gcc, this patch implements the Context
Sensitive Keyword Method for bool, and stops treating true and false
as keywords in Altivec mode.

The patch removes KEYALTIVEC as a trigger for defining these keywords
in include/clang/Basic/TokenKinds.def, and adds logic for "vector
bool" that mirrors the existing logic for "vector pixel." The test
case is taken from the bug report.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
ema/DeclSpec.h
2b78142636ad8470bc6d05d7508623ff7e3905d4 03-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Add file suffix for assembler-with-cpp.

Fixes crash when trying to recover from a crash on an assembler-with-cpp
file. (Not sure how to write a testcase.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185562 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
b2567ddad9a1142d7224e5363029d640e8f4f59d 03-Jul-2013 Kaelyn Uhrain <rikka@google.com> Allow typo correction to try removing nested name specifiers.

The removal is tried by retrying the failed lookup of a correction
candidate with either the MemberContext or SS (CXXScopeSpecifier) or
both set to NULL if they weren't already. If the candidate identifier
is then looked up successfully, make a note in the candidate that the
SourceRange should include any existing nested name specifier even if
the candidate isn't adding a different one (i.e. the candidate has a
NULL NestedNameSpecifier).

Also tweak the diagnostic messages to differentiate between a suggestion
that just replaces the identifer but leaves the existing nested name
specifier intact and one that replaces the entire qualified identifier,
in cases where the suggested replacement is unqualified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/TypoCorrection.h
ddcd660efccd7dcbe42cf1a5759b37ee5619bf9b 02-Jul-2013 James Dennett <jdennett@google.com> Documentation: Update docs for C++ lambdas to more accurately reflect
C++1y init-capture support, and to improve some Doxygen markup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/Lambda.h
07369dde9d72213bf8a48288cd8b29999af9a40c 01-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Fix mangling for block literals.

Blocks, like lambdas, can be written in contexts which are required to be
treated as the same under ODR. Unlike lambdas, it isn't possible to actually
take the address of a block, so the mangling of the block itself doesn't
matter. However, objects like static variables inside a block do need to
be mangled in a consistent way.

There are basically three components here. One, block literals need a
consistent numbering. Two, objects/types inside a block literal need
to be mangled using it. Three, objects/types inside a block literal need
to have their linkage computed correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185372 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/LambdaMangleContext.h
ST/MangleNumberingContext.h
ema/Sema.h
1f26342b5f51387aaa18ee703d7dfdf004871466 30-Jun-2013 James Dennett <jdennett@google.com> Documentation cleanup for TypeOrdering.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
1ec5750908039701b206fc32dd2b95c45cd5cce8 30-Jun-2013 James Dennett <jdennett@google.com> Documentation cleanup: Mostly formatting \brief documentation, also fix a
typo or two.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185288 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
ST/VTTBuilder.h
ST/VTableBuilder.h
aa4bc18240c03b5ed7952aa5e013c081f8733ed3 30-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Reinstate r185229, reverted in r185256, with a tweak: further ignore the
standard's rule that an extern "C" declaration conflicts with any entity in the
global scope with the same name. Now we only care if the global scope entity is
a variable declaration (and so might have the same mangled name as the extern
"C" declaration). This has been reported as a standard defect.

Original commit message:

PR7927, PR16247: Reimplement handling of matching extern "C" declarations
across scopes.

When we declare an extern "C" name that is not a redeclaration of an entity in
the same scope, check whether it redeclares some extern "C" entity from another
scope, and if not, check whether it conflicts with a (non-extern-"C") entity in
the translation unit.

When we declare a name in the translation unit that is not a redeclaration,
check whether it conflicts with any extern "C" entities (possibly from other
scopes).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89faf86c6e23ed62519dfe369f8ea408df1cb02e 30-Jun-2013 James Dennett <jdennett@google.com> Bug fix: Make RecursiveASTVisitor<T>::TraverseLambdaExpr call
WalkUpFromLambdaExpr, so that the Visit* functions are called
on that AST node.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185277 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
9df0823a4b82794f573e333115ad4dfff3ab0a34 29-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Driver: Push triple objects around instead of going to std::string all the time.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185261 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6e428a446ed7cc170346430afa7be54e83b2d28c 29-Jun-2013 Timur Iskhodzhanov <timurrrr@google.com> Revert r185229 as it breaks compilation of <windows.h>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5eab8d733ce7867fda4e6d5f5afa6dfe8a105c79 29-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR7927, PR16247: Reimplement handling of matching extern "C" declarations
across scopes.

When we declare an extern "C" name that is not a redeclaration of an entity in
the same scope, check whether it redeclares some extern "C" entity from another
scope, and if not, check whether it conflicts with a (non-extern-"C") entity in
the translation unit.

When we declare a name in the translation unit that is not a redeclaration,
check whether it conflicts with any extern "C" entities (possibly from other
scopes).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185229 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a1753f4be12737f36ce9c6eccccddd3be1ec514b 28-Jun-2013 Alexander Kornienko <alexfh@google.com> Use lexing mode based on FormatStyle.Standard.

Summary:
Some valid pre-C++11 constructs change meaning when lexed in C++11
mode, e.g.
#define x(_a) printf("foo"_a);
(example from http://llvm.org/bugs/show_bug.cgi?id=16342). "foo"_a is treated as
a user-defined string literal when parsed in C++11 mode.
In order to deal with this correctly, we need to set lexing mode according to
which standard the code conforms to. We already have a configuration value for
this (FormatStyle.Standard), which seems to be appropriate to use in this case
as well.

Reviewers: klimek

CC: cfe-commits, gribozavr

Differential Revision: http://llvm-reviews.chandlerc.com/D1028

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185149 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
6982bf4d77bc57a85ee173b631729fce673f16ef 28-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Lazily deserialize function template specializations. This fixes a cycle in
module deserialization / merging, and more laziness here is general goodness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ded9979a2997336cee8797deb6bb3194fccc2068 28-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Switch Decl instantiation to DeclNodes.inc.

This replaces a long list of declarations for visitor functions with
a list generated from DeclNodes.inc. Nothing really interesting came
out of it; we had comprehensive coverage anyway
(excluding FriendTemplateDecls).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185118 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
49bab4c0046e8300c79e79b7ca9a479696c7e87a 27-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Remove bogus VarDecl::extendsLifetimeOfTemporary function and inline it into
its only caller with a FIXME explaining why it's bogus.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bf516f7a5d3385ab9989220eface8d5709038924 27-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
0a598fd7e428b5eb28b67770a66f3976ac365e42 27-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Stmt.h
ST/Type.h
ST/VTableBuilder.h
6887ff2c70f4afba4e521f8779d041e6d02df464 27-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Simplify StmtIterator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
375a4f519eb85d37e702c90498ef9816aeda4c3e 27-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Small improvements to createOutputFile.

* Use a single stat to find out if the file exists and if it is a regular file.
* Use early returns when possible.
* Add comments explaining why we have each check.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185091 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
7419d013fd2c4dda596066f4864d5c40e85ba330 27-Jun-2013 Larisse Voufo <lvoufo@google.com> Fix a conversion to incomplete type bug -- The error message now specifically states that the type is incomplete and points to the forward declaration of the incomplete type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
642038d7c5855b54afbca298631da93b7889d4a5 27-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185053 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ema/Sema.h
a8bd8c87ce124fe7748580fc169feef5147f68f1 27-Jun-2013 David Majnemer <david.majnemer@gmail.com> Sema: Small cleanup around TemplateParamListContext


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185029 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7841abf94eb8653b26aa8d5bf67f4ad0ff074767 26-Jun-2013 David Majnemer <david.majnemer@gmail.com> AST: small cleanup to FriendObjectKind


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
cd06f26835033e879a9278941f4f6e6a4086976d 26-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Rewrite record layout for ms_struct structs.

The old implementation of ms_struct in RecordLayoutBuilder was a
complete mess: it depended on complicated conditionals which didn't
really reflect the underlying logic, and placed a burden on users of
the resulting RecordLayout. This commit rips out almost all of the
old code, and replaces it with simple checks in
RecordLayoutBuilder::LayoutBitField.

This commit also fixes <rdar://problem/14252115>, a bug where class
inheritance would cause us to lay out bitfields incorrectly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
eb7c6f3c49b4b3c2b01aeeed54bf5915fbf9b021 26-Jun-2013 Aaron Ballman <aaron@aaronballman.com> Updating the same comment in a different file, again for links. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185014 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
2ccf698c58f8aca1bf784998f491ef004351db64 26-Jun-2013 Nico Weber <nicolasweber@gmx.de> Fix warning: commas at the end of enumerator lists are a C++11 extension [-Wc++11-extensions]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184972 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
11be06464a338b7c6e007898a7709498dc456db2 26-Jun-2013 Reid Kleckner <reid@kleckner.net> Match MSVC's handling of commas during macro argument expansion

This allows clang to parse the type_traits header in Visual Studio 2012,
which is included widely in practice.

This is a rework of r163022 by João Matos. The original patch broke
preprocessing of gtest headers, which this patch addresses.

Patch by Will Wilson!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184968 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
de2541aec4b4440ee34af29eba622df7cab9ac12 26-Jun-2013 Aaron Ballman <aaron@aaronballman.com> Quieting an MSVC warning about converting negative integer constants to unsigned types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
92306906ba0a57084942ef93e941dff4d2d9320e 26-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove forward declarations of sys::Path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184911 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/ASTConsumers.h
b804cb315cfeebc4d1c4d2d023ffb08440f77254 26-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove some uses of llvm::sys::Path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184907 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
4fc5089e306fe606f2e3e4fa58063ebab35deb62 26-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Lazily deserialize the "first' friend declaration when deserializing a class
declaration. This PCH a little lazier, and breaks a deserialization cycle that
causes crashes with modules enabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclFriend.h
f6a144f5991c6b29622a31fdab86adede0648d12 26-Jun-2013 David Majnemer <david.majnemer@gmail.com> Implement DR136

Friend declarations that specify a default argument must be a definition
and the only declaration in the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184889 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
87b12b2e92c1670e551d66938a4c0a055b18b03a 26-Jun-2013 David Majnemer <david.majnemer@gmail.com> Implement DR21

A default template-argument shall not be specified in a friend template
declaration.

Interestingly, we properly handled default template arguments on friend
class members but not on just friend classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184882 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
548fba96250b6624a96459780e30fd459eed1528 25-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Warn when IBOutletCollection property
is declared to have 'assign' attribute.
// rdar://14212998


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184863 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
fdf137b9073aa52423183fe886d072bc3b7d3889 25-Jun-2013 Nick Lewycky <nicholas@mxc.ca> Make -vectorize-... proper cc1 flags instead of abusing -backend-option. Fixes
usage of clang as a library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184812 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.def
9db7f57c1e3db8a2d06a833a4e0341f0fe310640 25-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix deserializing of class template partial specializations. Assign sequence
numbers as we deserialize class template partial specializations. We can't
assume that the old sequence numbers will work.

The sequence numbers are still deterministic, but are now a lot less
predictable for class template partial specializations in modules/PCH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184811 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ea943145787bd286256b72c3e658db27674cfc44 24-Jun-2013 Ted Kremenek <kremenek@apple.com> Tweak -Wdeprecated-objc-pointer-introspection to have a subgroup for results of using -performSelectorXXX.

-performSelector: and friends return a value that is boxed as an Objective-C
pointer. Sometimes it is an Objective-C pointer, sometimes it isn't.
Some clients may wish to silence this warning based on calling
this method.

Fixes <rdar://problem/14147304>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cd9c2f247dd354d8bb5f549f986a9c4ccf08f1db 24-Jun-2013 Reid Kleckner <reid@kleckner.net> Fix "funciton" typo from r184763

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
12df246d6dea2ee1f92c186f922f1afcf499647a 24-Jun-2013 Reid Kleckner <reid@kleckner.net> [AST] Introduce a new DecayedType sugar node

The goal of this sugar node is to be able to look at an arbitrary
FunctionType and tell if any of the parameters were decayed from an
array or function type. Ultimately this is necessary to implement
Microsoft's C++ name mangling scheme, which mangles decayed arrays
differently from normal pointers.

Reviewers: rsmith

Differential Revision: http://llvm-reviews.chandlerc.com/D1014

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
erialization/ASTBitCodes.h
8c0501c7370d894a735692b92fab62bbb05d86bd 24-Jun-2013 Reid Kleckner <reid@kleckner.net> [Sema] Call CheckParmForFunctionDef on ObjC method parameters

CheckParmForFunctionDef performs standard checks for type completeness
and other things like a destructor check for the MSVC++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184740 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c5b0054693b3b3cafe6a13549358c22e07fcd4ff 24-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: allow "\param ..." to describe variadic arguments

Original patch by Fariborz Jahanian; extended by me.

Fixes rdar://14124644


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184688 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentSema.h
ab297ccbcc51d5197d4ddb4e99b7bc8868d38314 24-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -ast-dump-lookups switch to -cc1 to dump DeclContext lookup maps. Test to
follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184678 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendOptions.h
a558d2e29817e36798875c96efb62251e53ff024 24-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> Move comment on Sema::isFunctionPointerVarDecl() to the header file


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184677 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
6969e43b14a91124b98e4b0bd4d34a736123fe0b 24-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> Documentation parsing: recognize \relates, \related, \relatesonly, \relatedonly
so that -Wdocumentation-unknown-command does not warn on these commands.
Fixes PR16092.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
572cf585da655522651b589101784c58902f8690 24-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::CodeCompleteConstructorInitializer

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184675 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2946cebdf49d3a6eeba8df93be291a07b2d58cbc 23-Jun-2013 David Majnemer <david.majnemer@gmail.com> AST: Clean up FriendObjectKind related decls

Allow the comments in the FriendObjectKind enumerator-list show up in
doxygen. Also, some small readability improvements in related functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
97e5bc2643dd1478ca10d1b9a6581f332801c958 23-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: followup to r184610: allow multiple \returns

Remove unneeded member in CommentSema, add a test for the XML schema (the
schema already allowed multiple paragraphs in <ResultDiscussion>, but there
were no tests for that), fix HTML generation (it is not allowed to have <p>
inside <dl>).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
6e322c08b187ba93019732d2295c84c339813e0d 22-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add dumping support for DeclContext's StoredDeclsMap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclLookups.h
4985429d6f0dddbe168ec0ed4de029d56294e644 22-Jun-2013 Larisse Voufo <lvoufo@google.com> Instantiation bug fix extension (cf. r184503) -- minor code fixes, including a typo that caused a runtime assertion after firing diagnosis for class definitions, with the 'template' keyword as template header, in friend declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2f686697187e8834346b7924797d44c978252ec6 22-Jun-2013 David Majnemer <david.majnemer@gmail.com> Revert r184401 which reverted r183462.

The problem with r183462 was that we assumed that a diagnostic id of
zero would be silent.

This small correction to CheckDerivedToBaseConversion changes it's
behavior to omit the diagnostic when given a diagnostic id of zero.

This fix passes the test case added in r184402.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0538f0e9200df56974b5a71bc276dbce456e9781 22-Jun-2013 Richard Trieu <rtrieu@google.com> Extend -Wnon-pod-varargs to more cases, such as function pointers as return
types and function pointer arrays.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184616 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c8fa525b5b81eeb7a62294dd3218ca2a6ccf0a6a 22-Jun-2013 David Blaikie <dblaikie@gmail.com> Provide suggested no-arg calls for overloaded member functions missing calls

Reviewed by Richard Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184612 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
73b8d4bdd68372bff9eddc5a02675ee345a8a94f 21-Jun-2013 Nick Lewycky <nicholas@mxc.ca> Fix a leak of TargetMachine in clang. We'll continue to leak it on purpose if
given -disable-free. (Reviewed by John McCall over IRC.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184595 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.def
a9a7f108a4a10da1f08fd4538a15f441bfee72c1 21-Jun-2013 Manuel Klimek <klimek@google.com> Add an option to not indent declarations when breaking after the type.

Make that option the default for LLVM style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184563 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
8f5d7d1d1f990f174c7f2682271a83acf64dd93d 21-Jun-2013 Douglas Gregor <dgregor@apple.com> [Modules] If a module map resides in a system header directory, treat it as a system module.

This prevents -pedantic from causing warnings in the system headers
used to create modules. Fixes <rdar://problem/14201171>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184560 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/ModuleMap.h
ef7eb024397a6a9d1455b31bc7b10288a817ac3b 21-Jun-2013 Samuel Benzaquen <sbenza@google.com> Add support for polymorphic matchers. Use runtime type checking to determine the right polymorphic overload to use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184558 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTMatchersMacros.h
STMatchers/Dynamic/Diagnostics.h
STMatchers/Dynamic/Parser.h
STMatchers/Dynamic/Registry.h
STMatchers/Dynamic/VariantValue.h
9b60195ad4843c9e2e231673a0dbc0d5c8c6eb2b 21-Jun-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Destroy temporary record arguments in the callee

Itanium destroys them in the caller at the end of the full expression,
but MSVC destroys them in the callee. This is further complicated by
the need to emit EH-only destructor cleanups in the caller.

This should help clang compile MSVC's debug iterators more correctly.
There is still an outstanding issue in PR5064 of a memcpy emitted by the
LLVM backend, which is not correct for C++ records.

Fixes PR16226.

Reviewers: rjmccall

Differential Revision: http://llvm-reviews.chandlerc.com/D929

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetCXXABI.h
104f96ba1a59026d6a71b4ef39ca127b56324e4a 21-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184517 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ff8e04e678faddb9f1c876f8a850943be57471d3 21-Jun-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Fix stale comment in CallEvent.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184510 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
7c64ef05e179d29646030e9d453081844ecc537a 21-Jun-2013 Larisse Voufo <lvoufo@google.com> Bug Fix: Template explicit instantiations should not have definitions (FixIts yet to be tested.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
98d1ec1e99625176626b0bcd44cef7df6e89b289 21-Jun-2013 Michael Gottesman <mgottesman@apple.com> [checked-arithmetic builtins] Added builtins to enable users to perform checked-arithmetic in c.

This will enable users in security critical applications to perform
checked-arithmetic in a fast safe manner that is amenable to c.

Tests/an update to Language Extensions is included as well.

rdar://13421498.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
3e1aca289f56310f20f3d97e154337275adf17a4 21-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Don't allow __attribute__((common)) in C++. PR16330.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cac18add73d095eaab600aefe27ea7174aec4922 20-Jun-2013 Nico Weber <nicolasweber@gmx.de> Lazily provide a __float128 dummy type in -std=gnu++11 mode.

This is needed to parse libstdc++ 4.7's type_traits, see PR13530.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
bc3f628815b3841dc99109e7f67f9afa7793bc94 20-Jun-2013 Lawrence Crowl <crowl@google.com> This patch adds new private headers to the module map. Private
headers may be included from within the module, but not from outside
the module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/Module.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/ModuleMap.h
ex/Preprocessor.h
erialization/ASTBitCodes.h
f462b0152f10eed0b989b07bcf457b6fb0d83bdb 20-Jun-2013 Richard Trieu <rtrieu@google.com> Extend -Wnon-pod-varargs to check calls made from function pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184470 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
cdeba0b0127e0d97b10752a1e875901da4426810 20-Jun-2013 Lawrence Crowl <crowl@google.com> Fix English grammar error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184463 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
76c2f92c4b4ab7e02857661a05e53ba4b501d87a 20-Jun-2013 Samuel Benzaquen <sbenza@google.com> Enhancements for the DynTypedMatcher system.
- Added conversion routines and checks in Matcher<T> that take a DynTypedMatcher.
- Added type information on the error messages for the marshallers.
- Allows future work on Polymorphic/overloaded matchers. We should be
able to disambiguate at runtime and choose the appropriate overload.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184429 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchersInternal.h
STMatchers/Dynamic/VariantValue.h
cf52ca6bb6dd76a1bd967bc422287fafafa1e45a 20-Jun-2013 Manuel Klimek <klimek@google.com> Adds the equalsBoundNode matcher.

Most of the tests contributed by Edwin Vane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184427 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTTypeTraits.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
1a68afd5bbecd05a3bb22854954aa4e5448c4470 20-Jun-2013 Manuel Klimek <klimek@google.com> Implements declaratorDecl, parmVarDecl and hassTypeLoc matchers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184419 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
c2fa6b6f9a89f55397355937544fbbe8258ead5d 20-Jun-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Improved source code fidelity for gcc mode attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Attr.td
fbd4116c4287cba862fbf3ff77b4032cbe98f78a 20-Jun-2013 Chandler Carruth <chandlerc@gmail.com> Update two options to my proposed syntax for user-facing driver options:

-gcc-toolchain foo -> --gcc-toolchain=foo
-target foo -> --target=foo

I've added legacy aliases for the original spellings. I've updated the
canonical tests to check both spellings, and switched all of the
-gcc-toolchain usages elsewhere in the test suite to use the new one.
I've updated some of the usages of -target to the new syntax, but will
finish that in a separate entirely mechanical change once I'm sure this
won't get rolled back for some reason (It touches a *huge* number of RUN
lines in the test suite unsurprisingly).

A nice result is that the three most common flags I end up using when
doing cross compiles are all now consistent: --target=, --sysroot=, and
--gcc-toolchain=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184408 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
62341d3bde21c85405318950ed8d26b6b3e36544 20-Jun-2013 Chandler Carruth <chandlerc@gmail.com> Temporarily revert r183462: "Implement DR7"

This fixes PR16370, I'll add the test case in a follow-up commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184401 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
850cf510b8e310a99344c29731f0b68e096a8658 20-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Fix one place I missed that was memcpy'ing TypeLocs in a way that messes
up alignment.

Fixes utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp from the
libc++ testsuite.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ema/Sema.h
37a84f653c196aa0b73fad96707175a62dcb6a12 20-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR16377: Allow evaluation of statement expressions in constant evaluation,
why not. Apparently GCC supports this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184396 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
8db6cc7146fbdc84f8109b72c953863f92ece487 20-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Remove dead code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184379 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
08dc71f4f2a75fd9869ee91b12f36695b700adfc 19-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code. (Array element types are always complete in C.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d5fbb2910fe934a61176b94503b0cf495f129253 19-Jun-2013 Samuel Benzaquen <sbenza@google.com> Enhancements for the DynTypedNode

Added ASTNodeKind as a standalone way to represent node kinds and their hierarchy.
This change is to support ongoing work on D815.

Reviewers: klimek

CC: cfe-commits

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTFwd.h
ST/ASTTypeTraits.h
2d588b4bc7127adf1a1c621002dfe452a99fef6f 19-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> documentation parsing: patch to make @class work for
class templates; and similarly, @function works for
function templates. // rdar://14124702


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
054d049174eb1ec8e93a4a0831c0d8caac00cb3a 19-Jun-2013 Manuel Klimek <klimek@google.com> Completely revamp node binding for AST matchers.

This is in preparation for the backwards references to bound
nodes, which will expose a lot more about how matches occur. Main
changes:
- instead of building the tree of bound nodes, we build a "set" of bound
nodes and explode all possible match combinations while running
through the matchers; this will allow us to also implement matchers
that filter down the current set of matches, like "equalsBoundNode"
- take the set of bound nodes at the start of the match into
consideration when doing memoization; as part of that, reevaluated
that memoization gives us benefits that are large enough (it still
does - the effect on common match patterns is up to an order of
magnitude)
- reset the bound nodes when a node does not match, thus never leaking
information from partial sub-matcher matches for failing matchers

Effects:
- we can now correctly "explode" combinatorial matches, for example:
allOf(forEachDescendant(...bind("a")),
forEachDescendant(...bind("b"))) will now trigger matches for all
combinations of matching "a" and "b"s.
- we now never expose bound nodes from partial matches in matchers that
did not match in the end - this fixes a long-standing issue

FIXMEs:
- rename BoundNodesTreeBuilder to BoundNodesBuilder or
BoundNodesSetBuilder, as we don't build a tree any more; this is out
of scope for this change, though
- we're seeing some performance regressions (around 10%), but I expect
some performance tuning will get that back, and it's easily worth
the increase in expressiveness for now

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184313 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTTypeTraits.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
9063302a82423cb83f002257a416741850739a70 19-Jun-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Emit and install appropriately mangled vbtables

In Itanium, dynamic classes have one vtable with several different
address points for dynamic base classes that can't share vtables.

In the MS C++ ABI, each vbtable that can't be shared gets its own
symbol, similar to how ctor vtables work in Itanium. However, instead
of mangling the subobject offset into the symbol, the unique portions of
the inheritance path are mangled into the symbol to make it unique.

This patch implements the MSVC 2012 scheme for forming unique vbtable
symbol names. MSVC 2010 use the same mangling with a different subset
of the path. Implementing that mangling and possibly others is TODO.

Each vbtable is an array of i32 offsets from the vbptr that points to it
to another virtual base subobject. The first entry of a vbtable always
points to the base of the current subobject, implying that it is the
same no matter which parent class contains it.

Reviewers: rjmccall

Differential Revision: http://llvm-reviews.chandlerc.com/D636

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184309 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
3882aed80cbb38e007e4fb80076b400a9a4b8445 19-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix pr16354.

We now reject things like

struct ABC {
static double a;
};
register double ABC::a = 1.0;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b0f9314bbe29d09c3ea3f76a257125d1568665c7 19-Jun-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r184249, "doc. parsing: Allow parameter name "..." for variadic functions/methods."

It crashes in the case;

/// Without any "param"s in the description.
int printf(const char *format, ...);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
c894b326cf10b1ea4610ccddcc40e5648363c9ba 19-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184277 91177308-0d34-0410-b5e6-96231b3b80d8
ema/IdentifierResolver.h
fc0f91cf0673775ce4b8b174dbb05ad2e4e6cd01 19-Jun-2013 Manman Ren <mren@apple.com> Debug Info: support for gdwarf-2 gdwarf-3 gdwarf-4

These options will add a module flag with name "Dwarf Version".
The behavior flag is currently set to Warning, so when two values disagree,
a warning will be emitted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184276 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
7e5e2d0c53b1b7253621d955089c0d14fe2a8078 19-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> doc. parsing: Allow parameter name "..." for variadic functions/methods.
// rdar://14124644


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
ee76e7215d27c25bb053b71ae0a59119c08ccef9 18-Jun-2013 Michael Gottesman <mgottesman@apple.com> [multiprecision-builtins] Added missing builtin __builtin_{add,sub}cb for {add,sub} with carry for bytes.

I have had several people ask me about why this builtin was not available in
clang (since it seems like a logical conclusion). This patch implements said
builtins.

Relevant tests are included as well. I also updated the Clang language extension reference.

rdar://14192664.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184227 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
662f41bd9d4bfb4aebaba05e6043a6ff5f0dc2ff 18-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> DR14, DR101, and part of DR1: fix handling of extern "C" declarations in
namespaces, by treating them just like we treat extern "C" declarations in
function scope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184223 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3ed4d1cbaad763c103771bdefb8b986a08f165fc 18-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR14503: Don't assert if a constexpr constructor temploid instantiates to a
constructor that does not initialize all members, and that constructor is used
to initialize a global.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
419245e0719e1785e4eb3954ddaee122e921c738 18-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi]: privide typo correction for selectors
in addition of receiver having static type, but also when
receiver has dynamic type (of 'id' variety) as well as when
receiver is of 'Class' type vareity. // rdar://7853549


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184195 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
15f03ea2e223631e71d4ae75db986e2951d4e092 18-Jun-2013 Reid Kleckner <reid@kleckner.net> Remove option emitter from clang-tblgen

The CMake build was still using it because I forgot to s/CLANG/LLVM/ in
the tablegen() call. The Makefile build is already using llvm-tblgen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184192 91177308-0d34-0410-b5e6-96231b3b80d8
river/CMakeLists.txt
68effa0d764cf6fc7b6f9729481ee2c6c5143f3b 18-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize CodeCompletionContext::getNumSelIdents()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184168 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
b8b52972c72b2ba6fe171c522e5d3d7d69503021 18-Jun-2013 John McCall <rjmccall@apple.com> Add support for -fpcc-struct-return. Patch by Arthur O'Dwyer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184166 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
rontend/CodeGenOptions.h
f8421a3e44e9ef78372cc50b212a482e51c2c41c 18-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Delete dead code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184154 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
3e8ac1b4d50a3b13bdda99f9d842b0127315ecf0 18-Jun-2013 Eric Christopher <echristo@gmail.com> Accept and ignore -fdebug-types-section for now. This will be used
later with dwarf4 type hashing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184152 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a372f40dac73b69936f6a713df0808c740bb326c 17-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Include PathV1.h only where it is used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184090 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
0dcea35c21b001c9c2c9b4d4a8cfd4c82dc5f00c 17-Jun-2013 Serge Pavlov <sepavloff@gmail.com> Clean up empty struct/union recognition.
Make use of getTypeSizeInChars to detect structs/unions of zero size. It allows
more accurate detection of types of zero size. It however has a side effect -
sequence of used types may change, that is why the test 'override-layout' was
modified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d395e34ae7aeeeaf9a37a12bc0f6de87158c95c3 17-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi]: Provide fixit hint when message with typo
is sent to a receiver object. This is wip. // rdar://7853549


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184086 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
dd0b3c4c72464af92e2c27dd5a67e29f91ba7b28 17-Jun-2013 Reid Kleckner <reid@kleckner.net> [Driver] Remove the using namespace directives from headers

This adds a bunch of llvm::opt name specifiers to all the uses of types
from that namespace.

Reviewers: espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D983

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184079 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/CC1AsOptions.h
river/Compilation.h
river/Driver.h
river/Job.h
river/Tool.h
river/ToolChain.h
rontend/CompilerInvocation.h
6b96742ceedebb5eb8f1299ab67cb3ecd6d92aaf 17-Jun-2013 Reid Kleckner <reid@kleckner.net> Try to fix the bots with a forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cff15128c6c089bd6fae841b80680e6f5afbf0bf 17-Jun-2013 Reid Kleckner <reid@kleckner.net> [AST] Don't include RecursiveASTVisitor.h in ASTContext.h

The untemplated implementation of getParents() doesn't need to be in a
header file.

RecursiveASTVisitor.h is full of repeated macro expansion. Moving this
include to ASTContext.cpp speeds up compilation of
LambdaMangleContext.cpp, a small C++ file with few includes, from 3.7s
to 2.8s for me locally. I haven't measured a full build, but it can't
hurt.

I had to fix a few static analyzer files that were depending on
transitive includes of C++ AST headers.

Reviewers: rsmith, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D982

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
58df0426944c1bf8a80b6935bbea3815fc506474 17-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add warning group -Wdeprecated-register for C++11 warning on 'register' being
deprecated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
050315bfd0473323a68f2da99b51bbe2842f6c36 16-Jun-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::CodeComplete*

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184052 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
539470e7d38f71b7a0700e1f1b371e76480cf0a6 15-Jun-2013 Larisse Voufo <lvoufo@google.com> Updated the support for contextual conversion tweaks (n3323) with a previously overlooked part: implicitly converting array sizes to size_t, rather than contextually converting them to some unique type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
3bf68059002e67e393f3e89261f31506be223ca5 14-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Fix comments referring to non-existent types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ddb5a3926d715ab4354ca36117679e3f4d5d3e21 14-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Unify return type checking for functions and ObjC methods. Move all the
random checks for ObjC object return types to SemaType.cpp.

Fixes issue with ObjC method type checking reported on cfe-dev.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184006 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b1e25a1bc03292dc538d336573e0be1490223171 14-Jun-2013 Reid Kleckner <reid@kleckner.net> [Driver] Refactor clang driver to use LLVM's Option library

The big changes are:
- Deleting Driver/(Arg|Opt)*
- Rewriting includes to llvm/Option/ and re-sorting
- 'using namespace llvm::opt' in clang::driver
- Fixing the autoconf build by adding option everywhere

As discussed in the review, this change includes using directives in
header files. I'll make follow up changes to remove those in favor of
name specifiers.

Reviewers: espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D975

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183989 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Arg.h
river/ArgList.h
river/CC1AsOptions.h
river/CC1AsOptions.td
river/CMakeLists.txt
river/Compilation.h
river/Driver.h
river/Job.h
river/Makefile
river/OptParser.td
river/OptSpecifier.h
river/OptTable.h
river/Option.h
river/Options.h
river/Options.td
river/Tool.h
river/ToolChain.h
river/Util.h
rontend/CompilerInvocation.h
rontend/Utils.h
13f8404adee57d31863671aef3014484117492a6 14-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Avoid fallthrough in header, to allow external users of Clang libraries to
build with Clang's -Wimplicit-fallthrough warning enabled. The fallthrough
was not making this code better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183952 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
57a3bbfa9a97f174b0c80b0309e32f4329c4ae1b 13-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Use the sys::ExecuteAndWait that takes StringRefs.

Also don't depend on Program.h including PathV1.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183935 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
ad24ad4c741cad0fe79d6e4a74edc58d592a0f90 13-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Allow clang to build __clear_cache on ARM.

__clear_cache is special. It needs no signature, but is a real function in
compiler_rt or libgcc.

Patch by Andrew Turner.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183926 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
asic/BuiltinsAArch64.def
asic/BuiltinsARM.def
a438e68ad7da48e7e4903785e5e96732abcdadfb 13-Jun-2013 Manuel Klimek <klimek@google.com> Make it clear in Decl::hasBody that it can return true on redeclarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183896 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6698be8a6930730df5e61c941197e72682196187 13-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix some confusing diagnostic wording. s/implicit default/implicit/ if we're
not actually talking about a default constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
36155c14b691720ee3e94bfe99886229650bbfb5 13-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++11: If a class has a user-declared copy operation or destructor, the
implicit definition of a copy operation is deprecated. Add a warning for this
to -Wdeprecated. This warning is disabled by default for now, pending
investigation into how common this situation is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183884 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b2209fd149436c98e73d4b8667b40b5f4b974cd 13-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> In C++11, promote access declaration diagnostic from warning to error. There
doesn't seem to be any value in even adding a -W flag for this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
79f4bb7aad1b7c53f8a3bc43d89de0efdef8286d 13-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wdeprecated warnings and fixits for things deprecated in C++11:
- 'register' storage class
- dynamic exception specifications

Only the former check is enabled by default for now (the latter might be quite noisy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183881 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
7c3e615f01e8f9f587315800fdaf2305ed824568 13-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR12086, PR15117

Introduce CXXStdInitializerListExpr node, representing the implicit
construction of a std::initializer_list<T> object from its underlying array.
The AST representation of such an expression goes from an InitListExpr with a
flag set, to a CXXStdInitializerListExpr containing a MaterializeTemporaryExpr
containing an InitListExpr (possibly wrapped in a CXXBindTemporaryExpr).

This more detailed representation has several advantages, the most important of
which is that the new MaterializeTemporaryExpr allows us to directly model
lifetime extension of the underlying temporary array. Using that, this patch
*drastically* simplifies the IR generation of this construct, provides IR
generation support for nested global initializer_list objects, fixes several
bugs where the destructors for the underlying array would accidentally not get
invoked, and provides constant expression evaluation support for
std::initializer_list objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
a4bb99cd0055ba0e1f3107890e5b6cbe31e6d1cc 12-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Move detection of reference members binding to temporaries from building of
CXXCtorInitializers to the point where we perform the questionable lifetime
extension. This exposed a selection of false negatives in the warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183869 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
671538e8a51eab5bd65a1f9f327ba7f44f84e486 12-Jun-2013 Richard Trieu <rtrieu@google.com> Introducing -Wheader-guard, a warning that checks header guards actually work
properly. This warning checks that the #ifndef and #define directives at
the beginning of a header refer to the same macro name. Includes a fix-it
hint to correct the header guard.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183867 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/HeaderSearch.h
ex/MultipleIncludeOpt.h
ex/Preprocessor.h
2049840b0ffe8ee4bf39051cfa8ca08440c8f667 12-Jun-2013 Stephen Hines <srhines@google.com> Merge commit '1342a4ef62dd7b839c6f09348b246a4f00282f29' into merge_20130612
1342a4ef62dd7b839c6f09348b246a4f00282f29 12-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Port HTMLDiagnostics to PathV2. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183849 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Core/HTMLRewrite.h
34392373fe25e943586de0fdbe37b806c3f7ff70 11-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Include PathV1.h in files that use it.

This is preparation for replacing Path.h with PathV2.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183781 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
605c59a1d1a11112c643031770c616e2e441c349 11-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Make ASTContext::Allocate use size_t for the size argument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183757 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2ec2b8459392f3f2f00d816b40e73113d444d838 11-Jun-2013 David Majnemer <david.majnemer@gmail.com> Implement DR85: Redeclaration of member is forbidden

Disallow the existence of a declaration of a member class that isn't a
forward declaration before it's definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183722 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1f01f7c160c06f8290b4f1c203e36b242074c6b1 11-Jun-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Allow building a precompiled preamble with compiler errors

A while ago we allowed libclang to build a PCH that had compiler errors; this was to retain the performance
afforded by a PCH even if the user's code is in an intermediate state.

Extend this for the precompiled preamble as well.

rdar://14109828

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183717 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
erialization/ASTWriter.h
808ad75e78c6c736a7ddcf2b99e3cf1c02dca0d3 11-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> Remove mis-grouping of an objc diagostic in my last
patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183714 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
4017d7378b1544e6c43f0ad857e6c18c3957efe0 11-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi]: Issue better warning when nsstring literal is missing
the '@'. PR16287 and // rdar://14106083


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
7044668ecb518496e463ea2dacae100d4badfd19 10-Jun-2013 Adrian Prantl <aprantl@apple.com> cleanup (address some more review comments for r183474):
- reduce default buffer size to 64, which will still be large enough to
hold any property names found in the wild.
- get rid of the /*static*/ comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183697 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ef0e4e6eda13c2dcd6d4d43f1750d1d73202d16a 10-Jun-2013 Richard Trieu <rtrieu@google.com> Add a new warning, -Wlogical-not-parentheses, to -Wparentheses.

This warning triggers on the logical not of a non-boolean expression on the
left hand side of comparison. Often, the user meant to negate the comparison,
not just the left hand side of the comparison. Two notes are also emitted,
the first with a fix-it to add parentheses around the comparison, and the other
to put parenthesis around the not expression to silence the warning.

bool not_equal(int x, int y) {
return !x == y; // warn here
}

return !(x == y); // first fix-it, to negate comparison.

return (!x) == y; // second fix-it, to silence warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183688 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
03a83238c39e290ed6e2ced7663efa9fa8c19158 10-Jun-2013 Manuel Klimek <klimek@google.com> Fixes the comment for hasDeclaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183640 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
c910d4cfa5042f2c9da1eb4e0b6ed59240c0eeee 08-Jun-2013 Reid Kleckner <reid@kleckner.net> Revert "[Sema] Make FunctionType's TSI use unadjusted argument types"

This reverts commit r183614.

It broke test/Sema/block-printf-attribute-1.c on non-Windows platforms,
and the fix is not trivial.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
63c9a92a805394c1ca9e4a5fd8afb3acbb918d03 08-Jun-2013 Reid Kleckner <reid@kleckner.net> [Sema] Make FunctionType's TSI use unadjusted argument types

This helps preserve the type-as-written in the AST, which we need for
MSVC mangling. In particular, we need to preserve the types of array
parameters in function pointer types.

The essence of this change is:
- QualType ArgTy = Param->getType();
+ QualType ArgTy = Param->getTypeSourceInfo()->getType();

... followed by the adjustment in ActOnFunctionDeclarator().

Differential Revision: http://llvm-reviews.chandlerc.com/D883

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
122e601886ae527d6e7100c589339c05190a168a 08-Jun-2013 Serge Pavlov <sepavloff@gmail.com> Recognition of empty structures and unions is moved to semantic stage

Differential Revision: http://llvm-reviews.chandlerc.com/D586


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
80e8ea92d6dcaa05165dcb4730485db82dcd4629 08-Jun-2013 Adrian Prantl <aprantl@apple.com> address some comments on r183474:
- factor the name construction part out from constructSetterName
- rename constructSetterName to the more appropriate constructSetterSelector

no functionality change intended.
rdar://problem/14035789

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183582 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
44ee0a710c59d8e6793189f903bae21c16814324 07-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Re-commit r183466 with a fix to make the TypeLoc casting machinery work
correctly in the presence of qualified types.

(I had to change the unittest because it was trying to cast a
QualifiedTypeLoc to TemplateSpecializationTypeLoc.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
4ff3225c1f343c3e0d461a0e387c7c6012cff5ba 07-Jun-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Thread the 'Invalid' out parameter through SourceManager::getSLocEntry() and callees of SourceManager::getSLocEntryByID().

Also add an 'Invalid' check in SourceManager::computeMacroArgsCache().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183538 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2785b9aabcb2c3fd6f7dd8b63d3cd3d4b9bca284 07-Jun-2013 Alexander Kornienko <alexfh@google.com> Fixed calculation of penalty when breaking tokens.

Summary:
Introduced two new style parameters: PenaltyBreakComment and
PenaltyBreakString. Add penalty for each character of a breakable token beyond
the column limit (this relates mainly to comments, as they are broken only on
whitespace). Tuned PenaltyBreakComment to prefer comment breaking over breaking
inside most binary expressions.
Fixed a bug that prevented *, & and && from being considered TT_BinaryOperator
in the presense of adjacent comments.

Reviewers: klimek, djasper

Reviewed By: klimek

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D933

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183530 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
20387efff0870da2c8b30bb62ae661239a903021 07-Jun-2013 Manuel Klimek <klimek@google.com> Reverts r183466: "Perform dynamic alignment computations..."

This introduces bugs in TemplateSpecializationTypeLoc's angle bracket
locations.

Regression test follows in a subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
86875b11db3536858116effd80cbb06b6810303d 07-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Perform dynamic alignment computations so that the data in TypeLocs is
correctly aligned. Not performing such computations led to misaligned loads,
which crash on some platforms and are generally bad on other platforms.

The implementation of TypeLocBuilder::pushImpl is rather messy; code using
TypeLocBuilder accidentally assumes that partial TypeLocs are
laid out like a complete TypeLoc. As a followup, I intend to work on
fixing the TypeLocBuilder API to avoid exposing partial TypeLocs; this should
substantially simplify the implemementation.

Fixes PR16144.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
585bee48bac063f31696e308798f9432b5ba4116 07-Jun-2013 David Majnemer <david.majnemer@gmail.com> Implement DR7

Disallowing deriving from classes that have private virtual base classes
except in instances where the deriving class would be able to cast
itself to the private virtual base via a different derivation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49a246f4fad959888bb0164c624c3c2b03078e91 06-Jun-2013 Jordan Rose <jordan_rose@apple.com> [analyzer; new edges] Simplify edges in a C++11 for-range loop.

Previously our edges were completely broken here; now, the final result
is a very simple set of edges in most cases: one up to the "for" keyword
for context, and one into the body of the loop. This matches the behavior
for ObjC for-in loops.

In the AST, however, CXXForRangeStmts are handled very differently from
ObjCForCollectionStmts. Since they are specified in terms of equivalent
statements in the C++ standard, we actually have implicit AST nodes for
all of the semantic statements. This makes evaluation very easy, but
diagnostic locations a bit trickier. Fortunately, the problem can be
generally defined away by marking all of the implicit statements as
part of the top-level for-range statement.

One of the implicit statements in a for-range statement is the declaration
of implicit iterators __begin and __end. The CFG synthesizes two
separate DeclStmts to match each of these decls, but until now these
synthetic DeclStmts weren't in the function's ParentMap. Now, the CFG
keeps track of its synthetic statements, and the AnalysisDeclContext will
make sure to add them to the ParentMap.

<rdar://problem/14038483>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183449 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
nalysis/CFG.h
48a1e81715bf9c37a4168d83f4218e6517e29541 06-Jun-2013 Joey Gouly <joey.gouly@arm.com> Fix a crash with -Wassign-enum, where we didn't adjust the APInt type of the
constant. Also fix some spelling mistakes and formatting issues.

Reviewed by Richard Smith over IRC.

Fixes PR15069.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183409 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
63d5335aea916584b76790af1f1ed7caeaf8efeb 06-Jun-2013 Pavel Labath <labath@google.com> ClangTool: strip -o from the command line

Summary:
This patch creates a new ArgumentsAdjuster, which removes all -o parameters from
the command line. This adjuster is inserted by default into the ClangTool pipeline.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D925

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183398 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ArgumentsAdjusters.h
ooling/Tooling.h
40cba90626044ff28b58c33e743366e94c898227 06-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement DR1270: braces can be elided in all aggregate initialization, not
just copy-list-initialization in a variable declaration. This effectively
reverts r142147.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183397 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
632182d0e2011a6e21cf9abe34eef5a1f037e7ef 06-Jun-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Improve debug output for PathDiagnosticPieces.

You can now dump a single PathDiagnosticPiece or PathDiagnosticLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183367 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
9464a08a743295d6aefaca1a751b5b4d371cf99c 05-Jun-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Provide fixit with suggested spelling correction
for -Wundeclared-selector warnings. // rdar://14039037



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
2aae5ba15d07e9aa37ff9b03ad0024c0707068f5 05-Jun-2013 Timur Iskhodzhanov <timurrrr@google.com> Recommit r183298+r183300 'Get rid of VTableContext::ComputeMethodVTableIndices() and VTableContext::getNumVirtualFunctionPointers()'

In r183298, I've used llvm::SmallPtrSet<..., 8> instead of llvm::SmallVector<..., 8> for NewVirtualFunctionsTy by mistake.
This only manifested when a class had more than 8 virtual functions, which wasn't covered by unit-tests

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183310 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
d38a21f5888dd3940739e27f2d309a112d6f3790 05-Jun-2013 Timur Iskhodzhanov <timurrrr@google.com> Revert r183298 and r183300 as the former broke the virtual function lookup in libcxx __locale

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
f19759ea386d0576a7a0e250cedccc33ed560bf5 05-Jun-2013 Timur Iskhodzhanov <timurrrr@google.com> Get rid of VTableContext::ComputeMethodVTableIndices() and VTableContext::getNumVirtualFunctionPointers(); also add some tests for the VTable indices output to make sure we don't regress

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
9adba39460dfa5282b75dbd27db44ccfb4d1f511 05-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Default to PIE and using stack protection on OpenBSD.

Patch by Matthew Dempsky.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183295 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
211c8ddb5b500ed84833751363d0cfe1115f4dd3 05-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Model temporary lifetime-extension explicitly in the AST. Use this model to
handle temporaries which have been lifetime-extended to static storage duration
within constant expressions. This correctly handles nested lifetime extension
(through reference members of aggregates in aggregate initializers) but
non-constant-expression emission hasn't yet been updated to do the same.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/ExprCXX.h
ST/Stmt.h
asic/DiagnosticASTKinds.td
asic/Specifiers.h
ema/Initialization.h
49e1d9814a34e4024a347c2fce8e9567c40e6bf5 04-Jun-2013 Alexander Kornienko <alexfh@google.com> Added Lexer::getBufferEnd().

Summary:
There's Lexer::getBufferStart(), and we need getBufferEnd() to access
the whole input buffer in clang::format::reformat. We don't want to
rely on the fact that the Lexer::BufferEnd always points to '\0', as there can
be embedded '\0's as well.

Reviewers: jordan_rose

Reviewed By: jordan_rose

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D916

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183236 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
7a337af9e8bc752a2d3b227e4058ed2baf7a19d1 04-Jun-2013 Samuel Benzaquen <sbenza@google.com> Parser/Registry argument enhancements.

Summary:
Parser/Registry argument enhancements.
- 2 argument support.
- unsigned values support.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D915

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183231 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/Dynamic/Diagnostics.h
STMatchers/Dynamic/Parser.h
STMatchers/Dynamic/VariantValue.h
48b3f0f74da575a66802dc5019b7440914983885 04-Jun-2013 Manuel Klimek <klimek@google.com> Enables chaining of argument adjusters in clang tools.

This enables changing clang-check to get extra arguments.

Patch by Pavel Labath.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183227 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
4d2ea738175aacc7405e76a7e92b7e20f05519c6 04-Jun-2013 Bob Wilson <bob.wilson@apple.com> Rephrase asm_mismatched_size_modifier diagnostic. <rdar://problem/14050339>

The text of this diagnostic was unnecessarily specific to the current ARM
implementation of validateConstraintModifier, and it gave a potentially
confusing suggestion for fixing the problem. The ARM-specific issue is not
a big deal since that is the only target that currently does any checking of
asm operand modifiers, but until my change in 183172 it was still wrong for
output operands in the way that it referred to the value being truncated when
put into a register, since output operands are retrieved from the registers
instead of being put into them. The bigger problem is that its suggestion to
"use a modifier" is wrong and confusing in the case where a "q" modifier is
incorrectly used with an "r" constraint. In that case, the solution might
well be to remove the modifier or perhaps change the constraint. It's better
to just leave the diagnostic message more generic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a7ff62f9443efa3b13a28a1e566d4625b15b8553 04-Jun-2013 Aaron Ballman <aaron@aaronballman.com> Adding support for MSVC #pragma detect_mismatch functionality by emitting a FAILIFMISMATCH linker command into the object file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
asic/DiagnosticParseKinds.td
ex/PPCallbacks.h
arse/Parser.h
ema/Sema.h
16b0a310f5649d25849d84409841f401e7a9a0e5 03-Jun-2013 David Blaikie <dblaikie@gmail.com> UnresolvedMemberExpr should have an expr location of the member (not the base)

This matches the behavior of MemberExpr and makes diagnostics such as
"reference to non-static member function must be called" more legible in
the case that the base & member are split over multiple lines (prior to
this change the diagnostic would point to the base, not the member -
making it very unclear in chained multi-line builder-style calls)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4f37d925927dfdd0c770702ffb22de38fc2007dc 03-Jun-2013 Samuel Benzaquen <sbenza@google.com> Add support for .bind("foo") expressions on the dynamic matchers.

Summary: Add support on the parser, registry, and DynTypedMatcher for binding IDs dynamically.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D911

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183144 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
STMatchers/Dynamic/Diagnostics.h
STMatchers/Dynamic/Parser.h
STMatchers/Dynamic/Registry.h
f0f353b36f173ea282209070fcdbbedab84c19db 03-Jun-2013 Manuel Klimek <klimek@google.com> Fix memory leak for APValues that do memory allocation.

This patch ensures that APValues are deallocated with the ASTContext by
registering a deallocation function for APValues to the ASTContext.

Original version of the patch by James Dennett.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/ASTContext.h
4e43dec4df9d7dd8e07b47bb15967f1b733a9bc6 03-Jun-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix handling of pointers-to-members and comma expressions when
lifetime-extending temporaries in reference bindings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c89f02afb018316a0c36bf62b2cb75d420f2fff3 31-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Disable non-standard library builtins in non-gnu language modes.

Fixes PR16138.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
f98c688968777214bfff7a6cc9bbd4ff78e9c1d3 30-May-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Implements gcc's -Wselector option
which diagnoses type mismatches of identical
selectors declared in classes throughout.
// rdar://14007194


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
e98089083f2504a4b1f55a9f00a2a2df63cb72e0 30-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix PR16060.

The testcase in PR16060 points out that while template arguments can
show that a type is not externally visible, the standards still says
they have external linkage.

In terms of our implementation, it means that we should merge just the
isExternallyVisible bit, not the formal linkage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Visibility.h
76eed42f99158082fae5b903f46dfb6355e66f95 30-May-2013 Aaron Ballman <aaron@aaronballman.com> Microsoft has a language extension which allows union members to be
references. What's more, they use this language extension in their
ATL header files (which come as part of MFC and the Win32 SDK). This patch implements support for the Microsoft extension, and addresses PR13737.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182936 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c1d73fe9f44d302951f81b06271647c227c2a3e8 30-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix typo in comment.

Found by -Wdocumentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
5ec9580f68661ffccff07177613b692d0acb4797 30-May-2013 Edwin Vane <edwin.vane@intel.com> Coding style fix for SourceFileCallbacks



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182930 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
da8d379f1e58af98640c2df222ec0161ff913941 30-May-2013 Serge Pavlov <sepavloff@gmail.com> Fixed typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182927 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
34bd3bf4996cf0941e3cdfde07d97f6b3d54070d 30-May-2013 Serge Pavlov <sepavloff@gmail.com> Added documentation to TypeVisitor. No code changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182911 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
2628b44e100da28972a14854f98d0aa6f7b888e0 29-May-2013 Ted Kremenek <kremenek@apple.com> Split off casts to void* for -Wint-to-pointer-cast to subgroup -Wint-to-void-pointer-cast.

This change is motivated from user feedback that some APIs use
void* as an opaque "context" object that may not really be a pointer.
Such users want an ability to turn off the warning for casts
to void* while preserving the warning for other cases.

Implements <rdar://problem/14016721>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182884 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
42b7861f957591ab40128419dcef0fae081364d6 29-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182874 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5a8b0491df5491566ddbf63a99e714a2bd4bb046 29-May-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] There are no key functions in the Microsoft C++ ABI

MSVC's class data is always comdat, so clang's should always be
linkonce_odr in LLVM IR.

Reviewers: pcc

Differential Revision: http://llvm-reviews.chandlerc.com/D838

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetCXXABI.h
3c16e699b2a6926017b5f7a1516dc1be67468713 29-May-2013 Edwin Vane <edwin.vane@intel.com> Tooling: Call back for both begin and end of sources

newFrontendActionFactory() took a pointer to a callback to call when a source
file was done being processed by an action. This revision updates the callback
to include an ante-processing callback as well.

Callback-providing class renamed and callback functions themselves renamed.
Functions are no longer pure-virtual so users aren't forced to implement both
callbacks if one isn't needed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182864 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
bbc8776493fc0176d925a5b528e61ee400895047 29-May-2013 Daniel Jasper <djasper@google.com> Add option to always break template declarations.

With option enabled (e.g. in Google-style):
template <typename T>
void f() {}

With option disabled:
template <typename T> void f() {}

Enabling this for Google-style and Chromium-style, not sure which other
styles would prefer that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182849 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
37bccca57ebe497206649d33f306eadae065dd72 29-May-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi]: Improve on diagnostic when a method used
in an @selector expression has no implementation.
// rdar://14002507


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182812 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7f1fd2f182717d5ce6cde60398128910c90f98be 29-May-2013 Anna Zaks <ganna@apple.com> [analyzer] Use the expression’s type instead of region’s type in ArrayToPointer decay evaluation

This gives slightly better precision, specifically, in cases where a non-typed region represents the array
or when the type is a non-array type, which can happen when an array is a result of a reinterpret_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182810 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
dc0705645276258afddb06cdf0fd7c8840251ee0 28-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Check the linkage cache at every recursive step.

Before this patch the linkage cache was only used by the entry level function
(getLinkage). The function that does the actual computation (getLVForDecl),
never looked at it.

This means that we would not reuse an entry in the cache when getLVForDecl did
a recursive call. This patch fixes that by adding another computation enum
value for when we don't care about the linkage at all and having getLVForDecl
check the cache in that case.

When running "clang -cc1" over SemaExpr.ii this brings the number of linkage
computations from 93749 to 58426. When running "clang -cc1 -emit-llvm -O3" it
goes from 198708 to 161444.

For SemaExpr.ii at least linkage computation is a small enough percentage of
the work that the time difference was in the noise.

When asserts are enabled this patch also causes clang to check the linkage
cache even on recursive calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182799 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
8f9e590f78b1b05c36c2a14d68c4b9f9acbb891a 28-May-2013 Peter Collingbourne <peter@pcc.me.uk> Add an overridable MatchCallback::onEndOfTranslationUnit() function.

Differential Revision: http://llvm-reviews.chandlerc.com/D745

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182798 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
538bbe597b935a74d95c668ad209536753f13481 28-May-2013 Fariborz Jahanian <fjahanian@apple.com> Patch to issue error when target of MacOS and iOS
does not support large load/store of atomic objects.
// rdar://13973577


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticSemaKinds.td
bdaa13418851be5cc1ca3be88fbd82b15efecde7 27-May-2013 Peter Collingbourne <peter@pcc.me.uk> Driver: implement --dyld-prefix option.

This option is used to select a dynamic loader prefix to be used
at runtime. Currently this is implemented for the Linux toolchain.

Differential Revision: http://llvm-reviews.chandlerc.com/D851

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182744 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.td
88ce12aaf6f0a5a55a458ad152218b4072456ee6 27-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Move 3 helper function to Linkage.h

This removes a duplicate from Decl.cpp and a followup patch will use
isExternallyVisible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Linkage.h
050309fdc6d8416b217f651141d5f391512b1041 27-May-2013 Sergey Matveev <earthdok@google.com> Add -fsanitize=leak to driver options.

If -fsanitize=leak is specified, link the program with the
LeakSanitizer runtime. Ignore this option when -fsanitize=address is specified,
because AddressSanitizer has this functionality built in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182729 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Sanitizers.def
a99ecbcc4c431d52df0b01539035ab5281d54656 25-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix linkage computation for derived types in inline functions.

John noticed that the fix for pr15930 (r181981) didn't handle indirect
uses of local types. For example, a pointer to local struct, or a
function that returns it.

One way to implement this would be to recursively look for local
types. This would look a lot like the linkage computation itself for
types.

To avoid code duplication and utilize the existing linkage cache, this
patch just makes the computation of "type with no linkage but
externally visible because it is from an inline function" part of the
linkage computation itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182711 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Type.h
asic/Linkage.h
asic/Visibility.h
b07d448a625d7399d871079d55491c6b10316e6f 25-May-2013 Nico Weber <nicolasweber@gmx.de> Warn on va_start() when called with a reference parameter.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf 18.7p3
explicitly calls this (and some other things) out as undefined.

Also move 2 other existing warnings behind the new -Wvarargs flag.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182694 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
942dfe2e4d75f9d7c6f2e73eadac6fa659a5f853 24-May-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Don't diagnose an empty lookup for inline assmebly. This happen
for labels in inline assembly that aren't in the lookup tables. E.g.,

__asm {
a:
jmp a
}

rdar://13983623


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182659 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3b7deda7137e62810a810ce25b062927a9fc7c71 24-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] If we hit a failure while loading a PCH/module, abort parsing instead of trying to continue in an invalid state.

Also don't let libclang create a PCH with such an error.

Fixes rdar://13953768

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182629 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
ex/Preprocessor.h
arse/Parser.h
erialization/ASTReader.h
d5dcdb2658c5aa4568c61917a1620434b055c113 24-May-2013 Bill Wendling <isanbard@gmail.com> Constify the 'dump' method so that it can be called by a const object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182620 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
2424eefa6936ec2dc35188e19c99e2f85428b52e 23-May-2013 Daniel Jasper <djasper@google.com> Improve formatting of braced lists.

Before:
vector<int> x { 1, 2, 3 };
After:
vector<int> x{ 1, 2, 3 };

Also add a style option to remove the spaces inside braced lists,
so that the above becomes:
std::vector<int> v{1, 2, 3};

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182570 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
aa9df09729fb8aee3e645549e95fcb413306a7aa 23-May-2013 Aaron Ballman <aaron@aaronballman.com> Adding in parsing and the start of semantic support for __sptr and __uptr pointer type qualifiers. This patch also fixes the correlated __ptr32 and __ptr64 pointer qualifiers so that they are truly type attributes instead of declaration attributes.

For more information about __sptr and __uptr, see MSDN: http://msdn.microsoft.com/en-us/library/aa983399.aspx

Patch reviewed by Richard Smith.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
asic/TokenKinds.def
843a13649d975c12d6205e6cfedec73727329299 22-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add entire list of supported builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182468 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsNVPTX.def
440d456c5cf9613a3ee6a3297f892ddd8da5b8f8 22-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR16094: I should have known Obj-C init-capture disambiguation couldn't be
*that* easy...

Try a bit harder to disambiguate. This is mostly straightforward, but for
=-style initializers, we actually need to know where an expression ends:

[foo = bar baz]

is a message send, whereas

[foo = bar + baz]

is a lambda-introducer. Handle this by parsing the expression eagerly, and
replacing it with an annotation token. By chance, we use the *exact same*
parsing rules in both cases (except that we need to assume we're inside a
message send for the parse, to turn off various forms of inapplicable
error recovery).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182432 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
arse/Parser.h
569b4ad6506960f1a7f191107c185cb1566a7fbb 21-May-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C arc: don't count use of __weak
variables when they are used in such unevaluated
contexts as __typeof, etc. // rdar://13942025


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182423 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
097e0a2cb08c8244a6923489acc8f890e6a99b59 21-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> Refactor places which perform contextual implicit conversions to go through a
common function. The C++1y contextual implicit conversion rules themselves are
not yet implemented, however.

This also fixes a subtle bug where template instantiation context notes were
dropped for diagnostics coming from conversions for integral constant
expressions -- we were implicitly slicing a SemaDiagnosticBuilder into a
DiagnosticBuilder when producing these diagnostics, and losing their context
notes in the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182406 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6bd3b93200c6ae141d0f7444ffb4cacd52b183ed 21-May-2013 Daniel Jasper <djasper@google.com> Let clang-format move the cursor appropriately.

With this patch, clang-format will try to keep the cursor at the
original code position in editor integrations (implemented for emacs and
vim). This means, after formatting, clang-format will try to keep the
cursor on the same character of the same token.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182373 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
800ff45b49e306a5706f249d3289281dc224dcb3 21-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove unused diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182368 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticParseKinds.td
0a74a4ccc4ecfe1a2792ab72c83815323d8fc914 21-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> In -ast-dump, only dump comments when dumping the actual Decl to which they
attach, rather than merging all comments on the declaration chain. This gives a
more faithful dump, and has the side benefit of unbreaking uses of dump() from
within AST deserialization (where the redeclaration chain may not be sane).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182350 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
beba3e80378f38f3d1e1ef030dacdd438373d3d5 20-May-2013 Reid Kleckner <reid@kleckner.net> Warn on and drop dllimport attrs from variable definitions

AsmPrinter::EmitLinkage() does not handle dllimport linkage. The LLVM
verifier should also be fixed to reject this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182320 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8dbda516d343706bae904f800c6d64e145d58a8c 20-May-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi]: When an class conforms to multiple
protocols that declare the same property of incompatible
types, issue a warning when class implementation synthesizes
the property. // rdar://13075400


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
a722534711fd93b5685e1a00f37a62f6a578dacd 20-May-2013 Reid Kleckner <reid@kleckner.net> Implement __declspec(selectany) under -fms-extensions

selectany only applies to externally visible global variables. It has
the effect of making the data weak_odr.

The MSDN docs suggest that unused definitions can only be dropped at
linktime, so Clang uses weak instead of linkonce. MSVC optimizes away
references to constant selectany data, so it must assume that there is
only one definition, hence weak_odr.

Reviewers: espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D814

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
58ea48dc1dd970f131207e00ae7ece159d1a08ed 20-May-2013 Douglas Gregor <dgregor@apple.com> Add -Wincomplete-module, which detects when a header is included from a module but isn't itself part of a module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
885f87b4be987fd8912779419ec88e3c37481967 19-May-2013 Alexander Kornienko <alexfh@google.com> Clang-format: allow -style="{yaml/json}" on command line

Summary: + improved handling of default style and predefined styles.

Reviewers: djasper, klimek

Reviewed By: klimek

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D813

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182205 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
d1913d89e2ff3b38bb6293833cfd9d8ead76348e 18-May-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Add a debug dump for PathPieces, a list of PathDiagnosticPieces.

Originally implemented by Ted, extended by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182186 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
bb518991ce4298d8662235fc8cb13813f011c18d 18-May-2013 Jordan Rose <jordan_rose@apple.com> Revert "[analyzer; alternate edges] improve support for edges with PseudoObjectExprs."

Ted and I spent a long time discussing this today and found out that neither
the existing code nor the new code was doing what either of us thought it
was, which is never good. The good news is we found a much simpler way to
fix the motivating test case (an ObjCSubscriptExpr).

This reverts r182083, but pieces of it will come back in subsequent commits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182185 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
nalysis/AnalysisContext.h
5c6134fd09bc5b738dafdd1c774edde13d95cb20 18-May-2013 DeLesley Hutchins <delesley@google.com> Thread safety analysis: add two new attributes to the thread safety analysis:
assert_exclusive_lock and assert_shared_lock. These attributes are used to
mark functions that dynamically check (i.e. assert) that a lock is held.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182170 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
e9aae62e8bca3abfc1dc36f67845444291171e13 17-May-2013 Ted Kremenek <kremenek@apple.com> [analyzer; alternate edges] improve support for edges with PseudoObjectExprs.

This optimizes some spurious edges resulting from PseudoObjectExprs.
This required far more changes than I anticipated. The current
ParentMap does not record any hierarchy information between
a PseudoObjectExpr and its *semantic* expressions that may be
wrapped in OpaqueValueExprs, which are the expressions actually
laid out in the CFG. This means the arrow pruning logic could
not map from an expression to its containing PseudoObjectExprs.

To solve this, this patch adds a variant of ParentMap that
returns the "semantic" parentage of expressions (essentially
as they are viewed by the CFG). This alternate ParentMap is then
used by the arrow reducing logic to identify edges into pseudo
object expressions, and then eliminate them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
nalysis/AnalysisContext.h
24ce46c8cec99d2e63bed052696e79b6487885fb 17-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> Use 'c++' not 'cxx' in these diagnostic group names for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182075 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
7a9f7c7c68673c46d6e2b83fec6f4cbfbd25f475 17-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> A little ArrayRef'ization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ema/Template.h
b5eb3f5bf383807103dc1377a124fd96ee21d02a 17-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15757: When we instantiate an inheriting constructor template, also
instantiate the inherited constructor template and mark that as the constructor
which the instantiated specialization is inheriting. This fixes a
crash-on-valid when trying to compute the exception specification of a
specialization of the inheriting constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182072 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
50fa64d4411a42e0b4f373a84d8d4f5cbf339ea3 17-May-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Don't inline ~shared_ptr.

The analyzer can't see the reference count for shared_ptr, so it doesn't
know whether a given destruction is going to delete the referenced object.
This leads to spurious leak and use-after-free warnings.

For now, just ban destructors named '~shared_ptr', which catches
std::shared_ptr, std::tr1::shared_ptr, and boost::shared_ptr.

PR15987

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182071 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
d95b70175646829c26344d5f0bda1ec3009f2a5b 17-May-2013 Anna Zaks <ganna@apple.com> [analyzer] Add an option to use the last location in the main source file as the report location.

Previously, we’ve used the last location of the analyzer issue path as the location of the
report. This might not provide the best user experience, when one analyzer a source
file and the issue appears in the header. Introduce an option to use the last location
of the path that is in the main source file as the report location.

New option can be enabled with -analyzer-config report-in-main-source-file=true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182058 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
c50c6ff49aa3648ae031349de6f09439f52425f0 16-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Lexer] Improve Lexer::getSourceText() when the given range deals with function macro arguments.

This is a modified version of a patch by Manuel Klimek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b8ed071b88c1fd100eaa701f5fd7f5ebe8b9e362 16-May-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C arc: Diagnose when user attempts to
synthesize a property getter method that overrides
a method definition named 'retain' and the like.
Fixes // rdar://13885083


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182039 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f11bbb9b0e9b741c84214459526d3e5e137e9165 16-May-2013 Daniel Jasper <djasper@google.com> Add option to put short loops on a single line.

This enables things like:

for (int &v : vec) v *= 2;

Enabled for Google style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182000 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
8a99945769aa83270bda4ae4890f519800aa19eb 16-May-2013 Daniel Jasper <djasper@google.com> Add a more convenient interface to use clang-format.

It turns out that several implementations go through the trouble of
setting up a SourceManager and Lexer and abstracting this into a
function makes usage easier.

Also abstracts SourceManager-independent ranges out of
tooling::Refactoring and provides a convenience function to create them
from line ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181997 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
ooling/Refactoring.h
0d8e9646bc000bab521ce52ed294209a92298cef 16-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> First pass of semantic analysis for init-captures: check the initializer, build
a FieldDecl from it, and propagate both into the closure type and the
LambdaExpr.

You can't do much useful with them yet -- you can't use them within the body
of the lambda, because we don't have a representation for "the this of the
lambda, not the this of the enclosing context". We also don't have support or a
representation for a nested capture of an init-capture yet, which was intended
to work despite not being allowed by the current standard wording.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/Lambda.h
ema/ScopeInfo.h
ema/Sema.h
d049b40ef411eee12a735233dbe04fdc42c67e1a 16-May-2013 Jordan Rose <jordan_rose@apple.com> Remove unused, awkward CFGStmtVisitor and subclasses.

This class is a StmtVisitor that distinguishes between block-level and
non-block-level statements in a CFG. However, it does so using a hard-coded
idea of which statements might be block-level, which probably isn't accurate
anymore. The only implementer of the CFGStmtVisitor hierarchy was the
analyzer's DeadStoresChecker, and the analyzer creates a linearized CFG
anyway (every non-trivial statement is a block-level statement).

This also allows us to remove the block-expr map ("BlkExprMap"), which
mapped statements to positions in the CFG. Apart from having a helper type
that really should have just been Optional<unsigned>, it was only being
used to ask /if/ a particular expression was block-level, for traversal
purposes in CFGStmtVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181945 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
cce70c7c5f0f4c1a41658fbed845f8b3a565c99c 15-May-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Put back DefaultBool's implicit conversion to bool.

DefaultBool is basically just "bool with a default constructor", so it
really should implicitly convert to bool. In fact, it should convert to
bool&, so that it could be passed to functions that take bools by reference.

This time, mark the operator bool& as implicit to promise that it's
deliberate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181908 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
14040142a3b3c1029092bc1f7c51e347c3fa8f89 15-May-2013 Fariborz Jahanian <fjahanian@apple.com> improve of note message and minor refactoring of my last
patch (r181847).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0ff5074f37a66bca244a9d5d0da050ff68693ce2 15-May-2013 Hans Wennborg <hans@hanshq.net> Better diagnostics for string initialization.

This commit improves Clang's diagnostics for string initialization.
Where it would previously say:

/tmp/a.c:3:9: error: array initializer must be an initializer list
wchar_t s[] = "Hi";
^
/tmp/a.c:4:6: error: array initializer must be an initializer list or string literal
char t[] = L"Hi";
^

It will now say

/tmp/a.c:3:9: error: initializing wide char array with non-wide string literal
wchar_t s[] = "Hi";
^
/tmp/a.c:4:6: error: initializing char array with wide string literal
char t[] = L"Hi";
^

As a bonus, it also fixes the fact that Clang would previously reject
this valid C11 code:

char16_t s[] = u"hi";
char32_t t[] = U"hi";

because it would only recognize the built-in types for char16_t and
char32_t, which do not exist in C.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181880 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
caf42a3ef114900fd2ab927d1a13b4db000515e8 15-May-2013 Daniel Jasper <djasper@google.com> Remove diagnostics from clang-format.

We only ever implemented one and that one is not actually all that
helpful (e.g. gets incorrectly triggered by macros).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181871 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
7247c88d1e41514a41085f83ebf03dd5220e054a 15-May-2013 David Blaikie <dblaikie@gmail.com> Use only explicit bool conversion operator

The most common (non-buggy) case are where such objects are used as
return expressions in bool-returning functions or as boolean function
arguments. In those cases I've used (& added if necessary) a named
function to provide the equivalent (or sometimes negative, depending on
convenient wording) test.

DiagnosticBuilder kept its implicit conversion operator owing to the
prevalent use of it in return statements.

One bug was found in ExprConstant.cpp involving a comparison of two
PointerUnions (PointerUnion did not previously have an operator==, so
instead both operands were converted to bool & then compared). A test
is included in test/SemaCXX/constant-expression-cxx1y.cpp for the fix
(adding operator== to PointerUnion in LLVM).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclarationName.h
ST/ExprCXX.h
ST/ExternalASTSource.h
ST/NestedNameSpecifier.h
ST/StmtIterator.h
ST/Type.h
ST/TypeLoc.h
nalysis/Analyses/FormatString.h
nalysis/CFG.h
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/FrontendAction.h
ex/HeaderSearch.h
ex/MacroInfo.h
ex/ModuleMap.h
ex/Preprocessor.h
ema/Initialization.h
ema/Ownership.h
ema/Sema.h
ema/TypoCorrection.h
erialization/ASTReader.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/PathSensitive/Store.h
2a3c9664b826963a294b0e07141baad9517d402b 15-May-2013 Aaron Ballman <aaron@aaronballman.com> Unbreaking the MSVC build by adding an include. It broke with r181832.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9f00b1d3962147a2fe049b8b45f70680bc12fbc1 15-May-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [diagnostics] [QOI], when method is not
found for a receiver, note where receiver class
is declaraed (this is most common when receiver is a forward
class). // rdar://3258331


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181847 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
17828ca5857d5d9cadfffd339f888de58182c8f1 14-May-2013 David Blaikie <dblaikie@gmail.com> Provide operator<< for stream output of DeclarationNames

ASTDumper was already trying to do this & instead got an implicit bool
conversion by surprise (thus printing out 0 or 1 instead of the name of
the declaration). To avoid that issue & simplify call sites, simply make
it the normal/expected operator<<(raw_ostream&, ...) overload & simplify
all the existing call sites. (bonus: this function doesn't need to be a
member or friend, it's just using public API in DeclarationName)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclarationName.h
a3d813a8c292bee8349ef43065dab9b344650351 14-May-2013 Reid Kleckner <reid@kleckner.net> Fix copy-pasto in naming of LAST_MS_INHERITANCE[_ATTR]

Richard Smith pointed this out over a month ago.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/AttrKinds.h
6e01994046860c5c120c832a22557ec1c6b72ce9 14-May-2013 Reid Kleckner <reid@kleckner.net> Fix the MSVC build broken by r181768

MSVC accepts the using decl but not the typedef. It complains that the
typedef is ambiguous.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181826 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/Dynamic/VariantValue.h
173a4cc51a416a938885358b9592e629728e7407 14-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Really fix the declaration of __clear_cache.

When I tested gcc's behaviour before, I forgot the extern "C", so it
would warn when the types *did* match.

So in the end
* __clear_cache takes two void pointers.
* aarch64 was correct before.
* libgcc's manual is wrong.
* this patch fixes arm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181810 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsAArch64.def
asic/BuiltinsARM.def
4537d6e0f9baf2e011a4260e0d7872789b01c3f2 14-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix __clear_cache on ARM.

Current gcc's produce an error if __clear_cache is anything but

__clear_cache(char *a, char *b);

It looks like we had just implemented a gcc bug that is now fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181784 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
f7f295f321fd434e1e542844a71f538a56f2f8fb 14-May-2013 Manuel Klimek <klimek@google.com> First revision of the dynamic ASTMatcher library.

This library supports all the features of the compile-time based ASTMatcher
library, but allows the user to specify and construct the matchers at runtime.
It contains the following modules:
- A variant type, to be used by the matcher factory.
- A registry, where the matchers are indexed by name and have a factory method
with a generic signature.
- A simple matcher expression parser, that can be used to convert a matcher
expression string into actual matchers that can be used with the AST at
runtime.

Many features where omitted from this first revision to simplify this code
review. The main ideas are still represented in this change and it already has
support working use cases.
Things that are missing:
- Support for polymorphic matchers. These requires supporting code in the
registry, the marshallers and the variant type.
- Support for numbers, char and bool arguments to the matchers. This requires
supporting code in the parser and the variant type.
- A command line program putting everything together and providing an already
functional tool.

Patch by Samuel Benzaquen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181768 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchersInternal.h
STMatchers/Dynamic/Diagnostics.h
STMatchers/Dynamic/Parser.h
STMatchers/Dynamic/Registry.h
STMatchers/Dynamic/VariantValue.h
028d59c9e5ef3c46ff26fe106050d750cf8bc2cc 14-May-2013 Tim Northover <t.p.northover@gmail.com> AArch64: correct definition of __clear_cache

According to libgcc document __clear_cache takes two char*
pointers. I suspect GCC's actual behaviour is more subtle than that,
but char* should clearly be preferred to void*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsAArch64.def
7e17fdc617ee9db8270f3f6fb4ecd392fed47d80 13-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix a wrong and confusing comment in CharUnits.h. Neither C nor C++ allows
bytes and character units to be different sizes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
44135b8836fc3ffb84e540d8a097955271ccbc23 13-May-2013 Manuel Klimek <klimek@google.com> Implements brace breaking styles.

We now support "Linux" and "Stroustrup" brace breaking styles, which
gets us one step closer to support formatting WebKit, KDE & Linux code.

Linux brace breaking style:
namespace a
{
class A
{
void f()
{
if (x) {
f();
} else {
g();
}
}
}
}

Stroustrup brace breaking style:
namespace a {
class A {
void f()
{
if (x) {
f();
} else {
g();
}
}
}
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181700 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
7c9a93ec7cea816e94a0674909c312f3d0227864 13-May-2013 Manuel Klimek <klimek@google.com> Implements UseTab for clang-format.

This is required for kernel linux kernel style formatting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181693 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
07a64eca75d96ce77d1ce8cb73d1cb0877695d06 13-May-2013 Manuel Klimek <klimek@google.com> Implements IndentWidth.

This is required for various styles that are for example based on
8-indent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181690 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
6af701f29be43e49a25ab098c79940ae4cbb69c7 13-May-2013 Alexey Bataev <a.bataev@hotmail.com> OpenMP threadprivate with qualified names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclOpenMP.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
181e3ecc0907ae0103586a9f4db52241995a8267 13-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Cleanup handling of UniqueExternalLinkage.

This patch renames getLinkage to getLinkageInternal. Only code that
needs to handle UniqueExternalLinkage specially should call this.

Linkage, as defined in the c++ standard, is provided by
getFormalLinkage. It maps UniqueExternalLinkage to ExternalLinkage.

Most places in the compiler actually want isExternallyVisible, which
handles UniqueExternalLinkage as internal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181677 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Linkage.h
ema/Sema.h
284b3cbfd1cd5b6585437fbb8b95fe136f273efb 12-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: support for 'switch' statements in constexpr functions. This is somewhat
inefficient; we perform a linear scan of switch labels to find the one matching
the condition, and then walk the body looking for that label. Both parts should
be straightforward to optimize.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181671 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6bdc4c65c0bfac1f42c3b57680ac4e45b622b266 11-May-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Add -mldc1-sdc1 / -mno-ldc1-sdc1 command line options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181660 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
9dadfab2faebe40e7dbbfd0801c15174b69bd726 11-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y deduced return types: when we deduce a return type for a function which
we loaded from PCH, if we're building another PCH, create an update record to
patch the return type of the earlier declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181659 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
30a16f1383b56cb71be251999a577b2e37db2ce0 11-May-2013 Douglas Gregor <dgregor@apple.com> [Modules] Make r180934 more efficient by only loading top-level module maps in system header directories.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181643 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
c1478618363083486679fc8325b88fc30bd5aac7 11-May-2013 Douglas Gregor <dgregor@apple.com> [Modules] When things go horribly wrong when reading a module, point at the module cache.

Sometimes people hack on their system headers. In such cases, they'll
need to delete their module cache, but may not know where it is. Add a
note to show them where it is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
9cbcab88d441761b5c5d7811c4d0c205250991bf 10-May-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Avoid patching storage class for block scope thread_local variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
daaa468cdd8be3bc4f5861c34d0686d3d7a373fa 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::FindAllocationFunctions

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181594 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8061322dabc3adc58ad20832170942eb72f009e6 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize GenericSelectionExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181592 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
dd256314cf391063329e504f0ece46ee51bbfa2a 10-May-2013 Alexander Kornienko <alexfh@google.com> Config file support for clang-format, part 2.

Summary:
Adds actual config file reading to the clang-format utility.
Configuration file name is .clang-format. It is looked up for each input file
in its parent directories starting from immediate one. First found .clang-format
file is used. When using standard input, .clang-format is searched starting from
the current directory.
Added -dump-config option to easily create configuration files.

Reviewers: djasper, klimek

Reviewed By: klimek

CC: cfe-commits, jordan_rose, kimgr

Differential Revision: http://llvm-reviews.chandlerc.com/D758

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181589 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
acf02715ab1aa1e5a791f20e0d1ca217af256823 10-May-2013 Peter Collingbourne <peter@pcc.me.uk> Add caseStmt(), defaultStmt(), eachCase() and hasCaseConstant() matchers.

Differential Revision: http://llvm-reviews.chandlerc.com/D744

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181588 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
15f92bad58c8650b1306729744b1a1230197497a 10-May-2013 Hans Wennborg <hans@hanshq.net> Add support for __wchar_t in -fms-extensions mode.

MSVC provides __wchar_t. This is the same as the built-in wchar_t type
from C++, but it is also available with -fno-wchar and in C.

The commit changes ASTContext to have two different types for this:

- WCharTy is the built-in type used for wchar_t in C++ and __wchar_t.

- WideCharTy is the type of a wide character literal. In C++ this is
the same as WCharTy, and in C it is an integer type compatible with
the type in <stddef.h>.

This fixes PR15815.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181587 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/PrettyPrinter.h
asic/TokenKinds.def
7eca8d2262a26eedb2ff3cc0fd11be2494b17cc1 10-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When parsing with CXTranslationUnit_ForSerialization, make sure to install the ASTWriter that we create as an ASTMutationListener.

Fixes rdar://13833268

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181575 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
27365ee830cec7cf52c088b400867ff67b0b3b23 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize ShuffleVectorExpr::setExprs

But ShuffleVectorExpr should be tail-allocating the storage for expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
416c9b318e0100729a803e747736e7c968be69c9 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::CheckMessageArgumentTypes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181571 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a7b7d0e4bb13a7ca5da4869197f43e923dadbb38 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::FindAllocationOverload

Now tests should pass. The previous error was caused by a misplaced backing
array for MutableArrayRef that I introduced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181570 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ed09bfcf04b7470b1c6fca54477f6d3bfcfb3b64 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Revert my r181563, breaks tests on buildbots


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181568 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a36bbac10f7b74ef198ec2fb0eb52dbd8a50e7f0 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::ActOnMemInitializer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181565 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8e6b7093c840ddd4054523333b5a0d3262c3c2c2 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::FindAllocationOverload


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181563 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7297a2ecbf97db3153088660e15be1eb296d4659 10-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::BuildCallToObjectOfClassType


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181562 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0a664b863255065d960342dd074a77d63c753d35 09-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y n3648: parse and reject init-captures for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
65cd8132d531ba14f81fe3d8f078558be78c2f95 09-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Documentation warning: \param, not \parm


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181550 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
9e00f12a2558bc4af77bc2e4171572052ea7d9a2 09-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize some SemaOverload methods

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181544 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
524387ae3dfc0c4cf2b095f83f9e47aa549b7e55 09-May-2013 Ben Langmuir <ben.langmuir@intel.com> CodeGen for CapturedStmts

EmitCapturedStmt creates a captured struct containing all of the captured
variables, and then emits a call to the outlined function. This is similar in
principle to EmitBlockLiteral.

GenerateCapturedFunction actually produces the outlined function. It is based
on GenerateBlockFunction, but is much simpler. The function type is determined
by the parameters that are in the CapturedDecl.

Some changes have been added to this patch that were reviewed as part of the
serialization patch and moving the parameters to the captured decl.

Differential Revision: http://llvm-reviews.chandlerc.com/D640


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/GlobalDecl.h
asic/DiagnosticSemaKinds.td
32a6ebc63900b85780328c337787bb7adad2bcab 09-May-2013 Edwin Vane <edwin.vane@intel.com> Adding isConst() ASTMatcher for CXXMethodDecl nodes

Updated reference and unit tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181522 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
bded6eaeed5f08396091448118f8b221b6b557da 09-May-2013 Ted Kremenek <kremenek@apple.com> Put some diagnostics in DiagnosticCommonKinds.td in a category, mirroring what they are in other .td files.

I really dislike the copy-pasting of the category strings. If there is a better
way to do this with TableGen, please advise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
f9ba851c9b5db8ea30846215e737702a1cc2c194 09-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Remove the ASTReaderListener::ReadHeaderFileInfo callback.

This made sense in pre-module era, before merging of HeaderFileInfos was introduced.

Final part of rdar://13840148.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181490 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
erialization/ASTReader.h
d3220dbeeadc4ac54ceecea8cf63f8d8be291d2a 09-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] When building a module, make sure we don't serialize out HeaderFileInfo for headers not belonging to the module.

After r180934 we may initiate module map parsing for modules not related to the module what we are building,
make sure we ignore the header file info of headers from such modules.

First part of rdar://13840148

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181489 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ex/ModuleMap.h
5d2bb935afee34fa1e6fc05993a874c98a5bd1af 09-May-2013 Fariborz Jahanian <fjahanian@apple.com> put noisy "unknown command tag name" warning
under -Wdocumentation-unknown-command and off by default.
patch by Dmitri Gribenko.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
asic/DiagnosticGroups.td
ef907b69ea10dbb630e0c5c1edf4fb8ce12593cb 09-May-2013 Dmitri Gribenko <gribozavr@gmail.com> All -Wdocumentation warnings are DefaultIgnore


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181480 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
0089bc4ddee6bb309ad25f4c7ad4b7ffe5df4512 08-May-2013 Fariborz Jahanian <fjahanian@apple.com> documentation parsing. Patch to do typo correction for
documentation commands. Patch was reviewed, along with
great suggestions for improvement, by Doug.
// rdar://12381408


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181458 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
asic/DiagnosticCommentKinds.td
3190ca922d3743137e15fe0c525c04b177b9983b 08-May-2013 Reid Kleckner <reid@kleckner.net> Forward #pragma comment(lib/linker) through as flags metadata

Summary:
Most of this change is wiring the pragma all the way through from the
lexer, parser, and sema to codegen. I considered adding a Decl AST node
for this, but it seemed too heavyweight.

Mach-O already uses a metadata flag called "Linker Options" to do this
kind of auto-linking. This change follows that pattern.

LLVM knows how to forward the "Linker Options" metadata into the COFF
.drectve section where these flags belong. ELF support is not
implemented, but possible.

This is related to auto-linking, which is http://llvm.org/PR13016.

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D723

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
arse/Parser.h
ema/Sema.h
e7565635002ce0daaaf4b714cdb472507af462ee 08-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: Add a step limit to constexpr evaluation, to catch runaway loops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
asic/LangOptions.def
river/CC1Options.td
river/Options.td
d9de51f83d606ceab521e2cc17afc62e011c7cd8 08-May-2013 Nick Lewycky <nicholas@mxc.ca> When typo correction produces an overloaded result when looking up a member,
return all the overloads instead of just picking the first possible declaration.
This removes an invalid note (and on occasion other invalid diagnostics) and
also makes clang's parsing recovery behave as if the text from its fixit were
applied.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181370 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
54eeac9cb538e4fc4eecd81f2eda8f6fa727ca76 07-May-2013 Edwin Vane <edwin.vane@intel.com> Prevent crashes from hasCanonicalType matcher

Adding an QualType::isNull() check.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181329 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
d71ec16fffd10879bf74e531d9f7fb4c5ac4eaf8 07-May-2013 Alexander Kornienko <alexfh@google.com> Config file support for clang-format, part 1.

Summary:
Added parseConfiguration method, which reads FormatStyle from YAML
string. This supports all FormatStyle fields and an additional BasedOnStyle
field, which can be used to specify base style.

Reviewers: djasper, klimek

Reviewed By: djasper

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D754

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181326 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
b18840ddd6aa472bbf78ab9de59159eb128fb6a9 07-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Have SourceManager::getLocForEndOfFile() point at the "EOF" location of the FileID.

This fixes a crash due to SourceManager::getLocForEndOfFile() returning an off-by-one location
when the the FileID is for an empty file.

rdar://13803893

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181285 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a8942d7686dde6d221a176c502ce857bdc409dab 07-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: an assignment operator is implicitly 'constexpr' if it would only call 'constexpr' assignment operators for a literal class type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
993f43f24d7a45a5cd4678a3316b0852261fc5d4 06-May-2013 John McCall <rjmccall@apple.com> Grab-bag of bit-field fixes:

- References to ObjC bit-field ivars are bit-field lvalues;
fixes rdar://13794269, which got me started down this.
- Introduce Expr::refersToBitField, switch a couple users to
it where semantically important, and comment the difference
between this and the existing API.
- Discourage Expr::getBitField by making it a bit longer and
less general-sounding.
- Lock down on const_casts of bit-field gl-values until we
hear back from the committee as to whether they're allowed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
7adf79a620cb7fbde0608e21727425930676b7db 06-May-2013 Reid Kleckner <reid@kleckner.net> Move PragmaCommentHandler to lib/Parse in preparation for calling Sema

Summary:
No functionality change. The existing tests for this pragma only verify
that we can preprocess it.

Reviewers: rsmith

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D751

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181246 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
ex/Preprocessor.h
arse/Parser.h
bdfdb1da9763b3d0966eb61e9fa0fa7804f9eb9b 06-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modify ASTReaderListener to allow visiting the input files of an AST file.

We can pass such an input-file-visiting ASTReaderListener to ASTReader::readASTFileControlBlock.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181238 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
1270673bf5208a140b397419c8c34e7bdcce2339 06-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Have the RecursiveASTVisitor traverse the type source info of an objc class message.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
00ffb8079b14cade816d8f668675e853e613dee0 06-May-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove now-unused bindCompoundLiteral helper function.

The one user has been changed to use getLValue on the compound literal
expression and then use the normal bindLoc to assign a value. No need
to special case this in the StoreManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181214 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
2624b8157660902303bfce5551cfdd38272d01e5 06-May-2013 Jordan Rose <jordan_rose@apple.com> Fix representation of compound literals for C++ objects with destructors.

Previously, this compound literal expression (a GNU extension in C++):

(AggregateWithDtor){1, 2}

resulted in this AST:

`-CXXBindTemporaryExpr [...] 'struct Point' (CXXTemporary [...])
`-CompoundLiteralExpr [...] 'struct AggregateWithDtor'
`-CXXBindTemporaryExpr [...] 'struct AggregateWithDtor' (CXXTemporary [...])
`-InitListExpr [...] 'struct AggregateWithDtor'
|-IntegerLiteral [...] 'int' 1
`-IntegerLiteral [...] 'int' 2

Note the two CXXBindTemporaryExprs. The InitListExpr is really part of the
CompoundLiteralExpr, not an object in its own right. By introducing a new
entity initialization kind in Sema specifically for compound literals, we
avoid the treatment of the inner InitListExpr as a temporary.

`-CXXBindTemporaryExpr [...] 'struct Point' (CXXTemporary [...])
`-CompoundLiteralExpr [...] 'struct AggregateWithDtor'
`-InitListExpr [...] 'struct AggregateWithDtor'
|-IntegerLiteral [...] 'int' 1
`-IntegerLiteral [...] 'int' 2

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181212 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
b8409215523e5478b8b0aa9cdcd10038cf7651fe 06-May-2013 Ulrich Weigand <ulrich.weigand@de.ibm.com> Add SystemZ support

This patch then adds all the usual platform-specific pieces for SystemZ:
driver support, basic target info, register names and constraints,
ABI info and vararg support. It also adds new tests to verify pre-defined
macros and inline asm, and updates a test for the minimum alignment change.

This version of the patch incorporates feedback from reviews by
Eric Christopher and John McCall. Thanks to all reviewers!

Patch by Richard Sandiford.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6b20351a1d6178addfaa86716aaba36f2e9ea188 06-May-2013 Ulrich Weigand <ulrich.weigand@de.ibm.com> Allow targets to define minimum alignment for global variables

This patch adds a new common code feature that allows platform code to
request minimum alignment of global symbols. The background for this is
that on SystemZ, the most efficient way to load addresses of global symbol
is the LOAD ADDRESS RELATIVE LONG (LARL) instruction. This instruction
provides PC-relative addressing, but only to *even* addresses. For this
reason, existing compilers will guarantee that global symbols are always
aligned to at least 2. [ Since symbols would otherwise already use a
default alignment based on their type, this will usually only affect global
objects of character type or character arrays. ] GCC also allows creating
symbols without that extra alignment by using explicit "aligned" attributes
(which then need to be used on both definition and each use of the symbol).

To enable support for this with Clang, this patch adds a
TargetInfo::MinGlobalAlign variable that provides a global minimum for the
alignment of every global object (unless overridden via explicit alignment
attribute), and adds code to respect this setting. Within this patch, no
platform actually sets the value to anything but the default 1, resulting
in no change in behaviour on any existing target.

This version of the patch incorporates feedback from reviews by
Eric Christopher and John McCall. Thanks to all reviewers!

Patch by Richard Sandiford.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181210 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/TargetInfo.h
fb59486ef3624d09896b09a978b28eb63cfd3c46 06-May-2013 Alexander Kornienko <alexfh@google.com> Added Mozilla style, cleaned get*Style methods.

Summary: Patch based on a patch by Ehsan Akhgari.

Reviewers: djasper

Reviewed By: djasper

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D750

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181196 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
10f6f065456a2cfb6c2ab5dfedefb930e5e52e9d 06-May-2013 John McCall <rjmccall@apple.com> Require the containing type to be complete when we see
__alignof__ of a field.

This problem can only happen in C++11.

Also do some petty optimizations.

rdar://13784901

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5528ac9f40ec6cb54e7096908bf2beeed511bce4 06-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: support for increment and decrement in constant expression evaluation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181173 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
d8ffd0b7b61566f15a67192883a607f7703bcece 05-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Make all 'is in extern "C"' tests use the lexical context.

I was not able to find a case (other than the fix in r181163) where this
makes a difference, but it is a more obviously correct API to have.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
287f24d3991994b9a263af9e2a873f4feadfb8fa 05-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::CheckObjCMethodCall

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181164 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
958ba64dabe674660130d914abfd13ffeca4151d 05-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> ArrayRef'ization of some methods in SemaOverload. Patch by Robert Wilhelm!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181158 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5543169296beeb183b9c9392debc774fcf493eeb 05-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Replace ArrayRef<T>() with None, now that we have an implicit ArrayRef constructor from None

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
ema/Sema.h
f9734241b141ad9c19969bab9b56dd4246e35e7d 04-May-2013 Aaron Ballman <aaron@aaronballman.com> Reverting r181004 since it has broken test/Sema/wchar.c.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
asic/TokenKinds.def
dc17384581e37436582a007be4d9185bcf7003ec 04-May-2013 Enea Zaffanella <zaffanella@cs.unipr.it> In VarDecl nodes, store the thread storage class specifier as written.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Specifiers.h
ema/DeclSpec.h
ff920eec4d449bee560d8d99636ad0eb50cd9d8d 04-May-2013 Tim Northover <Tim.Northover@arm.com> AArch64: teach Clang about __clear_cache intrinsic

libgcc provides a __clear_cache intrinsic on AArch64, much like it
does on 32-bit ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181111 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsAArch64.def
asic/TargetBuiltins.h
60e141e1f87211ca831de6821003d80fe20a06f3 04-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement most of N3638 (return type deduction for normal functions).
Missing (somewhat ironically) is support for the new deduction rules
in lambda functions, plus PCH support for return type patching.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181108 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/TemplateDeduction.h
ffd015e316fff53f23e9ffd4907b88b8706e4183 04-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> Say 'decltype(auto)' not 'auto' as appropriate in mismatched-deduction diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181103 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9fd6b8f5a73788f288edd01fa99d434d1e6588ad 04-May-2013 Wei Pan <wei.pan@intel.com> Implement template support for CapturedStmt

- Sema tests added and CodeGen tests are pending

Differential Revision: http://llvm-reviews.chandlerc.com/D728



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
cd904e8864637e427f5ea3bf35a26e79b3dbbadf 04-May-2013 Sean Callanan <scallanan@apple.com> Added a function to check whether a Decl is in
the list of Decls for a given DeclContext. This
is useful for LLDB's implementation of
FindExternalLexicalDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
14f78f4a11df4c06667e2cbb87eeb179e4cb46fe 04-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> Separate out and special-case the diagnostic for 'auto' in a
conversion-type-id, in preparation for this becoming valid in c++1y mode.
No functionality change; small diagnostic improvement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181089 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
15676bec6fa9ad9466d93c163f2d1b8a3f559b3a 04-May-2013 Ted Kremenek <kremenek@apple.com> [analyzer;alternate edges] start experimenting with control flow "barriers" to prevent an edge being optimized away.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181088 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
bb521b8f14ca29ee4e17ae1f9877586ef0bf8378 04-May-2013 Ted Kremenek <kremenek@apple.com> [analyzer; alternate edges] prune edges whose end/begin locations have the same statement parents.

This change required some minor changes to LocationContextMap to have it map
from PathPieces to LocationContexts instead of PathDiagnosticCallPieces to
LocationContexts. These changes are in the other diagnostic
generation logic as well, but are functionally equivalent.

Interestingly, this optimize requires delaying "cleanUpLocation()" until
later; possibly after all edges have been optimized. This is because
we need PathDiagnosticLocations to refer to the semantic entity (e.g. a statement)
as long as possible. Raw source locations tell us nothing about
the semantic relationship between two locations in a path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181084 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
efa78d163214fd9e909ab2bf6911edfbc7a2b9df 04-May-2013 Fariborz Jahanian <fjahanian@apple.com> [doc parsing]: Make warning about unknown command
tags off by default for now. Move diagnostic code
to DiagnosticCommentKinds.td. // rdar://12381408


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
asic/DiagnosticLexKinds.td
c95d413660756c474bc8f97e5b32edc7ddff3850 04-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> ArrayRef'ize MultiLevelTemplateArgumentList::ArgList. Patch by Faisal Vali!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181077 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
d99990df0b4aca43a0315b2928ff1b8baf704052 04-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r177218.

Per discussion in cfe-commits, asserting may be a better way than introducing a special test flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticOptions.def
river/CC1Options.td
ad6fd9f93ce0d328397e8d57ef7117ced24fc8e2 04-May-2013 Fariborz Jahanian <fjahanian@apple.com> [Doc parsing] Provide diagnostics for unknown documentation
commands. // rdar://12381408


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
asic/DiagnosticLexKinds.td
cc2b653c319599f502425d2c3de29865d47bb9e4 04-May-2013 Douglas Gregor <dgregor@apple.com> Remove DiagnosticConsumer::clone(), a bad idea that is now unused.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181070 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ChainedDiagnosticConsumer.h
rontend/CompilerInstance.h
rontend/LogDiagnosticPrinter.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/VerifyDiagnosticConsumer.h
ewrite/Frontend/FixItRewriter.h
a4a90cabfa15c900016a7cfaea51a6d4e8ebf4db 04-May-2013 Douglas Gregor <dgregor@apple.com> When building a module, forward diagnostics to the outer diagnostic consumer.

Previously, we would clone the current diagnostic consumer to produce
a new diagnostic consumer to use when building a module. The problem
here is that we end up losing diagnostics for important diagnostic
consumers, such as serialized diagnostics (where we'd end up with two
diagnostic consumers writing the same output file). With forwarding,
the diagnostics from all of the different modules being built get
forwarded to the one serialized-diagnostic consumer and are emitted in
a sane way.

Fixes <rdar://problem/13663996>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181067 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ex/ModuleMap.h
dd08a0c178329ec16cb9e494e6880f3991708b93 04-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Preprocessor] For the MacroExpands preprocessor callback, also pass the MacroArgs object that provides information about
the argument tokens for a function macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181065 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroArgs.h
ex/PPCallbacks.h
ex/PreprocessingRecord.h
2f729009067e6aff6198719ec9f8220d88cfea09 04-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename ObjCImplementationDecl::getSuperLoc() -> getSuperClassLoc() for consistency with ObjCInterfaceDecl::getSuperClassLoc()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181064 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
83eba02c2ea333015335e2f74c4d11c5315b655d 03-May-2013 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/master' into merge-20130502
dc5be4f54d6415cb88b2f8a7c5bc9011e332b9b8 03-May-2013 Ben Langmuir <ben.langmuir@intel.com> Serialization for captured statements

Add serialization for captured statements and captured decls. Also add
a const_capture_iterator to CapturedStmt.

Test contributed by Wei Pan

Differential Revision: http://llvm-reviews.chandlerc.com/D727


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Stmt.h
0f2fc5ff49cb9abd6c6972ffd6db066295672867 03-May-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15906: The body of a lambda is not an evaluated subexpression; don't visit it when visiting such subexpressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
8c045ace381972f41d385b0a661ccf172834f459 03-May-2013 Ben Langmuir <ben.langmuir@intel.com> Move CapturedStmt parameters to CapturedDecl

Move the creation of CapturedStmt parameters out of CodeGen and into
Sema, making it easier to customize the outlined function. The
ImplicitParamDecls are stored in the CapturedDecl using an
ASTContext-allocated array.

Differential Revision: http://llvm-reviews.chandlerc.com/D722


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/ScopeInfo.h
ema/Sema.h
af2836593979d4973bec5bd21f10eb6cc0d0f3e3 03-May-2013 Ted Kremenek <kremenek@apple.com> [analyzer] Start hacking up alternate control-flow edge generation. WIP. Not guaranteed to do anything useful yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181040 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
634c5634817b9ad384a706fe87ab302985566bba 03-May-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep track of an @implementation's super class name location, if one was provided.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181039 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1f78a50f8aee58f8e07f6307f4b8d0b1742e9a2b 03-May-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize InitializationSequence constructor and InitializationSequence::Diagnose()

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181022 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
8eead16398c003dc2a8be22f44e8c2d92af80479 03-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Add const qualifier to Sema::getTypeName's parameter `II`

Patch by Ismail Pazarbasi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181011 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6f464bb8d316b95bf60efcdb2d21803659d3aa1b 03-May-2013 Hans Wennborg <hans@hanshq.net> Support __wchar_t in -fms-extensions and -fms-compatibility modes.

MSVC provides __wchar_t, either as an alias for the built-in wchar_t
type, or as a separate type depending on language (C vs C++) and flags
(-fno-wchar).

In -fms-extensions, Clang will simply accept __wchar_t as an alias for
whatever type is used for wide character literals. In -fms-compatibility, we
try to mimic MSVC's behavior by always making __wchar_t a builtin type.

This fixes PR15815.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
asic/TokenKinds.def
f5ebf9bf1df10ac15ba32a4b24dfe171b7848c58 03-May-2013 John McCall <rjmccall@apple.com> Correctly emit certain implicit references to 'self' even within
a lambda.

Bug #1 is that CGF's CurFuncDecl was "stuck" at lambda invocation
functions. Fix that by generally improving getNonClosureContext
to look through lambdas and captured statements but only report
code contexts, which is generally what's wanted. Audit uses of
CurFuncDecl and getNonClosureAncestor for correctness.

Bug #2 is that lambdas weren't specially mapping 'self' when inside
an ObjC method. Fix that by removing the requirement for that
and using the normal EmitDeclRefLValue path in LoadObjCSelf.

rdar://13800041

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181000 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
d306a530fca74e40916121f5583e0545e470b3c4 03-May-2013 Ted Kremenek <kremenek@apple.com> Re-apply 180974 with the build error fixed. This was the result
of a weird merge error with git.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180981 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
ae8c50552df2498130dd33a940d98e0dc4ec26b9 03-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert "Change LocationContextMap to be a temporary instead of shared variable in BugReporter."

This reverts commit 180974. It broke the build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180979 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
aeeacf725c9e0ddd64ea9764bd008e5b6873ce51 03-May-2013 John McCall <rjmccall@apple.com> Move parsing of identifiers in MS-style inline assembly into
the actual parser and support arbitrary id-expressions.

We're actually basically set up to do arbitrary expressions here
if we wanted to.

Assembly operands permit things like A::x to be written regardless
of language mode, which forces us to embellish the evaluation
context logic somewhat. The logic here under template instantiation
is incorrect; we need to preserve the fact that an expression was
unevaluated. Of course, template instantiation in general is fishy
here because we have no way of delaying semantic analysis in the
MC parser. It's all just fishy.

I've also fixed the serialization of MS asm statements.

This commit depends on an LLVM commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180976 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
erialization/ASTReader.h
erialization/ASTWriter.h
c70fac3c52092013b08163187f034b73c94bf3d0 03-May-2013 Ted Kremenek <kremenek@apple.com> Change LocationContextMap to be a temporary instead of shared variable in BugReporter.

BugReporter is used to process ALL bug reports. By using a shared map,
we are having mappings from different PathDiagnosticPieces to LocationContexts
well beyond the point where we are processing a given report. This
state is inherently error prone, and is analogous to using a global
variable. Instead, just create a temporary map, one per report,
and when we are done with it we throw it away. No extra state.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180974 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
92eb7d847cb1273a63d5e3b7dc98a7c97a81b703 03-May-2013 Douglas Gregor <dgregor@apple.com> Use attribute argument information to determine when to parse attribute arguments as expressions.

This change partly addresses a heinous problem we have with the
parsing of attribute arguments that are a lone identifier. Previously,
we would end up parsing the 'align' attribute of this as an expression
"(Align)":

template<unsigned Size, unsigned Align>
class my_aligned_storage
{
__attribute__((align((Align)))) char storage[Size];
};

while this would parse as a "parameter name" 'Align':

template<unsigned Size, unsigned Align>
class my_aligned_storage
{
__attribute__((align(Align))) char storage[Size];
};

The code that handles the alignment attribute would completely ignore
the parameter name, so the while the first of these would do what's
expected, the second would silently be equivalent to

template<unsigned Size, unsigned Align>
class my_aligned_storage
{
__attribute__((align)) char storage[Size];
};

i.e., use the maximal alignment rather than the specified alignment.

Address this by sniffing the "Args" provided in the TableGen
description of attributes. If the first argument is "obviously"
something that should be treated as an expression (rather than an
identifier to be matched later), parse it as an expression.

Fixes <rdar://problem/13700933>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180973 91177308-0d34-0410-b5e6-96231b3b80d8
arse/CMakeLists.txt
arse/Makefile
fa5f03052bc39d9c8f2fa8b4002597a8219760a4 03-May-2013 Douglas Gregor <dgregor@apple.com> Revert r180970; it's causing breakage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180972 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
arse/CMakeLists.txt
arse/Makefile
3796d1539a39b999fd50bed7aea726ef6f845e17 03-May-2013 Douglas Gregor <dgregor@apple.com> Use attribute argument information to determine when to parse attribute arguments as expressions.

This change partly addresses a heinous problem we have with the
parsing of attribute arguments that are a lone identifier. Previously,
we would end up parsing the 'align' attribute of this as an expression
"(Align)":

template<unsigned Size, unsigned Align>
class my_aligned_storage
{
__attribute__((align((Align)))) char storage[Size];
};

while this would parse as a "parameter name" 'Align':

template<unsigned Size, unsigned Align>
class my_aligned_storage
{
__attribute__((align(Align))) char storage[Size];
};

The code that handles the alignment attribute would completely ignore
the parameter name, so the while the first of these would do what's
expected, the second would silently be equivalent to

template<unsigned Size, unsigned Align>
class my_aligned_storage
{
__attribute__((align)) char storage[Size];
};

i.e., use the maximal alignment rather than the specified alignment.

Address this by sniffing the "Args" provided in the TableGen
description of attributes. If the first argument is "obviously"
something that should be treated as an expression (rather than an
identifier to be matched later), parse it as an expression.

Fixes <rdar://problem/13700933>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180970 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
arse/CMakeLists.txt
arse/Makefile
4b75085f5669efc6407c662b5686361624c3ff2f 02-May-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Don't try to evaluate MaterializeTemporaryExpr as a constant.

...and don't consider '0' to be a null pointer constant if it's the
initializer for a float!

Apparently null pointer constant evaluation looks through both
MaterializeTemporaryExpr and ImplicitCastExpr, so we have to be more
careful about types in the callers. For RegionStore this just means giving
up a little more; for ExprEngine this means handling the
MaterializeTemporaryExpr case explicitly.

Follow-up to r180894.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180944 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
e2b1246a24e8babf2f58c93713fba16b8edb8e2d 02-May-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Consolidate constant evaluation logic in SValBuilder.

Previously, this was scattered across Environment (literal expressions),
ExprEngine (default arguments), and RegionStore (global constants). The
former special-cased several kinds of simple constant expressions, while
the latter two deferred to the AST's constant evaluator.

Now, these are all unified as SValBuilder::getConstantVal(). To keep
Environment fast, the special cases for simple constant expressions have
been left in, but the main benefits are that (a) unusual constants like
ObjCStringLiterals now work as default arguments and global constant
initializers, and (b) we're not duplicating code between ExprEngine and
RegionStore.

This actually caught a bug in our test suite, which is awesome: we stop
tracking allocated memory if it's passed as an argument along with some
kind of callback, but not if the callback is 0. We were testing this in
a case where the callback parameter had a default value, but that value
was 0. After this change, the analyzer now (correctly) flags that as a
leak!

<rdar://problem/13773117>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180894 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
a3ae52b63aff9d4478084e40b1f683f45eb06ab7 01-May-2013 Fariborz Jahanian <fjahanian@apple.com> [documenting declaration]: Remove arc liftime qualifiers
when doccumenting declrations in comments.
// rdar://13757500


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
db1519a95687622d08340f9b7522ef84a53b331a 01-May-2013 Fariborz Jahanian <fjahanian@apple.com> [ObjC declaration documentation] declaration of
types involving Objective-C pointers must have
their arc qualifiers elided as they don't
add any additional info. // rdar://13757500.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1c18759b45140c85e62ac6367fbee51f363e3c81 01-May-2013 Chad Rosier <mcrosier@apple.com> [driver] Allow multiple -arch options with -save-temps by adding the arch name
to the temporary files.
rdar://13218604


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180813 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
9b1317531d376738fd6631291b0a04109c76a63b 30-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> When deducing an 'auto' type, don't modify the type-as-written.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180808 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
dc7a4f5d7a7e3b60d4dc4a80338d7a2728540998 30-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Don't treat a non-deduced 'auto' type as being type-dependent. Instead, there
are now two distinct canonical 'AutoType's: one is the undeduced 'auto'
placeholder type, and the other is a deduced-but-dependent type. All
deduced-to-a-non-dependent-type cases are still non-canonical.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
ema/Sema.h
9dbfc6135580357428966ff05427f654dba44cd3 30-Apr-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Pass -mips16, -mmicromips, -mdsp and -mdspr2 flags to the
assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180775 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
79dd91638022772f648d3b42e24ebf27c6c836d7 30-Apr-2013 Ted Kremenek <kremenek@apple.com> Place bitfield -Wconstant-conversion warning into subgroup called -Wbitfield-constant-conversion.

This is to just allow more precise diagnostic control.

Implements <rdar://problem/13766026>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3e25b990f1e2ba2a9a63dde5fd111492a7f6194a 30-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Fix memory leak related to deserialized MacroInfo objects.

Deserialized MacroInfos were not destroyed and if their SmallVector did heap allocation,
it was leaked.

rdar://13768967

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180771 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
eb9380db6fcc960d4a589f0acb94b0897821d26f 30-Apr-2013 Ted Kremenek <kremenek@apple.com> Just use std::list<> for PathPieces instead of complicated use of ilist.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180747 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
ed866e73bab7733f5226f84c52edefe23d694b2f 30-Apr-2013 Ted Kremenek <kremenek@apple.com> Revert "[analyzer] Change PathPieces to be a wrapper around an ilist of (through indirection) PathDiagnosticPieces."

Jordan rightly pointed out that we can do the same with std::list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180746 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
7651e53997e20f1e627ffce25ce613f79c48e3e3 30-Apr-2013 Ted Kremenek <kremenek@apple.com> [analyzer] Change PathPieces to be a wrapper around an ilist of (through indirection) PathDiagnosticPieces.

Much of this patch outside of PathDiagnostics.h are just minor
syntactic changes due to the return type for operator* and the like
changing for the iterator, so the real focus should be on
PathPieces itself.

This change is motivated so that we can do efficient insertion
and removal of individual pieces from within a PathPiece, just like
this was a kind of "IR" for static analyzer diagnostics. We
currently implement path transformations by iterating over an
entire PathPiece and making a copy. This isn't very natural for
some algorithms.

We use an ilist here instead of std::list because we want operations
to rip out/insert nodes in place, just like IR manipulation. This
isn't being used yet, but opens the door for more powerful
transformation algorithms on diagnostic paths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180741 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
548107ee5241037b4533d86afbe0cf38ddf6b5d9 29-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Use ArrayRef in AddMethodCandidate.

Patch by Robert Wilhelm!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180724 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3a2f91280a49f4747063f983dc6a3296bd9359d2 29-Apr-2013 Ben Langmuir <ben.langmuir@intel.com> Small CapturedStmt improvements

Add a CapturedStmt.h similar to Lambda.h to reduce the typing required to get
to the CapturedRegionKind enum. This also allows codegen to access this enum
without including Sema/ScopeInfo.h.

Also removes some duplicated code for capturing 'this' between CapturedStmt and
Lambda.

Differential Revision: http://llvm-reviews.chandlerc.com/D712



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/CapturedStmt.h
ema/ScopeInfo.h
ema/Sema.h
098b8140c082e5a69b18ca83ef2eb3091939d54f 29-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Keep the parser's template depth up to date when parsing local templates and
late-parsed templates. Patch by Faisal Vali!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180708 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9ff2b421f352fe0a0769c0a2a75af922c147b878 27-Apr-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema::ActOnEnumBody. No functionality change.

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180682 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
65110caf70bc6c07c3bc223acf03643af47a6643 26-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/modules] Require the preprocessing record option to match the used PCH, if modules are enabled.

The preprocessing record becomes important when modules are enabled, since it is used to calculate the
module cache hash.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
0532df02a72a32a6042e961b71989db73d0d0a22 26-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Modules] Fix an issue where the reconstructed redeclaration chain was incomplete, missing the definition from a module.

-Make sure that a deserialized external decl gets added to the TU scope.
-When associating an identifier with a set of decls, use the most recent local ones,
if they exist, otherwise associating decls from modules (that came after a local one)
will lead to an incomplete reconstructed re-declaration chain.

rdar://13712705

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180634 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
cbdbbd1ba105e65c5c1afa30c6c64f44adf56ad4 26-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [frontend] Make -chain-include work when used with modules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180633 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedIncludesSource.h
rontend/CompilerInstance.h
a2c3646c35dd09d21b74826240aa916545b1873f 26-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++1y decltype(auto).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180610 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
arse/Parser.h
ema/DeclSpec.h
ema/Ownership.h
bebf5b1bcfbf591dd3cd80c4aebd6486bb34f41c 26-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: support simple variable assignments in constexpr functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
4f1d1551ed48e2ac52f5614ba8f94e2931546b51 26-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Use bitfilds.

On a 32 bit build this moves LinkageSpecDecl from 52 to 48 bytes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e5e575ded9cd4b80229fb299a2d97e9d44728eda 26-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Add r180263 back, but fix hasBraces() to be correct during parsing.

Original commit message:

Fix a case in linkage computation that should check for single line extern "C".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f3f0f357f8d6b4511b6d605cc8a39ae3787fef6d 25-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: This is a small modification to my
patch -n r180198.
When reporting on missing property accessor implementation in
categories, do not report when they are declared in primary class,
class's protocol, or one of it super classes or in of the other
categories. // rdar://13713098


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a2338bc4c2887937478d302901fb41a53e14e6d6 25-Apr-2013 Anna Zaks <ganna@apple.com> Fix a possible null pointer dereference found by the analyzer.

When computing the other parameters, ‘op’ is checked for being null before it’s dereferenced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180271 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2972d049637349bb82f52a27ad3337cf4ab769b4 25-Apr-2013 Daniel Jasper <djasper@google.com> Add option to align escaped newlines left.

This enables formattings like:

#define A \
int aaaa; \
int b; \
int ccc; \
int dddddddddd;

Enabling this for Google/Chromium styles only as I don't know whether it
is desired for Clang/LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180253 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
51c30afe7e2eb9273dd706229f42d87524fb8660 25-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C parsing [qoi]: Recover gracefully with good diagnostic
when class implementation declaration adds protocol qualifier
list. // rdar://12233858


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180228 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
80abce3d1597edaf427f65ce15d8433f3f13315d 24-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C arc: Improve disgnostics when 'weak'
property cannot be synthesized because its backing
ivar does not support weak references.
// rdar://13676793


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0127b3f60b5bf7b8caed8426b8bd77c4a019a286 24-Apr-2013 Chad Rosier <mcrosier@apple.com> [driver] Add a hasFlag API that accepts a positive alias.
Part of rdar://13622687

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180203 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
c775b1a0702621e297d00452a897381c8bf10f3f 24-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: When reporting on missing property accessor implementation in
categories, do not report when they are declared in primary class,
class's protocol, or one of it super classes. This is because,
its class is going to implement them. // rdar://13713098


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180198 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
4abc9bd20590291f31f3507e36ffd4489f43021a 24-Apr-2013 Ted Kremenek <kremenek@apple.com> Add test case for -Wdeprecated-objc-pointer-introspection, and
tweak warning to suggest that it is just a bad thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f8579274a010f360a371b53101859d9d6052314 24-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Refactor BugReport::getLocation and PathDiagnosticLocation::createEndOfPath for greater code reuse

The 2 functions were computing the same location using different logic (each one had edge case bugs that the other
one did not). Refactor them to rely on the same logic.

The location of the warning reported in text/command line output format will now match that of the plist file.

There is one change in the plist output as well. When reporting an error on a BinaryOperator, we use the location of the
operator instead of the beginning of the BinaryOperator expression. This matches our output on command line and
looks better in most cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180165 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
ed5a292592c61f1b0d2da60dddea2fc11fb3f157 23-Apr-2013 Richard Trieu <rtrieu@google.com> Warn that scoped enumerations are a C++11 extenstion when compiling in
C++98 mode. This improves on the previous diagnostic message of:

error: expected identifier or '{'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
3aaf41aea00507c019d1e3d016c0334ceb49dd61 23-Apr-2013 Ted Kremenek <kremenek@apple.com> Add a warning for Objective-C pointer introspection, which is solely the job of the Objective-C runtime.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1e7ca6211c77208c8a339c2a26e612be81c70ec5 22-Apr-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Refactor/clean up the SemaLookup interface. No functional
change indended.
Part of rdar://13663589

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180027 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a10b97898ee6339c3110e6ca33f178ff52f05238 22-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y constexpr extensions, round 1: Allow most forms of declaration and
statement in constexpr functions. Everything which doesn't require variable
mutation is also allowed as an extension in C++11. 'void' becomes a literal
type to support constexpr functions which return 'void'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180022 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticASTKinds.td
asic/DiagnosticSemaKinds.td
840462670ba7a6bc26265a2306b35f2f0f01f51c 21-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> The 'constexpr implies const' rule for non-static member functions is gone in
C++1y, so stop adding the 'const' there. Provide a compatibility warning for
code relying on this in C++11, with a fix-it hint. Update our lazily-written
tests to add the const, except for those ones which were testing our
implementation of this rule.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
39b0e269dc8895ecc0f92f08126d3082b2a837a8 21-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Disable VLA diagnostic in C++1y mode, and add some tests.

Still to do here:
- we have a collection of syntactic accepts-invalids to diagnose
- support non-PODs in VLAs, including dynamic initialization /
destruction
- runtime checks (and throw std::bad_array_length) for bad bound
- support VLA capture by reference in lambdas
- properly support VLAs in range-based for (don't recompute bound)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c3bf52ced9652f555aa0767bb822ec4c64546212 21-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> C++1y: Allow aggregates to have default initializers.

Add a CXXDefaultInitExpr, analogous to CXXDefaultArgExpr, and use it both in
CXXCtorInitializers and in InitListExprs to represent a default initializer.

There's an additional complication here: because the default initializer can
refer to the initialized object via its 'this' pointer, we need to make sure
that 'this' points to the right thing within the evaluation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
8e8e95c57c310bbc52cdc8d32df23c95afc77916 20-Apr-2013 Simon Atanasyan <simon@atanasyan.com> Supports Sourcery CodeBench Mips toolchain directories tree.

Sourcery CodeBench and modern FSF Mips toolchains require a bit more
complicated algorithm to calculate headers, libraries and sysroot paths
than implemented by Clang driver now. The main problem is that all these
paths depend on a set of command line arguments additionally to a target
triple value. For example, let $TC is a toolchain installation directory.
If we compile big-endian 32-bit mips code, crtbegin.o is in the
$TC/lib/gcc/mips-linux-gnu/4.7.2 folder and the toolchain's linker requires
--sysroot=$TC/mips-linux-gnu/libc argument. If we compile little-endian
32-bit soft-float mips code, crtbegin.o is in the
$TC/lib/gcc/mips-linux-gnu/4.7.2/soft-float/el folder and the toolchain's
linker requires --sysroot=$TC/mips-linux-gnu/libc/soft-float/el argument.

1. Calculate MultiarchSuffix using all necessary command line options and
use this MultiarchSuffix to detect crtbegin.o location in the
GCCInstallationDetector::ScanLibDirForGCCTriple() routine.
2. If a user does not provide --sysroot argument to the driver explicitly,
calculate new sysroot value based on command line options. Then use this
calculated sysroot path:
a. To populate a file search paths list in the Linux::Linux() constructor.
b. To find Mips toolchain specific include headers directories
in the Linux::AddClangSystemIncludeArgs() routine.
c. To provide -–sysroot argument for a linker.

Note:
- The FSF's tree slightly differs (folder names) and is not supported
yet.
- New addExternCSystemIncludeIfExits() routine is a temporary solution.
I plan to move path existence check to the addExternCSystemInclude()
routine by a separate commit.

The patch reviewed by Rafael Espindola.
http://llvm-reviews.chandlerc.com/D644

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179934 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
8ef064d53fb33b5a8f8743bcbb0a2fd5c3e97be1 20-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Ensure BugReporterTracking works on regions with pointer arithmetic

Introduce a new helper function, which computes the first symbolic region in
the base region chain. The corresponding symbol has been used for assuming that
a pointer is null. Now, it will also be used for checking if it is null.

This ensures that we are tracking a null pointer correctly in the BugReporter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179916 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SVals.h
716859df842e5a56e816d820d8326ead152dd9e4 20-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Flip printPretty and printPrettyAsExpr as per suggestion from Jordan (r179572)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179915 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
2fcf0de8a122ddb265d8c32d6ac1012c070e4f24 19-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Note that we support (and in fact have supported since the dawn of time itself)
C++1y binary literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
59d6a71d681adfdc7d976492eeb3deae84e8f2e2 19-Apr-2013 Adrian Prantl <aprantl@apple.com> Emit the underlying type in the debug info for all kinds of fixed enums
instead of only C++11-scoped-with-class-tag enums.

rdar://problem/13463793

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179879 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
fc7227e4c27aa8af33b5384b281d1eecfc74858a 19-Apr-2013 Adrian Prantl <aprantl@apple.com> s/C++0x/C++11/

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b80a16eadd0dacabfc1c32412e243ccb99dd664d 19-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement CodeGen for C++11 thread_local, following the Itanium ABI specification as discussed on cxx-abi-dev.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
4d6bc1884447a7e5b3c2def09bd307c96e44241e 18-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> Adds a new doxygen tag needed. // rdar://12379053


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
0579c165aa54840898956703ebd63bdd1f4dd907 18-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Add llvm_unreachable at end of fully covered switch to pacify GCC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179753 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
5b90ae7ba05a10a81f107ec1635deb1bd7292936 18-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Allow TrackConstraintBRVisitor to work when the value it’s tracking is not live in the last node of the path

We always register the visitor on a node in which the value we are tracking is live and constrained. However,
the visitation can restart at a node, later on the path, in which the value is under constrained because
it is no longer live. Previously, we just silently stopped tracking in that case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179731 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
87f9d81d0ab806dcf6ca50a0c068dcb2ba7f51b3 18-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Modules] Use global index to improve typo correction performance

Typo correction for an unqualified name needs to walk through all of the identifier tables of all modules.
When we have a global index, just walk its identifier table only.

rdar://13425732

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179730 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
erialization/ASTReader.h
erialization/GlobalModuleIndex.h
9753d462fabba1db75a977cb1f75ea66e9081120 17-Apr-2013 Nico Weber <nicolasweber@gmx.de> Add support for gcc's spelling of -fcolor-diagnostics.

See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179728 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7974c60375b2b9dfc20defc77c9ed8c3d6d241a1 17-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> DR974: Lambdas can have default arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179688 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
076eea20b80024fc63bbd71fb019375983680ea6 17-Apr-2013 Andy Gibbs <andyg1001@hotmail.co.uk> Implemented #pragma GCC warning/error in the same mould as #pragma message.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179687 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/PPCallbacks.h
ex/Preprocessor.h
092140a434366007a611c0a1a73fb6a4e8ff7f5e 17-Apr-2013 Douglas Gregor <dgregor@apple.com> Fix PR15291: noreturn adjustment in overload resolution for function templates, from Alexander Zinenko!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179680 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b42f200777a66b98989160bf3987ce431540a584 17-Apr-2013 Andy Gibbs <andyg1001@hotmail.co.uk> Extended VerifyDiagnosticConsumer to also verify source file for diagnostic.

VerifyDiagnosticConsumer previously would not check that the diagnostic and
its matching directive referenced the same source file. Common practice was
to create directives that referenced other files but only by line number,
and this led to problems such as when the file containing the directive
didn't have enough lines to match the location of the diagnostic in the
other file, leading to bizarre file formatting and other oddities.

This patch causes VerifyDiagnosticConsumer to match source files as well as
line numbers. Therefore, a new syntax is made available for directives, for
example:

// expected-error@file:line {{diagnostic message}}

This extends the @line feature where "file" is the file where the diagnostic
is generated. The @line syntax is still available and uses the current file
for the diagnostic. "file" can be specified either as a relative or absolute
path - although the latter has less usefulness, I think! The #include search
paths will be used to locate the file and if it is not found an error will be
generated.

The new check is not optional: if the directive is in a different file to the
diagnostic, the file must be specified. Therefore, a number of test-cases
have been updated with regard to this.

This closes out PR15613.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179677 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/VerifyDiagnosticConsumer.h
2a6e528cbd687e22744d5d7eba428afea99da300 17-Apr-2013 Richard Trieu <rtrieu@google.com> Add warning group -Woverloaded-shift-op-parentheses to -Wparentheses. This
will fire on code such as:

cout << x == 0;

which the compiler will intrepret as

(cout << x) == 0;

This warning comes with two fixits attached to notes, one for parentheses to
silence the warning, and another to evaluate the comparison first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179662 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
2e3d8c0815acaf1bc5995ebe56cea07471e5c9c7 17-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Enhance the ObjC global method pool to record whether there were 0, 1, or >= 2 methods (with a particular selector) inside categories.

This is done by extending ObjCMethodList (which is only used by the global method pool) to have 2 extra bits of information.
We will later take advantage of this info in global method pool for the overridden methods calculation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179652 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ObjCMethodList.h
ema/Sema.h
8dae128d16bf98759b7a678ce3eebb613bd17109 16-Apr-2013 Ted Kremenek <kremenek@apple.com> Factor CheckerManager to be able to pass AnalyzerOptions to checkers
during checker registration. There are no immediate clients of this,
but this provides a way for checkers to query the options table
at startup instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179626 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Frontend/CheckerRegistration.h
a9ad400e7a937e80dddb1b8a6f4c00eddbcb59e0 16-Apr-2013 Ted Kremenek <kremenek@apple.com> Remove unused "getConfig()" method. A new way is to have high-level
APIs that access the configuration table without clients reasoning
about the string table. The string table is an implementation
detail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179625 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
8da1dd629613beb1c476043fb6e3f9992b205183 16-Apr-2013 Michael Gottesman <mgottesman@apple.com> [1/6] ARM Neon Intrinsic Tablegen Test Generator.

Changes necessary to arm_neon.td for the generation of Neon tests.

This is the first of six patches to add to the arm neon tablegen
generator the capability of generating tests to verify that the various
ARM intrinsics are implemented properly.

The changes include such items as:
1. Adding attributes to the Inst record so that additional metadata that is only
needed for the tests can be specified in TableGen.
2. Adding wrapper classes for operator (i.e. ``Op'') intrinsics which before
were simply notates as Inst. This allows us to classify what sort of test
to generate for said intrinsic and further since the classes do not effect
the behavior of the Inst base class, allow for normal functioning.

Reviewed by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
6afcf8875d4e447645cd7bf3733dd8e2eb8455dc 16-Apr-2013 Tareq A. Siraj <tareq.a.sriaj@intel.com> Sema for Captured Statements

Add CapturedDecl to be the DeclContext for CapturedStmt, and perform semantic
analysis. Currently captures all variables by reference.

TODO: templates

Author: Ben Langmuir <ben.langmuir@intel.com>

Differential Revision: http://llvm-reviews.chandlerc.com/D433


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DeclNodes.td
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
ema/Sema.h
erialization/ASTBitCodes.h
051303ce09291dfbed537fa33b0d8a4d92c82b75 16-Apr-2013 Tareq A. Siraj <tareq.a.sriaj@intel.com> Implement CapturedStmt AST

CapturedStmt can be used to implement generic function outlining as described in
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-January/027540.html.

CapturedStmt is not exposed to the C api.

Serialization and template support are pending.

Author: Wei Pan <wei.pan@intel.com>

Differential Revision: http://llvm-reviews.chandlerc.com/D370


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
85192c7fe187d5486e12dbc6960af28f16a558a0 16-Apr-2013 Tareq A. Siraj <tareq.a.sriaj@intel.com> Parser support for #pragma clang __debug captured

This patch implements parsing ‘#pragma clang __debug’ as a first step for
implementing captured statements. Captured statements are a mechanism for
doing outlining in the AST.
see http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-January/027540.html.

Currently returns StmtEmpty

Author: Andy Zhang <andy.zhang@intel.com>

Differential Revision: http://llvm-reviews.chandlerc.com/D369


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/PPCallbacks.h
arse/Parser.h
f4910132078b4b8852fc46657f3150ed472f4654 16-Apr-2013 Daniel Dunbar <daniel@zuster.org> [Modules] Convert module specific -fno-modules-autolink into -fno-autolink.

- There is no reason to have a modules specific flag for disabling
autolinking. Instead, convert the existing flag into -fno-autolink (which
should cover other autolinking code generation paths like #pragmas if and
when we support them).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179612 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
b004a8e5aa700108de2acc8f81b0dd2ec7518899 16-Apr-2013 Douglas Gregor <dgregor@apple.com> Fix PR4296: Add parser detection/error recovery for nested functions, from Serve Pavlov!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
76da55d3a49e1805f51b1ced7c5da5bcd7f759d8 16-Apr-2013 John McCall <rjmccall@apple.com> Basic support for Microsoft property declarations and
references thereto.

Patch by Tong Shen!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/Attr.td
asic/DeclNodes.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ema/AttributeList.h
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
07d8470effc0b0364801adddb6ff92bd22334402 16-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Add pretty printing to CXXBaseObjectRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179573 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
79d0cceb8847bfe6dc9da8eb2ea2f3c6bb73b813 16-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Address code review for r179395

Mostly refactoring + handle the nested fields by printing the innermost field only.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179572 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
77670f17ae3a5c3188149c19a7e386c01d0aa7c0 15-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert "Speed-up ObjCMethodDecl::getOverriddenMethods()."

This reverts commit r179436.

Due to caching, it was possible that we could miss overridden methods that
were introduced by categories later on.

Along with reverting the commit I also included a test case that would have caught this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
64fe1bb1a511a3228c01e12b4264acecfd2e4e92 15-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Use llvm::sys::IsBigEndianHost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
115ac5ac1281e6f301da4da6a5c669beae59ffcc 15-Apr-2013 Timur Iskhodzhanov <timurrrr@google.com> Add a missing space

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179525 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
90cc390c4955029dd56d125af5512e68efa0c2b2 15-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove hasExternalLinkageUncached.

It was being used correctly, but it is a very dangerous API to have around.
Instead, move the logic from the filtering to when we are deciding if we should
link two decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
3c6a9b052373f656268557904d229a8ad8b7686f 15-Apr-2013 Nadav Rotem <nrotem@apple.com> Add a new flag -vectorize-slp-aggressive to enable Hals BB vectorizer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179507 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d09615fcc03d177a59478d7d6e90a034a4d2a879 15-Apr-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment command table: use inheritance instead of duplicating code


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
6a570f610c101054e79af2fcdb73a10f8e3f337d 14-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Diagnose if a __thread or _Thread_local variable has a non-constant initializer
or non-trivial destructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179491 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
321ae79aae228aa069795e78449a95fa35e2abfd 14-Apr-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Support -mmicromips / -mno-micromips command line options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179489 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
2ed42b86da17b8fc54480bf34e1965e20eee89f5 14-Apr-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Remove "single" from the list of valid MIPS float ABI names. Add
two new options –msingle-float and –mdouble-float. These options can be
used simultaneously with float ABI selection options (-mfloat-abi,
-mhard-float, -msoft-float). They mark whether a floating-point
coprocessor supports double-precision operations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179481 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
38afbc7361d861968232defaeaf8e302af75b5ee 13-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Annotate flavor of TLS variable (statically or dynamically initialized) onto the AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
175c8e2e57befe2db15dd339ab5eb27d0c2b6013 13-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Speed-up ObjCMethodDecl::getOverriddenMethods().

Use an newly introduce ASTContext::getBaseObjCCategoriesAfterInterface() which caches its
results instead of re-calculating the categories multiple times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ecc65238c98ba21d08763da7b7972d617677e908 13-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::getDecomposedIncludedLoc, that returns the "included/expanded in" decomposed location of the given FileID.

The main benefit is to speed-up SourceManager::isBeforeInTranslationUnit which is common to query
the included/expanded location of the same FileID multiple times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ec64244f5939fa81596fbeddad966cca4b4a4c51 13-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Parsing support for thread_local and _Thread_local. We give them the same
semantics as __thread for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179424 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TokenKinds.def
ema/DeclSpec.h
7332ae49671762239c9986c8f30f291c3a13d27e 12-Apr-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13643854> Only emit ambiguous-expansion warnings when at least one of the macro definitions comes from a non-system header.

This slightly weakens the heuristic introduced in r178109.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179411 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
9e2f5977a180ae927d05e844c65b8a7873be48a4 12-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer]Print field region even when the base region is not printable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179395 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
3bbffd549c76dfeb3c8d7c73860736a6523cde92 12-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> Sema: Give a typically small DenseMap some inline capacity.

Also reflow code a bit, no change in functionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179382 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
f6f77bd900ccc847c6601a34457c8b5f3cb48219 11-Apr-2013 Bob Wilson <bob.wilson@apple.com> Add a new -mimplicit-float option for symmetry with -mno-implicit-float.

This new option is the default, but it is useful to have a flag to override
-mno-implicit-float by putting -mimplicit-float later on the command line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179309 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a3609b0c7685346308ed2c8022f94949bbfe7cdf 11-Apr-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Implement member pointer emission and dereferencing

Summary:
Handles all inheritance models for both data and function member
pointers.

Also implements isZeroInitializable() and refactors some of the null
member pointer code.

MSVC supports converting member pointers through virtual bases, which
clang does not (yet?) support. Implementing that extension is covered
by http://llvm.org/15713

Reviewers: rjmccall

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D613

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
4de561f470be0cffeff5a92a286e9d6bf9bd8cff 11-Apr-2013 Ryan Govostes <rzg@apple.com> [analyzer] Factor common code from {SymSym,SymInt,IntSym}Expr to BinarySymExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179269 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
1fd1e288d0f45b86d191d8f53f569e5143f3a18a 11-Apr-2013 Jordan Rose <jordan_rose@apple.com> Force a load when creating a reference to a temporary copied from a bitfield.

For this source:
const int &ref = someStruct.bitfield;

We used to generate this AST:

DeclStmt [...]
`-VarDecl [...] ref 'const int &'
`-MaterializeTemporaryExpr [...] 'const int' lvalue
`-ImplicitCastExpr [...] 'const int' lvalue <NoOp>
`-MemberExpr [...] 'int' lvalue bitfield .bitfield [...]
`-DeclRefExpr [...] 'struct X' lvalue ParmVar [...] 'someStruct' 'struct X'

Notice the lvalue inside the MaterializeTemporaryExpr, which is very
confusing (and caused an assertion to fire in the analyzer - PR15694).

We now generate this:

DeclStmt [...]
`-VarDecl [...] ref 'const int &'
`-MaterializeTemporaryExpr [...] 'const int' lvalue
`-ImplicitCastExpr [...] 'int' <LValueToRValue>
`-MemberExpr [...] 'int' lvalue bitfield .bitfield [...]
`-DeclRefExpr [...] 'struct X' lvalue ParmVar [...] 'someStruct' 'struct X'

Which makes a lot more sense. This allows us to remove code in both
CodeGen and AST that hacked around this special case.

The commit also makes Clang accept this (legal) C++11 code:

int &&ref = std::move(someStruct).bitfield

PR15694 / <rdar://problem/13600396>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179250 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
75dbdfa6f80bf6b35d858b6557e9fbb2854e2ba0 11-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> comment parsing. Add couple more needed doxygen tags.
// rdar://12379053


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
d4fc9de6f7d9a56bdc2ec51d9cbbfd7d3cb0cf0a 10-Apr-2013 Chad Rosier <mcrosier@apple.com> [driver] Add a -Ofast option, which enables -O3, -ffast-math, and
-fstrict-aliasing.
rdar://13622687


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179216 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0e7f2bb1810a4e5e62a8e247460cd26f981d0827 10-Apr-2013 Dmitri Gribenko <gribozavr@gmail.com> -fparse-all-comments: remove redundant check, as suggested by Fariborz Jahanian


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179204 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
6fd7d3067dd06584ef3940e88e31fea1a0e83588 10-Apr-2013 Dmitri Gribenko <gribozavr@gmail.com> Add an option to parse all comments as documentation comments

Patch by Amin Shali.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
asic/CommentOptions.h
river/Options.td
0b0ca4724d1c05dc0dd1d6e5aff4c8a439cbb1a2 10-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add support for computing the exception specification for an inheriting
constructor. This isn't quite perfect (as usual, we don't handle default
arguments correctly yet, and we don't deal with copy/move constructors for
arguments correctly either, but this will be fixed when we implement core issue
1351.

This completes our support for inheriting constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179154 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ec27608da7f15b265135f5743fe71da1f8e25ee9 10-Apr-2013 Michael Ilseman <milseman@apple.com> Improve the diagnostics of the number-reading preprocessor directives.

The GNU line marker directive was sharing code with the #line directive, but some of the warnings/errors were reporting as #line directive diagnostics in both cases.

Previously:
#line 11foo1 ==> "#line directive requires a simple digit sequence"
# 11foo1 ==> "#line directive requires a simple digit sequence"

Now, we get:
#line 11foo1 ==> "#line directive requires a simple digit sequence"
# 11foo1 ==> "GNU line marker directive requires a simple digit sequence"




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179139 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
5771a2f0830228ac50e3473740e24d9dca67b54f 09-Apr-2013 Edwin Vane <edwin.vane@intel.com> Adding new AST Matchers isVirtual and isOverride

isVirtual - matches CXXMethodDecl nodes for virtual methods
isOverride - matches CXXMethodDecl nodes for methods that override virtual methods from a base class.

Author: Philip Dunstan <phil@philipdunstan.com>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179126 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
52ca70dc304c694923ac804630d88b1d95bfa941 09-Apr-2013 Peter Collingbourne <peter@pcc.me.uk> If the user requested a zero-base-shadow sanitizer, infer -pie and -fPIC when appropriate.

Differential Revision: http://llvm-reviews.chandlerc.com/D502

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ToolChain.h
a5796f87229b4aeebca71fa6ee1790ae7a5a0382 09-Apr-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType().

Previously, the analyzer used isIntegerType() everywhere, which uses the C
definition of "integer". The C++ predicate with the same behavior is
isIntegerOrUnscopedEnumerationType().

However, the analyzer is /really/ using this to ask if it's some sort of
"integrally representable" type, i.e. it should include C++11 scoped
enumerations as well. hasIntegerRepresentation() sounds like the right
predicate, but that includes vectors, which the analyzer represents by its
elements.

This commit audits all uses of isIntegerType() and replaces them with the
general isIntegerOrEnumerationType(), except in some specific cases where
it makes sense to exclude scoped enumerations, or any enumerations. These
cases now use isIntegerOrUnscopedEnumerationType() and getAs<BuiltinType>()
plus BuiltinType::isInteger().

isIntegerType() is hereby banned in the analyzer - lib/StaticAnalysis and
include/clang/StaticAnalysis. :-)

Fixes real assertion failures. PR15703 / <rdar://problem/12350701>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179081 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
3769f38264ba46a18059ad82a3a506f27bbf2537 08-Apr-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13559825> Further reduce template instantiation depth down to 256, since we're blowing the stack for a trivial "factorial" class template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
eef35f8b9a935d14c2070dd83aa12ae04c701514 08-Apr-2013 Richard Trieu <rtrieu@google.com> Fix PR15634, better error message for template deduction failure.

When two template decls with the same name are used in this diagnostic,
force them to print their qualified names. This changes the bad message of:

candidate template ignored: could not match 'array' against 'array'

to the better message of:

candidate template ignored: could not match 'NS2::array' against 'NS1::array'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
12849d0ed2e88f8c6420944538b9c9d1985df14a 08-Apr-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13540921> Fix a crasher when an Objective-C for-in loop gets a non-variable iteration declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
493fe6d504a436c0639e641ef7c3c3982cf5feca 08-Apr-2013 Bill Wendling <isanbard@gmail.com> The recent GCOV changes expect the initial version string to be in forward order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179050 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
1bd077b84b46e0e6c0af02298ff184b850c0bb3c 08-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> fixes a typo in my last patch.
// rdar://12379114


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
cac9ee0b129b8d8d4088ecf5068202886850aa2c 08-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> doce parsing: adding few more headerdoc tags.
// rdar://12379114


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179039 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
109f5fc8dff6f3bd707e0e4140dc99ef7d4f3e88 08-Apr-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/12806802> Propagate access specifiers for conversion functions to the conversion function set eagerly.

This slightly propagates an existing hack that delays when we provide
access specifiers for the visible conversion functions of a class by
copying the available access specifier early. The only client this
affects is LLDB, which tends to discover and add conversion functions
after the class is technically "complete". As such, the only
observable difference is in LLDB, so the testing will go there.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179029 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTUnresolvedSet.h
ST/DeclBase.h
abe922342d67d4ffe05b366a5a2af972185272f8 08-Apr-2013 Daniel Jasper <djasper@google.com> Add matcher for NamespaceDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179027 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
f608aff66c5412ab583258f989417b4974ba507a 06-Apr-2013 Richard Trieu <rtrieu@google.com> When -Woverloaded-virtual is triggered, call HandleFunctionTypeMismatch to add
more information to the notes. This information is already present on other
diagnostic messages that involves overloads.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8aa86d1155fb99e34fd084d83da3345b1ec2b2e4 05-Apr-2013 Tanya Lattner <tonic@nondot.org> Add an error to check that all program scope variables are in the constant address space in OpenCL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178906 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5238e40f6ea6346b6bc1505e4975c2c4ab7fde09 05-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> doce parsing: adding few more headerdoc tags.
// rdar://12379114


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
610f79cbab4d752349b5c81a94682a6a82b102e7 05-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Show path diagnostic for C++ initializers

Also had to modify the PostInitializer ProgramLocation to contain the field region.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178826 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
b0eb771fb5fcbbf283e357f95230adeb6570380f 05-Apr-2013 Tanya Lattner <tonic@nondot.org> Revert 178811 until I fix the unit tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178813 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
98bb78885c36800d23fe247f10131bc6dcb30581 05-Apr-2013 Tanya Lattner <tonic@nondot.org> Add an error to check that all program scope variables are in the constant address space in OpenCL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178811 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b37a73d5c6a0c8bb1f6e363d3b53980e4fa0cead 04-Apr-2013 Manman Ren <mren@apple.com> Initial support for struct-path aware TBAA.

Added TBAABaseType and TBAAOffset in LValue. These two fields are initialized to
the actual type and 0, and are updated in EmitLValueForField.
Path-aware TBAA tags are enabled for EmitLoadOfScalar and EmitStoreOfScalar.
Added command line option -struct-path-tbaa.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178797 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.def
7cc0a110bcf3fe9c4d1269ea2ae7e72aa7f37531 04-Apr-2013 Manman Ren <mren@apple.com> revert r178784 since it does not have a commit message

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178796 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.def
ab4ffe242935ae0dd66fbe0dcc792c1ad38b00c1 04-Apr-2013 Manman Ren <mren@apple.com> Index: include/clang/Driver/CC1Options.td
===================================================================
--- include/clang/Driver/CC1Options.td (revision 178718)
+++ include/clang/Driver/CC1Options.td (working copy)
@@ -161,6 +161,8 @@
HelpText<"Use register sized accesses to bit-fields, when possible.">;
def relaxed_aliasing : Flag<["-"], "relaxed-aliasing">,
HelpText<"Turn off Type Based Alias Analysis">;
+def struct_path_tbaa : Flag<["-"], "struct-path-tbaa">,
+ HelpText<"Turn on struct-path aware Type Based Alias Analysis">;
def masm_verbose : Flag<["-"], "masm-verbose">,
HelpText<"Generate verbose assembly output">;
def mcode_model : Separate<["-"], "mcode-model">,
Index: include/clang/Driver/Options.td
===================================================================
--- include/clang/Driver/Options.td (revision 178718)
+++ include/clang/Driver/Options.td (working copy)
@@ -587,6 +587,7 @@
Flags<[CC1Option]>, HelpText<"Disable spell-checking">;
def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>;
def fno_strict_aliasing : Flag<["-"], "fno-strict-aliasing">, Group<f_Group>;
+def fstruct_path_tbaa : Flag<["-"], "fstruct-path-tbaa">, Group<f_Group>;
def fno_strict_enums : Flag<["-"], "fno-strict-enums">, Group<f_Group>;
def fno_strict_overflow : Flag<["-"], "fno-strict-overflow">, Group<f_Group>;
def fno_threadsafe_statics : Flag<["-"], "fno-threadsafe-statics">, Group<f_Group>,
Index: include/clang/Frontend/CodeGenOptions.def
===================================================================
--- include/clang/Frontend/CodeGenOptions.def (revision 178718)
+++ include/clang/Frontend/CodeGenOptions.def (working copy)
@@ -85,6 +85,7 @@
VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified.
CODEGENOPT(RelaxAll , 1, 0) ///< Relax all machine code instructions.
CODEGENOPT(RelaxedAliasing , 1, 0) ///< Set when -fno-strict-aliasing is enabled.
+CODEGENOPT(StructPathTBAA , 1, 0) ///< Whether or not to use struct-path TBAA.
CODEGENOPT(SaveTempLabels , 1, 0) ///< Save temporary labels.
CODEGENOPT(SanitizeAddressZeroBaseShadow , 1, 0) ///< Map shadow memory at zero
///< offset in AddressSanitizer.
Index: lib/CodeGen/CGExpr.cpp
===================================================================
--- lib/CodeGen/CGExpr.cpp (revision 178718)
+++ lib/CodeGen/CGExpr.cpp (working copy)
@@ -1044,7 +1044,8 @@
llvm::Value *CodeGenFunction::EmitLoadOfScalar(LValue lvalue) {
return EmitLoadOfScalar(lvalue.getAddress(), lvalue.isVolatile(),
lvalue.getAlignment().getQuantity(),
- lvalue.getType(), lvalue.getTBAAInfo());
+ lvalue.getType(), lvalue.getTBAAInfo(),
+ lvalue.getTBAABaseType(), lvalue.getTBAAOffset());
}

static bool hasBooleanRepresentation(QualType Ty) {
@@ -1106,7 +1107,9 @@

llvm::Value *CodeGenFunction::EmitLoadOfScalar(llvm::Value *Addr, bool Volatile,
unsigned Alignment, QualType Ty,
- llvm::MDNode *TBAAInfo) {
+ llvm::MDNode *TBAAInfo,
+ QualType TBAABaseType,
+ uint64_t TBAAOffset) {
// For better performance, handle vector loads differently.
if (Ty->isVectorType()) {
llvm::Value *V;
@@ -1158,8 +1161,11 @@
Load->setVolatile(true);
if (Alignment)
Load->setAlignment(Alignment);
- if (TBAAInfo)
- CGM.DecorateInstruction(Load, TBAAInfo);
+ if (TBAAInfo) {
+ llvm::MDNode *TBAAPath = CGM.getTBAAStructTagInfo(TBAABaseType, TBAAInfo,
+ TBAAOffset);
+ CGM.DecorateInstruction(Load, TBAAPath);
+ }

if ((SanOpts->Bool && hasBooleanRepresentation(Ty)) ||
(SanOpts->Enum && Ty->getAs<EnumType>())) {
@@ -1217,7 +1223,8 @@
bool Volatile, unsigned Alignment,
QualType Ty,
llvm::MDNode *TBAAInfo,
- bool isInit) {
+ bool isInit, QualType TBAABaseType,
+ uint64_t TBAAOffset) {

// Handle vectors differently to get better performance.
if (Ty->isVectorType()) {
@@ -1268,15 +1275,19 @@
llvm::StoreInst *Store = Builder.CreateStore(Value, Addr, Volatile);
if (Alignment)
Store->setAlignment(Alignment);
- if (TBAAInfo)
- CGM.DecorateInstruction(Store, TBAAInfo);
+ if (TBAAInfo) {
+ llvm::MDNode *TBAAPath = CGM.getTBAAStructTagInfo(TBAABaseType, TBAAInfo,
+ TBAAOffset);
+ CGM.DecorateInstruction(Store, TBAAPath);
+ }
}

void CodeGenFunction::EmitStoreOfScalar(llvm::Value *value, LValue lvalue,
bool isInit) {
EmitStoreOfScalar(value, lvalue.getAddress(), lvalue.isVolatile(),
lvalue.getAlignment().getQuantity(), lvalue.getType(),
- lvalue.getTBAAInfo(), isInit);
+ lvalue.getTBAAInfo(), isInit, lvalue.getTBAABaseType(),
+ lvalue.getTBAAOffset());
}

/// EmitLoadOfLValue - Given an expression that represents a value lvalue, this
@@ -2494,9 +2505,12 @@

llvm::Value *addr = base.getAddress();
unsigned cvr = base.getVRQualifiers();
+ bool TBAAPath = CGM.getCodeGenOpts().StructPathTBAA;
if (rec->isUnion()) {
// For unions, there is no pointer adjustment.
assert(!type->isReferenceType() && "union has reference member");
+ // TODO: handle path-aware TBAA for union.
+ TBAAPath = false;
} else {
// For structs, we GEP to the field that the record layout suggests.
unsigned idx = CGM.getTypes().getCGRecordLayout(rec).getLLVMFieldNo(field);
@@ -2508,6 +2522,8 @@
if (cvr & Qualifiers::Volatile) load->setVolatile(true);
load->setAlignment(alignment.getQuantity());

+ // Loading the reference will disable path-aware TBAA.
+ TBAAPath = false;
if (CGM.shouldUseTBAA()) {
llvm::MDNode *tbaa;
if (mayAlias)
@@ -2541,6 +2557,16 @@

LValue LV = MakeAddrLValue(addr, type, alignment);
LV.getQuals().addCVRQualifiers(cvr);
+ if (TBAAPath) {
+ const ASTRecordLayout &Layout =
+ getContext().getASTRecordLayout(field->getParent());
+ // Set the base type to be the base type of the base LValue and
+ // update offset to be relative to the base type.
+ LV.setTBAABaseType(base.getTBAABaseType());
+ LV.setTBAAOffset(base.getTBAAOffset() +
+ Layout.getFieldOffset(field->getFieldIndex()) /
+ getContext().getCharWidth());
+ }

// __weak attribute on a field is ignored.
if (LV.getQuals().getObjCGCAttr() == Qualifiers::Weak)
Index: lib/CodeGen/CGValue.h
===================================================================
--- lib/CodeGen/CGValue.h (revision 178718)
+++ lib/CodeGen/CGValue.h (working copy)
@@ -157,6 +157,11 @@

Expr *BaseIvarExp;

+ /// Used by struct-path-aware TBAA.
+ QualType TBAABaseType;
+ /// Offset relative to the base type.
+ uint64_t TBAAOffset;
+
/// TBAAInfo - TBAA information to attach to dereferences of this LValue.
llvm::MDNode *TBAAInfo;

@@ -175,6 +180,10 @@
this->ImpreciseLifetime = false;
this->ThreadLocalRef = false;
this->BaseIvarExp = 0;
+
+ // Initialize fields for TBAA.
+ this->TBAABaseType = Type;
+ this->TBAAOffset = 0;
this->TBAAInfo = TBAAInfo;
}

@@ -232,6 +241,12 @@
Expr *getBaseIvarExp() const { return BaseIvarExp; }
void setBaseIvarExp(Expr *V) { BaseIvarExp = V; }

+ QualType getTBAABaseType() const { return TBAABaseType; }
+ void setTBAABaseType(QualType T) { TBAABaseType = T; }
+
+ uint64_t getTBAAOffset() const { return TBAAOffset; }
+ void setTBAAOffset(uint64_t O) { TBAAOffset = O; }
+
llvm::MDNode *getTBAAInfo() const { return TBAAInfo; }
void setTBAAInfo(llvm::MDNode *N) { TBAAInfo = N; }

Index: lib/CodeGen/CodeGenFunction.h
===================================================================
--- lib/CodeGen/CodeGenFunction.h (revision 178718)
+++ lib/CodeGen/CodeGenFunction.h (working copy)
@@ -2211,7 +2211,9 @@
/// the LLVM value representation.
llvm::Value *EmitLoadOfScalar(llvm::Value *Addr, bool Volatile,
unsigned Alignment, QualType Ty,
- llvm::MDNode *TBAAInfo = 0);
+ llvm::MDNode *TBAAInfo = 0,
+ QualType TBAABaseTy = QualType(),
+ uint64_t TBAAOffset = 0);

/// EmitLoadOfScalar - Load a scalar value from an address, taking
/// care to appropriately convert from the memory representation to
@@ -2224,7 +2226,9 @@
/// the LLVM value representation.
void EmitStoreOfScalar(llvm::Value *Value, llvm::Value *Addr,
bool Volatile, unsigned Alignment, QualType Ty,
- llvm::MDNode *TBAAInfo = 0, bool isInit=false);
+ llvm::MDNode *TBAAInfo = 0, bool isInit = false,
+ QualType TBAABaseTy = QualType(),
+ uint64_t TBAAOffset = 0);

/// EmitStoreOfScalar - Store a scalar value to an address, taking
/// care to appropriately convert from the memory representation to
Index: lib/CodeGen/CodeGenModule.cpp
===================================================================
--- lib/CodeGen/CodeGenModule.cpp (revision 178718)
+++ lib/CodeGen/CodeGenModule.cpp (working copy)
@@ -227,6 +227,20 @@
return TBAA->getTBAAStructInfo(QTy);
}

+llvm::MDNode *CodeGenModule::getTBAAStructTypeInfo(QualType QTy) {
+ if (!TBAA)
+ return 0;
+ return TBAA->getTBAAStructTypeInfo(QTy);
+}
+
+llvm::MDNode *CodeGenModule::getTBAAStructTagInfo(QualType BaseTy,
+ llvm::MDNode *AccessN,
+ uint64_t O) {
+ if (!TBAA)
+ return 0;
+ return TBAA->getTBAAStructTagInfo(BaseTy, AccessN, O);
+}
+
void CodeGenModule::DecorateInstruction(llvm::Instruction *Inst,
llvm::MDNode *TBAAInfo) {
Inst->setMetadata(llvm::LLVMContext::MD_tbaa, TBAAInfo);
Index: lib/CodeGen/CodeGenModule.h
===================================================================
--- lib/CodeGen/CodeGenModule.h (revision 178718)
+++ lib/CodeGen/CodeGenModule.h (working copy)
@@ -501,6 +501,11 @@
llvm::MDNode *getTBAAInfo(QualType QTy);
llvm::MDNode *getTBAAInfoForVTablePtr();
llvm::MDNode *getTBAAStructInfo(QualType QTy);
+ /// Return the MDNode in the type DAG for the given struct type.
+ llvm::MDNode *getTBAAStructTypeInfo(QualType QTy);
+ /// Return the path-aware tag for given base type, access node and offset.
+ llvm::MDNode *getTBAAStructTagInfo(QualType BaseTy, llvm::MDNode *AccessN,
+ uint64_t O);

bool isTypeConstant(QualType QTy, bool ExcludeCtorDtor);

Index: lib/CodeGen/CodeGenTBAA.cpp
===================================================================
--- lib/CodeGen/CodeGenTBAA.cpp (revision 178718)
+++ lib/CodeGen/CodeGenTBAA.cpp (working copy)
@@ -21,6 +21,7 @@
#include "clang/AST/Mangle.h"
#include "clang/AST/RecordLayout.h"
#include "clang/Frontend/CodeGenOptions.h"
+#include "llvm/ADT/SmallSet.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
@@ -225,3 +226,87 @@
// For now, handle any other kind of type conservatively.
return StructMetadataCache[Ty] = NULL;
}
+
+/// Check if the given type can be handled by path-aware TBAA.
+static bool isTBAAPathStruct(QualType QTy) {
+ if (const RecordType *TTy = QTy->getAs<RecordType>()) {
+ const RecordDecl *RD = TTy->getDecl()->getDefinition();
+ // RD can be struct, union, class, interface or enum.
+ // For now, we only handle struct.
+ if (RD->isStruct() && !RD->hasFlexibleArrayMember())
+ return true;
+ }
+ return false;
+}
+
+llvm::MDNode *
+CodeGenTBAA::getTBAAStructTypeInfo(QualType QTy) {
+ const Type *Ty = Context.getCanonicalType(QTy).getTypePtr();
+ assert(isTBAAPathStruct(QTy));
+
+ if (llvm::MDNode *N = StructTypeMetadataCache[Ty])
+ return N;
+
+ if (const RecordType *TTy = QTy->getAs<RecordType>()) {
+ const RecordDecl *RD = TTy->getDecl()->getDefinition();
+
+ const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
+ SmallVector <std::pair<uint64_t, llvm::MDNode*>, 4> Fields;
+ // To reduce the size of MDNode for a given struct type, we only output
+ // once for all the fields with the same scalar types.
+ // Offsets for scalar fields in the type DAG are not used.
+ llvm::SmallSet <llvm::MDNode*, 4> ScalarFieldTypes;
+ unsigned idx = 0;
+ for (RecordDecl::field_iterator i = RD->field_begin(),
+ e = RD->field_end(); i != e; ++i, ++idx) {
+ QualType FieldQTy = i->getType();
+ llvm::MDNode *FieldNode;
+ if (isTBAAPathStruct(FieldQTy))
+ FieldNode = getTBAAStructTypeInfo(FieldQTy);
+ else {
+ FieldNode = getTBAAInfo(FieldQTy);
+ // Ignore this field if the type already exists.
+ if (ScalarFieldTypes.count(FieldNode))
+ continue;
+ ScalarFieldTypes.insert(FieldNode);
+ }
+ if (!FieldNode)
+ return StructTypeMetadataCache[Ty] = NULL;
+ Fields.push_back(std::make_pair(
+ Layout.getFieldOffset(idx) / Context.getCharWidth(), FieldNode));
+ }
+
+ // TODO: This is using the RTTI name. Is there a better way to get
+ // a unique string for a type?
+ SmallString<256> OutName;
+ llvm::raw_svector_ostream Out(OutName);
+ MContext.mangleCXXRTTIName(QualType(Ty, 0), Out);
+ Out.flush();
+ // Create the struct type node with a vector of pairs (offset, type).
+ return StructTypeMetadataCache[Ty] =
+ MDHelper.createTBAAStructTypeNode(OutName, Fields);
+ }
+
+ return StructMetadataCache[Ty] = NULL;
+}
+
+llvm::MDNode *
+CodeGenTBAA::getTBAAStructTagInfo(QualType BaseQTy, llvm::MDNode *AccessNode,
+ uint64_t Offset) {
+ if (!CodeGenOpts.StructPathTBAA)
+ return AccessNode;
+
+ const Type *BTy = Context.getCanonicalType(BaseQTy).getTypePtr();
+ TBAAPathTag PathTag = TBAAPathTag(BTy, AccessNode, Offset);
+ if (llvm::MDNode *N = StructTagMetadataCache[PathTag])
+ return N;
+
+ llvm::MDNode *BNode = 0;
+ if (isTBAAPathStruct(BaseQTy))
+ BNode = getTBAAStructTypeInfo(BaseQTy);
+ if (!BNode)
+ return StructTagMetadataCache[PathTag] = AccessNode;
+
+ return StructTagMetadataCache[PathTag] =
+ MDHelper.createTBAAStructTagNode(BNode, AccessNode, Offset);
+}
Index: lib/CodeGen/CodeGenTBAA.h
===================================================================
--- lib/CodeGen/CodeGenTBAA.h (revision 178718)
+++ lib/CodeGen/CodeGenTBAA.h (working copy)
@@ -35,6 +35,14 @@
namespace CodeGen {
class CGRecordLayout;

+ struct TBAAPathTag {
+ TBAAPathTag(const Type *B, const llvm::MDNode *A, uint64_t O)
+ : BaseT(B), AccessN(A), Offset(O) {}
+ const Type *BaseT;
+ const llvm::MDNode *AccessN;
+ uint64_t Offset;
+ };
+
/// CodeGenTBAA - This class organizes the cross-module state that is used
/// while lowering AST types to LLVM types.
class CodeGenTBAA {
@@ -46,8 +54,13 @@
// MDHelper - Helper for creating metadata.
llvm::MDBuilder MDHelper;

- /// MetadataCache - This maps clang::Types to llvm::MDNodes describing them.
+ /// MetadataCache - This maps clang::Types to scalar llvm::MDNodes describing
+ /// them.
llvm::DenseMap<const Type *, llvm::MDNode *> MetadataCache;
+ /// This maps clang::Types to a struct node in the type DAG.
+ llvm::DenseMap<const Type *, llvm::MDNode *> StructTypeMetadataCache;
+ /// This maps TBAAPathTags to a tag node.
+ llvm::DenseMap<TBAAPathTag, llvm::MDNode *> StructTagMetadataCache;

/// StructMetadataCache - This maps clang::Types to llvm::MDNodes describing
/// them for struct assignments.
@@ -89,9 +102,49 @@
/// getTBAAStructInfo - Get the TBAAStruct MDNode to be used for a memcpy of
/// the given type.
llvm::MDNode *getTBAAStructInfo(QualType QTy);
+
+ /// Get the MDNode in the type DAG for given struct type QType.
+ llvm::MDNode *getTBAAStructTypeInfo(QualType QType);
+ /// Get the tag MDNode for a given base type, the actual sclar access MDNode
+ /// and offset into the base type.
+ llvm::MDNode *getTBAAStructTagInfo(QualType BaseQType,
+ llvm::MDNode *AccessNode, uint64_t Offset);
};

} // end namespace CodeGen
} // end namespace clang

+namespace llvm {
+
+template<> struct DenseMapInfo<clang::CodeGen::TBAAPathTag> {
+ static clang::CodeGen::TBAAPathTag getEmptyKey() {
+ return clang::CodeGen::TBAAPathTag(
+ DenseMapInfo<const clang::Type *>::getEmptyKey(),
+ DenseMapInfo<const MDNode *>::getEmptyKey(),
+ DenseMapInfo<uint64_t>::getEmptyKey());
+ }
+
+ static clang::CodeGen::TBAAPathTag getTombstoneKey() {
+ return clang::CodeGen::TBAAPathTag(
+ DenseMapInfo<const clang::Type *>::getTombstoneKey(),
+ DenseMapInfo<const MDNode *>::getTombstoneKey(),
+ DenseMapInfo<uint64_t>::getTombstoneKey());
+ }
+
+ static unsigned getHashValue(const clang::CodeGen::TBAAPathTag &Val) {
+ return DenseMapInfo<const clang::Type *>::getHashValue(Val.BaseT) ^
+ DenseMapInfo<const MDNode *>::getHashValue(Val.AccessN) ^
+ DenseMapInfo<uint64_t>::getHashValue(Val.Offset);
+ }
+
+ static bool isEqual(const clang::CodeGen::TBAAPathTag &LHS,
+ const clang::CodeGen::TBAAPathTag &RHS) {
+ return LHS.BaseT == RHS.BaseT &&
+ LHS.AccessN == RHS.AccessN &&
+ LHS.Offset == RHS.Offset;
+ }
+};
+
+} // end namespace llvm
+
#endif
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp (revision 178718)
+++ lib/Driver/Tools.cpp (working copy)
@@ -2105,6 +2105,8 @@
options::OPT_fno_strict_aliasing,
getToolChain().IsStrictAliasingDefault()))
CmdArgs.push_back("-relaxed-aliasing");
+ if (Args.hasArg(options::OPT_fstruct_path_tbaa))
+ CmdArgs.push_back("-struct-path-tbaa");
if (Args.hasFlag(options::OPT_fstrict_enums, options::OPT_fno_strict_enums,
false))
CmdArgs.push_back("-fstrict-enums");
Index: lib/Frontend/CompilerInvocation.cpp
===================================================================
--- lib/Frontend/CompilerInvocation.cpp (revision 178718)
+++ lib/Frontend/CompilerInvocation.cpp (working copy)
@@ -324,6 +324,7 @@
Opts.UseRegisterSizedBitfieldAccess = Args.hasArg(
OPT_fuse_register_sized_bitfield_access);
Opts.RelaxedAliasing = Args.hasArg(OPT_relaxed_aliasing);
+ Opts.StructPathTBAA = Args.hasArg(OPT_struct_path_tbaa);
Opts.DwarfDebugFlags = Args.getLastArgValue(OPT_dwarf_debug_flags);
Opts.MergeAllConstants = !Args.hasArg(OPT_fno_merge_all_constants);
Opts.NoCommon = Args.hasArg(OPT_fno_common);
Index: test/CodeGen/tbaa.cpp
===================================================================
--- test/CodeGen/tbaa.cpp (revision 0)
+++ test/CodeGen/tbaa.cpp (working copy)
@@ -0,0 +1,217 @@
+// RUN: %clang_cc1 -O1 -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -O1 -struct-path-tbaa -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s -check-prefix=PATH
+// Test TBAA metadata generated by front-end.
+
+#include <stdint.h>
+typedef struct
+{
+ uint16_t f16;
+ uint32_t f32;
+ uint16_t f16_2;
+ uint32_t f32_2;
+} StructA;
+typedef struct
+{
+ uint16_t f16;
+ StructA a;
+ uint32_t f32;
+} StructB;
+typedef struct
+{
+ uint16_t f16;
+ StructB b;
+ uint32_t f32;
+} StructC;
+typedef struct
+{
+ uint16_t f16;
+ StructB b;
+ uint32_t f32;
+ uint8_t f8;
+} StructD;
+
+typedef struct
+{
+ uint16_t f16;
+ uint32_t f32;
+} StructS;
+typedef struct
+{
+ uint16_t f16;
+ uint32_t f32;
+} StructS2;
+
+uint32_t g(uint32_t *s, StructA *A, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !5
+ *s = 1;
+ A->f32 = 4;
+ return *s;
+}
+
+uint32_t g2(uint32_t *s, StructA *A, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !8
+ *s = 1;
+ A->f16 = 4;
+ return *s;
+}
+
+uint32_t g3(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !9
+ A->f32 = 1;
+ B->a.f32 = 4;
+ return A->f32;
+}
+
+uint32_t g4(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !11
+ A->f32 = 1;
+ B->a.f16 = 4;
+ return A->f32;
+}
+
+uint32_t g5(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !12
+ A->f32 = 1;
+ B->f32 = 4;
+ return A->f32;
+}
+
+uint32_t g6(StructA *A, StructB *B, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !13
+ A->f32 = 1;
+ B->a.f32_2 = 4;
+ return A->f32;
+}
+
+uint32_t g7(StructA *A, StructS *S, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !14
+ A->f32 = 1;
+ S->f32 = 4;
+ return A->f32;
+}
+
+uint32_t g8(StructA *A, StructS *S, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !5
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !16
+ A->f32 = 1;
+ S->f16 = 4;
+ return A->f32;
+}
+
+uint32_t g9(StructS *S, StructS2 *S2, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !14
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !17
+ S->f32 = 1;
+ S2->f32 = 4;
+ return S->f32;
+}
+
+uint32_t g10(StructS *S, StructS2 *S2, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !14
+// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa !19
+ S->f32 = 1;
+ S2->f16 = 4;
+ return S->f32;
+}
+
+uint32_t g11(StructC *C, StructD *D, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !20
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !22
+ C->b.a.f32 = 1;
+ D->b.a.f32 = 4;
+ return C->b.a.f32;
+}
+
+uint32_t g12(StructC *C, StructD *D, uint64_t count) {
+// CHECK: define i32 @{{.*}}(
+// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
+// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
+// TODO: differentiate the two accesses.
+// PATH: define i32 @{{.*}}(
+// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa !9
+// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa !9
+ StructB *b1 = &(C->b);
+ StructB *b2 = &(D->b);
+ // b1, b2 have different context.
+ b1->a.f32 = 1;
+ b2->a.f32 = 4;
+ return b1->a.f32;
+}
+
+// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
+// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA"}
+// CHECK: !4 = metadata !{metadata !"int", metadata !1}
+// CHECK: !5 = metadata !{metadata !"short", metadata !1}
+
+// PATH: !1 = metadata !{metadata !"omnipotent char", metadata !2}
+// PATH: !4 = metadata !{metadata !"int", metadata !1}
+// PATH: !5 = metadata !{metadata !6, metadata !4, i64 4}
+// PATH: !6 = metadata !{metadata !"_ZTS7StructA", i64 0, metadata !7, i64 4, metadata !4}
+// PATH: !7 = metadata !{metadata !"short", metadata !1}
+// PATH: !8 = metadata !{metadata !6, metadata !7, i64 0}
+// PATH: !9 = metadata !{metadata !10, metadata !4, i64 8}
+// PATH: !10 = metadata !{metadata !"_ZTS7StructB", i64 0, metadata !7, i64 4, metadata !6, i64 20, metadata !4}
+// PATH: !11 = metadata !{metadata !10, metadata !7, i64 4}
+// PATH: !12 = metadata !{metadata !10, metadata !4, i64 20}
+// PATH: !13 = metadata !{metadata !10, metadata !4, i64 16}
+// PATH: !14 = metadata !{metadata !15, metadata !4, i64 4}
+// PATH: !15 = metadata !{metadata !"_ZTS7StructS", i64 0, metadata !7, i64 4, metadata !4}
+// PATH: !16 = metadata !{metadata !15, metadata !7, i64 0}
+// PATH: !17 = metadata !{metadata !18, metadata !4, i64 4}
+// PATH: !18 = metadata !{metadata !"_ZTS8StructS2", i64 0, metadata !7, i64 4, metadata !4}
+// PATH: !19 = metadata !{metadata !18, metadata !7, i64 0}
+// PATH: !20 = metadata !{metadata !21, metadata !4, i64 12}
+// PATH: !21 = metadata !{metadata !"_ZTS7StructC", i64 0, metadata !7, i64 4, metadata !10, i64 28, metadata !4}
+// PATH: !22 = metadata !{metadata !23, metadata !4, i64 12}
+// PATH: !23 = metadata !{metadata !"_ZTS7StructD", i64 0, metadata !7, i64 4, metadata !10, i64 28, metadata !4, i64 32, metadata !1}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178784 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.def
3105627bd76d6a0cc5ee305c99f4c96519bac9ac 04-Apr-2013 Eric Christopher <echristo@gmail.com> Plumb through the -fsplit-stack option using the existing backend
support.

Caveat: Other than the existing segmented stacks support, no
claims are made of this working.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178744 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.def
c855ce7ab97aa25c609a5f83e19b27289fede21a 04-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Add hasExternalLinkageUncached back with the test that Richard provided, but
keep the call at the current location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178741 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6a7664c4a8b378da5a7f58d940d39b76fb0d6673 04-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Avoid computing the linkage instead of avoiding caching it.

This mostly reverts 178733, but keeps the tests.

I don't claim to understand how hidden sub modules work or when we need to see
them (is that documented?), but this has the same semantics and avoids adding
hasExternalLinkageUncached which has the same foot gun potential as the old
hasExternalLinkage.

Last but not least, not computing linkage when it is not needed is more
efficient.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d613ac9c57936d219d9eecba1d061a45ff7a3ae8 04-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix 41 of the 61 tests which fail with modules enabled: we were computing and
caching the linkage for a declaration before we set up its redeclaration chain,
when determining whether a declaration could be a redeclaration of something
from an unimported submodule. We actually want to look at the declaration as if
it were not a redeclaration here, so compute the linkage but don't cache it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b846381fc3099b2340ba8c74d16178203a60d9a0 04-Apr-2013 John McCall <rjmccall@apple.com> Be sure to check ARC conventions on the implicit method declarations
of a property just in case the property's getter happens to be +1.
We won't synthesize a getter for such a property, but we will allow
the user to define a +1 method for it.
rdar://13115896

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178731 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e145bfd06c7eaf0cff0f7d825d1c6244127c26df 04-Apr-2013 Nico Weber <nicolasweber@gmx.de> Make the ObjC attributes diagnostics a bit more informative.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178720 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
5b8d0af4234252b38229a5bae1d615ac9769f73f 04-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Revert accidental commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
4382867f04549f9bfcd33a08342f4f74ab13841c 04-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> Pare back r164351 somewhat. The problem that change was addressing was that we
don't serialize a lookup map for the translation unit outside C++ mode, so we
can't tell when lookup within the TU needs to look within modules. Only apply
the fix outside C++ mode, and only to the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
78037ac3e7562aa3e306eaba97f1c609b86337d9 03-Apr-2013 John McCall <rjmccall@apple.com> Complain about attempts to befriend declarations via a using
declaration. Patch by Stephen Lin!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178698 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d2615cc53b916e8aae45783ca7113b93de515ce3 03-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Add 178663 back.

http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb went back green
before it processed the reverted 178663, so it could not have been the culprit.

Revert "Revert 178663."

This reverts commit 4f8a3eb2ce5d4ba422483439e20c8cbb4d953a41.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178682 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ema/DeclSpec.h
ema/Sema.h
4f8a3eb2ce5d4ba422483439e20c8cbb4d953a41 03-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert 178663.

Looks like it broke http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb

Revert "Don't compute a patched/semantic storage class."

This reverts commit 8f187f62cb0487d31bc4afdfcd47e11fe9a51d05.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ema/DeclSpec.h
ema/Sema.h
bd25ff8632e18bb3af761369fd3b0f1b48fdf061 03-Apr-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Allow comparing two macro definitions syntactically instead of only lexically.

Syntactically means the function macro parameter names do not need to use the same
identifiers in order for the definitions to be considered identical.

Syntactic equivalence is a microsoft extension for macro redefinitions and we'll also
use this kind of comparison to check for ambiguous macros coming from modules.

rdar://13562254

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178671 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
9f4f5f1ca1e1967daf64d5422717c9b1e75eeb9e 03-Apr-2013 Nico Weber <nicolasweber@gmx.de> Emit a nicer diagnostic for misplaced attributes on ObjC directives.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178670 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
20a7cf4d782e32b2752e651a11ed3712d2debd65 03-Apr-2013 Kaelyn Uhrain <rikka@google.com> Give the default CorrectionCandidateCallback::ValidateCandidate some
smarts so that it doesn't approve of keywords and/or type names when it
knows (based on its flags) that those kinds of corrections are not
wanted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178668 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
8f187f62cb0487d31bc4afdfcd47e11fe9a51d05 03-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Don't compute a patched/semantic storage class.

For variables and functions clang used to store two storage classes. The one
"as written" in the code and a patched one, which, for example, propagates
static to the following decls.

This apparently is from the days clang lacked linkage computation. It is now
redundant and this patch removes it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ema/DeclSpec.h
ema/Sema.h
d4582b8e6d056f5d991f1b8372e89a6aae58feae 03-Apr-2013 Jordan Rose <jordan_rose@apple.com> Escape more @ signs in Doxygen comments.

Doxygen treats "@command" the same as "\command" in a doc comment, so
whenever we talk about Objective-C things like "@interface" we have to
make sure to escape them.

Let's try to keep Clang -Wdocumentation-clean!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/DeclBase.h
ST/ExprObjC.h
58b65d953e67251bfce28a5251bb3b496490f343 02-Apr-2013 Stefanus Du Toit <stefanus.du.toit@intel.com> Update assertion string to new name of ArithAssignBinaryOperator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0c70181854a95fca0e0d56dfa1203eb2216052ea 02-Apr-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Provide fixit hints when warning
about 'isa' ivar being explicitely accessed
when base is a user class object reference.
// rdar://13503456


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
7b69cd09440976d6b93a0db661a770b2337be8d2 02-Apr-2013 Edwin Vane <edwin.vane@intel.com> Adding a hasLocalQualifiers() AST Matcher.

Updated tests and docs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178556 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
cb428a1ac09dddf5ed3bf2a740f9ea31e9e11037 02-Apr-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Rename enum and remove dead case per Jordan's suggestion

The IHM_ prefix was a fairly gross abbreviation to try to hit three
characters for uniqueness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4410489163931892b568f0a43bd49c430a3aa3f5 02-Apr-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Move MS inheritance model calculation into MemberPointerType

Summary:
This makes it possible to share code between lib/AST/MicrosoftCXXABI.cpp
and lib/CodeGen/MicrosoftCXXABI.cpp. No functionality change.

Also adds comments about the layout of the member pointer structs as I
currently understand them.

Reviewers: rjmccall

CC: timurrrr, cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D590

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
b421d926cdc632489915d39556f04c14f59d2392 02-Apr-2013 John McCall <rjmccall@apple.com> Add -Wstatic-local-in-inline, which warns about using a static local
variable in a C99 inline (but not static-inline or extern-inline)
function definition.

The standard doesn't actually say that this doesn't apply to
"extern inline" definitions, but that seems like a useful extension,
and it at least doesn't have the obvious flaw that a static
mutable variable in an externally-available definition does.

rdar://13535367

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178520 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
658a28479dd775f6ff2c07fa5699a7ea01e04127 02-Apr-2013 Anna Zaks <ganna@apple.com> [analyzer] Teach invalidateRegions that regions within LazyCompoundVal need to be invalidated

Refactor invalidateRegions to take SVals instead of Regions as input and teach RegionStore
about processing LazyCompoundVal as a top-level “escaping” value.

This addresses several false positives that get triggered by the NewDelete checker, but the
underlying issue is reproducible with other checkers as well (for example, MallocChecker).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178518 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
c63a460d78a7625ff38d2b3580f78030c44f07db 02-Apr-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] For now, don't inline [cd]tors of C++ containers.

This is a heuristic to make up for the fact that the analyzer doesn't
model C++ containers very well. One example is modeling that
'std::distance(I, E) == 0' implies 'I == E'. In the future, it would be
nice to model this explicitly, but for now it just results in a lot of
false positives.

The actual heuristic checks if the base type has a member named 'begin' or
'iterator'. If so, we treat the constructors and destructors of that type
as opaque, rather than inlining them.

This is intended to drastically reduce the number of false positives
reported with experimental destructor support turned on. We can tweak the
heuristic in the future, but we'd rather err on the side of false negatives
for now.

<rdar://problem/13497258>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178516 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
c9092bb5eb67d859122abb69a0ef61e9249500cd 02-Apr-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Cache whether a function is generally inlineable.

Certain properties of a function can determine ahead of time whether or not
the function is inlineable, such as its kind, its signature, or its
location. We can cache this value in the FunctionSummaries map to avoid
rechecking these static properties for every call.

Note that the analyzer may still decide not to inline a specific call to
a function because of the particular dynamic properties of the call along
the current path.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178515 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
992acb2269171b6ef68694d71a36f6b7408d8e82 02-Apr-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Use inline storage in the FunctionSummary DenseMap.

The summaries lasted for the lifetime of the map anyway; no reason to
include an extra allocation.

Also, use SmallBitVector instead of BitVector to track the visited basic
blocks -- most functions will have less than 64 basic blocks -- and
use bitfields for the other fields to reduce the size of the structure.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178514 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
a12643622ad3b85972dfdd80fe9006a3e8d8fb80 02-Apr-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Allow suppressing diagnostics reported within the 'std' namespace

This is controlled by the 'suppress-c++-stdlib' analyzer-config flag.
It is currently off by default.

This is more suppression than we'd like to do, since obviously there can
be user-caused issues within 'std', but it gives us the option to wield
a large hammer to suppress false positives the user likely can't work
around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178513 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
725fe0ede4c5355666a300f4fd7dae9454f35a37 01-Apr-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15633: Note that we are EnteringContext when parsing the nested name
specifier for an enumeration. Also fix a crash-on-invalid if a non-dependent
name specifier is used to declare an enum template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178502 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
5b8740f840238b3616691e5b300df57a758f32a6 01-Apr-2013 John McCall <rjmccall@apple.com> Only merge down a variable type if the previous declaration was
visible. There's a lot of potential badness in how we're modelling
these things, but getting this much correct is reasonably easy.

rdar://13535367

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178488 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
88be2fdec7a1375bc729a6499629532e7872f11a 01-Apr-2013 Edwin Vane <edwin.vane@intel.com> Adding parenType() and innerType() AST Matchers

Updated docs and tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178487 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
04863a86d15cb8de3361f8c77cedfd025819f174 31-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix typo. This method isn't used anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178453 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9f8bd33a1c125fdf825681c61f8170c4424f6616 31-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused default values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
fe6b2713656c2d1bf559be357f0e0bf2d09bebd6 30-Mar-2013 Hal Finkel <hfinkel@anl.gov> Add support for gcc-compatible -mfprnd -mno-fprnd PPC options

gcc provides -mfprnd and -mno-fprnd for controlling the fprnd target
feature; support these options as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178414 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
75f8bd01319000b3e1438847505302670514759d 30-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Add debug helper LocationContext::dumpStack().

Sample output:
#0 void construct(pointer __p, llvm::ImutAVLTree<llvm::ImutContainerInfo<clang::ento::BugType *> > *const &__val)
#1 void push_back(const value_type &__x)
#2 void destroy()
#3 void release()
#4 void ~ImmutableSet()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178400 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
84e8a960ad76b3c7ca550b4cc92a1b90ed16d5c1 29-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Address Jordan’s review of r178309 - do not register an extra visitor for nil receiver

We can check if the receiver is nil in the node that corresponds to the StmtPoint of the message send.
At that point, the receiver is guaranteed to be live. We will find at least one unreclaimed node due to
my previous commit (look for StmtPoint instead of PostStmt) and the fact that the nil receiver nodes are tagged.

+ a couple of extra tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178381 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
04593d0f9d84f6adf942bd66f1587e05c6a47c42 29-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> When looking for overridden ObjC methods, don't ignore 'hidden' ones.

When using modules we should not ignore overridden methods from
categories that are hidden because the module is not visible.
This will give more consistent results (when imports change) and it's more
correct since the methods are indeed overridden even if they are not "visible"
for lookup purposes.

rdar://13350796

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
52b2e7085f09bf7834b41f6e807aff5ac97bd3a5 29-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Sema: Warn on sizeof on binary ops on decayed arrays.

The array will decay into a pointer, creating an unexpected result.
sizeof(array + int) is an easy to make typo for sizeof(array) + int.

This was motivated by a NetBSD security bug, used sizeof(key - r) instead of
sizeof(key) - r, reducing entropy in a random number generator.
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/kern/subr_cprng.c.diff?r1=1.14&r2=1.15&only_with_tag=MAIN&f=h

Differential Revision: http://llvm-reviews.chandlerc.com/D571

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1bfc28c48c1b86a05d2e07b403107ef3da5a0f8e 29-Mar-2013 Michael Liao <michael.liao@intel.com> Add RDSEED intrinsic support defined in AVX2 extension



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
river/Options.td
f91210d6f2596645f164684fb1fd804727c9fc0e 29-Mar-2013 Michael Liao <michael.liao@intel.com> Add XTEST intrinsic defined in TSX extension



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
dff2be8ba441f5c61af8444479f7133b22dcfcf4 29-Mar-2013 Timur Iskhodzhanov <timurrrr@google.com> Revert r178273 as it broke the Linux bootstrap due to false positives

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178320 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f5c5c60e9806d13f0907cd99d7204ffab0e08f7 29-Mar-2013 Ted Kremenek <kremenek@apple.com> Add static analyzer support for conditionally executing static initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178318 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
02a88c3edf1aeb9580e0b6e444b30c52846a673c 29-Mar-2013 Ted Kremenek <kremenek@apple.com> Add configuration plumbing to enable static initializer branching in the CFG for the analyzer.

This setting still isn't enabled yet in the analyzer. This is
just prep work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178317 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/AnalyzerOptions.h
41988f331a74a72cf243a2a68ffb56418e9a174e 29-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Add support for escape of const pointers and use it to allow “newed” pointers to escape

Add a new callback that notifies checkers when a const pointer escapes. Currently, this only works
for const pointers passed as a top level parameter into a function. We need to differentiate the const
pointers escape from regular escape since the content pointed by const pointer will not change;
if it’s a file handle, a file cannot be closed; but delete is allowed on const pointers.

This should suppress several false positives reported by the NewDelete checker on llvm codebase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178310 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
aabb4c5eacca6d78ef778f33ec5cd4c755d71a39 29-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Apply the suppression rules to the nil receiver only if the value participates in the computation of the nil we warn about.

We should only suppress a bug report if the IDCed or null returned nil value is directly related to the value we are warning about. This was
not the case for nil receivers - we would suppress a bug report that had an IDCed nil receiver on the path regardless of how it’s
related to the warning.

1) Thread EnableNullFPSuppression parameter through the visitors to differentiate between tracking the value which
is directly responsible for the bug and other values that visitors are tracking (ex: general tracking of nil receivers).
2) in trackNullOrUndef specifically address the case when a value of the message send is nil due to the receiver being nil.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178309 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
59d8ccb45eeb33d255fd39933e75b45770a7a009 28-Mar-2013 Matt Beaumont-Gay <matthewbg@google.com> Warn about more than the first unused variable when -Werror is set.

To do this, thread DiagnosticErrorTrap's hasUnrecoverableErrorOccurred through
to Scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178294 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Scope.h
ec8deba768e7ba93ad9974763dc3902896924a3c 28-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Provide fixit suggestions when class object
is accessed via accessing 'isa' ivar to use
object_getClass/object_setClass apis.
// rdar://13503456


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178282 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
25ffbef84450f0c666957a2d00cdf928c61b44d7 28-Mar-2013 Sam Panzer <espanz@gmail.com> Implemented a warning when an input several bitwise operations are
likely be implicitly truncated:

* All forms of Bitwise-and, bitwise-or, and integer multiplication.
* The assignment form of integer addition, subtraction, and exclusive-or
* The RHS of the comma operator
* The LHS of left shifts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fbd4b5dc7febd1d8b4fa64ab00a29d72b44bec7b 28-Mar-2013 Ted Kremenek <kremenek@apple.com> Add CFG logic to create a conditional branch for modeling static initializers.

This is an optional variant of the CFG. This allows analyses to model whether
or not a static initializer has run, e.g.:

static Foo x = bar();

For basic dataflow analysis in Sema we will just assume that the initializer
always runs. For the static analyzer we can use this branch to accurately
track whether or not initializers are on.

This patch just adds the (opt-in) functionality to the CFG. The
static analyzer still needs to be modified to adopt this feature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178263 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
94cf910ac2d1719c1dfc163bbec3953f12efdf6f 28-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> These are all simple pointer wrappers. Pass them by value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178247 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
nalysis/CFG.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
829d187e2100d2cfd85acefc2e867d12336e393f 28-Mar-2013 Hal Finkel <hfinkel@anl.gov> Add support for gcc-compatible -mpopcntd -mno-popcntd PPC options

gcc provides -mpopcntd and -mno-popcntd for controlling the popcntd target
feature; support these options as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178235 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
286f3e638fd842619f853127907398859367a464 28-Mar-2013 Simon Atanasyan <simon@atanasyan.com> [Mips] Handle pseudo-target flags '-EL' and '-EB' and properly adjust
toolchain flags for MIPS targets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178232 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f4320ab08da5e4c927ef326c68d5081f5f2a2268 28-Mar-2013 Hal Finkel <hfinkel@anl.gov> Add support for gcc-compatible -mmfcrf -mno-mfcrf PPC options

gcc provides -mmfcrf and -mno-mfcrf for controlling what we call
the mfocrf target feature. Also, PPC is now making use of the
static function AddTargetFeature used by the Mips Driver code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178227 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
4cf4a5e96ab0babd13774b17112e7c1d83042ea7 28-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Support C11 _Atomic type qualifier. This is more-or-less just syntactic sugar for the _Atomic type specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
93d6b07cd79d74e343d81c0e8fb5365376a33097 28-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fold together the two implementations of 6.7.3p2 in SemaType. Fix two bugs, each of which was only present in one version:
* Give the right diagnostic for 'restrict' applied to a non-pointer, non-reference type.
* Don't reject 'restrict' applied indirectly to an Objective-C object pointer type (eg, through template instantiation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178200 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ab2d09b6287a5dc6fa94d78739444f46f9a78bfb 28-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Parser] Don't code-complete twice.

When we are consuming the current token just to enter a new token stream, we push
the current token in the back of the stream so that we get it again.

Unfortunately this had the effect where if the current token is a code-completion one,
we would code-complete once during consuming it and another time after the stream ended.

Fix this by making sure that, in this case, ConsumeAnyToken() will consume a code-completion
token without invoking code-completion.

rdar://12842503

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178199 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0353b70b6a1f51e0b59c4707d2d73870f075b322 27-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Fixes a typo in my last patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7e35274df4a598d5e3e4b8b5567bcb256fc2ab2f 27-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Issue more precise warning when user
is accessing 'isa' as an object pointer.
// rdar://13503456. FixIt to follow in another patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178179 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e81fdb1fdde48d3fa18df56c5797f6b0bc5dfc4a 27-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Cleanup clang's specializations of simplify_type.

Now that the basic implementation in llvm has been fixed, simplify the
specializations in clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/DeclCXX.h
ST/Type.h
nalysis/CFG.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
4a49df3be929d442535d6721ab8a2bbc8a7cd528 27-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Ensure that the node NilReceiverBRVisitor is looking for is not reclaimed

The visitor should look for the PreStmt node as the receiver is nil in the PreStmt and this is the node. Also, tag the nil
receiver nodes with a special tag for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178152 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
ea744ab5f39b8f45f802301841b77398166bce8f 27-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Make sure enabled diagnostic pragmas inside the module don't affect the translation unit that
imports the module.

Getting diagnostic sections from modules properly working is a fixme.

rdar://13516663

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178151 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
c544ba09695e300f31355af342258bd57619e737 27-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13509689> Introduce -module-file-info option that provides information about a particular module file.

This option can be useful for end users who want to know why they
ended up with a ton of different variants of the "std" module in their
module cache. This problem should go away over time, as we reduce the
need for module variants, but it will never go away entirely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
river/Types.def
rontend/FrontendActions.h
rontend/FrontendOptions.h
erialization/ASTReader.h
erialization/ModuleManager.h
9ef9875bbe19dc9f73c6c95b803d9a4945168690 27-Mar-2013 Joao Matos <ripzonetriton@gmail.com> Implement compiler intrinsics needed for compatibility with MSVC 2012 <type_traits>.

Patch by me and Ryan Molden.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178111 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
asic/TypeTraits.h
52151fd57eaf40603fa8f1cd34dcb4ad5f7701b3 27-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Before marking the module imported macros as ambiguous, check if this is a case where
the system macro uses a not identical definition compared to a macro from the clang headers.

For example (these come from different modules):
\#define LONG_MAX __LONG_MAX__ (clang's limits.h)
\#define LONG_MAX 0x7fffffffffffffffL (system's limits.h)
in which case don't mark them ambiguous to avoid the "ambiguous macro expansion" warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178109 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
erialization/ASTReader.h
7ca8e9160aca1616740e00954f742384a1622598 27-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove IdentifierInfo::setHadMacroDefinition()

It's not used anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
89b8f06ed79ddca7f8f8064525781eb3434ac166 27-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/modules] Remove HiddenName::MacroUndef

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178107 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
d560ce3b66325ff22cd3aca23c6de3143bd74d24 27-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Preprocessor] Remove PPMutationListener.

It's not used anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ex/PPMutationListener.h
ex/Preprocessor.h
erialization/ASTReader.h
erialization/ASTWriter.h
a03fc6e249e1662f879467f66c49a3c866850773 27-Mar-2013 Chad Rosier <mcrosier@apple.com> If we're unable to create the TargetMachine, then just quit producing the
backend output; there's no need to report a fatal error. This reverts r178042.
Part of rdar://13295753 and rdar://13401547


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178102 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
8b43d2b0ea2d72b53a10f38903b176e58cb93b9c 27-Mar-2013 Ted Kremenek <kremenek@apple.com> Split "incomplete implementation" warnings for ObjC into separate warnings.

Previously all unimplemented methods for a class were grouped under
a single warning, with all the unimplemented methods mentioned
as notes. Based on feedback from users, most users would like
a separate warning for each method, with a note pointing back to
the original method declaration.

Implements <rdar://problem/13350414>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178097 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a660eb1084294a903f6dcc00bf2fa4e3bc92cfc 26-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Change inlining policy to inline small functions when reanalyzing ObjC methods as top level.

This allows us to better reason about(inline) small wrapper functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178063 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
6c82fc65e45c668a36b06536e66563fe937a3096 26-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove useGlobalsForAutomaticVariables.

It is unused since pic support went away.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
852e3d7143cda1cdf6771c17559d38822cc296b3 26-Mar-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Give the MS inheritance attributes a base class

Required making a handful of changes to the table generator. Also adds
an unspecified inheritance attribute. This opens the path for us to
apply these attributes to C++ records implicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178054 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/AttrKinds.h
e2359e21320f39b167b31afb0c281419361faa51 26-Mar-2013 Chad Rosier <mcrosier@apple.com> Fix a crasher by reporting a fatal error if we're unable to create the target
machine and one is required.
Part of rdar://13295753


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
72339a0d160720c6301d629761e701e5fad56f5e 26-Mar-2013 Michael Liao <michael.liao@intel.com> Add PRFCHW intrinsic support

- Add head 'prfchwintrin.h' to define '_m_prefetchw' which is mapped to
LLVM/clang prefetch builtin
- Add option '-mprfchw' to enable PRFCHW feature and pre-define '__PRFCHW__'
macro



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178041 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c56fff7fd231aebf4b152f60f8f11ef91835c48a 26-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Preprocessor/Modules] Separate the macro directives kinds into their own MacroDirective's subclasses.

For each macro directive (define, undefine, visibility) have a separate object that gets chained
to the macro directive history. This has several benefits:

-No need to mutate a MacroDirective when there is a undefine/visibility directive. Stuff like
PPMutationListener become unnecessary.
-No need to keep extra source locations for the undef/visibility locations for the define directive object
(which is the majority of the directives)
-Much easier to hide/unhide a section in the macro directive history.
-Easier to track the effects of the directives across different submodules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178037 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
2db075b1d3b16f0100fe06408dfb4ab7d50700a4 26-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement special-case name lookup for inheriting constructors: member
using-declarations with names which look constructor-like are interpreted as
constructor names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177957 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
2275b79621e8d22c2a36f95cdaa04e8653a56721 26-Mar-2013 Matt Beaumont-Gay <matthewbg@google.com> Fix layering violation harder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OpenMPKinds.h
d44d2872b2ebe58237de4dbc350b82cab944ccc5 25-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13434605> Periodically prune the module cache so that it does not grow forever.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177918 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ex/HeaderSearchOptions.h
fd61d6fe0aa9853f0577ca88a63901c3773e8101 25-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Correct indentation. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177916 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
14df23bd114919abc374b2bcd2b2e16b79936584 25-Mar-2013 Bill Wendling <isanbard@gmail.com> Emit an error message instead of crashing when dereferencing an incomplete pointer type.

If the ASM statement is dereferencing an incomplete pointer type, issue an error
instead of crashing.
<rdar://problem/12700799>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177915 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
29511875348c49c9c5a14bb086cd51e17feb01c9 24-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Reject -no-integrated-as on windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177840 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ToolChain.h
1db7040604154f71c54cf1329ae384fbef196668 24-Mar-2013 Guy Benyei <guy.benyei@intel.com> Generate metadata to implement the -cl-kernel-arg-info option.
OpenCL 1.2 spec. 5.7.3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177839 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
4708b3dde86b06f40927ae9cf30a2de83949a8f2 23-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Teach constraint managers about unsigned comparisons.

In C, comparisons between signed and unsigned numbers are always done in
unsigned-space. Thus, we should know that "i >= 0U" is always true, even
if 'i' is signed. Similarly, "u >= 0" is also always true, even though '0'
is signed.

Part of <rdar://problem/13239003> (false positives related to std::vector)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177806 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/APSIntType.h
8569281fb7ce9b5ca164a0528b876acbb45eb989 23-Mar-2013 Jordan Rose <jordan_rose@apple.com> Add reverseComparisonOp and negateComparisonOp to BinaryOperator.

...and adopt them in the analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
76e6e1377ff837047fb8e03a199c7f286c53897b 23-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> If a .syms file is available alongside a sanitizer runtime, pass it to the
linker via --dynamic-list instead of using --export-dynamic. This reduces the
size of the dynamic symbol table, and thus of the binary (in some cases by up
to ~30%).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177783 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
0f3a34fb7fea37ebfbcba8b400ccb697b9559b49 22-Mar-2013 Jordan Rose <jordan_rose@apple.com> Revert "[analyzer] Break cycles (optionally) when trimming an ExplodedGraph."

The algorithm used here was ridiculously slow when a potential back-edge
pointed to a node that already had a lot of successors. The previous commit
makes this feature unnecessary anyway.

This reverts r177468 / f4cf6b10f863b9bc716a09b2b2a8c497dcc6aa9b.

Conflicts:

lib/StaticAnalyzer/Core/BugReporter.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177765 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
1aa4f5019164592643bf46b7d61f15b6ef509c8e 22-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Fix ExprEngine::ViewGraph to handle C++ initializers.

Debugging aid only, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177762 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
9317ab94bb68122ba6fc728eb73c1308fb913cd1 22-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/Modules] De/Serialize MacroInfos separately than MacroDirectives.

-Serialize the macro directives history into its own section
-Get rid of the macro updates section
-When de/serializing an identifier from a module, associate only one macro per
submodule that defined+exported it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177761 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
baa74bd3968028d8e5b10ee9b50d0dceb41e85a9 22-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] When a MacroInfo object is deserialized, allocate and store its submodule ID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177760 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
fa69fc19121da3fc5673ccc00d4e8afa5b540a4f 22-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13479539> Simplify ModuleManager/GlobalModuleIndex interaction to eliminate a pile of extraneous stats().

The refactoring in r177367 introduced a serious performance bug where
the "lazy" resolution of module file names in the global module index
to actual module file entries in the module manager would perform
repeated negative stats(). The new interaction requires the module
manager to inform the global module index when a module file has been
loaded, eliminating the extraneous stat()s and a bunch of bookkeeping
on both sides.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177750 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/GlobalModuleIndex.h
erialization/ModuleManager.h
c02ddb23c0a27ff95859b3eacab134613b0b1d1d 22-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> documentation parsing. Provide code completion comment
for self.GetterName where GetterName is the getter method
for a property with name different from the property name
(declared via a property getter attribute) // rdar://12791315


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177744 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
8ff563c2178866779903cb1b47c2962c39309995 22-Mar-2013 Daniel Jasper <djasper@google.com> Fix DeclRefExpr::getFoundDecl() for usages by reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177721 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c640058aa7f224a71ce3b1d2601d84e1b57f82d3 22-Mar-2013 Alexey Bataev <a.bataev@hotmail.com> OpenMP threadprivate directive parsing and semantic analysis

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclOpenMP.h
ST/DeclVisitor.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/OpenMPKinds.def
asic/OpenMPKinds.h
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
437da054125a1e5cdd8c9765e09e42da922482f3 22-Mar-2013 John McCall <rjmccall@apple.com> Warn about attempts to reinterpret_cast between two types that are
hierarchy-related at a possibly nonzero offset.

Patch by Alexander Zinenko!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177698 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b760f11fae94e3003b9241ac50c02617465f2fa2 22-Mar-2013 John McCall <rjmccall@apple.com> Fix a crash-on-valid where a block capture copy expression was
picking up cleanups from earlier in the statement. Also fix a
crash-on-invalid where a reference to an invalid decl from an
enclosing scope was causing an expression to fail to build, but
only *after* a cleanup was registered from that statement,
causing an assertion downstream.

The crash-on-valid is rdar://13459289.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177692 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5bdaef55d486f20346fe16f3d41324694d3ff0d5 21-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Tighten the rules when warning
is issused for on overriding 'readwrite'
property which is not auto-synthesized.
Buttom line is that if hueristics determine
that there will be a user implemented setter,
no warning will be issued. // rdar://13388503


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177662 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
222b4eacd60bd0a38e3855d885ea13bede22129f 21-Mar-2013 Bob Wilson <bob.wilson@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cdf2808c4e735a717599751dcd2b434f239e1c68 21-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13037793> Allow the names of modules to differ from the name of their subdirectory in the include path.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177621 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderSearch.h
81ba9d11609132d1d804f2b78d321daf97c081f5 20-Mar-2013 James Dennett <jdennett@google.com> Documentation cleanup for MacroInfo.
* Clarify what MacroInfo::isBuiltinMacro means, as it really means something
more like "isMagicalMacro" or "requiresProcessingBeforeExpansion" -- the
macros defined in "<built-in>" are not considered built-in by this function;
* Escape __LINE__ as \__LINE__ in Doxygen comments so that the underscores
don't get replaced by *bold* output;
* Turn comments in MacroInfo.cpp into non-Doxygen comments, so that they
don't result in duplicated/badly formatted Doxygen output;
* Clean up a bunch of \brief formatting, and add a \file comment for
MacroInfo.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177581 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
906d66acc5cf2679453e10a4f0a67feedd765b21 20-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/12368093> Extend module maps with a 'conflict' declaration, and warn when a newly-imported module conflicts with an already-imported module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSerializationKinds.td
asic/Module.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
ex/ModuleMap.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
f8ddc098981d4d85cad4e72fc6dfcfe83b842b66 20-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Invalidate regions indirectly accessible through const pointers.

In this case, the value of 'x' may be changed after the call to indirectAccess:

struct Wrapper {
int *ptr;
};

void indirectAccess(const Wrapper &w);

void test() {
int x = 42;
Wrapper w = { x };

clang_analyzer_eval(x == 42); // TRUE
indirectAccess(w);
clang_analyzer_eval(x == 42); // UNKNOWN
}

This is important for modelling return-by-value objects in C++, to show
that the contents of the struct are escaping in the return copy-constructor.

<rdar://problem/13239826>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177570 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
4cc0cf1a54541b26b258c45cd7a3c80c9401eaad 20-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi] more gracefull recovery when
'}' is missing for the ivar declarations.
// rdar://6854840


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177549 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f48b93cb2054e83e43ca4391b8ec70be89fa2e30 20-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the Tools DensMap from the toolchain.

Each toolchain has a set of tools, but they are all of known types. It can
have a linker, an assembler, a "clang" (compile, analyze, ...) a non-clang
compiler, etc.

Instead of keeping a map, just have member variable for each type of tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177479 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
83c546afef39d6b7be69f3f399804ebf037c4022 20-Mar-2013 Nick Lewycky <nicholas@mxc.ca> The flag "-coverage-function-names-in-data" is actually backwards -- we do
emit function names in .gcda files by default, and the flag turns that off!
Rename the flag to make it match what it actually does. This keeps the default
format compatible with gcc 4.2.

Also add a test for this flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177475 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.def
f2b5e0707229e1149828ebc8d01d9308a997d6df 20-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Make clang emit linkage names in debug info for subprograms when coverage info
is enabled. Also add a new -test-coverage cc1 flag which makes testing coverage
possible and add our first clang-side coverage test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177470 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.def
f4cf6b10f863b9bc716a09b2b2a8c497dcc6aa9b 20-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Break cycles (optionally) when trimming an ExplodedGraph.

Having a trimmed graph with no cycles (a DAG) is much more convenient for
trying to find shortest paths, which is exactly what BugReporter needs to do.

Part of the performance work for <rdar://problem/13433687>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177468 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
63a726870b486e0470c3a4b11cf62bab8be00b73 20-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/10796651> Introduce configuration macros into module maps.

Configuration macros are macros that are intended to alter how a
module works, such that we need to build different module variants
for different values of these macros. A module can declare its
configuration macros, in which case we will complain if the definition
of a configation macro on the command line (or lack thereof) differs
from the current preprocessor state at the point where the module is
imported. This should eliminate some surprises when enabling modules,
because "#define CONFIG_MACRO ..." followed by "#include
<module/header.h>" would silently ignore the CONFIG_MACRO setting. At
least it will no longer be silent about it.

Configuration macros are eventually intended to help reduce the number
of module variants that need to be built. When the list of
configuration macros for a module is exhaustive, we only need to
consider the settings for those macros when building/finding the
module, which can help isolate modules for various project-specific -D
flags that should never affect how modules are build (but currently do).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177466 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/Module.h
erialization/ASTBitCodes.h
5bba867123a788085b677fb4b12f21917dec5c51 19-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C [qoi]: Provide improved parse diagnostics when
closing rbrace is missing in an ObjC class declaration.
Can do beter than this, but it involves addition of
overhead which will be present in correct code.
// rdar://6854840


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
7cca821e1acf0f1b4fe892c3111bfb2086832e4e 19-Mar-2013 John McCall <rjmccall@apple.com> Add a clarifying note when a return statement is rejected because
we expect a related result type.

rdar://12493140

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177378 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a5a3e01c504c00b1860286540090695ec0167531 19-Mar-2013 Douglas Gregor <dgregor@apple.com> Remove stray semicolon

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177370 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/GlobalModuleIndex.h
c0a55d12caff98504eace18b553bb111160a8131 19-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Finish refactoring the tool selection logic.

The general pattern now is that Foobar::constructTool only creates tools
defined in the tools::foobar namespace and then delegates to the parent.

The remaining duplicated code is now in the tools themselves.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177368 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
15d68882f5fa4afae8333e75b2bfd5e2834c8aaf 19-Mar-2013 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2013_03_18

Conflicts:
lib/Sema/SemaDeclAttr.cpp

Change-Id: I05e70941163ec5a461eba43ef78f6738cd5a1e69
677e15ffee2ecc9c1c8f46fd77cab4b5afb59640 19-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13363214> Eliminate race condition between module rebuild and the global module index.

The global module index was querying the file manager for each of the
module files it knows about at load time, to prune out any out-of-date
information. The file manager would then cache the results of the
stat() falls used to find that module file.

Later, the same translation unit could end up trying to import one of the
module files that had previously been ignored by the module cache, but
after some other Clang instance rebuilt the module file to bring it
up-to-date. The stale stat() results in the file manager would
trigger a second rebuild of the already-up-to-date module, causing
failures down the line.

The global module index now lazily resolves its module file references
to actual AST reader module files only after the module file has been
loaded, eliminating the stat-caching race. Moreover, the AST reader
can communicate to its caller that a module file is missing (rather
than simply being out-of-date), allowing us to simplify the
module-loading logic and allowing the compiler to recover if a
dependent module file ends up getting deleted.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177367 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/GlobalModuleIndex.h
erialization/ModuleManager.h
2aa5cf412c9a56aba1e3a7b04ca18499a2b83b20 19-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> documentation comment parsing. Added couple of
top-level HeaderDoc tags @functiongroup and
@methodgroup to doc. tags recognized.
// rdar://12379114


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177358 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
asic/DiagnosticCommentKinds.td
7132be1ef46248746990590b91e693dfc3cce251 19-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Diagnose uses of 'alignof' on functions in -pedantic mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177354 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
85a92cfa52ddf4c45fe2baca4d7fea0bdc5ed103 19-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Replace uses of assume() with isNull() in BR visitors.

Also, replace a std::string with a SmallString.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177352 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
c7f811638f8603fa373d2be724e8b1c8ba51ad75 18-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add missing diagnostic for a nested-name-specifier on a free-standing type definition. Bump some related diagnostics from warning to extension in C++, since they're errors there. Add some missing checks for function specifiers on non-function declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177335 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
07b0fdcee8d64222b274779d02851cc53d18e0db 18-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Bring inheriting constructor implementation up-to-date with current defect
reports, and implement implicit definition of inheriting constructors.
Remaining missing features: inheriting constructor templates, implicit
exception specifications for inheriting constructors, inheriting constructors
from dependent bases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177320 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
5b222059399ec9cccba7a393dc470adfb8a3db0f 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Centralize the recording of which tools have been constructed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177319 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
26adbe42d1fecd135dea6739ec2801f02473218f 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177303 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
af370e6e051e505016637e23418354db625dc796 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Pass an ArgList to every toolchain constructor. Remove the useIntegratedAs
argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177301 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
7ce8d82c4182b8b98d4b5c44f5258b9e9b2c1350 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Inline ShouldUseIntegratedAssembler and move the documentation to
useIntegratedAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177300 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
5470cd27e47aea163daaa76dde36010753400663 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Refactor a bit of duplicated code to useIntegratedAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177299 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
e5dce308870cd7d6b5156640af3724433bc1c575 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177293 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
d5320184367b681087e9ff74fc57ed2c5954c8ec 18-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177287 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
74c8b794be93e73ffca42b1dcf70f26c92d9ccfd 18-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> ObjCDictionaryElements are pod-like.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177282 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
a8d937e4bdd39cdf503f77454e9dc4c9c730a9f7 16-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Model trivial copy/move assignment operators with a bind as well.

r175234 allowed the analyzer to model trivial copy/move constructors as
an aggregate bind. This commit extends that to trivial assignment
operators as well. Like the last commit, one of the motivating factors here
is not warning when the right-hand object is partially-initialized, which
can have legitimate uses.

<rdar://problem/13405162>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177220 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
6aa240c03dd68ab413106d6af7a18af1c9b4e872 16-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove -Wspellcheck and replace it with a diagnostic option.

Thanks to Richard S. for pointing out that the warning would show up
with -Weverything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177218 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticOptions.def
asic/DiagnosticSemaKinds.td
river/CC1Options.td
c9963132736782d0c9178c744b3e2307cfb98a08 16-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Eliminate InterExplodedGraphMap class and NodeBackMap typedef.

...in favor of this typedef:

typedef llvm::DenseMap<const ExplodedNode *, const ExplodedNode *>
InterExplodedGraphMap;

Use this everywhere the previous class and typedef were used.

Took the opportunity to ArrayRef-ize ExplodedGraph::trim while I'm at it.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177215 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
4a18c3b25a2d7eb7f770ce91ee5e14433b2a1cb6 15-Mar-2013 Douglas Gregor <dgregor@apple.com> <rdar://problem/13426257> Introduce SDKSettings.plist as an input file dependency for PCH/modules.

When we're building a precompiled header or module against an SDK on
Darwin, there will be a file SDKSettings.plist in the sysroot. Since
stat()'ing every system header on which a module or PCH file depends
is performance suicide, we instead stat() just SDKSettings.plist. This
hack works well on Darwin; it's unclear how we want to handle this on
other platforms. If there is a canonical file, we should use it; if
not, we either have to take the performance hit of stat()'ing system
headers repeatedly or roll the dice by not checking anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177194 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
e462c60ac3365d3302b7d0a566c5cb7dbe0e5ae3 15-Mar-2013 Eric Christopher <echristo@gmail.com> Silence anonymous type in anonymous union warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/DeclarationName.h
ST/DependentDiagnostic.h
ST/Expr.h
ST/TemplateBase.h
ST/TemplateName.h
ema/DeclSpec.h
ema/DelayedDiagnostic.h
ema/Initialization.h
57f8da506a0db208a936e26a8cb77267f638b26b 14-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't try to typo-correct 'super' in an objc method.

This created 2 issues:

1) Performance issue, since typo-correction with PCH/modules is rather expensive.
2) Correctness issue, since if it managed to "correct" 'super' then bogus compiler errors would
be emitted, like this:

3.m:8:3: error: unknown type name 'super'; did you mean 'super1'?
super.x = 0;
^~~~~
super1
t3.m:5:13: note: 'super1' declared here
typedef int super1;
^
t3.m:8:8: error: expected identifier or '('
super.x = 0;
^

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177126 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a4bb4f6ca8dd31ad96cb9526a5abe1273f18ff40 14-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Change the way in which IDC Visitor decides to kick in and make sure it attaches in the given edge case

In the test case below, the value V is not constrained to 0 in ErrorNode but it is in node N.
So we used to fail to register the Suppression visitor.

We also need to change the way we determine that the Visitor should kick in because the node N belongs to
the ExplodedGraph and might not be on the BugReporter path that the visitor sees. Instead of trying to match the node,
turn on the visitor when we see the last node in which the symbol is ‘0’.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177121 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
8f0d1f053f3acadec28a2b1c0b6a714ad5a12aab 14-Mar-2013 Chandler Carruth <chandlerc@gmail.com> Fix an unused variable warning from Clang by sinking a dyn_cast into an
isa and a cast inside the assert. The efficiency concern isn't really
important here. The code should likely be cleaned up a bit more,
especially getting a message into the assert.

Please review Rafael.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177053 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
96cead513761d287c88a4f05c712aee3b26b9d6f 14-Mar-2013 Joey Gouly <joey.gouly@arm.com> Add support for the 'endian' attribute for OpenCL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177035 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
2d1b09641ecf2e754bf3fd244dc45dbf3e460c1b 14-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Avoid computing the linkage too early. Don't invalidate it.

Before this patch we would compute the linkage lazily and cache it. When the
AST was modified in ways that could change the value, we would invalidate the
cache.

That was fairly brittle, since any code could ask for the a linkage before
the correct value was available.

We should change the API to one where the linkage is computed explicitly and
trying to get it when it is not available asserts.

This patch is a first step in that direction. We still compute the linkage
lazily, but instead of invalidating a cache, we assert that the AST
modifications didn't change the result.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
ema/Sema.h
55ea75bf61a5d76f6453513d937944ce68181c6a 13-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Modules] Don't eagerly load and associate all the module header files.

In a module-enabled Cocoa PCH file, we spend a lot of time stat'ing the headers
in order to associate the FileEntries with their modules and support implicit
module import.

Use a more lazy scheme by enhancing HeaderInfoTable to store extra info about
the module that a header belongs to, and associate it with its module only when
there is a request for loading the header info for a particular file.

Part of rdar://13391765

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176976 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ex/ModuleMap.h
erialization/ASTWriter.h
c1d22393628a145e54396c0ac66e9625d13a7658 13-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Modules] Resolve top-headers of modules lazily.

This allows resolving top-header filenames of modules to FileEntries when
we need them, not eagerly.

Note that that this breaks ABI for libclang functions
clang_Module_getTopLevelHeader / clang_Module_getNumTopLevelHeaders
but this is fine because they are experimental and not widely used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176975 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
327a6d9cbeb8cad648084df1ee43f2e9d7dc8296 12-Mar-2013 Bob Wilson <bob.wilson@apple.com> Revert "Revert r166370 and r166540 now that Xcode 4.6 has been available for a while."

This reverts commit 176887. Nico asked for more time to move to Xcode 4.6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176892 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
6114a3c9baf29b3db1e0853a829ae1278285aef4 12-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Objective-C: Issue warning in couple of obscure cases
when property autosynthesis does not synthesize a property.
When property is declared 'readonly' in a super class and
is redeclared 'readwrite' in a subclass. When a property
autosynthesis causes it to share 'ivar' with another property.
// rdar://13388503


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176889 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a29e0fafe7649131fb2d8eba3d719cdec92b236a 12-Mar-2013 Bob Wilson <bob.wilson@apple.com> Revert r166370 and r166540 now that Xcode 4.6 has been available for a while.

Those changes were added as a temporary workaround for Xcode 4.5 passing the
-Wno-arc-abi option. Xcode 4.6 does not pass that option so this should no
longer be necessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c06fcdfacc33ad4f8920bbdf43a0e45bc5e8ac4b 12-Mar-2013 Ted Kremenek <kremenek@apple.com> Revert "Disallow using -fmodules with -no-integrated-as."

Per comment from Benjamin Kramer, this isn't portable (yet). I'll come up
with a better fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176876 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
ebf0f43f07e2fdc0e35554afb38f41c8be314b02 11-Mar-2013 Ted Kremenek <kremenek@apple.com> Disallow using -fmodules with -no-integrated-as.

Modules enables features such as auto-linking, and we simply do not want to
support a matrix of subtly enabled/disabled features depending on whether or
not a user is using the integrated assembler.

It isn't clear if this is the best place to do this check. For one thing,
these kind of errors are not caught by the serialized diagnostics.

Fixes <rdar://problem/13289240>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
d4bf760d057f1e8724ab7be340a2d42adae0900a 11-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc99-compat warning for C11 unicode string and character literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
0b91cc47a5642de2e1f567fe0f29420acdcdebbe 10-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> Handle _Pragma on a u8, u, or U string literal per the C11 specification. Also
handle raw string literals here. C++11 doesn't yet specify how they will
behave, but discussion on core suggests that we should just strip off
everything but the r-char-sequence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176779 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.h
arse/Parser.h
7cb583d13f996ffde671ea617c97303cebadd649 09-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove unused diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176774 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0415998dd77986630efe8f1aed633519cc41e1f3 09-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Make Suppress IDC checker aware that it might not start from the same node it was registered at

The visitor used to assume that the value it’s tracking is null in the first node it examines. This is not true.
If we are registering the Suppress Inlined Defensive checks visitor while traversing in another visitor
(such as FindlastStoreVisitor). When we restart with the IDC visitor, the invariance of the visitor does
not hold since the symbol we are tracking no longer exists at that point.

I had to pass the ErrorNode when creating the IDC visitor, because, in some cases, node N is
neither the error node nor will be visible along the path (we had not finalized the path at that point
and are dealing with ExplodedGraph.)

We should revisit the other visitors which might not be aware that they might get nodes, which are
later in path than the trigger point.

This suppresses a number of inline defensive checks in JavaScriptCore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176756 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
83972f128e9218c051692bf96361327a701aeb79 09-Mar-2013 John McCall <rjmccall@apple.com> Add TagDecl::hasNameForLinkage(), which is true if the tag
is non-anonymous or is defined in a typedef of itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176742 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b421b56d5a83c5bcae576b714ebd9df7b745368d 09-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Documentation parsing. Some refactoring and code
improvements per Dmtiri's comments. // rdar://12379114


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/CommentSema.h
0918989f0eed08870e50418df97d1486d977d773 08-Mar-2013 Jordan Rose <jordan_rose@apple.com> Sema: Preserve attributes on parameters in instantiated function templates.

This was causing correctness issues for ARC and the static analyzer when a
function template has "consumed" Objective-C object parameters (i.e.
parameters that will be released by the function before returning).

The fix is threefold:
(1) Actually copy over the attributes from old ParmVarDecls to new ones.
(2) Have Sema::BuildFunctionType only work for building FunctionProtoTypes,
which it was doing anyway. This allows us to pass an ExtProtoInfo
instead of a plain ExtInfo and several flags.
(3) Drop param attributes as part of StripImplicitInstantiation, which is
used when an implicit instantiation is followed by an explicit one.

<rdar://problem/12685622>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176728 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
bea522ff43a3f11c7a2bc7949119dbb9fce19e39 08-Mar-2013 Jordan Rose <jordan_rose@apple.com> ArrayRef-ize ASTContext::getFunctionType and Sema::BuildFunctionType.

No (intended) functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ema/Sema.h
f8f373f47210b88bdf71acb5579b129b665235ab 08-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When complaining that a header from the PCH was modified, also mention
the filename of the PCH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
37453b9580e293eef3bd60bd36047a93ac4515b1 08-Mar-2013 Joey Gouly <joey.gouly@arm.com> Add support for the OpenCL attribute 'vec_type_hint'.

Patch by Murat Bolat!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
480760f8c7db7a1b77a73f4833bb99f657802775 08-Mar-2013 Chad Rosier <mcrosier@apple.com> [driver] If we're just linking, don't report --param X as unused option.
PR15327
rdar://13372628


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176670 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
28c1cd2138f700742235e1e720c1f7e6dc75a11a 08-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> HeaderDoc: Support more of HeaderDoc documentation
commands; top level tags such as @interface and
their 2nd level tags such as @coclass, etc.
// rdar://12379114


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
372fe788f8ea815071d0ddffe46dd3abc397106e 07-Mar-2013 John McCall <rjmccall@apple.com> Add CharUnits::alignmentAtOffset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176655 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
f4b48042724d2253d0426cadcb93e24eeb47e264 07-Mar-2013 Edwin Vane <edwin.vane@intel.com> Adding lvalue and rvalue reference type matchers

Updated docs and tests.

Reviewers: klimek, gribozavr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176630 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
b9aa6739700d10e99da64cfa9b58ba7ca1c248e2 07-Mar-2013 Matthew Curtis <mcurtis@codeaurora.org> Minor refactor of how we get compilation phases.

There is now a single function to get the list of phases for a given
output Type.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176628 91177308-0d34-0410-b5e6-96231b3b80d8
river/Phases.h
river/Types.h
0f815f1f91e5cf0726fd8296445038fec3bed80b 07-Mar-2013 Nick Lewycky <nicholas@mxc.ca> Add flags for additional control over coverage generation. Pick the version
string to be emitted, and two properties about the files themselves.

Use $PWD to absolut-ify the path to the coverage file. Yes, this is what GCC
does. Reverts my own r175706.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176617 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.def
rontend/CodeGenOptions.h
cf048a80ed610262fd634d421ea65ff936901b36 07-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Don't duplicate function names. Thanks to Jordan Rose for pointing it out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
531db82c6ecfb4772c6870731c06ad8718f1e0ce 07-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a hasExternalLinkage helper. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176607 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
377830097aec41c0cd80ef5972b4e850b44afefd 07-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a hasExternalStorageAsWritten helper. No functionality change.

It is possible that some of the current uses of
"getStorageClassAsWritten() == SC_Extern" should use this but I don't know
enough about SC_PrivateExtern to change and test them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176606 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
58bd77f6132e56dbf7659b1c436ba20b973e6ef9 07-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
962fbc46664f2486d6805549130fa6b310de6d60 07-Mar-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Clean up a few doc comments for ProgramState and CallEvent.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176600 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
4919de6a53a007487c6d6b173921b5e7152a2004 06-Mar-2013 Adrian Prantl <aprantl@apple.com> Ensure that DIType is regenerated after we visit an implementation
that adds ivars to an interface.

Fixes rdar://13175234

This is an update to r176116 that performs a smart caching of interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
713e07591995d761f65c7132289dce003a29870f 06-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] IDC: Add config option; perform the idc check on first “null node” rather than last “non-null”.

The second modification does not lead to any visible result, but, theoretically, is what we should
have been looking at to begin with since we are checking if the node was assumed to be null in
an inlined function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176576 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
36592b1fa381a978b1b6d4b97c66fb274915fe50 06-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] We don't need to instantiate HeaderFileInfoTrait in ASTReader more than once.

We can just re-use the one from HeaderFileInfoLookupTable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176565 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/Module.h
26facface1884eeadf305277479fe020e9b5983c 06-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Spell Objective-C correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176563 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
88f070f99f7f352e294eed212fdf7a23c0815fe2 06-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> say objective-C in the warning and streamline
several diagnostics into one. // rdar://13094352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
6a19a97e57c8678adb0505a07c97d7ccadc8fe4e 06-Mar-2013 Edwin Vane <edwin.vane@intel.com> New ASTMatchers and enhancement to hasOverloadedOperatorName

Added two new narrowing matchers:
* hasMethod: aplies a matcher to a CXXRecordDecl's methods until a match is made
or there are no more methods.
* hasCanonicalType: applies a matcher to a QualType's canonicalType.

Enhanced hasOverloadedOperatorName to work on CXXMethodDecl as well as
CXXOperatorCallExpr.

Updated tests and docs.

Reviewers: klimek, gribozavr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176556 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
450b86c0c9ff8307f5145ced621914600196c500 06-Mar-2013 Stephen Hines <srhines@google.com> Merge commit 'b58f810669d9c17bcc025b7560de01d162856f34' into merge_20130226

Conflicts:
include/clang/Basic/LangOptions.def
lib/Sema/SemaDeclAttr.cpp

Change-Id: Ia10b4d3b2c949a72d328cb58b113f90237d4a5d5
360355db57d15ce3c90051b05cca993a4c5ee8db 06-Mar-2013 Weiming Zhao <weimingz@codeaurora.org> revert r176531 due to clan-native-arm fails



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176544 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
3cdbbdc53241907939486ba4a9b0c9b5655419c3 06-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15390: If a function returns a pointer to a function, that function type
can't have default arguments even though it's a parameter-declaration-clause in
a function declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176542 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
eed55e6061768c0faff62dda22c6edad9d286501 06-Mar-2013 Richard Smith <richard-llvm@metafoo.co.uk> After issuing a diagnostic for undefining or redefining a builtin macro,
continue parsing the directive rather than silently discarding it.

Allowing undef or redef of __TIME__ and __DATE__ is important to folks
who want stable, reproducible builds.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
46a2290c030597e26022fe2b535c8e4b0d30a765 06-Mar-2013 Weiming Zhao <weimingz@codeaurora.org> PR 11326: Lack diagnosic message when ABI conflicts on ARM

When both Triple and -mabi are used, it may result into conflicting ABI value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
eb8f69f094e95d0132e4a6817a2111ad188ab087 06-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> fix a missing check in my last patch.
// rdar://13094352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
99a7057098c56211e641705e1ff38d4b7c8b309d 05-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> doc. parsing. Improve on diagnostics on my last patch.
// rdar://13094352.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
44f65a587ee39c20e715c9df411c864d328c71b5 05-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When logging a CXTranslationUnit that came from an AST file, print out the filename.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176511 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
bca9788dbaf5fcf241efdc82ddcda712cb22214e 05-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> doc parsing. Add @method and @callback for
checkings and few other refactoring/cleanup.
// rdar://13094352.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
4b02dff7aebb98d2d60b2ff4d3fc86109213128c 05-Mar-2013 David Blaikie <dblaikie@gmail.com> Add quotation marks to template names in diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
41f3f3a4792f46787632fdb94f952f6b3ce3f4ae 05-Mar-2013 Jordan Rose <jordan_rose@apple.com> Silence a number of static analyzer warnings with assertions and such.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AttrIterator.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
2a268f2629b49958427e8eb02f2c3d565be71acc 05-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> doc parsing. We want to issue a strong warning when
an @function comment is not followed by a function decl.
// rdar://13094352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
808383d2d6d58a7c7db85f8c7618fb74d821309f 05-Mar-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: refactor handling of command markers in AST

* Use the term 'command marker', because the semantics of 'backslash' and 'at'
commands are the same. (Talking about 'at commands' makes them look like a
special entity.)

* Sink the flag down into bitfields, reducing the size of AST nodes.

* Change the flag into an enum for clarity. Boolean function parameters are
not very clear.

* Add unittests for new tok::at_command tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentLexer.h
ST/CommentSema.h
1c1508b37bc2a9419b2e22beef9e788eb74203f4 04-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] In HeaderFileInfoTrait::EqualKey(), use FileManager::getFile() to compare two filenames, instead of llvm::sys::fs::equivalent().

llvm::sys::fs::equivalent() does 2 stat calls every time it's called. Use FileManager::getFile() to take advantage
of the stat caching that FileManager is providing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176450 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
c9320095d0126a104552ae718af461ad53316a34 04-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> [comment parsing] source fidelity for tparam command too.
// rdar://13066276


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
66f6c24146efccc9ad7e37dbd2bd0ea1844e6422 04-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> comment parsing. Missed a case of referring
to original command in diagnostic. // rdar://13066276


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176444 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
aec89ac22e1876bb1cfff9062c882a622bc84510 04-Mar-2013 Edwin Vane <edwin.vane@intel.com> hasQualifer() matcher should return false if there's no qualifier

Instead of passing NULL on to sub-matcher, just return false. Updated tests and
regenerated docs.

Author: Tareq A Siraj <tareq.a.siraj@intel.com>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176441 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
48f904271effd381ec3c1ae33b97d1ec7d95860a 04-Mar-2013 John McCall <rjmccall@apple.com> Centralize and refine the __unknown_anytype argument rules
and be sure to apply them whether or not the debugger gave
us a method declaration.

rdar://12565338

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176432 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5b9f5cc7c4310aec110f315df6fc6d6366b24b08 03-Mar-2013 David Chisnall <csdavec@swan.ac.uk> Default to enabling default-synthesized ivars on all platforms

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176419 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
65611bf036dab4e2ba90b1316b1b21b276dde185 02-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Process #pragma weak only after we know the linkage of the function or variable
we are looking at.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176414 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
cc5dbdae70c6eb2423921f52a35ba4686d2969cf 02-Mar-2013 Anna Zaks <ganna@apple.com> [analyzer] Simple inline defensive checks suppression

Inlining brought a few "null pointer use" false positives, which occur because
the callee defensively checks if a pointer is NULL, whereas the caller knows
that the pointer cannot be NULL in the context of the given call.

This is a first attempt to silence these warnings by tracking the symbolic value
along the execution path in the BugReporter. The new visitor finds the node
in which the symbol was first constrained to NULL. If the node belongs to
a function on the active stack, the warning is reported, otherwise, it is
suppressed.

There are several areas for follow up work, for example:
- How do we differentiate the cases where the first check is followed by
another one, which does happen on the active stack?

Also, this only silences a fraction of null pointer use warnings. For example, it
does not do anything for the cases where NULL was assigned inside a callee.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176402 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
8536fa14ee1048e5e2d62cb3dc11fc640c7dc00d 02-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Some refactoring in my patch on document
command source fidelity. // rdar://13066276



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
c98e9130bcddd0258c110d30749edd2284087e3d 01-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> comment parsing. Keep the original command format
in AST for source fidelity and use it in diagnostics
to refer to the original format. // rdar://13066276


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176387 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentLexer.h
asic/DiagnosticCommentKinds.td
fc09336a5965040736f9bc63a70416003972364e 01-Mar-2013 Stefanus Du Toit <stefanus.dutoit@rapidmind.com> Fix typos: [Dd]iagnosic -> [Dd]iagnostic

These all appear in comments or (ironically) diagnostics output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176383 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
b2381b1c91ac5dc2407e98f36e3a6ba93d771791 01-Mar-2013 John McCall <rjmccall@apple.com> Attempt to not place ownership qualifiers on the result type
of block declarators. Document the rule we use.

Also document the rule that Doug implemented a few weeks ago
which drops ownership qualifiers on function result types.

rdar://10127067

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176336 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
8504b7b8102a52b2a16231d459fb3cfab4784c38 01-Mar-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Enhance InputFile to also include whether the file is out-of-date.

Previously we would return null for an out-of-date file. This inhibited ASTReader::ReadSLocEntry
from creating a FileID to recover gracefully in such a case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176332 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
d1084f6dd10ec79d1618d957fd3174bd04096cb3 01-Mar-2013 Fariborz Jahanian <fjahanian@apple.com> Fix warning text of my last patch.
// rdar://13158394


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ced0e6570a90e3e7ab09691fd7f04428f4e97977 28-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C: clang, following gcc, warns on
use of stand-alone protocol as type and uses
id<proto>. Modify warning to say what compiler
is doing. // rdar//13158394


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
8ddfb0b72d0e439d01759c1bc7a79ba73dd2830c 28-Feb-2013 Manuel Klimek <klimek@google.com> Fix a problem where 'clang' is ambiguous in MSVC builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ff9a01000ff74a994aa3da26ea2ec732c97291b7 28-Feb-2013 Manuel Klimek <klimek@google.com> First step towards adding a parent map to the ASTContext.

This does not yet implement the LimitNode approach discussed.

The impact of this is an O(n) in the number of nodes in the AST
reduction of complexity for certain kinds of matchers (as otherwise the
parent map gets recreated for every new MatchFinder).

See FIXMEs in the comments for the direction of future work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ASTTypeTraits.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTTypeTraits.h
a19dc41bd408732d407d0152f67b389f7333db25 28-Feb-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Mark the root SVal class as isPodLike.

Pure optimization, no functionality change. Probably does not make much
of a difference, but it's free.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176229 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
a2bb8923334ecd35b8f914dff7d105330abbad22 27-Feb-2013 Rafael Espindola <rafael.espindola@gmail.com> Don't cache the visibility of types.

Since r175326 an implicitly hidden template argument can cause a template
installation to become hidden, even if the template itself has an explicit
default visibility. This requires that we keep track of "late" additions
of the visibility attribute.

This is hopefully the last followup change. It just removes the caching of
visibilities from types so that we can see new attributes even after a type has
been used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f127eb8aeb3ce861f3dbc1adbb3362bfd98461e1 27-Feb-2013 Rafael Espindola <rafael.espindola@gmail.com> Rename methods to comply with the LLVM Coding Standards.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176159 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/Visibility.h
18895dc4fd29f0071eeb591be820338f16407906 27-Feb-2013 Rafael Espindola <rafael.espindola@gmail.com> Change Type::getLinkageAndVisibility to return a LinkageInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176157 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2beda12c3fbaa9125831b7f818680978c596b205 27-Feb-2013 Rafael Espindola <rafael.espindola@gmail.com> Move LinkageInfo out of NamedDecl so that it can be used in Type.h.

Everything that cares about visibility also cares about linkage, so I just
moved it to Visibility.h instead of creating a new .h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Visibility.h
10b4df7ff21076c21ca764f8ca38ccaff7888f25 27-Feb-2013 Adrian Prantl <aprantl@apple.com> Temporarily revert r176116 for compile-time performance regression.

This reverts commit ea95e4587fd13606fbf63b10a07a7d02026aa39c.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
664e860beb2550bef24fb8946192f61648a71d7f 27-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> comment parsing: Properties are considered like methods, and people
think of them as having return values that may be computed. Don't
warn when using @return in their comment. // rdar://13189938


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
2564f811ba107cb314a594d730aa3357b6181b62 27-Feb-2013 Ted Kremenek <kremenek@apple.com> Refine SourceManager's isBeforeInTranslationUnit() cache to have more entries.

isBeforeInTranslationUnit() uses a cache to reduce the expensive work
to compute a common ancestor for two FileIDs. This work is very
expensive, so even caching the latest used FileIDs was a big win.
A closer analysis of the cache before, however, shows that the cache
access pattern would oscillate between a working set of FileIDs, and
thus caching more pairs would be profitable.

This patch adds a side table for extending caching. This side table
is bounded in size (experimentally determined in this case from
a simple Objective-C project), and when the table gets too large
we fall back to the single entry caching before as before.

On Sketch (a small example Objective-C project), this optimization
reduces -fsyntax-only time on SKTGraphicView.m by 5%. This is
for a project that is already using PCH.

Fixes <rdar://problem/13299847>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176142 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9db0fe97f533513f88e7141f0b2a405ebe86fa67 26-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> doxygen command. Add 'attention' command to list of similar
doxygen commands. // rdar://12379053


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
34b0adb52f1528fb03313bdd5fd73632c11fc678 26-Feb-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix assertion failure when a field is given an address space.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176122 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
58c79037256c77ffdbaa0da12205777e239fe096 26-Feb-2013 Adrian Prantl <aprantl@apple.com> Ensure that DIType is regenerated after we visited an implementation that adds ivars to an interface. Fixes rdar://13175234

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
85aee96c62a99069ea60cb47d5ae69150ca44746 26-Feb-2013 Kostya Serebryany <kcc@google.com> Unify clang/llvm attributes for asan/tsan/msan (Clang part)

These are two related changes (one in llvm, one in clang).
LLVM:
- rename address_safety => sanitize_address (the enum value is the same, so we preserve binary compatibility with old bitcode)
- rename thread_safety => sanitize_thread
- rename no_uninitialized_checks -> sanitize_memory

CLANG:
- add __attribute__((no_sanitize_address)) as a synonym for __attribute__((no_address_safety_analysis))
- add __attribute__((no_sanitize_thread))
- add __attribute__((no_sanitize_memory))

for S in address thread memory
If -fsanitize=S is present and __attribute__((no_sanitize_S)) is not
set llvm attribute sanitize_S


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
742d9e77e32f014194679575c97c6bb4fd0998c4 25-Feb-2013 Edwin Vane <edwin.vane@intel.com> Various additions to ASTMatcher library:

New type matchers:
* recordType
* elaboratedType

New narrowing matchers:
* hasQualifier
* namesType
* hasDeclContext

Added tests and updated LibASTMatchersReference.

Reviewers: klimek


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176047 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
42f2309f739549bead6e5a6c34fd1be4d087998f 25-Feb-2013 Anna Zaks <ganna@apple.com> [analyzer] Address Jordan's code review of r175857.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176043 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
3abf77872ca6c520903f9174cf6cd89a50df2714 25-Feb-2013 Edwin Vane <edwin.vane@intel.com> Adding hasDeclaration overload for TemplateSpecializationType

TemplateSpecializationType doesn't quite have getDecl(). Need to go
through TemplateName to get a TemplateDecl.

Added test cases for the hasDeclaration() overload for
TemplateSpecializationType. Also introduced the type matcher
templateSpecializationType() used by the new hasDeclaration() test case.

Updated LibASTMatchersReference.

Reviewers: klimek


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176025 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
b45083d08377a8b9528401fdafd7210e78895dbe 25-Feb-2013 Edwin Vane <edwin.vane@intel.com> Support in hasDeclaration for types with getDecl()

Re-introducing r175532. The has_getDecl metafunction didn't compile with
Visual Studio. This revision uses approaches has_getDecl from a
different angle that isn't a problem for Visual Studio.

Added dedicated tests for the metafunction.

Reviewers: klimek


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176024 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
1b354b868c1aa227619d81e299fe6e384e1999b7 25-Feb-2013 Edwin Vane <edwin.vane@intel.com> Reverting r176019. Corrupt patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176021 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
0b6f23a23c55b7024e7a0edca1fecf9bd4c380a1 25-Feb-2013 Edwin Vane <edwin.vane@intel.com> Support in hasDeclaration for types with getDecl()

Re-introducing r175532. The has_getDecl metafunction didn't compile with Visual
Studio. This revision approaches has_getDecl from a different angle that isn't
a problem for Visual Studio.

Added dedicated tests for the metafunction.

Reviewers: klimek


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176019 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
f3197e9eb02120522c1f60f88dacc1cfe5b210f0 25-Feb-2013 Daniel Jasper <djasper@google.com> Add matcher for AccessSpecDecls.

Also, add matchers isPrivate(), isProtected() and isPublic(), that
restrict the matching of such AccessSpecDecls and all other Decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176017 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
4e9c0854382d37325771b50f6cf899a75119fa24 25-Feb-2013 Ted Kremenek <kremenek@apple.com> [analyzer] add the notion of an "interesting" lvalue expression for ExplodedNode pruning.

r175988 modified the ExplodedGraph trimming algorithm to retain all
nodes for "lvalue" expressions. This patch refines that notion to
only "interesting" expressions that would be used for diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176010 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
43b82b823a6113fdbee54243b280db9c55ef72cb 24-Feb-2013 Ted Kremenek <kremenek@apple.com> [analyzer] tracking stores/constraints now works for ObjC ivars or struct fields.

This required more changes than I originally expected:

- ObjCIvarRegion implements "canPrintPretty" et al
- DereferenceChecker indicates the null pointer source is an ivar
- bugreporter::trackNullOrUndefValue() uses an alternate algorithm
to compute the location region to track by scouring the ExplodedGraph.
This allows us to get the actual MemRegion for variables, ivars,
fields, etc. We only hand construct a VarRegion for C++ references.
- ExplodedGraph no longer drops nodes for expressions that are marked
'lvalue'. This is to facilitate the logic in the previous bullet.
This may lead to a slight increase in size in the ExplodedGraph,
which I have not measured, but it is likely not to be a big deal.

I have validated each of the changed plist output.

Fixes <rdar://problem/12114812>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175988 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
0dd15d78fb0c99faa5df724139ba4c16a9a345c6 24-Feb-2013 Ted Kremenek <kremenek@apple.com> Add "KnownSVal" to represent SVals that cannot be UnknownSVal.

This provides a few sundry cleanups, and allows us to provide
a compile-time check for a case that was a runtime assertion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175987 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/PathSensitive/SVals.h
c515978bd3a703aa733f846a0094ffa84d149074 24-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Use MacroDirective in the preprocessor callbacks to make available the
full information about the macro (e.g if it was imported and where).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175978 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PPConditionalDirectiveRecord.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
82a29af8cbc4b117af83c5c5dfa875b5699c97c4 24-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add comments for the MacroDirective & MacroInfo classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175977 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
f3f6231fb5a86c98aa88eba7dbf2df87cc141e0d 23-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Shrink SmallPtrSet. It gets swapped a lot which copies the whole small part.

Testing shows that it's empty in >99% of the cases and I couldn't find a case
where it contained more than 2 elements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175967 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b063ef0222a99ee168631afa7b5a882d494b8fde 23-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Add streamed versions of getQualifiedNameAsString.

Move the cold virtual method getNameForDiagnostic out of line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c4cca7b2408bdfd99ea0f63fec1421c1327593b2 23-Feb-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Remove data member MSAsmStmt::AsmLoc, wrongly hiding AsmStmt::AsmLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
884f0a752baa5f2a4561dd73588476b8b84418b3 23-Feb-2013 NAKAMURA Takumi <geek4civic@gmail.com> clang/AST/Decl.h: Add "raw_ostream.h" to appease msvc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175952 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b07805485c603be3d8011f72611465324c9e664b 23-Feb-2013 David Blaikie <dblaikie@gmail.com> Remove the CFGElement "Invalid" state.

Use Optional<CFG*> where invalid states were needed previously. In the one case
where that's not possible (beginAutomaticObjDtorsInsert) just use a dummy
CFGAutomaticObjDtor.

Thanks for the help from Jordan Rose & discussion/feedback from Ted Kremenek
and Doug Gregor.

Post commit code review feedback on r175796 by Ted Kremenek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175938 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/ProgramPoint.h
7728cddd7866fadd07f1191eee40985e3cdbc6bf 23-Feb-2013 Peter Collingbourne <peter@pcc.me.uk> Revert r175912, "Add support for coldcc to clang" at John's request.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/Specifiers.h
asic/TargetInfo.h
ff971d7973aaa00c286b788d30f6919c7b1f4de2 23-Feb-2013 Eric Christopher <echristo@gmail.com> Propagate the split dwarf file information through into the backend
and through to the debug info in the module. In order to make the
testcase a bit more efficient allow the filename to go through
compilation for compile and not assemble jobs and turn off the
extract for cases where we don't create an object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175935 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
f799ae1afb897151a84a7170951e367d8307ae04 22-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C arg: provide fixit support when
c++'s named cast need be replaced for bridge casting.
// rdar://12788838


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175923 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
80190399f5a062db72127869978699af65951b73 22-Feb-2013 Eric Christopher <echristo@gmail.com> Split out the command handling for split debug info, we're going
to want to propagate some information through the module into
the back end and so need to pass it through to codegen.

Also make the methods file static so we can use them in other places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175916 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
4c67aa96401b67b5200e701cff87485067ab0792 22-Feb-2013 Peter Collingbourne <peter@pcc.me.uk> Add support for coldcc to clang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/Specifiers.h
asic/TargetInfo.h
0b849d34b3a9574615e98e108db4e8099e9032e0 22-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessing record] Have the MacroDefinitions map point to the MacroDefinition object instead
its index in the preprocessed entities vector.

This is because the order of the entities in the vector can change in some (uncommon) cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175907 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
f512acee01617c9da8079ed88ded3bb9f2418349 22-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace some typically large vectors with SmallVector.

This may seem counter-intuitive but the POD-like optimization helps when the
vectors grow into multimegabyte buffers. SmallVector calls realloc which knows
how to twiddle virtual memory bits and avoids large copies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/SourceManager.h
684aa73192d92850a926870be62a1787eb5b7ed9 22-Feb-2013 Michael Han <fragmentshaders@gmail.com> [Sema] Semantic analysis for empty-declaration and attribute-declaration.

Introduce a new AST Decl node "EmptyDecl" to model empty-declaration. Have attributes from attribute-declaration appertain
to the EmptyDecl node by creating the AST representations of these attributes and attach them to the EmptyDecl node so these
attributes can be sema checked just as attributes attached to "normal" declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
5eada844fa70b6e2bc941dd7306f7a4fb1e8529d 22-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Streamify getNameForDiagnostic and remove the string versions of PrintTemplateArgumentList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
6ebf09130479bc7605aa09a3e6c4dc2ba3513495 22-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: add CommentOptions to allow specifying custom comment block commands

Add an ability to specify custom documentation block comment commands via a new
class CommentOptions. The intention is that this class will hold future
customizations for comment parsing, including defining documentation comments
with specific numbers of parameters, etc.

CommentOptions instance is a member of LangOptions.

CommentOptions is controlled by a new command-line parameter
-fcomment-block-commands=Foo,Bar,Baz.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
asic/CommentOptions.h
asic/LangOptions.h
river/Options.td
f6565a9f7318b1ca6ea9510003dde7b89696daab 22-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Handle alignas(foo...) pack expansions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticParseKinds.td
ema/AttributeList.h
ema/Sema.h
671b3219c2be00ef8f26234ec993816c3ba56a4f 22-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 [dcl.align]p6-p8, and C11 6.7.5/7. This had to be split out of
the normal attribute-merging path, because we can't merge alignment attributes
without knowing the complete set of alignment attributes which apply to a
particular declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175861 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
8dadf15224f1a8df96793e5fc4e0b0e38a5ffbe4 22-Feb-2013 Anna Zaks <ganna@apple.com> [analyzer] Place all inlining policy checks into one palce

Previously, we had the decisions about inlining spread out
over multiple functions.

In addition to the refactor, this commit ensures
that we will always inline BodyFarm functions as long as the Decl
is available. This fixes false positives due to those functions
not being inlined when no or minimal inlining is enabled such (as
shallow mode).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175857 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
9e738cc9d4b4655c44dadeb22f3a314daf43b995 22-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -fbracket-depth=N, analogous to -ftemplate-depth= and -fconstexpr-depth=,
to control the check for the C 5.2.4.1 / C++ [implimits] restriction on nesting
levels for parentheses, brackets and braces.

Some code with heavy macro use exceeds the default limit of 256, but we don't
want to increase it generally to avoid stack overflow on stack-constrained
systems.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/LangOptions.def
river/CC1Options.td
river/Options.td
5e5440ba9c135f523f72e7e7c5da59d390d697c5 22-Feb-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Make sure a materialized temporary matches its bindings.

This is a follow-up to r175830, which made sure a temporary object region
created for, say, a struct rvalue matched up with the initial bindings
being stored into it. This does the same for the case in which the AST
actually tells us that we need to create a temporary via a
MaterializeObjectExpr. I've unified the two code paths and moved a static
helper function onto ExprEngine.

This also caused a bit of test churn, causing us to go back to describing
temporary regions without a 'const' qualifier. This seems acceptable; it's
our behavior from a few months ago.

<rdar://problem/13265460> (part 2)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175854 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
f0b1a0ee4787cd60a34951950baa6dd7d3d53a64 22-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C arc: Diagnostic can not say to use bridge
casts with c++ named casts. Change notes to say use
bridge with c-style cast instead. // rdar://12788838


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175850 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c9088966de61c4958efbb7b635dad78d779ac6e6 22-Feb-2013 Aaron Ballman <aaron@aaronballman.com> Removing has_getDecl (added in r175532). It cause a build break for MSVC, and was not yet being used in the codebase. If we start using std::enable_if, we can look into resurrecting the idea in a more portable fashion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175837 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
168c96d42857ee98326b077189115cc82be1e2c3 22-Feb-2013 Eric Christopher <echristo@gmail.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175833 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
3892d022f36ee5bf3be4a55ea01c08d323ef6235 22-Feb-2013 John McCall <rjmccall@apple.com> Ignore visibility from enclosing template arguments
for explicit member specializations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
3c16431cb973079d178338833dafd6b483bf8c8d 22-Feb-2013 David Blaikie <dblaikie@gmail.com> Fix copy/paste to refer to the relevant type (ProgramPoint instead of TypeLoc).

Post commit review feedback on r175812 from Jordan Rose.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175825 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
b83a5d8fb2306e3ef5c6a5c2af0bf52a824f2149 22-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix typo 'with with' in diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175823 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
59320e770f90a59c74f2be10f198e3c390195628 21-Feb-2013 Eric Christopher <echristo@gmail.com> Remove the SplitDebug action and replace with a set of commands
in the compilation setup. Note that this doesn't currently
work for -no-integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175813 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
7a95de68c093991047ed8d339479ccad51b88663 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Replace ProgramPoint llvm::cast support to be well-defined.

See r175462 for another example/more details.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
63631bd173df1decfff98ae6a7ed7f3d5f886b86 21-Feb-2013 Ted Kremenek <kremenek@apple.com> Teach serialized diagnostics about notes without locations.

Along the way, improve a diagnostic for "previous declaration here" for implicit parameters.

Fixes <rdar://problem/13211384>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fdf6a279c9a75c778eba382d9a156697092982a1 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Replace CFGElement llvm::cast support to be well-defined.

See r175462 for another example/more details.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175796 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
6aad4a31b35df07fe818f193fcfd3c0197aea467 21-Feb-2013 Jordan Rose <jordan_rose@apple.com> Preprocessor: preserve whitespace in -traditional-cpp mode.

Note that unlike GNU cpp we currently do not preserve whitespace in macros
(even in -traditional-cpp mode).

<rdar://problem/12897179>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175778 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
649aa6adc4d8650033508d38d3b442d355d90824 21-Feb-2013 Chad Rosier <mcrosier@apple.com> [driver] Add a dump method for ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175777 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
4d8fe830d59010d6f748fd1c62090c20538c582b 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Correct spelling of 'enumerator'.

Post commit code review feedback to r175705 from Jordan Rose.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LLVM.h
0adb17502365b56dca99bfa971c59514ece54877 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Avoid implicit conversions of Optional<T> to bool.

This is a precursor to making Optional<T>'s operator bool 'explicit' when
building Clang & LLVM as C++11.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175722 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4411b423e91da0a2c879b70c0222aeba35f72044 21-Feb-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Record whether a base object region represents a virtual base.

This allows MemRegion and MemRegionManager to avoid asking over and over
again whether an class is a virtual base or a non-virtual base.

Minor optimization/cleanup; no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175716 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/Store.h
66874fb18afbffb8b2ca05576851a64534be3352 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Use None rather than Optional<T>() where possible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/ExprObjC.h
ST/Type.h
asic/LLVM.h
asic/VersionTuple.h
ex/PreprocessingRecord.h
taticAnalyzer/Core/PathSensitive/SVals.h
65124fe81f61eed98b845c87e3a78a780f3deb11 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Rename TypeLoc's isType to isKind

Matches changes made to SVal's similar functions based on Jordan Rose's review
feedback to r175594.

Also change isKind to take a reference rather than a non-null pointer, while I'm
at it. (& make TypeLoc::isKind private)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175704 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e2e1fa27e2533410f744137b0db1bc9491543392 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Mark unimplemented function with LLVM_DELETED_FUNCTION

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175695 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
464011827c5f9047caaba7e245556d66a65a15b6 21-Feb-2013 David Blaikie <dblaikie@gmail.com> Doxycomment SVal's getAs/castAs.

Also document TypeLoc's operations similarly, since it's a good idea.

Post-commit CR feedback from Anna Zaks regarding r175594.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
taticAnalyzer/Core/PathSensitive/SVals.h
dc84cd5efdd3430efb22546b4ac656aa0540b210 20-Feb-2013 David Blaikie <dblaikie@gmail.com> Include llvm::Optional in clang/Basic/LLVM.h

Post-commit CR feedback from Jordan Rose regarding r175594.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/NSAPI.h
ST/TemplateBase.h
ST/Type.h
nalysis/Analyses/FormatString.h
asic/LLVM.h
asic/VersionTuple.h
ex/PreprocessingRecord.h
arse/Parser.h
ema/Sema.h
erialization/ASTReader.h
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SVals.h
3bc7b6bef968a18aa69af6594d192897d329692a 20-Feb-2013 David Blaikie <dblaikie@gmail.com> Rename SVal::isType functions to SVal::isKind

Post-commit CR feedback from Jordan Rose regarding r175594.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175676 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
30f2a74f882adcadb8060d914684f65a401d87ba 20-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15311: Finish implementation of the suggested resolution of core issue 1488,
which allows grouping parens in an abstract-pack-declarator. This was already
mostly implemented, but missed some cases. Add an ExtWarn for use of this
extension until CWG ratifies it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175660 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
6b3d3e54c003b03f16e235ad2ff49e95587bbf92 20-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Process and handle attributes on conditions and for loop variables. Process and
diagnose attributes on alias declarations, using directives, and attribute
declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
5251abea41b446c26e3239c8dd6c7edea6fc335d 20-Feb-2013 David Blaikie <dblaikie@gmail.com> Replace SVal llvm::cast support to be well-defined.

See r175462 for another example/more details.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175594 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SVals.h
d4c3d66be70ae2d0bd828329022dc428cc277a1c 20-Feb-2013 John McCall <rjmccall@apple.com> Add a new 'type_visibility' attribute to allow users to
control the visibility of a type for the purposes of RTTI
and template argument restrictions independently of how
visibility propagates to its non-type member declarations.

Also fix r175326 to not ignore template argument visibility
on a template explicit instantiation when a member has
an explicit attribute but the instantiation does not.

The type_visibility work is rdar://11880378

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175587 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
9818a1d443e97677dd3422305de9cc2b1fb2a8c1 20-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Split the MacroInfo class into two separate concepts, MacroInfo class
for the data specific to a macro definition (e.g. what the tokens are), and
MacroDirective class which encapsulates the changes to the "macro namespace"
(e.g. the location where the macro name became active, the location where it was undefined, etc.)

(A MacroDirective always points to a MacroInfo object.)

Usually a macro definition (MacroInfo) is where a macro name becomes active (MacroDirective) but
splitting the concepts allows us to better model the effect of modules to the macro namespace
(also as a bonus it allows better modeling of push_macro/pop_macro #pragmas).
Modules can have their own macro history, separate from the local (current translation unit)
macro history; MacroDirectives will be used to model the macro history (changes to macro namespace).

For example, if "@import A;" imports macro FOO, there will be a new local MacroDirective created
to indicate that "FOO" became active at the import location. Module "A" itself will contain another
MacroDirective in its macro history (at the point of the definition of FOO) and both MacroDirectives
will point to the same MacroInfo object.

Introducing the separation of macro concepts is the first part towards better modeling of module macros.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175585 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/PPMutationListener.h
ex/Preprocessor.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
053214013990ad8ec096dafc64aa7c0ad2b05bc0 20-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15300: Support C++11 attributes on base-specifiers. We don't support any such
attributes yet, so just issue the appropriate diagnostics. Also generalize the
fixit for attributes-in-the-wrong-place code and reuse it here, if attributes
are placed after the access-specifier or 'virtual' in a base specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175575 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
0be5e567e3a48592fd6b11f88cc77efb20c76f26 19-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Const'ify some functions of ModuleMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175552 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
21a0004d80f50808ee343ae70092f6260a4c9477 19-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Refactor code from ASTReader::makeModuleVisible() into a new function,
Module::getExportedModules() so it can be reused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175548 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
523806028d812a7f29636c59a8bc0e7e3d3fd9ae 19-Feb-2013 Edwin Vane <edwin.vane@intel.com> Support in hasDeclaration for types with getDecl()

Using a new metafunction for detecting the presence of the member
'getDecl' in a type T, added support to hasDeclaration for any such type
T. This allows hasDecl() to be replaced and enables several other
subclasses of clang::Type to use hasDeclaration.

Updated unittests and LibASTMatchersReference.html.

Reviewers: klimek


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175532 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
a880b19aa6ef1dc95936f5de052be7a7d6ee6814 19-Feb-2013 John McCall <rjmccall@apple.com> Add support for -fvisibility-ms-compat.

We treat this as an alternative to -fvisibility=<?>
which changes the default value visibility to "hidden"
and the default type visibility to "default".

Expose a -cc1 option for changing the default type
visibility, repurposing -fvisibility as the default
value visibility option (also setting type visibility
from it in the absence of a specific option).

rdar://13079314

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175480 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
9ef9b8540a608a93efaaae1d26d94e8087c30b55 19-Feb-2013 David Blaikie <dblaikie@gmail.com> Use LLVM_DELETED_FUNCTION rather than '// do not implement' comments.

Also removes some redundant DNI comments on function declarations already
using the macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175465 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptSpecifier.h
erialization/GlobalModuleIndex.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/SVals.h
39e6ab4be93d9c5e729a578ddd9d415cd2d49872 18-Feb-2013 David Blaikie <dblaikie@gmail.com> Replace TypeLoc llvm::cast support to be well-defined.

The TypeLoc hierarchy used the llvm::cast machinery to perform undefined
behavior by casting pointers/references to TypeLoc objects to derived types
and then using the derived copy constructors (or even returning pointers to
derived types that actually point to the original TypeLoc object).

Some context is in this thread:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-December/056804.html
Though it's spread over a few months which can be hard to read in the mail
archive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ST/TypeLocVisitor.h
5be093c0ef46c7749c942d0d9056af6dc3d591a4 18-Feb-2013 David Blaikie <dblaikie@gmail.com> Clean up last use of dyn_cast on TypeLoc in ASTMatchers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175454 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersMacros.h
91d243b6011ed74f6d3a446b1b792f6c11475ee4 18-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add include guards for CommentVisitor.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentVisitor.h
aa945900d5438984bdcaac85c4f54868292231f4 18-Feb-2013 Douglas Gregor <dgregor@apple.com> Ensure that the identifier chains have the most recent declaration after module deserialization.

This commit introduces a set of related changes to ensure that the
declaration that shows up in the identifier chain after deserializing
declarations with a given identifier is, in fact, the most recent
declaration. The primary change involves waiting until after we
deserialize and wire up redeclaration chains before updating the
identifier chains. There is a minor optimization in here to avoid
recursively deserializing names as part of looking to see whether
top-level declarations for a given name exist.

A related change that became suddenly more urgent is to property
record a merged declaration when an entity first declared in the
current translation unit is later deserialized from a module (that had
not been loaded at the time of the original declaration). Since we key
off the canonical declaration (which is parsed, not from an AST file)
for emitted redeclarations, we simply record this as a merged
declaration during AST writing and let the readers merge them.

Re-fixes <rdar://problem/13189985>, presumably for good this time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175447 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
6c31f7c56f54cc1c52475675335729290663535c 17-Feb-2013 James Dennett <jdennett@google.com> Documentation: use \brief and don't duplicate the name of the declared entity
at the start of the doc comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticOptions.h
49d7111bd42e38fb5f1d7ec5474b9f119e0d7b56 17-Feb-2013 James Dennett <jdennett@google.com> Documentation cleanup: fix a typo ("////" for "///") and suppress Doxygen's
automatic link generation for "file:", as it's not used as a URL here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
959dc8475fc20ce8c3fd55021cb9f02a531cddc5 16-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Use trailing documentation comments properly

Patch by Alexander Zinenko.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175376 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
ex/PreprocessorOptions.h
ema/Overload.h
c34464ee3367de42c477561c0ae069675be8393c 16-Feb-2013 James Dennett <jdennett@google.com> Documentation cleanup: make a \brief be brief, and fix a bad use of \see.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175340 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticRenderer.h
1216015de0a958860082a7fa8b504547197686c3 16-Feb-2013 James Dennett <jdennett@google.com> Documentation cleanup: use \brief, and don't repeat the identifier being
declared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
12e0c13819f09162aa8ff1036351be4f97839cae 16-Feb-2013 Jordan Rose <jordan_rose@apple.com> libAnalysis: Add a case for TypeAliasDecl in CFGRecStmtDeclVisitor.

Neither of the current clients of CFGRecStmtDeclVisitor are doing
anything with typedefs, so I assume type aliases (C++11 "using")
can be safely ignored. This was causing assertion failures in
the analyzer.

<rdar://problem/13228440>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175335 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
0076ea62c2da91121bca6d402da67f0b611fc8bb 16-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove unused forward declarations

clang/AST/Decl.h is included to see the TypeSourceInfo definition anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7640b02a561fd2b2c58a227b262b0c1ba93622ae 16-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Deserializing the DeclContext of a template parameter is not safe
until recursive loading is finished.

Otherwise we may end up with a template trying to deserialize a template
parameter that is in the process of getting loaded.

rdar://13135282

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175329 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
8f2fcd3ad1a55ddb80a32d8dc6acf9221e0fb4f0 16-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove unused forward declarations


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175328 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Ownership.h
5a758de93fa2a28a84eb0d918a31d9522472990c 16-Feb-2013 John McCall <rjmccall@apple.com> Rework the visibility computation algorithm in preparation
for distinguishing type vs. value visibility.

The changes to the visibility of explicit specializations
are intentional. The change to the "ugly" test case is
a consequence of a sensible implementation, and I am happy
to argue that this is better behavior. Other changes may
or may not be intended; it is quite difficult to divine
intent from some of the code I altered.

I've left behind a comment which I hope explains the
philosophy behind visibility computation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175326 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ST/TemplateBase.h
17c1a2e748d49d293c9926eeeb85aa4890182106 15-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C: Fixes a compiler crash when encoding
an ivar of type pointer to a typedef'ed object.
// rdar://13190095


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
820b23dc924a4ae7af07d5a75d6b1d781c267d57 15-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> When a statement is dropped from the AST because it was invalid, make sure
we don't do the scope checks otherwise we are going to hit assertion checks
since a label may not have been actually added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175281 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
bc403861bc4e6f7ad1371e9e129f0f25b38b3a9a 15-Feb-2013 Jordan Rose <jordan_rose@apple.com> Re-apply "[analyzer] Model trivial copy/move ctors with an aggregate bind."

...after a host of optimizations related to the use of LazyCompoundVals
(our implementation of aggregate binds).

Originally applied in r173951.
Reverted in r174069 because it was causing hangs.
Re-applied in r174212.
Reverted in r174265 because it was /still/ causing hangs.

If this needs to be reverted again it will be punted to far in the future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175234 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
cfaed8d399a34e79fbab9f70eb4ea1bbeb81a02b 14-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C: synthesize properties in order of their
declarations to synthesize their ivars in similar
determinstic order so they are laid out in
a determinstic order. // rdar://13192366


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
26202291b161f8598c0c342cba12c6552e44d44c 14-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C: When implementing custom accessor method for
a property, the -Wdirect-ivar-access should not warn when
accessing the property's synthesized instance variable.
// rdar://13142820


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175195 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
68a932d416c52cef609e2c6c79ae99cbf4b9acd6 14-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove a const_cast by propagating constness to called functions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175161 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e252a89fc1560ca4cda9a95e4ae05e2dc03ee78c 14-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove const_casts by making spec_begin()/spec_end() const


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175159 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
e1092dfee2bbcc2243421c553bca488880324280 14-Feb-2013 Bill Wendling <isanbard@gmail.com> Pass the target options through to code generation.

The code generation stuff is going to set attributes on the functions it
generates. To do that it needs the target options. Pass them through.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175141 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
d2fdd4256a2efc41365ccdd27a210d1d99a1fe3a 14-Feb-2013 Rafael Espindola <rafael.espindola@gmail.com> merge hasCLanguageLinkage and isExternC. Keep the shorter name.

I added hasCLanguageLinkage while fixing some language linkage bugs some
time ago so that I wouldn't have to check all users of isExternC. It turned
out to be a much longer detour than expected, but this patch finally
merges the two again. The isExternC function now implements just the
standard notion of having C language linkage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
950fee2555f7a6bd193e588d6b6a941fd182391a 14-Feb-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a getLanguageLinkage method to VarDecls and FunctionDecls. Use it to fix
some cases where functions with no language linkage were being treated as having
C language linkage. In particular, don't warn in

extern "C" {
static NonPod foo();
}

Since getLanguageLinkage checks the language linkage, the linkage computation
cannot use the language linkage. Break the loop by checking just the context
in the linkage computation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/Linkage.h
a03ab10f0e4d888139b3b694dd55d176982f72a4 13-Feb-2013 Daniel Jasper <djasper@google.com> Allow breaking after the return type in function declarations.

This has so far been disabled for Google style, but should be done
before breaking at nested name specifiers or in template parameters.

Before (in Google style):
template <typename T>
aaaaaaaa::aaaaa::aaaaaa<T, aaaaaaaaaaaaaaaaaaaaaaaaa> aaaaaaaaaaaaaaaaaaaaaaaa<
T>::aaaaaaa() {}

After:
template <typename T>
aaaaaaaa::aaaaa::aaaaaa<T, aaaaaaaaaaaaaaaaaaaaaaaaa>
aaaaaaaaaaaaaaaaaaaaaaaa<T>::aaaaaaa() {}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175074 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
7f43fcf5d9406788ce95c9f3b785e0a6bc75a7f7 12-Feb-2013 Edwin Vane <edwin.vane@intel.com> Adding more overloads for allOf matcher

Adding overloads of allOf accepting 4 and 5 arguments.

Reviewer: klimek



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174967 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
63a9514a2330b144575a136e38875193760126f7 12-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Remove an assert which triggers when a decl context in a module hits the 'has
lexical storage but not visible storage' case in C++. It's unclear whether we
even need the special-case handling for C++, since it seems to be working
around our not serializing a lookup table for the TU in C. But in any case,
the assertion is incorrect.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
9dd74c5504c743c96ea3a1d691d6a75ec3a98147 12-Feb-2013 John McCall <rjmccall@apple.com> Diagnose loads of 'half' l-values in OpenCL.
Patch by Joey Gouly!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8896339a3c654dc44877d52a926eb89ab3ef30b5 11-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Don't bother reconciling external visible decls against our current set of
declarations if we didn't have a lookup map when the external decls were added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
06b247f0ffb69854e32150c80f347a9376d3709b 11-Feb-2013 Manuel Klimek <klimek@google.com> Do not use VariadicDynCastAllOfMatcher where VariadicAllOfMatcher works.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174862 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
b7b25659355d736a4f19099d96acc54d672340a5 10-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C: Fixes a bogus warning due to not setting
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
asic/DiagnosticSemaKinds.td
a2f138a5c5ea695dc01cac361268ed26a8f0db7d 09-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove unreachable statement


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174811 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CharInfo.h
223f0ff6a9a5d0eaf63b98b3aa92888b4c088868 09-Feb-2013 Jordan Rose <jordan_rose@apple.com> Remove some stray uses of <ctype.h> functions.

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
ST/Expr.h
a4475a6b8277f24ed15d7b67d9dab77444c77cb1 09-Feb-2013 Ted Kremenek <kremenek@apple.com> QoI: -Wreadonly-iboutlet-property should have the warning's location on the 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
asic/DiagnosticSemaKinds.td
6bd992946bda92193fadce7e4890d4465d2702f4 09-Feb-2013 Douglas Gregor <dgregor@apple.com> Ensure that type definitions present in just-loaded modules are
visible.

The basic problem here is that a given translation unit can use
forward declarations to form pointers to a given type, say,

class X;
X *x;

and then import a module that includes a definition of X:

import XDef;

We will then fail when attempting to access a member of X, e.g.,

x->method()

because the AST reader did not know to look for a default of a class
named X within the new module.

This implementation is a bit of a C-centric hack, because the only
definitions that can have this property are enums, structs, unions,
Objective-C classes, and Objective-C protocols, and all of those are
either visible at the top-level or can't be defined later. Hence, we
can use the out-of-date-ness of the name and the identifier-update
mechanism to force the update.

In C++, we will not be so lucky, and will need a more advanced
solution, because the definitions could be in namespaces defined in
two different modules, e.g.,

// module 1
namespace N { struct X; }

// module 2
namespace N { struct X { /* ... */ }; }

One possible implementation here is for C++ to extend the information
associated with each identifier table to include the declaration IDs
of any definitions associated with that name, regardless of
context. We would have to eagerly load those definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/ExternalASTSource.h
ed9c59f2ae338f6f70c1fed2ce7b0d8a5eb3ba1c 09-Feb-2013 Jordan Rose <jordan_rose@apple.com> Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11).

Add warnings under -Wc++11-compat, -Wc++98-compat, and -Wc99-compat when a
particular UCN is incompatible with a different standard, and -Wunicode when
a UCN refers to a surrogate character in C++03.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
adecec39481f925701e63d7fe3b8bf02dd7ddf01 09-Feb-2013 Anna Zaks <ganna@apple.com> [analyzer] Move DefaultBool so that all checkers can share it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174782 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
3f6f51e28231f65de9c2dd150a2d757b2162cfa3 08-Feb-2013 Jordan Rose <jordan_rose@apple.com> Excise <cctype> from Clang (except clang-tblgen) in favor of CharInfo.h.

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
ST/Expr.h
asic/CharInfo.h
ex/LiteralSupport.h
9893902eceba7f01dd1521349d33866f77254d78 08-Feb-2013 Jordan Rose <jordan_rose@apple.com> Pull Lexer's CharInfo table out for general use throughout Clang.

Rewriting the same predicates over and over again is bad for code size and
code maintainence. Using the functions in <ctype.h> is generally unsafe
unless they are specified to be locale-independent (i.e. only isdigit and
isxdigit).

The next commit will try to clean up uses of <ctype.h> functions within Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CharInfo.h
ada7191795dde85a620008094fbe5464abdb916b 08-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> objective-C modern translator. Generate #line
info in the translated code under -g only.
// rdar://13138170


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174684 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Frontend/ASTConsumers.h
1b58c74af272a1d8228b8161c93a8a018456098e 08-Feb-2013 Douglas Gregor <dgregor@apple.com> Teach subframework header lookup to suggest modules <rdar://problem/13176200>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174683 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
233e26acc0ff2a1098f4c813f69286fce840a422 08-Feb-2013 Anna Zaks <ganna@apple.com> [analyzer] Add pointer escape type param to checkPointerEscape callback

The checkPointerEscape callback previously did not specify how a
pointer escaped. This change includes an enum which describes the
different ways a pointer may escape. This enum is passed to the
checkPointerEscape callback when a pointer escapes. If the escape
is due to a function call, the call is passed. This changes
previous behavior where the call is passed as NULL if the escape
was due to indirectly invalidating the region the pointer referenced.

A patch by Branden Archer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174677 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
953a61f26bf79932b9699b09add4c388764de170 07-Feb-2013 Douglas Gregor <dgregor@apple.com> Rename -fmodule-cache-path <blah> to -fmodules-cache-path=<blah> for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174645 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6959acd4bb0979361365e675968173ede7183489 07-Feb-2013 Guy Benyei <guy.benyei@intel.com> Enable overloading of OpenCL events - this is needed for the overloaded OpenCL builtin functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174630 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
fa37c5ca61af275a329386407e58cf70f4d9f596 07-Feb-2013 Manuel Klimek <klimek@google.com> Implements equalsNode for Decl and Stmt.

This is a powerful tool when doing iterative refined matches,
where another match is started inside the match callback of the first
one; this allows for example to find out whether the node was in
the condition or body of its parent if-statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174605 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
21f18c4fda167dc5f72feddbd6a7ac1b63200a0d 07-Feb-2013 Guy Benyei <guy.benyei@intel.com> Add OpenCL samplers as Clang builtin types and check sampler related restrictions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
ema/Initialization.h
erialization/ASTBitCodes.h
bbcd0f3ba215d5a8857b224e32b0330586a00dc6 07-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix handling of module imports adding names to a DeclContext after qualified
name lookup has been performed in that context (this probably only happens in
C++).

1) Whenever we add names to a context, set a flag on it, and if we perform
lookup and discover that the context has had a lookup table built but has the
flag set, update all entries in the lookup table with additional names from
the external source.

2) When marking a DeclContext as having external visible decls, mark the
context in which lookup is performed, not the one we are adding. These won't
be the same if we're adding another copy of a pre-existing namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
3646c68676c3c46a026b23d52188ef6e0d856178 07-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Simplify FindExternalVisibleDeclsByName by making it return a bool indicating
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
ST/ExternalASTSource.h
rontend/ChainedIncludesSource.h
ema/MultiplexExternalSemaSource.h
erialization/ASTReader.h
2a06085281d1b6aee628f85e8676eec04542cbc9 07-Feb-2013 Douglas Gregor <dgregor@apple.com> Introduce -fmodules-ignore-macro=NNN to ignore a macro when building/loading modules.

The use of this flag enables a modules optimization where a given set
of macros can be labeled as "ignored" by the modules
system. Definitions of those macros will be completely ignored when
building the module hash and will be stripped when actually building
modules. The overall effect is that this flag can be used to
drastically reduce the number of

Eventually, we'll want modules to tell us what set of macros they
respond to (the "configuration macros"), and anything not in that set
will be excluded. However, that requires a lot of per-module
information that must be accurate, whereas this option can be used
more readily.

Fixes the rest of <rdar://problem/13165109>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174560 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ex/HeaderSearchOptions.h
8bf778eb9c0afb0a4c63a97ce504f50759c08d5f 06-Feb-2013 Douglas Gregor <dgregor@apple.com> Detect when we end up trying to load conflicting module files.

This can happen when one abuses precompiled headers by passing more -D
options when using a precompiled hedaer than when it was built. This
is intentionally permitted by precompiled headers (and is exploited by
some build environments), but causes problems for modules.

First part of <rdar://problem/13165109>, detecting when something when
horribly wrong.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174554 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
415514d5fbc2761b7f2938aa9112b079249820d6 06-Feb-2013 Manuel Klimek <klimek@google.com> Cleanup of ASTMatcher macros and adding support for overloaded matchers.

This is in preparation for adding other overloaded matchers. This change
alone is a net win in LOC.
I went through all matchers and looked whether we could now encode them
as macro, or simplify them with the matcher atoms that were not
available before.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174540 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTMatchersMacros.h
1975c17e25b2d781bba95d47e8dabe6005815d5a 06-Feb-2013 Jordan Rose <jordan_rose@apple.com> Accept and ignore the -fextended-identifiers option.

This was GCC's option to turn on UCN support, which we always have on now
in C99 and C++ modes.

Additionally, mark the -fno-extended-identifiers option as unsupported,
since we don't support disabling UCNs in C99 and C++ modes.

PR11538

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174530 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
8ff690ab478b33e0d830a6203de12d191d94f8ff 06-Feb-2013 Daniel Jasper <djasper@google.com> Optionally derive formatting information from the input file.

With this patch, clang-format can analyze the input file for two
properties:
1. Is "int *a" or "int* a" more common.
2. Are non-C++03 constructs used, e.g. A<A<A>>.

With Google-style, clang-format will now use the more common style for
(1) and format C++03 compatible, unless it finds C++11 constructs in the
input.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174504 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
cf87bffc346244f0ed8eae7fffb52a0f03cd0413 06-Feb-2013 Manuel Klimek <klimek@google.com> Adds a convenience function selectFirst to simplify matching.

A very common use case is to search for the first occurrence of
a certain node that is a descendant of another node. In that
case, selectFirst significantly simplifies the code at the client side.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174499 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
5846720f08a6b225484bfe663599c2b057a99bc8 05-Feb-2013 Ted Kremenek <kremenek@apple.com> Change subexpressions to be visited in the CFG from left-to-right.

This is a more natural order of evaluation, and it is very important
for visualization in the static analyzer. Within Xcode, the arrows
will not jump from right to left, which looks very visually jarring.
It also provides a more natural location for dataflow-based diagnostics.

Along the way, we found a case in the analyzer diagnostics where we
needed to indicate that a variable was "captured" by a block.

-fsyntax-only timings on sqlite3.c show no visible performance change,
although this is just one test case.

Fixes <rdar://problem/13016513>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
087f40702fd00898fbb66d765d1143fd944c0485 05-Feb-2013 Anna Zaks <ganna@apple.com> [analyzer] Fix typo, better doxygen as per Jordan's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174434 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
c706c8e440abf61910c042380e19c67932998395 05-Feb-2013 Eric Christopher <echristo@gmail.com> Driver and option support for -gsplit-dwarf. This is a part of
the DWARF5 split dwarf proposal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174349 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/CC1Options.td
river/Options.td
afbcab8d10d4208c7ad8da79e948432117d4a326 05-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15095: Use more correct source locations for the InitListExpr we fake up for
vector initialization. Patch by John Stratton!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174339 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
a4dc51b46861eb52626f89183da7610437baba93 05-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add some missing diagnostics for C++11 narrowing conversions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174337 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
152ea0e4711f7aed75f6a1d1995b0bd94eb31c98 04-Feb-2013 Manuel Klimek <klimek@google.com> Implements the convenience matcher findAll.

We found that findAll has been implemented incorrectly multiple times
by various people using the matchers. To prevent further wasted
development effort, it makes sense to add it as convenience matcher
implemented as eachOf(m, forEachDescendant(m)).

This patch also updates the docs with the new matchers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174320 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
7387673f83b8b37f660422947c9990778ba88193 04-Feb-2013 Manuel Klimek <klimek@google.com> Add an eachOf matcher.

eachOf gives closure on the forEach and forEachDescendant matchers.
Before, it was impossible to implement a findAll matcher, as matching
the node or any of its descendants was not expressible (since anyOf
only triggers the first match).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174315 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
0178673f541685cf5067814dfeee2644078e39a9 04-Feb-2013 Daniel Jasper <djasper@google.com> Restructuring of token annotation for formatting.

This combines several changes:
* Calculation token type (e.g. for * and &) in the AnnotatingParser.
* Calculate the scope binding strength in the AnnotatingParser.
* Let <> and [] scopes bind stronger than () and {} scopes.
* Add minimal debugging output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174307 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
f8c12146fa2153a6d97b7c92d27d2ece0cd26e79 03-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove unneeded const_casts


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174287 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
STMatchers/ASTMatchers.h
b35cc2d46c4188a0b2d094b3104ce69092c34802 03-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Constify ASTContext::getObjContainingInterface


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174282 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2a3fe34b4a2a1b6ceab8838b896435378ae0e692 02-Feb-2013 Jordan Rose <jordan_rose@apple.com> Revert "[analyzer] Model trivial copy/move ctors with an aggregate bind."

...again. The problem has not been fixed and our internal buildbot is still
getting hangs.

This reverts r174212, originally applied in r173951, then reverted in r174069.
Will not re-apply until the entire project analyzes successfully on my
local machine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174265 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
3fa3feab35096b608f1d79bb541798b37a55e7b9 02-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> PR15132: Replace "address expression must be an lvalue or a function
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
asic/DiagnosticSemaKinds.td
453cb859a3c8dcafe79ae840dfc35ff8eae1b4b3 02-Feb-2013 Anna Zaks <ganna@apple.com> [analyzer] Always inline functions with bodies generated by BodyFarm.

Inlining these functions is essential for correctness. We often have
cases where we do not inline calls. For example, the shallow mode and
when reanalyzing previously inlined ObjC methods as top level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
b7e5eec2f57bd82c6ddb762ca3dd7b7d8697e9d5 02-Feb-2013 Nick Lewycky <nicholas@mxc.ca> This patch makes "&Cls::purevfn" not an odr use. This isn't what the standard
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
ema/Sema.h
9484c1dcf084452228aae439edcd00e1b4ce7470 01-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Const'ify Preprocessor::getPredefinesFileID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174218 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
54596b99c9ae43554284eb16a9ca7c23a666b261 01-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Unbreak Makefile build after r174216


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Makefile
af01bed59b2fe18fa483f5dbb86584b31eda6f98 01-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: improve the fidelity of XML output for many block commands

This change introduces a 'kind' attribute for the <Para> tag, that captures the
kind of the parent block command.

For example:

\todo Meow.

used to be just <Para>Meow.</Para>, but now it is
<Para kind="todo">Meow.</Para>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/Makefile
5500fc193af4b786bbbbee6ece743f523448e90b 01-Feb-2013 Jordan Rose <jordan_rose@apple.com> Re-apply "[analyzer] Model trivial copy/move ctors with an aggregate bind."

With the optimization in the previous commit, this should be safe again.

Originally applied in r173951, then reverted in r174069.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174212 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
978aeac1a90020b2a0ae6c7eb7fe65aa8226f74a 01-Feb-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Reuse a LazyCompoundVal if its type matches the new region.

This allows us to keep from chaining LazyCompoundVals in cases like this:
CGRect r = CGRectMake(0, 0, 640, 480);
CGRect r2 = r;
CGRect r3 = r2;

Previously we only made this optimization if the struct did not begin with
an aggregate member, to make sure that we weren't picking up an LCV for
the first field of the struct. But since LazyCompoundVals are typed, we can
make that inference directly by comparing types.

This is a pure optimization; the test changes are to guard against possible
future regressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174211 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
3c6aaeb26202b41173dd9ea982833fe975147d80 01-Feb-2013 Hal Finkel <hfinkel@anl.gov> Add -mqpx and -mno-qpx feature flags to toggle use of the PPC QPX vector instruction set

I've renamed the altivec test to ppc-features (because now there is more than one feature to test).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174204 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
75dbc717c21a662b7836ed34cc4e7da7b8fa33c0 01-Feb-2013 Chad Rosier <mcrosier@apple.com> [driver] Don't try to generate diagnostic information for dsymutil crashes.
Part of rdar://13134273


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174203 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
d82e2c1a1f7373fe89ce854d94915ad420596aa2 01-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Fix comments: these are not trailing comments


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174197 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteOptions.h
8b136d85487ec3cc017470d97479159d93a14f91 01-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Introduce ModuleFile::DirectImportLoc which is the source location
where the module was explicitly or implicitly imported in the local translation unit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174192 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/Module.h
5ebcb20b0331a6e64c213f0bb5f4bed9a9e8eb34 01-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> For ModuleLoader::makeModuleVisible() also pass the source location where the
module import occurred.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174191 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
erialization/ASTReader.h
95d912c994832333a998bc7d4ae0e8e830a2d38b 01-Feb-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::PredefinesFileID, to allow each checking of whether
a source location came from the predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174190 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
60969f5f6be1cbf7ac2384cc5ad571d28adf6bf1 01-Feb-2013 Manuel Klimek <klimek@google.com> Re-design the convenience interfaces on MatchFinder.

First, this implements a match() method on MatchFinder; this allows us
to get rid of the findAll implementation, as findAll is really a special
case of recursive matchers on match.

Instead of findAll, provide a convenience function match() that lets
users iterate easily over the results instead of needing to implement
callbacks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174172 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
ae54121c15cdd38f415f6fdda48215ab5e4dcee1 01-Feb-2013 Alexander Kornienko <alexfh@google.com> Use const visitors in ASTDumper.
http://llvm-reviews.chandlerc.com/D355
Patch by Philip Craig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclVisitor.h
ST/Expr.h
5f838aa9c82c22b6ed2a0cb090969a706c8a1775 01-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Fix diagnostic for bad alignas use: it can't be applied to functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cd0655b17249c4c4908ca91462657f62285017e6 01-Feb-2013 Nick Lewycky <nicholas@mxc.ca> Add a new -Wundefined-inline warning for inline functions which are used but not
defined. Fixes PR14993!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ExternalSemaSource.h
ema/MultiplexExternalSemaSource.h
ema/Sema.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
be507b6e72df8ab5e7d8c31eb4453e1bdf5fcfaf 01-Feb-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement [dcl.align]p5 and C11 6.7.5/4: alignas cannot underalign.
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
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
199402b9e081dedc28e19ab6e727470b34f2f64d 01-Feb-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> Enable -fno-altivec, -mno-altivec for PowerPC.

Introduces these negation forms explicitly and uses them to control a new
"altivec" target feature for PowerPC. This allows avoiding generating
Altivec instructions on processors that support Altivec.

The new test case verifies that the Altivec "lvx" instruction is not
used when -fno-altivec is present on the command line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174140 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a31f65b10e61ca8f2f427b1df176c10ea8a0efa2 01-Feb-2013 Michael Han <fragmentshaders@gmail.com> [Sema][Attr]Fix alignment attribute printing.

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
asic/Attr.td
ema/Sema.h
e1ebedf46e2a08635d08da093c31100e95ea9875 01-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: add more comments to CommentCommands.td

I hope the ASCII art delimiters are OK, since they group *groups* of commands --
that is really helpful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
17d15f3c3dad45f6df8034c9ea3e3c8ff466076c 01-Feb-2013 Dmitri Gribenko <gribozavr@gmail.com> Escape backslash in the comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
f843a580c4a54ca147f22422ee8ccfd2347784fc 01-Feb-2013 Fariborz Jahanian <fjahanian@apple.com> [Comment parsing] Add support for recognizing
\headerfile command and representing it in an xml
document. Patch reviewed by Dmitri Gribenko.
// rdar://12397511


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/CommentSema.h
33e83b6cf776875be5716d214710717a898325c0 31-Jan-2013 Jordan Rose <jordan_rose@apple.com> Revert "[analyzer] Model trivial copy/move ctors with an aggregate bind."

It's causing hangs on our internal analyzer buildbot. Will restore after
investigating.

This reverts r173951 / baa7ca1142990e1ad6d4e9d2c73adb749ff50789.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174069 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
c264e16a42b3f6c36521857a29ea0949d9781c22 31-Jan-2013 Tim Northover <Tim.Northover@arm.com> Add support for AArch64 target.

In cooperation with the LLVM patch, this should implement all scalar front-end
parts of the C and C++ ABIs for AArch64.

This patch excludes the NEON support also reviewed due to an outbreak of
batshit insanity in our legal department. That will be committed soon bringing
the changes to precisely what has been approved.

Further reviews would be gratefully received.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetCXXABI.h
asic/TargetInfo.h
903ef044e5fe8efe5d06f63945f903ae81a262fd 31-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Revert r174043 and tweak the comment wording so I'm (hopefully) not confused by it again!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174053 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8c84028ed9aa0dfd54ab729dee78f29c961d7f37 31-Jan-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Added outer template parameter lists to friend type AST nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
5917e2200106b6be70c2663824aec0ab6b1b1955 31-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Remove incorrect warning signs from QualType::getUnqualifiedType(). These
statements were only true for 65 CLs after they were introduced two years ago.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
29805ca6d278b4d9563adfee67f2478f0fecdcfc 31-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Improve 'failed template argument deduction' diagnostic for the case where we
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
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/TemplateDeduction.h
d1f09b482b3874be07dfe9dd24bfad98915989c3 31-Jan-2013 Douglas Gregor <dgregor@apple.com> Allow the computation of the base priority for a declaration code completion result to consider the completion context

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174037 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0efa62f2096f28a610ac2ea8d2651448a7ec89c7 31-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Replace "failed template argument deduction" diagnostic with something useful
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
asic/DiagnosticSemaKinds.td
ema/Overload.h
ema/TemplateDeduction.h
995e26b0523ac8e3b6199a509b871b81fa5df6ee 31-Jan-2013 Nick Lewycky <nicholas@mxc.ca> Remove elements from Sema.UndefinedInternals as functions are defined. Also
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
ema/ExternalSemaSource.h
ema/MultiplexExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
f2705196d83a162665d4350bf3bb464972974ee3 31-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Clarify the diagnostic for -Wnested-anon-types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174032 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7564bcca9f2a56bdbde3c6788d3f09cca0d8e312 30-Jan-2013 Tanya Lattner <tonic@nondot.org> Add OpenCL error that a kernel function must have void return type. Includes a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173963 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ac3a3e7a402cd349dd2b7d70cd92c5fe702ae831 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Make shallow mode more shallow.

Redefine the shallow mode to inline all functions for which we have a
definite definition (ipa=inlining). However, only inline functions that
are up to 4 basic blocks large and cut the max exploded nodes generated
per top level function in half.

This makes shallow faster and allows us to keep inlining small
functions. For example, we would keep inlining wrapper functions and
constructors/destructors.

With the new shallow, it takes 104s to analyze sqlite3, whereas
the deep mode is 658s and previous shallow is 209s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173958 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
taticAnalyzer/Core/AnalyzerOptions.h
6bbe1442a5f3f5f761582a9005e9edf1d49c4da2 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Use analyzer config for max-inlinable-size option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173957 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
taticAnalyzer/Core/AnalyzerOptions.h
86ff12c8a8a356ca284ca7687749216fbfd74519 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Move report false positive suppression to report visitors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173956 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
ce32890df08387b50a960f785da79ac5582b7f74 30-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Remove further references to analyzer-ipa.

Thanks Jordan!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173955 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
baa7ca1142990e1ad6d4e9d2c73adb749ff50789 30-Jan-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Model trivial copy/move ctors with an aggregate bind.

This is faster for the analyzer to process than inlining the constructor
and performing a member-wise copy, and it also solves the problem of
warning when a partially-initialized POD struct is copied.

Before:
CGPoint p;
p.x = 0;
CGPoint p2 = p; <-- assigned value is garbage or undefined

After:
CGPoint p;
p.x = 0;
CGPoint p2 = p; // no-warning

This matches our behavior in C, where we don't see a field-by-field copy.

<rdar://problem/12305288>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173951 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
19e448df800048314d2f54487c48a3b33231e291 30-Jan-2013 James Dennett <jdennett@google.com> Documentation: fix link to ExecuteAction(), which was previously typoed as
"ExecutionAction()".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173948 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
5bd1e5ba000023910ad986a16dd16d7ca914750a 30-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: resolve more named character references

This reimplements r173850 with a better approach:
(1) use a TableGen-generated matcher instead of doing a linear search;
(2) avoid allocations for new strings by converting code points to string
iterals with TableGen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/CommentHTMLNamedCharacterReferences.td
ST/CommentLexer.h
ST/Makefile
cb5620c9b213f4bd323912159fdddda35e258a14 30-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Move UTF conversion routines from clang/lib/Basic to llvm/lib/Support

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
asic/ConvertUTF.h
7586a6e6b7d79d4be031d2d0d6a35d5996cd0db9 30-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Semantic analysis and CodeGen support for C11's _Noreturn. This is modeled as
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
asic/Attr.td
e28f6abf588f51a21d1db638e460f9c086c08db4 30-Jan-2013 Douglas Gregor <dgregor@apple.com> Unresolved lookups can have using declarations that refer to
unresolved using declarations. Fixes PR14768 / <rdar://problem/13030296>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173883 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
74c2498bb9e339345ee32bdd095e76157cec3b86 30-Jan-2013 Jordan Rose <jordan_rose@apple.com> Don't warn about Unicode characters in -E mode.

People use the C preprocessor for things other than C files. Some of them
have Unicode characters. We shouldn't warn about Unicode characters
appearing outside of identifiers in this case.

There's not currently a way for the preprocessor to tell if it's in -E mode,
so I added a new flag, derived from the PreprocessorOutputOptions. This is
only used by the Unicode warnings for now, but could conceivably be used by
other warnings or even behavioral differences later.

<rdar://problem/13107323>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173881 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOutputOptions.h
ex/Preprocessor.h
1d87fbaeea4a9fbbd73b3a53641f59f1673098e5 30-Jan-2013 David Blaikie <dblaikie@gmail.com> Provide a fixit for constexpr non-static data members.

If the member has an initializer, assume it was probably intended to be static
and suggest/recover with that.

If the member doesn't have an initializer, assume it was probably intended to
be const instead of constexpr and suggest that.

(if the attempt to apply these changes fails, don't make any suggestion &
produce the same diagnostic experience as before. The only case where this can
come up that I know of is with a mutable constexpr with an initializer, since
mutable is incompatible with static (but it's already incompatible with
const anyway))

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
59fd63581d6d572f23e82e81a50e0b940c8d1089 30-Jan-2013 Daniel Dunbar <daniel@zuster.org> [Frontend] Remove HeaderSearchOptions::Entry::IsInternal, which is unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173866 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearchOptions.h
d09436c724baa1b11804d60e286ec0b9124489ee 30-Jan-2013 Daniel Dunbar <daniel@zuster.org> [Frontend] Remove actual ImplicitExternC member variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173860 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearchOptions.h
ef84554239d77cc52a14b42f2bff8c2d02e7630e 30-Jan-2013 Daniel Dunbar <daniel@zuster.org> [Frontend] Add an ExternCSystem include entry group.

- The only group where it makes sense for the "ExternC" bit is System, so this
simplifies having to have the extra isCXXAware (or ImplicitExternC, depending
on what code you talk to) bit caried around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173859 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearchOptions.h
658a115c8e0d5bddf607a13d2ce13cd306ef2389 30-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> [Doc parsing] Patch to parse Doxygen-supported HTML character
references to their UTIF-8 encoding. Reviewed offline by Doug.
// rdar://12392215


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
78d85b1c5830a881c0a20a1b3fea99ee73149590 30-Jan-2013 Chad Rosier <mcrosier@apple.com> [ubsan] Implement the -fcatch-undefined-behavior flag using a trapping
implementation; this is much more inline with the original implementation
(i.e., pre-ubsan) and does not require run-time library support.

The trapping implementation can be invoked using either '-fcatch-undefined-behavior'
or '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error', with the latter
being preferred. Eventually, the -fcatch-undefined-behavior' flag will be removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173848 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Sanitizers.def
river/Options.td
rontend/CodeGenOptions.def
a367e9de80eb05e78f06dc35c1e050799e735282 29-Jan-2013 David Blaikie <dblaikie@gmail.com> Move -Wstatic-float-init fixit into a note & don't recover as if constexpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173841 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
32d28ee6061930b2a9c170cbaaeea028c88a7b89 29-Jan-2013 Daniel Jasper <djasper@google.com> Move the token annotator into separate files.

No functional changes. Also removed experimental-warning from all of
clang-format's files, as it is no longer accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173830 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
a16355c31878403443f99077cc8df8318457faf5 29-Jan-2013 Chad Rosier <mcrosier@apple.com> [driver] Refactor the driver so that a failing commands doesn't prevent
subsequent commands from being executed.

The diagnostics generation isn't designed for this use case, so add a note to
fix this in the very near future. For now, just generated the diagnostics for
the first failing command.
Part of rdar://12984531

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173825 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
f1579605adf03f94a2ddddc95c764737ead0efe5 29-Jan-2013 Daniel Jasper <djasper@google.com> Allow all parameters on next line for function calls in Chrome.

The style guide only forbids this for function declarations. So,
now

someFunction(
aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaa, aaaaaaaaaaaa);

Is allowed in Chromium mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173806 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
98f988dc1bea127fbc2db76d9ffafdcf5f4435e4 29-Jan-2013 Joey Gouly <joey.gouly@arm.com> Add a diagnostic for an OpenCL kernel with a pointer pointer argument.
Also refactor the surrounding code a little.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a0109e284457c996d4eb8f231e01dda303d1a345 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Produce a diagnostic if alignas is applied to an expression. Neither C11 nor
C++11 allows that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
d03de6aaa312d57dcd6e2bc76bed1e89f5c5019d 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Downgrade 'attribute ignored when parsing type' from error to warning, to match
the diagnostic's warn_ name. Switch some places (notably C++11 attributes)
which really wanted an error over to a different diagnostic. Finally, suppress
the diagnostic entirely for __ptr32, __ptr64 and __w64, to avoid producing
diagnostics in important system headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
4cd81c5bf5957b2b10ddf253035f6e1596082108 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 [dcl.align]p1 and C11 6.7.5/2 rules for alignas and _Alignas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173779 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8f3aacc8c4849c9e0e7a236954725fffdeb917a6 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Propagate the spelling list index for an attribute across template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173768 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
33f04a208a1a6e73da73460142327ff05e8c391b 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Treat alignas and _Alignas as keyword attributes. This allows us to
pretty-print them properly (modulo the more general badness in alignment
attribute printing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173752 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
cda7968b38d76848b4fb24f7cc28ab83835b4ea3 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Actually remove the hack which was blocking the Borland-style attributes from
working, and add the missing attribute spellings. This brings _pascal,
_fastcall, _stdcall and _cdecl to life in -fborland-extensions mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
5cd532ca0bc1cb8110e24586d064f72332d8b767 29-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Replace AS_MSTypespec with AS_Keyword, for representing any attribute spelled
as a keyword. Rationalize existing attributes to use it as appropriate, and to
not lie about some __declspec attributes being GNU attributes. In passing,
remove a gross hack which was discarding attributes which we could handle. This
results in us actually respecting the __pascal keyword again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
a438b2d277fae00a4fa467ffcf382246e0a201e9 29-Jan-2013 John McCall <rjmccall@apple.com> Abstract the behavior of when to use base-class tail padding.

For fun, I added a comedy "actually obey the C++11 POD rules" option
which nobody is allowed to use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/TargetCXXABI.h
3a2b7a18a4504f39e3ded0d2b5749c5c80b8b9b5 28-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Finish semantic analysis for [[carries_dependency]] attribute.

This required plumbing through a new flag to determine whether a ParmVarDecl is
actually a parameter of a function declaration (as opposed to a function
typedef etc, where the attribute is prohibited). Weirdly, this attribute (just
like [[noreturn]]) cannot be applied to a function type, just to a function
declaration (and its parameters).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173726 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
ema/Scope.h
bde67cfdf05f7c569661e7a490b0b0811ac1ec56 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Undo my re-wording of the "ARC forbids Objective-C objects in ..."
error. Jordan is right.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4581d45405f07374770366be8644d52733985833 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Forbid the use of objects in unions in Objective-C++ ARC. Fixes
<rdar://problem/13098104>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
20c6f2eae500242d3aef5daaa55d440a0786a1fd 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Enable the global module index by default. Introduce the
-fno-modules-global-index -cc1 option to allow one to disable the
index for performance testing purposes, but with a 10% win in
-fsyntax-only time, there is no reason a user would do this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173707 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
894719bf99cf0131d954c714179bb47eee472b91 28-Jan-2013 Douglas Gregor <dgregor@apple.com> ASTReader and profiling statistics indicate that implementing a method
pool in the global module index is not worthwhile. Update comments to
limit the scope of the global module index to identifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173705 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/GlobalModuleIndex.h
95fb36ebddcbdcd6b801c5d3d2d85dac315b4127 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Add some more ASTReader statistics for global method pool lookups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173702 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
531b47c22e58146b2720677518bdd459eb0e907d 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Back out r173689. It doesn't matter when we're building with Clang anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173693 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d3cf5fba332fc77f7e72ef58077822606718671d 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Eliminate memory allocation from most invocations of
ModuleManager::visit() by keeping a free list of the two data
structures used to store state (a preallocated stack and a visitation
number vector). Improves -fsyntax-only performance for my modules test
case by 2.8%. Modules has pulled ahead by almost 10% with the global
module index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173692 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ModuleManager.h
d75ff6496bfb599a9edde41681873919d4d44152 28-Jan-2013 Daniel Jasper <djasper@google.com> Don't put a function's return type on its own line in Google style.

This would be against the style guide:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Function_Declarations_and_Definitions#Function_Declarations_and_Definitions

Not sure what to do as a last resort if the function signature does not
fit onto a single line in Google style ..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173690 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
b7551f71a4c5a901bbae72b0a80af3745b7a0c0d 28-Jan-2013 Douglas Gregor <dgregor@apple.com> Note that SrcMgr::SLocEntry's are POD-like, so SmallVector can do a
better job with them. Shaves off 0.7% of -fparse-only time for a
modules test case. Sure makes you wonder...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
3e335c118140c40b264a26b13e44af368514cb87 28-Jan-2013 Alexey Samsonov <samsonov@google.com> Print warning instead of error if optional ASan features are enabled w/o specifying -fsanitize=address

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173670 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticGroups.td
c5f7d6aed586fc492383255633c7ea5591256bfe 28-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add a -pedantic warning: an anonymous union within an anonymous union is not
permitted in standard C++, despite being silently accepted by many (all?) major
C++ implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bfec916e5fc40f22ac11267e78a024cd8dcf3bbf 27-Jan-2013 Jordan Rose <jordan_rose@apple.com> PR15067: Don't assert when a UCN appears in a C90 file.

Unfortunately, we can't accept the UCN as an extension because we're
required to treat it as two tokens for preprocessing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
9677eb864f7354f140cd1bf59557843851e65de4 26-Jan-2013 Enea Zaffanella <zaffanella@cs.unipr.it> Added ASTContext methods getIntPtrType and getUIntPtrType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173581 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7d9f07732b85f1b2989c640065512a6af9a0f49a 26-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Constify getOptionalExplicitTemplateArgs()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173575 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d615f88e3c24f91a65c25a4f7e66e0f97b18cc15 26-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Constify some getters of DesignatedInitExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
db55c04cb3384b192a418a840a9ba6321941fc0d 26-Jan-2013 Richard Trieu <rtrieu@google.com> Give a more informative error message when the dot or arrow operator is used
on a type. Currently, it gives a generic "expected unqualified-id" error.
The new error message is "cannot use (dot|arrow) operator on a type".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
7ba443aa8cfb222737d3a964a19ad4fb1328c4b5 26-Jan-2013 Richard Trieu <rtrieu@google.com> Highlight various parts of the AST dump with color. Colors are controlled by
-f(no-)color-diagnostics. In addition, dumpColor() function calls are added
to force color printing. No structural changes to -ast-dump.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/DeclBase.h
ST/Stmt.h
dede2fd56d053a114a65ba72583981ce7aab27da 26-Jan-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] bugreporter::getDerefExpr now takes a Stmt, not an ExplodedNode.

This allows it to be used in places where the interesting statement
doesn't match up with the current node. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173546 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
aeca2cc3a6f486abff3fdfb4e82903cd3ca4267e 26-Jan-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Add 'prune-paths' config option to disable path pruning.

This should be used for testing only. Path pruning is still on by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173545 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
7ee8906295d56ceb84b8b3da502cdc8770509868 26-Jan-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename PruneNullReturnPaths to SuppressNullReturnPaths.

"Prune" is the term for eliminating pieces of a path that are not
relevant to the user. "Suppress" means don't show that path at all.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173544 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
713b7c011869f177dc76e6df4f7f44b1bd073bb0 26-Jan-2013 Douglas Gregor <dgregor@apple.com> Since we're stuck with realpath for the header <-> module mapping,
factor the realpath calls into FileManager::getCanonicalName() so we
can cache the results of this epically slow operation. 5% speedup on
my modules test, and realpath drops out of the profile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
10442564e1ba3c4dfb184cc4e36beffbee4811c3 26-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: actually check for a block command after "\param x"

This fixes PR15068.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173539 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentParser.h
01a41140cd8ec9475ed0c33384310fbdd3b6de11 26-Jan-2013 Nick Lewycky <nicholas@mxc.ca> Preserve Sema::UndefinedInternals across PCH boundaries. Fixes
-Wundefined-internal warnings with PCH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173538 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/MultiplexExternalSemaSource.h
ema/Sema.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
3ac83d69c61238cd0d38e90fcdd03390530ab2fb 26-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> patch for PR9027 and // rdar://11861085
Title: [PR9027] volatile struct bug: member is not loaded at -O;
This is caused by last flag passed to @llvm.memcpy being false,
not honoring that aggregate has at least one 'volatile' data member
(even though aggregate itself has not been qualified as 'volatile'.
As a result, optimization optimizes away the memcpy altogether.
Patch review by John MaCall (I still need to fix up a test though).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
188bdcd1aaf5e9f457cec6851707d7dc3e7bbb15 26-Jan-2013 Douglas Gregor <dgregor@apple.com> Improve coordination between the module manager and the global module
index, optimizing the operation that skips lookup in modules where we
know the identifier will not be found. This makes the global module
index optimization actually useful, providing an 8.5% speedup over
modules without the global module index for -fsyntax-only.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173529 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/GlobalModuleIndex.h
erialization/ModuleManager.h
d5617eeafc93209a26b9f88276c88cf997c3a0a7 25-Jan-2013 John McCall <rjmccall@apple.com> The standard ARM C++ ABI dictates that inline functions are
never key functions. We did not implement that rule for the
iOS ABI, which was driven by what was implemented in gcc-4.2.
However, implement it now for other ARM-based platforms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/TargetCXXABI.h
b8b2c9da87e7d70a1679db026f40548b3192b705 25-Jan-2013 John McCall <rjmccall@apple.com> First pass at abstracting out a class for the target C++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173514 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetCXXABI.h
asic/TargetInfo.h
d07865b42dcb32154c75134fded51b38cc55a0c4 25-Jan-2013 Douglas Gregor <dgregor@apple.com> Optimize ModuleManager::visit() by precomputing the visitation order
and limiting ourselves to two memory allocations. 10% speedup in
-fsyntax-only time for modules.

With this change, we can actually see some performance different from
the global module index, but it's still about 1%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173512 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ModuleManager.h
909df54cc33153fb9f90c135d032722a19ce809c 25-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Add space after ';'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
78c28be6873965cce4026bbebef18c6224b5287d 25-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Improve diagnsotic further on integer overflow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
ae04222bc5143756c45c399cc8e504c8b12dc6fc 25-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> ConvertUTF.h: Suppress a warning with ptrdiff_t on i686. [-Wsign-compare]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
de72f105938486da23b66a08d1e7a1eeeb0b9e2b 25-Jan-2013 Nick Lewycky <nicholas@mxc.ca> Add missing InGroup for this warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173429 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b4b1d69f19f32e8aeb2ce1e0239c6e20a7f9e952 25-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Sync 'in class initialization of static const double' extension up with GCC,
and split it out of -Wgnu into its own warning flag.

* In C++11, this is now a hard error (GCC has no extension here in C++11 mode).
The error can be disabled with -Wno-static-float-init, and has a fixit to
add 'constexpr'.

* In C++98, this is still an ExtWarn, but is now controlled by
-Wstatic-float-init as well as -Wgnu.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173414 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
eab6652b7e417c8e46b21c7d340f3a7d41492d6e 25-Jan-2013 Daniel Dunbar <daniel@zuster.org> [Frontend] Remove another IsUserSpecified member variable that is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173412 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearchOptions.h
1ea6bc0fd9c1ff9fa03e8a829a79c4167445d503 25-Jan-2013 Daniel Dunbar <daniel@zuster.org> [Lex] Remove DirectoryLookup.UserSpecified, which is unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173409 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
1a49d97d762570027863e9209af81d445e4f1502 25-Jan-2013 Douglas Gregor <dgregor@apple.com> Implement the reader of the global module index and wire it into the
AST reader.

The global module index tracks all of the identifiers known to a set
of module files. Lookup of those identifiers looks first in the global
module index, which returns the set of module files in which that
identifier can be found. The AST reader only needs to look into those
module files and any module files not known to the global index (e.g.,
because they were (re)built after the global index), reducing the
number of on-disk hash tables to visit. For an example source I'm
looking at, we go from 237844 total identifier lookups into on-disk
hash tables down to 126817.

Unfortunately, this does not translate into a performance advantage.
At best, it's a wash once the global module index has been built, but
that's ignore the cost of building the global module index (which
is itself fairly large). Profiles show that the global module index
code is far less efficient than it should be; optimizing it might give
enough of an advantage to justify its continued inclusion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173405 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/GlobalModuleIndex.h
f575d6e7c3b887ea4c5394d2c7e322c7a929a57e 25-Jan-2013 Douglas Gregor <dgregor@apple.com> Rename the -cc1 option "-generate-module-index" to
"-fmodules-global-index" and expand its behavior to include both the
use and generation of the global module index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173404 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
erialization/ASTReader.h
e169807aaea2464cbe68305f013ec7b41625af30 25-Jan-2013 Douglas Gregor <dgregor@apple.com> Track the number of lookups and hits into the on-disk hash tables for
identifiers within the AST file reader.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173403 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
d4497dde6fc8f5ce79e0ec37682b8dc920bbbef0 25-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Clean up: since we have FunctionDecl::IsInline, make it store the right value
for template instantiations, and use it to simplify the implementation of
FunctionDecl::isInlined().

This incidentally changes the result of isInlined on a declared-but-not-defined
non-inline member function from true to false. This is sort of a bug fix, but
currently isInlined is only called on function definitions, so it has no visible
effects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b8ccd43dbf762935c9202f6f4e3343afb2318725 25-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Fixup for r173385 and r173386 - initialize the members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173392 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
a7972a08e0fb16e5e7e8364ab6fc8889debf18ab 25-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Fixes text of diagnostics in integer overflow patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
d130140cb7bce73b4350c5d50495443abe38418a 25-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Add "-analyzer-config mode=[deep|shallow] ".

The idea is to introduce a higher level "user mode" option for
different use scenarios. For example, if one wants to run the analyzer
for a small project each time the code is built, they would use
the "shallow" mode.

The user mode option will influence the default settings for the
lower-level analyzer options. For now, this just influences the ipa
modes, but we plan to find more optimal settings for them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173386 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
bfa9ab8183e2fdc74f8633d758cb0c6201314320 25-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Replace "-analyzer-ipa" with "-analyzer-config ipa".

The idea is to eventually place all analyzer options under
"analyzer-config". In addition, this lays the ground for introduction of
a high-level analyzer mode option, which will influence the
default setting for IPAMode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173385 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Analyses.def
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
73f0563009a6715a5d3d41f664f5bfab5096d51f 25-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] refactor: access IPAMode through the accessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173384 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
ad48a500596d7d678b99c7f94326cfa856c3b49f 24-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Patch to check for integer overflow. It has been
commented on and approved by Richard Smith.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticASTKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
6c23bd2890acdc87b9d52ac65108d36ecb703c0b 24-Jan-2013 Jordan Rose <jordan_rose@apple.com> Move 'convertUTF8Sequence' helper into the C++ section of the header file.

It's annotated as "inline", but ConvertUTF.c should still be able to compile
as C89.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
b87672b124ab4fbe6f2cabc2ad71655fc71230ea 24-Jan-2013 Jordan Rose <jordan_rose@apple.com> Add a fixit for \U1234 -> \u1234.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
c7629d941557f7179eb8fa8a2e2a74d749cbaf7c 24-Jan-2013 Jordan Rose <jordan_rose@apple.com> Handle universal character names and Unicode characters outside of literals.

This is a missing piece for C99 conformance.

This patch handles UCNs by adding a '\\' case to LexTokenInternal and
LexIdentifier -- if we see a backslash, we tentatively try to read in a UCN.
If the UCN is not syntactically well-formed, we fall back to the old
treatment: a backslash followed by an identifier beginning with 'u' (or 'U').

Because the spelling of an identifier with UCNs still has the UCN in it, we
need to convert that to UTF-8 in Preprocessor::LookUpIdentifierInfo.

Of course, valid code that does *not* use UCNs will see only a very minimal
performance hit (checks after each identifier for non-ASCII characters,
checks when converting raw_identifiers to identifiers that they do not
contain UCNs, and checks when getting the spelling of an identifier that it
does not contain a UCN).

This patch also adds basic support for actual UTF-8 in the source. This is
treated almost exactly the same as UCNs except that we consider stray
Unicode characters to be mistakes and offer a fixit to remove them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
asic/DiagnosticLexKinds.td
ex/Lexer.h
ex/Token.h
5209e2bc4d18e679dcacfd6f6a0120aa1d4a757f 24-Jan-2013 Jordan Rose <jordan_rose@apple.com> Unify diagnostics for \x, \u, and \U without any following hex digits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173368 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ae07378ff9bf4af9bdd97a4607437ace4c32b7e7 24-Jan-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add an error when trying to compile MS-style inline assembly
for an unsupported architecture.
rdar://13063988

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d718635fa805674aaba5d938f3dc6b35b8632ba 24-Jan-2013 Chad Rosier <mcrosier@apple.com> [driver] Associate a JobAction with each result file. This enables the driver
to delete result files for only those commands that fail.
Part of rdar://12984531

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173361 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Util.h
51d8c52ad36129760eaa586f85176037e2cd0d0e 24-Jan-2013 Michael Han <fragmentshaders@gmail.com> PR14922: when printing an attribute, use the real syntax of the attribute (GNU, C++11, MS Declspec) instead of hardcoded GNU syntax.

Introduce a spelling index to Attr class, which is an index into the attribute spelling list of an attribute defined in Attr.td.
This index will determine the actual spelling used by an attribute, as it incorporates both the syntax and naming of the attribute.
When constructing an attribute AST node, the spelling index is computed based on attribute kind, scope (if it's a C++11 attribute), and
name, then passed to Attr that will use the index to print itself.

Thanks to Richard Smith for the idea and review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173358 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ema/AttributeList.h
ema/CMakeLists.txt
ema/Makefile
ema/Sema.h
bcac91aafc226f6ea505b3117cc55f566ad48f2d 24-Jan-2013 Nick Lewycky <nicholas@mxc.ca> Give warn_redecl_library_builtin a flag name: -Wincompatible-library-redeclaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a6b00fc97669aa25d89ae9f202b05dfadfd0e324 23-Jan-2013 Douglas Gregor <dgregor@apple.com> Implement the writer side of the global module index.

The global module index is a "global" index for all of the module
files within a particular subdirectory in the module cache, which
keeps track of all of the "interesting" identifiers and selectors
known in each of the module files. One can perform a fast lookup in
the index to determine which module files will have more information
about entities with a particular name/selector. This information can
help eliminate redundant lookups into module files (a serious
performance problem) and help with creating auto-import/auto-include
Fix-Its.

The global module index is created or updated at the end of a
translation unit that has triggered a (re)build of a module by
scraping all of the .pcm files out of the module cache subdirectory,
so it catches everything. As with module rebuilds, we use the file
system's atomicity to synchronize.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173301 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
erialization/GlobalModuleIndex.h
630f4bb9f12e330438281c4e46deb6656620b73a 23-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Implement -Wvla correctly

GCC implements -Wvla as "warn on every VLA" (this is useful to find every VLA,
for example, if they are forbidden by coding guidelines). Currently Clang
implements -Wvla as "warn on VLA when it is an extension".

The attached patch makes our behavior match GCC. The existing vla extwarn is
moved under -Wvla-extension and is still included into -Wgnu.

This fixes PR5953.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
89cf425f1136f8d24a64ed94450e488b6794dfa4 23-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Use 'const Decl *' throughout code completion in Sema


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173277 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
8441fffda14c5d9ac704f24173fcb117d4999a8e 23-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Add constness for NestedNameSpecifier::Create parameter


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173274 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
b76d9718caea48b9333979b3da6f3a80110840cb 23-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Constify some getters in RedeclarableTemplateDecl


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
19dbb20ac4371fae3190379a7e7bd467af3c00aa 23-Jan-2013 Joey Gouly <joey.gouly@arm.com> Add a new LangOpt NativeHalfType. This option allows for native half/fp16
operations (as opposed to storage only half/fp16).

Also add some semantic checks for OpenCL half types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173254 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/LangOptions.def
8f4bd7a20f89d9065bebadd270e6bc7822257d37 23-Jan-2013 Daniel Jasper <djasper@google.com> Add option to allow putting all parameters onto the next line.

This only affects styles where BinPackParameters is false.

With AllowAllParametersOnNextLine:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
aaaaaaaaaa, aaaaaaaaaa, aaaaaaaaaa, aaaaaaaaaaa, aaaaaaaaaaa);

Without it:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaa,
aaaaaaaaaa,
aaaaaaaaaa,
aaaaaaaaaaa,
aaaaaaaaaaa);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173246 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
18f43a62134eca1cd830a5b289f4bee4e6ee42fe 23-Jan-2013 James Dennett <jdennett@google.com> Documentation cleanup: fixing documentation for FrontendAction.
* Fix a typo, s/BeginSourceAction/BeginSourceFile/, so that the documentation
for FrontendAction::BeginSourceFileAction links correctly to BeginSourceFile;
* Add some basic \file documentation for FrontendAction.h;
* More use of "\brief" instead of repeating the name of the entity being
documented;
* Stop using Doxygen-style "///" comments in FrontendAction.cpp, as they were
polluting the documentation for BeginSourceFile;
* Drop incorrect "\see" markup that broke Doxygen's formatting;
* Other minor documentation fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173213 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
b2e2157f905b0b6e27f1d3f5e1f38778c6731813 22-Jan-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove the -fenable-experimental-ms-inline-asm flag. MS-style
inline assembly can be enable with -fasm-blocks or -fms-extensions alone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173186 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
d6ec47363870cefac1c8d136a5011abbf3a4a786 22-Jan-2013 Ted Kremenek <kremenek@apple.com> Split "discards qualifiers" warnings of -Wincompatible-pointer-types into subgroup.

This allows users to promote -Wincompatible-pointer-type warnings to
errors but keep those for "discard qualifiers" as warnings (if they
so desire).

Addresses <rdar://problem/13062738>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3548068c22f809e5bc64b83d2c3622018469256c 22-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Small code change to improve performance
in my last patch, suggested by Argyrios.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173182 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
48f3cc2b2be1d32df14234904539b34e6e387e4a 22-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> objectiveC (take two): don't warn when in -Wselector mode and
an unimplemented selector is consumed by
"respondsToSelector:". // rdar://12938616


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173179 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
c666cf404d37d6624a4efdf06cc2f9f1995cfe9c 22-Jan-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove a warning about ms-style inline assembly not being
supported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9ec55f24b8f848bb37a9971100cf2fca379d5572 22-Jan-2013 Tim Northover <Tim.Northover@arm.com> Switch to APFloat constructor taking fltSemantics.

This change also makes the serialisation store the required semantics,
fixing an issue where PPC128 was always assumed when re-reading a
128-bit value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
erialization/ASTReader.h
f11ccc1cbb26cacac36abebe6ce9add43bf32585 21-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> objectiveC: don't warn when in -Wselector mode and
an unimplemented selector is consumed by
"respondsToSelector:". // rdar://12938616


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173097 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
15bb58edc9d053aa49c28167deb41ff0409ddabc 21-Jan-2013 Stephen Hines <srhines@google.com> Merge commit 'd130fd2e141f1fef412c2d58e7385370801bd718' into merge-llvm

Conflicts:
lib/Basic/Targets.cpp

Change-Id: I90a669a33ffe4de8b32c8459016fd0b2a55da0ad
cc71dbee441e97285e86bff48eecfbeab82de7ce 21-Jan-2013 Douglas Gregor <dgregor@apple.com> Give ModuleFiles an index, so that we can use indexed vectors rather
than DenseMaps and SmallPtrSets for module-visitation data. ~2.6%
speedup for modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173081 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/Module.h
b892d7010f9c2c61e2f3a2686546cbfbffbedef3 21-Jan-2013 Douglas Gregor <dgregor@apple.com> Eliminate Sema::CompareProperties(), which was walking over a pile of
lexical declarations looking for properties when we could more
efficiently check for property mismatches at property declaration
time. Good for ~1% of -fsyntax-only time when most of the properties
we're checking against come from an AST file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173079 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
aabd094cf694039fe823987e133af7ac25cb9711 21-Jan-2013 Douglas Gregor <dgregor@apple.com> Eliminate the oddly-named Sema::ComparePropertiesInBaseAndSuper, which
did a redundant traversal of the lexical declarations in the
superclass. Instead, when we declare a new property, look into the
superclass to see whether we're redeclaring the property. Goot for 1%
of -fsyntax-only time on Cocoa.h and a little less than 3% on my
modules test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173073 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8222b8951da749d4f086d7b39de5ff0221297509 21-Jan-2013 Douglas Gregor <dgregor@apple.com> Revert r173056; it breaks one of the CodeGen-with-PCH tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173058 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
c44cc015a8525e9b7d81a1f1cc1b6e827cfe6762 21-Jan-2013 Douglas Gregor <dgregor@apple.com> When loading an identifier from an AST file solely for the purpose of
forming the identifier, e.g., as part of a selector or a declaration
name, don't actually deserialize any information about the
identifier. Instead, simply mark it "out-of-date" and we'll load the
the information on demand. 2% speedup on the modules testcase I'm
looking at; should also help PCH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173056 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
5a04f9fc2b000da98fd903c8156034304bdadb2f 21-Jan-2013 Douglas Gregor <dgregor@apple.com> Introduce a fast path for the ASTReader's name lookup within a
DeclContext. When the DeclContext is of a kind that can only be
defined once and never updated, we limit the search to the module file
that conatins the lookup table. Provides a 15% speedup in one
modules-heavy source file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173050 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
6de6aab8248ef67d3a65018d4ad26f51ac35b3d3 21-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> AST/VTableBuilder.h: Suppress a warning. [-Wunused-private-field]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173041 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
649c7316aa29181df7270732722fe5d07ab3c7ad 21-Jan-2013 Timur Iskhodzhanov <timurrrr@google.com> First step towards vftable generation with -cxx-abi microsoft PR13231

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
445743dec72f675070d4789c348607cd8cbf6090 21-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Add a fixit for _Noreturn main,
add tests for fixits removing static and inline from main


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173024 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d9e26f59c25528b9de3c3f3939962a211a9a786d 20-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> Prune unused diagnostics.

Courtesy of utils/find-unused-diagnostics.sh.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticSerializationKinds.td
4bdc60434c79126b75aee2bb391275f3bb746364 20-Jan-2013 Alexey Samsonov <samsonov@google.com> Add top-level Clang flag -f(no-)sanitize-address-zero-base-shadow that makes AddressSanitizer use bottom of the address space for the shadow memory. On Linux it can be used with -fPIE/-pie to improve performance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172974 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
e6b9d802fb7b16d93474c4f1c179ab36202e8a8b 20-Jan-2013 Guy Benyei <guy.benyei@intel.com> Implement OpenCL event_t as Clang builtin type, including event_t related OpenCL restrictions (OpenCL 1.2 spec 6.9)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/OperationKinds.h
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
ema/Initialization.h
erialization/ASTBitCodes.h
d47afb96a3f988e6d21a92fe4dfe875ab227c7c0 20-Jan-2013 Sean Silva <silvas@purdue.edu> Nuke SetUpBuildDumpLog.

Also, it was the only reason that `argc` and `argv` were being passed
into createDiagnostics, so remove those parameters and clean up callers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172945 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticOptions.h
river/CC1Options.td
rontend/CompilerInstance.h
ooling/Tooling.h
99a5af0088b6340540912921cd0008ac75051a33 20-Jan-2013 Chris Lattner <sabre@nondot.org> convert some more stuff over to use new cursor APIs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172932 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
39371b8bbf1bb54bcadef74cffefc98ca8f00b76 19-Jan-2013 Ted Kremenek <kremenek@apple.com> Reapply r172878 with test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172888 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
dc1088f6201c3fb8f3f97f54c343f7d163fbec06 19-Jan-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/Modules] Revert r172843, it caused a module to fail building.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172884 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTReader.h
1dfebd9f995066a229c34516eb14bc69c6bcde2c 19-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Suppress warnings coming out of macros defined in sys/queue.h

Suppress the warning by just not emitting the report. The sink node
would get generated, which is fine since we did reach a bad state.

Motivation

Due to the way code is structured in some of these macros, we do not
reason correctly about it and report false positives. Specifically, the
following loop reports a use-after-free. Because of the way the code is
structured inside of the macro, the analyzer assumes that the list can
have cycles, so you end up with use-after-free in the loop, that is
safely deleting elements of the list. (The user does not have a way to
teach the analyzer about shape of data structures.)

SLIST_FOREACH_SAFE(item, &ctx->example_list, example_le, tmpitem) {
if (item->index == 3) { // if you remove each time, no complaints
assert((&ctx->example_list)->slh_first == item);
SLIST_REMOVE(&ctx->example_list, item, example_s, example_le);
free(item);
}
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172883 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
6adfff14ee7eaaf50af00bcb793a79e7d82f1265 19-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r172878, "Reword warning about using a *static* variable within its own initialization."

It broke, at least, linux, msvc and mingw bots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1bdac1d447f0a9e8db97ed5598d15174bc00e5e1 19-Jan-2013 Ted Kremenek <kremenek@apple.com> Reword warning about using a *static* variable within its own initialization.

The warning is still under -Wuninitialized (although technically this
is defined behavior), but under a subgroup -Wstatic-self-init.

This addresses PR 10265.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172878 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cd6bfd0d020c416fbe411678f2f100fde6112b4e 18-Jan-2013 Jordan Rose <jordan_rose@apple.com> Fix mismatched #endif.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
22eaced5cac3cf0522c953f593419fc6cf184aaf 18-Jan-2013 Douglas Gregor <dgregor@apple.com> Once we've collected the template arguments for a
partially-substituted parameter pack in a template, forget about the
partially-substituted parameter pack: it is now completed. Fixes
<rdar://problem/12176336>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172859 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
f953276b6165dc7e8f4679cce4d0e7c649cd4232 18-Jan-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/Modules] Re-apply r172620 and r172629, now with 100% less infinite loops!

Makes sure that a deserialized macro is only added to the preprocessor macro definitions only once.
Unfortunately I couldn't get a reduced test case.

rdar://13016031

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172843 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTReader.h
4f45bc099f2665bc6e4bcbb169aa452390dbf3fe 18-Jan-2013 Will Dietz <wdietz2@illinois.edu> [ubsan] Add support for -fsanitize-blacklist

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172808 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/LangOptions.h
d3b036efdf0bf4ec216c701183a4b990cd041cd6 18-Jan-2013 Douglas Gregor <dgregor@apple.com> Revert Clang r172620 and r172629, which caused a hang when building
complicated modules (<rdar://problem/13038265>). Unfortunately, this
un-fixes <rdar://problem/13016031>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172783 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTReader.h
ba57183965f117279342903edec19766e478c9a8 18-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Some builtins do not evaluate their arguments. Teach EvaluatedExprVisitor not
to visit them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172769 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ST/Expr.h
asic/Builtins.def
asic/Builtins.h
02dd79830979e6d83d4420377e8f4c9e4a77439b 18-Jan-2013 Douglas Gregor <dgregor@apple.com> In Objective-C ARC, completely ignore ownership qualifiers on the
return type of a function by canonicalizing them away. They are
useless anyway, and conflict with our rules for template argument
deduction and __strong. Fixes <rdar://problem/12367446>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
de03c15ad92b44a4be11507ca2501bb9dd014dce 17-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Parsing support for C11's _Noreturn keyword. No semantics yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172761 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/TokenKinds.def
ema/DeclSpec.h
0234179282d59e6dfccc8b2da72a9a71bf5b6ac3 17-Jan-2013 Kevin Enderby <enderby@apple.com> We want the dwarf AT_producer for assembly source files to match clang's
AT_producer. Which includes clang's version information so we can tell
which version of the compiler was used.

This is second of the two steps to allow us to do this. The first was a
change to llvm-mc with revision 172630 to provide a method to set the
AT_producer string. This second step has the clang driver passing the value
of getClangFullVersion() via the new flag -dwarf-debug-producer when invoking
the integrated assembler on assembly source files. Then using the new
setDwarfDebugProducer() method to set the AT_producer string.

rdar://12888242


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172758 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
b8b5cbc169c9f6c523ada0d37dd126f7af65f3f8 17-Jan-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Extend the Sema interface to get the size and length of a
VarDecl.
Part of rdar://12576868

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172742 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
617bb317a7aeb6c3468a4170a5d6c1058da7cea1 17-Jan-2013 Joey Gouly <joey.gouly@arm.com> Add some semantic checks for OpenCL. Variadic macros, VLAs and bitfields are not supported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172732 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
aab60054553c35f6761cf96f3476997f250f1f4a 17-Jan-2013 Nico Weber <nicolasweber@gmx.de> Revert most of r172140.

r172140 changed the formatter to produce "-(id) foo" instead of "- (id)foo"
in google style, with a link to
http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#Method_Declarations_and_Definitions
as reference. But now that I look at that link again, it seems I didn't
read it very carefully the first time round.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172703 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
93c8617bec98aeb769ee9f569d7ed439eec03249 17-Jan-2013 David Blaikie <dblaikie@gmail.com> ArrayRef-ize some ctor initializer related APIs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172701 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
cd8ab51a44e80625d84126780b0d85a7732e25af 17-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 semantics for [[noreturn]] attribute. This required splitting
it apart from [[gnu::noreturn]] / __attribute__((noreturn)), since their
semantics are not equivalent (for instance, we treat [[gnu::noreturn]] as
affecting the function type, whereas [[noreturn]] does not).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/Attr.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
6c3af3d0e3e65bcbca57bfd458d684941f6d0531 17-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wunsequenced (with compatibility alias -Wsequence-point) to warn on
expressions which have undefined behavior due to multiple unsequenced
modifications or an unsequenced modification and use of a variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172690 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
a6f97071338e525d18e607ca286e338639dd2a5e 17-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Implement a fixit for -Wmain-return-type


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1c2397539d1b105eacee2a69ece4775d0af45618 17-Jan-2013 Matt Beaumont-Gay <matthewbg@google.com> Fix a typo introduced in r172665.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172682 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a44b97004298a4eb7c270009ea4cb12aad49c543 17-Jan-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [objcmt] Rewrite a NSDictionary dictionaryWithObjects:forKeys: to a dictionary literal
if we can see the elements of the arrays.

for example:

NSDictionary *dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", @"2", nil] forKeys:[NSArray arrayWithObjects:@"A", @"B", nil]];

-->

NSDictionary *dict = @{ @"A" : @"1", @"B" : @"2" };

rdar://12428166

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NSAPI.h
dit/Rewriters.h
d329724745b49f894b768d47275b7c2713106e89 17-Jan-2013 Douglas Gregor <dgregor@apple.com> Rework the traversal of Objective-C categories and extensions to
consider (sub)module visibility.

The bulk of this change replaces myriad hand-rolled loops over the
linked list of Objective-C categories/extensions attached to an
interface declaration with loops using one of the four new category
iterator kinds:

visible_categories_iterator: Iterates over all visible categories
and extensions, hiding any that have their "hidden" bit set. This is
by far the most commonly used iterator.

known_categories_iterator: Iterates over all categories and
extensions, ignoring the "hidden" bit. This tends to be used for
redeclaration-like traversals.

visible_extensions_iterator: Iterates over all visible extensions,
hiding any that have their "hidden" bit set.

known_extensions_iterator: Iterates over all extensions, whether
they are visible to normal name lookup or not.

The effect of this change is that any uses of the visible_ iterators
will respect module-import visibility. See the new tests for examples.

Note that the old accessors for categories and extensions are gone;
there are *Raw() forms for some of them, for those (few) areas of the
compiler that have to manipulate the linked list of categories
directly. This is generally discouraged.

Part two of <rdar://problem/10634711>.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
31672b1745195d709b641f1c0f44e203742fa73b 16-Jan-2013 Aaron Ballman <aaron@aaronballman.com> No longer crashing with an assert when __has_include or __has_include_next is used outside of a preprocessor directive. This fixes PR14837.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
7dfd18275259df609f8574a25302fc73a000aa64 16-Jan-2013 Reed Kotler <rkotler@mips.com> First step in implementation of mips16 and nomips16 attributes.
Waiting for new llvm attribute code for the next step.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
7f69b1ab4f63ded511dddd7fb7e1cd8860757016 16-Jan-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/Modules] Change how macro [re]definitions are de/serialized.

Previously we would serialize the macro redefinitions as a list, part of
the identifier, and try to chain them together across modules individually
without having the info that they were already chained at definition time.

Change this by serializing the macro redefinition chain and then try
to synthesize the chain parts across modules. This allows us to correctly
pinpoint when 2 different definitions are ambiguous because they came from
unrelated modules.

Fixes bogus "ambiguous expansion of macro" warning when a macro in a PCH
is redefined without undef'ing it first.

rdar://13016031

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172620 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTReader.h
0df6acdf4f6faf7579775a739e1c09448c076c0f 16-Jan-2013 Daniel Jasper <djasper@google.com> Add option to avoid "bin-packing" of parameters.

"Bin-packing" here means allowing multiple parameters on one line, if a
function call/declaration is spread over multiple lines.

This is required by the Chromium style guide and probably desired for
the Google style guide. Not making changes to LLVM style as I don't have
enough data.

With this enabled, we format stuff like:
aaaaaaaaaaaaaaa(aaaaaaaaaa,
aaaaaaaaaa,
aaaaaaaaaaaaaaaaaaaaaaa).aaaaaaaaaaaaaaaaaa();

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172617 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
64eb070234bc4cd4fd2debf3a91c6e2d8f0d32d8 16-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Refactor: parameter rename.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172595 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
f43b7214e812ddca74a6213608c69c960e067956 16-Jan-2013 Douglas Gregor <dgregor@apple.com> Add -fmodules-autolink/-fno-modules-autolink (defaults to on) so that
users can explicitly enable/disable modules autolinking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172592 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
f4d918fdf7da64215db8abe63945798c66e6d132 15-Jan-2013 Douglas Gregor <dgregor@apple.com> When checking availability attributes for consistency between an
overriding and overridden method, allow the overridden method to have
a narrower contract (introduced earlier, deprecated/obsoleted later)
than the overriding method. Fixes <rdar://problem/12992023>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172567 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
50a70cd11801fd9a700d06e447095249c34c261f 15-Jan-2013 Douglas Gregor <dgregor@apple.com> Add -fopenmp -cc1 option and wire it up to define _OPENMP, from Alexey Bataev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172509 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
08e79d2f075d1326ff7a849fd1bc88dadf99d574 15-Jan-2013 Chad Rosier <mcrosier@apple.com> [driver] Warnings for warning options are handled by the frontend. The driver needs to process the
warning options to setup diagnostic state, but should not be emitting warnings as these would be
rudndant with what the frontend emits.
rdar://13001556

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172497 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
419563768ef4929a622d7c2b066856e82901bb91 14-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Refactor to call ActOnFinishFullExpr on every full expression. Teach
ActOnFinishFullExpr that some of its checks only apply to discarded-value
expressions. This adds missing checks for unexpanded variadic template
parameter packs to a handful of constructs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172485 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7c9dbb76f6847fb30527c8e74ef9a25a3d4eb731 14-Jan-2013 Michael Gottesman <mgottesman@apple.com> Multiprecision subtraction builtins.

We lower these into 2x chained usub.with.overflow intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
bdc691f1d61765dd806d5ae3b75ae004f676a7c9 14-Jan-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Add ProgramStatePartialTrait<const void *>.

This should fix cast-away-const warnings reported by David Greene.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172446 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
469e73035c745f39edf7fe882edb09c06559e581 14-Jan-2013 Jordan Rose <jordan_rose@apple.com> [analyzer] Fix cast-away-const warning by using const_cast.

Patch by David Greene, modified by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172445 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
8767dc29ec23f96e71658f760333bdf5d87283d5 14-Jan-2013 Douglas Gregor <dgregor@apple.com> Infer "link" lines for top-level frameworks. Essentially, a framework
will have a shared library with the same name as its framework (and no
suffix!) within its .framework directory. Detect this both when
inferring the whole top-level framework and when parsing a module map.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172439 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
b6cbe517237c3c223beb064d60d5b49e56d65c06 14-Jan-2013 Douglas Gregor <dgregor@apple.com> Implement parsing, AST, (de-)serialization, and placeholder global
metadata for linking against the libraries/frameworks for imported
modules.

The module map language is extended with a new "link" directive that
specifies what library or framework to link against when a module is
imported, e.g.,

link "clangAST"

or

link framework "MyFramework"

Importing the corresponding module (or any of its submodules) will
eventually link against the named library/framework.

For now, I've added some placeholder global metadata that encodes the
imported libraries/frameworks, so that we can test that this
information gets through to the IR. The format of the data is still
under discussion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/Module.h
erialization/ASTBitCodes.h
6f5bb2c93c31a7977382c5079d85db8ca3267cd0 14-Jan-2013 Daniel Jasper <djasper@google.com> Make single-line if statements optional.

Now, "if (a) return;" is only allowed, if this option is set.

Also add a Chromium style which is currently identical to Google style
except for this option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172431 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
a4ae9f30ef7bccdaa3feef8036af07fbb91f107c 14-Jan-2013 Alexander Kornienko <alexfh@google.com> Custom DiagnosticConsumer parameter of reformat() + silence diagnostics in unit tests.

Summary:
Added tests for clang-format diagnostics. Added DiagnosticConsumer
argument to clang::format::reformat().

Reviewers: klimek, djasper

Reviewed By: djasper

CC: cfe-commits, thakis, rafael.espindola

Differential Revision: http://llvm-reviews.chandlerc.com/D290

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172399 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
f7a052732c2b6c82f74708038f75fa92c9b4dba0 14-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Accept [[gnu::*]] for all __attribute__((*))s which are:
1) Supported by Clang, and
2) Supported by GCC, and
3) Documented in GCC's manual.

g++ allows its C++11-style attributes to appertain only to the entity being
declared, and never to a type (even for a type attribute), so we do the same.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172382 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
b3958476b21702a15f64f09d2862506d03dffe7b 14-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Constify argument of Preprocessor::getMacroInfoHistory and propagate to
callers, removing unneeded const_cast


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172372 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ema/CodeCompleteConsumer.h
1c030e9a3f290a1eea5de82fe1e63dfde2bd8f1e 13-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> ArrayRef'ize Sema APIs related to format string checking


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172367 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a5bec298d96f7eb5309df5aab9d19eb7f8b75a81 13-Jan-2013 Michael J. Spencer <bigcheesegs@gmail.com> Fix LLP64 build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172357 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0cf07bcc6c53f1df421d4c40ce52d43e8d8adcd3 13-Jan-2013 Michael Gottesman <mgottesman@apple.com> Added builtins for multiprecision adds.

We lower all of these intrinsics into a 2x chained usage of
uadd.with.overflow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172341 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
1b65fe5ce35d330faf3c048dab2d9f931b2de1c8 12-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Prune an unused diagnostic, detected after improving the script in r172330


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6c5d631deefb9c33df0dc415048bbf40234024cc 12-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove unused diagnostics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172326 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cfa88f893915ceb8ae4ce2f17c46c24a4d67502f 12-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove useless 'llvm::' qualifier from names like StringRef and others that are
brought into 'clang' namespace by clang/Basic/LLVM.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Comment.h
ST/Decl.h
ST/DeclBase.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/LambdaMangleContext.h
ST/Stmt.h
ST/StmtCXX.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
nalysis/Analyses/ThreadSafety.h
nalysis/Analyses/UninitializedValues.h
nalysis/CallGraph.h
nalysis/ProgramPoint.h
asic/DiagnosticIDs.h
asic/DiagnosticOptions.h
asic/Module.h
asic/PartialDiagnostic.h
asic/SourceManager.h
asic/TargetInfo.h
river/Driver.h
rontend/LayoutOverrideSource.h
rontend/LogDiagnosticPrinter.h
rontend/SerializedDiagnosticPrinter.h
rontend/TextDiagnosticPrinter.h
ex/HeaderSearch.h
ex/HeaderSearchOptions.h
ex/ModuleLoader.h
ex/ModuleMap.h
ex/Preprocessor.h
ex/PreprocessorOptions.h
arse/Parser.h
ema/DeclSpec.h
ema/DelayedDiagnostic.h
ema/MultiplexExternalSemaSource.h
ema/Overload.h
ema/ScopeInfo.h
ema/Sema.h
ema/TypoCorrection.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/ModuleManager.h
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
ooling/CommonOptionsParser.h
ooling/CompilationDatabase.h
ooling/FileMatchTrie.h
ooling/JSONCompilationDatabase.h
ooling/Refactoring.h
ooling/Tooling.h
9946fc735d7285f2195f89635370f534afd9877e 12-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Add missing includes and forward declarations so that headers don't depend on
other headers included before them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172320 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclLookups.h
ST/StmtCXX.h
STMatchers/ASTTypeTraits.h
nalysis/Analyses/UninitializedValues.h
asic/MacroBuilder.h
asic/OnDiskHashTable.h
asic/TargetOptions.h
ex/ExternalPreprocessorSource.h
ex/HeaderSearchOptions.h
ema/CXXFieldCollector.h
ema/TypoCorrection.h
erialization/ContinuousRangeMap.h
taticAnalyzer/Core/CheckerOptInfo.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
taticAnalyzer/Core/PathSensitive/TaintManager.h
taticAnalyzer/Core/PathSensitive/WorkList.h
838dc597e25614c653a062a124b06a04d6b7f5eb 12-Jan-2013 Rafael Espindola <rafael.espindola@gmail.com> Disable caching of visibility.

The testcase in pr14929 shows that this is extremely hard to do. If we choose
to apply the attribute, that causes the visibility of some decls to change and
that can happen really late (during codegen).

Current gcc warns and ignores the attribute in this testcase with a warning.
This suggest that the correct solution is to find a point in the compilation
where we can compute the visibility and
* assert it was never computed before
* reject any attempts to compute it again in the future (with warnings).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Type.h
ca2ab45341c448284cf93770018c717810575f86 12-Jan-2013 Douglas Gregor <dgregor@apple.com> Provide Decl::getOwningModule(), which determines the (sub)module in
which a particular declaration resides. Use this information to
customize the "definition of 'blah' must be imported from another
module" diagnostic with the module the user actually has to
import. Additionally, recover by importing that module, so we don't
complain about other names in that module.

Still TODO: coming up with decent Fix-Its for these cases, and expand
this recovery approach for other name lookup failures.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172290 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
asic/DiagnosticSemaKinds.td
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
ema/Lookup.h
ema/Sema.h
erialization/ASTReader.h
c3cd6f7a5d33ad44f6c9cf4faa7046c77baa128e 12-Jan-2013 Matt Beaumont-Gay <matthewbg@google.com> Fix -Wunused-comparison for comparisons in arguments to function-like macros.

Previously, -Wunused-comparison ignored comparisons in both macro bodies and
macro arguments, but we would still emit a -Wunused-value warning for either.
Now we correctly emit -Wunused-comparison for expressions in macro arguments.

Also, add isMacroBodyExpansion to SourceManager, to go along with
isMacroArgExpansion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
06d8c60e37cd8cfdff1bf73ec8d58c2373cfd8f1 11-Jan-2013 Dmitri Gribenko <gribozavr@gmail.com> Constify parameter of clang::getCursorKindForDecl


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172249 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
4d8efb48b9de9feee79c948ef9d05febd6d0c20b 11-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostic per Richard's suggestion
(which may yet change if we move the diagnostic
outside case value).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172242 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d088a5f966c31462280d5ace29febc6889834611 11-Jan-2013 Edwin Vane <edwin.vane@intel.com> Allow RefactoringTool to write to memory instead of always to disk

RefactoringTool::run() always writes the result of rewrites to disk.
Instead, make this optional and provide a method for getting the
refactoring results in a memory buffer instead.

Also made ClangTool polymorphic so RefactoringTool could inherit from it
to properly express the IS-A relationship. This change also provides
access to ClangTool's public interface, e.g. mapVirtualFile() which is
important once refactored buffers start living in memory instead of on
disk.

Reviewers: klimek



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172219 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Core/Rewriter.h
ooling/Refactoring.h
ooling/Tooling.h
7e9bf8c249a5a9717447a00a8669596002a5569a 11-Jan-2013 Daniel Jasper <djasper@google.com> Improved formatting of constructor initializers

Added option to put each constructor initializer on its own line
if not all initializers fit on a single line. Enabling this for
Google style now as the style guide (arguable) suggests it. Not
sure whether we also want it for LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172196 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
5ea6ef490547917426d5e2ed14c9f36521bbeacf 11-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Truth in advertising: LocallyScopedExternalDecls actually only contains
external declarations with C language linkage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172150 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/MultiplexExternalSemaSource.h
ema/Sema.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
cd52bdaaf076b0082c07c6b3d88937fb737054f1 11-Jan-2013 Nico Weber <nicolasweber@gmx.de> Formatter: Put spaces in ObjC method decls in the right place for Google style.

Objective-C method declarations look like this:

- (returntype)name:(type)argname anothername:(type)arg2name;

In google style, there's no space after the leading '-' but one after
"(returntype)" instead (but none after the argument types), see
http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#Method_Declarations_and_Definitions

Not inserting the space after '-' is easy, but to insert the space after the
return type, the formatter needs to know that a closing parenthesis ends the
return type. To do this, I tweaked the code in parse() to check for this, which
in turn required moving detection of TT_ObjCMethodSpecifier from annotate() to
parse(), because parse() runs before annotate().

(To keep things interesting, the return type is optional, but it's almost
always there in practice.)

http://llvm-reviews.chandlerc.com/D280



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172140 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
3973f28f347bf8ca3cca31ea30da235c95701231 10-Jan-2013 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Extend the inline asm Sema lookup interface to determine if the
Decl is a VarDecl.
Part of rdar://12991541

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172120 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c5362d9dc013f02a84f5e14c54c9d5fd5c78a426 10-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> In my last patch use InGroup<Switch> (per Dmitri's comment).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172103 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f6e65cc9a654d54411c43fd014e911a407ad4075 10-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Provide a better warning when case value overflows.
// rdar://11577384


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172102 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d5bfae62aa53290d333211bc5886da786033cfd0 10-Jan-2013 Nico Weber <nicolasweber@gmx.de> Formatter: Land header change I forgot to land in r172099.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172101 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
30f3b450c63a99ff5eef24b45cd999f8c2cf9b91 10-Jan-2013 Jordan Rose <jordan_rose@apple.com> Diagnostics: name all implicit groups used more than once.

This will be a new style requirement going forwards: a diagnostic can only
use the implicit InGroup<DiagGroup<"foo">> syntax if "foo" is not used by
any other diagnostics; as soon as it is, it needs an explicit group.

This also brings some stray "conversion" diagnostics into the
"Value Conversion Issue" category, instead of the more generic
"Semantic Issue" category. I consider this an improvement!
- warn_impcast_complex_scalar
- warn_impcast_float_integer
- warn_impcast_float_precision
- warn_impcast_integer_precision
- warn_impcast_vector_scalar

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
46ef852618b18bc79e403b37a12c9b692e76126b 10-Jan-2013 Daniel Jasper <djasper@google.com> Improvements to function type and ObjC block formatting.

Before: int (^myBlock) (int) = ^(int num) {}
A<void ()>;
int (*b)(int);

After: int (^myBlock)(int) = ^(int num) {}
A<void()>;
int(*b)(int);

For function types and function pointer types, this patch only makes
the behavior consistent (for types that are keywords and other types).
For the latter function pointer type declarations, we'll probably
want to add a space after "int".

Also added LangOpts.Bool = 1, so we handle "A<bool()>" appropriately
Moved the LangOpts-settings to a public place for use by tests
and clang-format binary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172065 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
7266cf6464bc3ec65044c5783df739cfe7b6cd61 10-Jan-2013 Guy Benyei <guy.benyei@intel.com> Enable intel_ocl_bicc for x86_64 target only. Remove fix from 171969 that enabled this extension for multiple targets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
7005b907ea159c8e74e81f85269777429bc18d3c 10-Jan-2013 Douglas Gregor <dgregor@apple.com> Rework the realpath nonsense for framework lookups to deal more
uniformly with symlinks between top-level and embedded frameworks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172030 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
a18e70b25c85d7e653e642b5e6e58d6063af3d83 10-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Issue warning when case value is too large to fit
in case condition type. // rdar://11577384.
Test is conditionalized on x86_64-apple triple as
I am not sure if the INT_MAX/LONG_MAX values in the test
will pass this test for other hosts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
898dd70865e42962fbeba346f7abcdc937664e2b 09-Jan-2013 Hal Finkel <hfinkel@anl.gov> Remove the unused Parser::ParseTranslationUnit function

Parser::ParseTranslationUnit is now dead because the loop over
ParseTopLevelDecl is in ParseAST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172005 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
35eb8c3e12cac22f91d1cd4c74ae092ebc94fc40 09-Jan-2013 Guy Benyei <guy.benyei@intel.com> Enable intel_ocl_bicc for x86_64 target. This was missed in r171056.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e178e70e14380cf8828a307f912fcdbd3882b752 09-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> put back diagnostics when flexible members are captured
in lambdas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4b3040f51a96248fa34ba14cf54914d361142bd7 09-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Remove lambda from my last patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171915 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9c0816f36d9012c5ed1445ed969fba5b60bcec01 09-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> objectiveC blocks: It is impractical to capture
struct variables with flexiable array members in
blocks (and lambdas). Issue error instead of
crashing in IRGen. // rdar://12655829


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51be6e3487c4b7f43d9f5b2db962382b79295acb 08-Jan-2013 Rafael Espindola <rafael.espindola@gmail.com> Tighten types a bit. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171902 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0777cf5fcb8ca53bdc7e6455e9068742fbcc14db 08-Jan-2013 Rafael Espindola <rafael.espindola@gmail.com> Tighten types a bit. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171895 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
fc35cbca942ccdfe43742c1d786ed168517e0a47 08-Jan-2013 Rafael Espindola <rafael.espindola@gmail.com> Tighten types a bit. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171894 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
27fdea9b64e0c47b3da8f8d178807f118c8dd2b2 08-Jan-2013 David Blaikie <dblaikie@gmail.com> Remove on-by-default warning from -Wmost.

-Wint-to-pointer-cast, added to match GCC's warning by the same name, doesn't
need to be in any other groups (as it isn't in any groups in GCC either).

Found in post-commit review by Ted Kremenek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
41748f7d3ae36db1b1c52eaaf76631ed60c79c53 08-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Bump down the max size of functions being analyzed.

With the new setting, we are not going to inline any functions that are
more than 50 basic blocks. (The analyzer is 20% faster on several
especially bad benchmarks with the new default.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171891 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
7bb7fb634d20d9f3f5c6b5058a514a4b41b6f33d 08-Jan-2013 Manuel Klimek <klimek@google.com> clang-format can now format #defines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171865 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersMacros.h
aa46d513f47280a9786e8e9aa77f7089b3f8fee6 08-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> Move ref qualifiers from Type bitfields into FunctionProtoType, stealing two
bits from the number of parameters. This brings the bitfields down from 33 bits
to 32 bits, reducing the size of Types by 4 bytes on 32-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
97bfb558f69c09b01a5c1510f08dc91eb62329a7 08-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Include the bug uniqueing location in the issue_hash.

The issue here is that if we have 2 leaks reported at the same line for
which we cannot print the corresponding region info, they will get
treated as the same by issue_hash+description. We need to AUGMENT the
issue_hash with the allocation info to differentiate the two issues.

Add the "hash" (offset from the beginning of a function) representing
allocation site to solve the issue.

We might want to generalize solution in the future when we decide to
track more than just the 2 locations from the diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171825 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
8e721b714a92de803000c65fb8a57a1d8a810322 07-Jan-2013 Rafael Espindola <rafael.espindola@gmail.com> Add support for attribute((mode(unwind_word))).
Patch by Nick Lewycky. Fixes pr8703.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171781 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
d93335c43fd462145fee3ea8f4d84d430577c821 07-Jan-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Pull the bulk of Lexer::MeasureTokenLength() out into a new function,
Lexer::getRawToken().

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171771 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
c3cd2b0d538e4db78f1bcbedd0085e2005ce5c51 07-Jan-2013 Alexander Kornienko <alexfh@google.com> Implement Attr dumping for -ast-dump.
http://llvm-reviews.chandlerc.com/D234

Patch by Philip Craig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/Makefile
07fc1ba7553f2f5bf26984091197311decd9028e 07-Jan-2013 Michael Han <fragmentshaders@gmail.com> Add fixit hints for misplaced C++11 attributes around class specifiers.

Following r168626, in class declaration or definition, there are a combination of syntactic locations
where C++11 attributes could appear, and among those the only valid location permitted by standard is
between class-key and class-name. So for those attributes appear at wrong locations, fixit is used to
move them to expected location and we recover by applying them to the class specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171757 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
cd162384a552ef4e4913244f4f14b9a3e5a791e1 07-Jan-2013 Daniel Jasper <djasper@google.com> Reformat clang-formats source code.

All changes done by clang-format itself. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171732 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
7ad4effaa96905ef9dbc3815760b06b1d1639390 07-Jan-2013 Daniel Jasper <djasper@google.com> Add style option for number of spaces before trailing comments.

In LLVM style, a single space should be enough. In Google style, two
spaces are required.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171725 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
4a2ef80d896c1bac38ce113ec19a8d509a619288 07-Jan-2013 Nico Weber <nicolasweber@gmx.de> Simplify. No behavior change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/SourceLocation.h
c792d6d0b39cd6926be28ccb925992204d1af0e1 04-Jan-2013 Rafael Espindola <rafael.espindola@gmail.com> Unqualify the parameter type.
This fixes a regression from 168895.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171519 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
c9c3907e66659e4457593fdec4a27c671c12e041 04-Jan-2013 Douglas Gregor <dgregor@apple.com> Add the module name to the 'incomplete umbrella header' warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
f7992132207d7ddc8810a135cec97ebe5805e500 04-Jan-2013 Fariborz Jahanian <fjahanian@apple.com> Fix up various builtin declaration of objc_msgSend families
to match those foung in objc.h an avoid spurious warnings.
// rdar://12489098


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171492 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.def
81cc2f1ecd31d8e3bca2c936fb9538a9d9c39695 04-Jan-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the common source locations of CastStmt & DefaultStmt into their base class, SwitchCase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
86ebd03380dd5d1b5744fe48405445ea27faf1d6 04-Jan-2013 Douglas Gregor <dgregor@apple.com> Remove -Wmodule-build; it was a dumb idea anyway. <rdar://problem/12957525>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171478 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
bcde478a5f2600718a225eade94549c9792166b8 03-Jan-2013 Ted Kremenek <kremenek@apple.com> Fix capitalization of Objective-C in diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171440 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
344c77aac25e5d960aced3f45fbaa09853383f6d 03-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Rename callback EndPath -> EndFunction

This better reflects when callback is called and what the checkers
are relying on. (Both names meant the same pre-IPA.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171432 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
4e24f0f711e2c9fde79f19fa1c80deaab3f3b356 02-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> s/CXX0X/CXX11/g, except for __GNU_EXPERIMENTAL_CXX0X__, and update a few nearby 'C++0x' comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171372 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/TokenKinds.def
arse/Parser.h
ema/AttributeList.h
ema/DeclSpec.h
3b844ba7d5be205a9b4f5f0b0d1b7978977f4b8c 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to
reflect the migration in r171366.

Re-sort the #include lines to reflect the new paths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171369 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
80ad52f327b532bded5c5b0ee38779d841c6cd35 02-Jan-2013 Richard Smith <richard-llvm@metafoo.co.uk> s/CPlusPlus0x/CPlusPlus11/g


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171367 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/OperatorPrecedence.h
rontend/LangStandard.h
rontend/LangStandards.def
arse/Parser.h
ema/Sema.h
b99083e60325a28063fb588f458a871151971fdc 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Re-sort #include lines using the llvm/utils/sort_includes.py script.

Removes a duplicate #include as well as cleaning up some sort order
regressions since I last ran the script over Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171364 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/MultiplexConsumer.h
8c6fe1467094a8650bb0d3b19f0e001be13362f7 31-Dec-2012 Nico Weber <nicolasweber@gmx.de> Fix minor copy-pasto. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171274 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d32b94d4d685522d1552d3d1345ae9616d7f27ab 31-Dec-2012 Nico Weber <nicolasweber@gmx.de> Remove some remnants of OwningExprResult / OwningStmtResult.

These got deleted late 2010 during the Actions/Sema unification.
No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171269 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2d382d149b442b928fd3fb8edcc8d82ea9325872 30-Dec-2012 Will Dietz <wdietz2@illinois.edu> [ubsan] Recover by default, use -fno-sanitize-recover to disable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171264 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.def
07cf58c96dc599d1c25dae4efd9445b6f5d3596c 29-Dec-2012 Nico Weber <nicolasweber@gmx.de> ArrayRefize CXXTryStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171239 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
d36aa359e2f45cd22c7366a015ad94de08044dbb 29-Dec-2012 Nico Weber <nicolasweber@gmx.de> ArrayRefize a CompoundStmt constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
2464e96f0a73cd9757a6fdec4faf10d751d267fa 29-Dec-2012 Erik Verbruggen <erikjv@me.com> Removed duplicate logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
78eeba8c7d53b6b2983c76b77b23b45b89ed939d 28-Dec-2012 Rafael Espindola <rafael.espindola@gmail.com> Reject overloading of two static extern C functions.

This patch moves hasCLanguageLinkage to be VarDecl and FunctionDecl methods
so that they can be used from SemaOverload.cpp and then fixes the logic
in Sema::IsOverload.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0f46e64947bdd570a499732c4b459961627d8745 28-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Improve diagnostic wording for when an implicitly-deleted special member
function is selected by overload resolution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171190 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f42755ea9f0d8792e55dba28f1e013bc8223a676 27-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Simplify typeid 'potentially evaluated' check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
e57e3d3783586934e26191cfc06ed5f3d966ea9c 27-Dec-2012 Rafael Espindola <rafael.espindola@gmail.com> Implement dcl.link paragraph 5.

The language linkage of redeclarations must match. GCC was already reporting
an error for this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171139 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a57b3b4fea1c962678972af8fc74e121ff8b296d 25-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Produce an actual error before attempting to attach notes to it when bailing out
due to FORCE_CLANG_DIAGNOSTICS_CRASH=1. Also add a test for that env var.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
65d78312ce026092cb6e7b1d4d06f05e18d02aa0 25-Dec-2012 Erik Verbruggen <erikjv@me.com> Fix for PR12222.

Changed getLocStart() and getLocEnd() to be required for Stmts, and make
getSourceRange() optional. The default implementation for getSourceRange()
is build the range by calling getLocStart() and getLocEnd().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171067 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
38980086c0f791e8c23cc882574f18e5b4a87db6 25-Dec-2012 Guy Benyei <guy.benyei@intel.com> Add intel_ocl_bicc calling convention as a function attribute to clang. The calling convention is already implemented in LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171056 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/Specifiers.h
140aadf5b927ae294388c680a7db44e5de39578a 25-Dec-2012 Rafael Espindola <rafael.espindola@gmail.com> Add 171048 back but invalidate the cache of all redeclarations when setting
the body of a functions. The problem was that hasBody looks at the entire chain
and causes problems to -fvisibility-inlines-hidden if the cache was not
invalidated.

Original message:

Cache visibility of decls.

This unifies the linkage and visibility caching. I first implemented this when
working on pr13844, but the previous fixes removed the performance advantage of
this one.
This is still a step in the right direction for making linkage and visibility
cheap to use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171053 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Type.h
eaf5ec43ec52f650a00254d1c20d51fb7671aead 25-Dec-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert r171048, "Cache visibility of decls."

It broke stage2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Type.h
dfb316613a40d0efc033c7bd0a49da59c915fc63 25-Dec-2012 Rafael Espindola <rafael.espindola@gmail.com> Cache visibility of decls.

This unifies the linkage and visibility caching. I first implemented this when
working on pr13844, but the previous fixes removed the performance advantage of
this one.

This is still a step in the right direction for making linkage and visibility
cheap to use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Type.h
d7610b8a744b2459ce2e66fea7d3a3d56ce23dba 24-Dec-2012 Daniel Jasper <djasper@google.com> Let clang-format format itself.

Apply all formatting changes that clang-format would apply to its own source
code. All choices seem to improve readability (or at least not make it worse).
No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171039 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
34ef11be9d09ebf916ab02a521e37be6e9e102d3 24-Dec-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Support -fsanitize-memory-track-origins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171020 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
2f82c783c95dc05cf1a54cdeab0249f0b217f9cc 24-Dec-2012 NAKAMURA Takumi <geek4civic@gmail.com> clang/AST/VTTBuilder.h: Prune one description in three methods, VTTBuilder::AddVTablePointer(), VTTBuilder::LayoutSecondaryVirtualPointers(), and VTTBuilder::LayoutSecondaryVirtualPointers(). [-Wdocumentation]

/// \param AddressPoints - If the vtable is a construction vtable, this has the address points for it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTTBuilder.h
a734a0eab27678262bea07786b6ff30d5c7a6356 22-Dec-2012 Ted Kremenek <kremenek@apple.com> Add back -Wduplicate-enum which I mistakenly removed.

This was removed with -Wunique-enum, which is still removed. The
corresponding thread on cfe-comments for that warning is here:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-September/024224.html

If we get specific user feedback for -Wduplicate-enum we can evaluate
whether or not to keep it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d3292c88ad6360823818b78d67875eceb3caedfb 21-Dec-2012 Ted Kremenek <kremenek@apple.com> Tweak Sema::CheckLiteralKind() to also include block literals

This simplifies some diagnostic logic in checkUnsafeAssignLiteral(),
hopefully making it less error prone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170945 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a193e3b1e675f2d149802dc7e6f061bf3eb1ab27 21-Dec-2012 Chad Rosier <mcrosier@apple.com> Fix a warning due to an extraneous comma.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170935 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
22aa6901b8134c51771245255b32cd7d026e7913 21-Dec-2012 Chad Rosier <mcrosier@apple.com> Remove unused arguments and rename to conform to coding standards.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170933 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
f530ff76de3b270f2287d3555d93b5d270643eeb 21-Dec-2012 Ted Kremenek <kremenek@apple.com> Change checkUnsafeAssignLiteral() to use the new Sema::CheckLiteralKind().

Along the way, fix a bug in CheckLiteralKind(), previously in diagnoseObjCLiteralComparison, where we didn't ignore parentheses
in boxed expressions for purpose of classification.

In other words, both @42 and @(42) should be classified as numeric
literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170931 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3ee069bddb538ebafff2068e99136cc526fb9fdd 21-Dec-2012 Ted Kremenek <kremenek@apple.com> Hoist logic for classifying Objective-C literals into Sema (proper) for use with other diagnostics.

No immediate (intended) functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170930 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
96e12a264f9268a5fb73020a5d318474f0bfe429 21-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Switch FrontendOptions to using an initializer list rather than initializing
the values in the constructor. The constructor implementation is trivial
beyond the value initialisations. Patch by Saleem Abdulrasool!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170929 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
30f102b2782d08eb3ea61dd20a2ff7326a15fe1e 21-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Don't perform an expensive assertion in release builds.

Unfortunately, we don't seem to have a standard way to do this. I'm using
the __OPTIMIZE__ GNU extension that Clang also defines, but that doesn't
help MSVC. I suppose we could remove the check entirely, but it's useful
for developing new constraint managers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170915 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
bd80231672a7418aa1a99d3dbbe1774205c88f74 21-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Re-apply r170826 and make the dumping of the GallGraph
deterministic.

Commit message for r170826:

[analyzer] Traverse the Call Graph in topological order.

Modify the call graph by removing the parentless nodes. Instead all
nodes are children of root to ensure they are all reachable. Remove the
tracking of nodes that are "top level" or global. This information is
not used and can be obtained from the Decls stored inside
CallGraphNodes.

Instead of existing ordering hacks, analyze the functions in topological
order over the Call Graph.

Together with the addition of devirtualizable ObjC message sends and
blocks to the call graph, this gives around 6% performance improvement
on several large ObjC benchmarks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170906 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
9d0840141a0922e2d8b1d322f21ef51803ede23d 21-Dec-2012 Ted Kremenek <kremenek@apple.com> Extend checkUnsafeAssigns() to also handle assigning an object literal to a weak reference.

Thanks to Jordan Rose and John McCall for their sage code review.

Fixes <rdar://problem/12569201>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1655bcd052a67a3050fc55df8ecce57342352e68 21-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Address Jordan's nitpicks as per code review of r170625.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170832 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
6d42f4d8b8a176336a8c49ec3cf5f7fb6545ccfd 21-Dec-2012 Rafael Espindola <rafael.espindola@gmail.com> Revert r170826. The output of

./bin/clang -cc1 -internal-isystem /home/espindola/llvm/build/lib/clang/3.3/include/ -analyze -analyzer-checker=debug.DumpCallGraph /home/espindola/llvm/clang/test/Analysis/debug-CallGraph.c -fblocks

changes in each run.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170829 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
e34e1939ad67576293b2b205b2169488cc6b3b14 21-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Traverse the Call Graph in topological order.

Modify the call graph by removing the parentless nodes. Instead all
nodes are children of root to ensure they are all reachable. Remove the
tracking of nodes that are "top level" or global. This information is
not used and can be obtained from the Decls stored inside
CallGraphNodes.

Instead of existing ordering hacks, analyze the functions in topological
order over the Call Graph.

Together with the addition of devirtualizable ObjC message sends and
blocks to the call graph, this gives around 6% performance improvement
on several large ObjC benchmarks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170826 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
4f858dfd42c89b67200dac0afc228a0baa323691 21-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Add blocks and ObjC messages to the call graph.

This paves the road for constructing a better function dependency graph.
If we analyze a function before the functions it calls and inlines,
there is more opportunity for optimization.

Note, we add call edges to the called methods that correspond to
function definitions (declarations with bodies).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170825 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
904a326e6297ad75aab353c1957fb874b36260c9 20-Dec-2012 Ted Kremenek <kremenek@apple.com> Revert "Warn if a __weak variable is initialized with an Objective-C object literal."

Per code feedback, I want to see if there is a more general way to do this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170777 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7c441069a41e164498047aaed542d0d64bc11962 20-Dec-2012 Ted Kremenek <kremenek@apple.com> Warn if a __weak variable is initialized with an Objective-C object literal.

Such variables may immediately become nil or may have unpredictable
behavior.

Fixes <rdar://problem/12569201>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170763 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
909610266e67ce40a9d8a4df8be81b3de999b120 20-Dec-2012 Daniel Jasper <djasper@google.com> Move operator precedence calculation to new header

Thereby, it can be reused by clang-format and others.
Review: http://llvm-reviews.chandlerc.com/D229

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OperatorPrecedence.h
arse/Parser.h
5810f5c82788c79ca250cddd302c85300a3258ad 20-Dec-2012 Ted Kremenek <kremenek@apple.com> Attribute 'cf_returns_autoreleased' doesn't really exist.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ad017fa7a4df7389d245d02a49b3c79ed70bedb9 20-Dec-2012 Bill Wendling <isanbard@gmail.com> Revert r170500. It over-zealously converted *ALL* things named Attributes, which is wrong here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170721 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
5b9268f26ac53a74d2c504279fe577d988d5615d 20-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix code that attempted to produce a diagnostic with one DiagnosticEngine, then
produce a note for that diagnostic either with a different DiagnosticEngine or
after calling DiagnosticEngine::Reset(). That didn't make any sense, and did the
wrong thing if the original diagnostic was suppressed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/Diagnostic.h
asic/DiagnosticASTKinds.td
d538ed9b2a617239d5bd56357663de62f6f9224c 20-Dec-2012 Alexander Kornienko <alexfh@google.com> Implement AST dumper for Decls.
http://llvm-reviews.chandlerc.com/D52

Patch by Philip Craig!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
ST/TemplateName.h
bf53dfac8195835028bd6347433f7dbebcc29fc1 20-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Add the pointer escaped callback.

Instead of using several callbacks to identify the pointer escape event,
checkers now can register for the checkPointerEscape.

Converted the Malloc checker to use the new callback.
SimpleStreamChecker will be converted next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170625 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
d7dfd98f07f6af9416b342825217022f2e970a66 20-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver] Have -isysroot warn on nonexistent paths.
rdar://12282267

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170611 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
40902d817e5a73850045d8a0c9795bc5047ee000 20-Dec-2012 Fariborz Jahanian <fjahanian@apple.com> Audit DeclPrinter with -ast-dump on Cocoa.h and
fix any bad objectiveC syntax coming out of
DeclPrinter. This is on going. Also, introduce a new
PrintPolicy and use it as needed when declaration tag
is to be produced via DeclPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170606 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
094dbf917127a1228147587076d59ca45b7c258d 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
4b6ebe390fb0e38f6871d32db15cac29d22eb752 19-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Attempt to clarify a vexing-parse diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c83c2300e1946fea78ecd3c2e93d9c2dd2638a2b 19-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13470: Ensure that copy-list-initialization isntantiates as
copy-list-initialization (and doesn't add an additional copy step):

Fill in the ListInitialization bit when creating a CXXConstructExpr. Use it
when instantiating initializers in order to correctly handle instantiation of
copy-list-initialization. Teach TreeTransform that function arguments are
initializations, and so need this special treatment too. Finally, remove some
hacks which were working around SubstInitializer's shortcomings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
9fcc2ab2ec5e00802880e205568ff3afbd70a773 19-Dec-2012 Ted Kremenek <kremenek@apple.com> Pass AnalyzerOptions to PathDiagnosticConsumer to make analyzer options accessible there.

This is plumbing needed for later functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170488 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathDiagnosticConsumers.h
3bc93e3124ad5e7191c4a12dc981c8ee53578193 19-Dec-2012 David Blaikie <dblaikie@gmail.com> Change DeclContextLookup(Const)Result to (Mutable)ArrayRef<NamedDecl*>, as per review discussion in r170365

This does limit these typedefs to being sequences, but no current usage
requires them to be contiguous (we could expand this to a more general
iterator pair range concept at some point).

Also, it'd be nice if SmallVector were constructible directly from an ArrayRef
but this is a bit tricky since ArrayRef depends on SmallVectorBaseImpl for the
inverse conversion. (& generalizing over all range-like things, while nice,
would require some nontrivial SFINAE I haven't thought about yet)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
08cc03fcd97c3886b004d861aadbc28de70092c5 18-Dec-2012 Meador Inge <meadori@codesourcery.com> CodeGen: Expand creal and cimag into complex field loads

PR 14529 was opened because neither Clang or LLVM was expanding
calls to creal* or cimag* into instructions that just load the
respective complex field. After some discussion, it was not
considered realistic to do this in LLVM because of the platform
specific way complex types are expanded. Thus a way to solve
this in Clang was pursued. GCC does a similar expansion.

This patch adds the feature to Clang by making the creal* and
cimag* functions library builtins and modifying the builtin code
generator to look for the new builtin types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170455 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b13621d08e20ac7aa550e05896de8a57ee99c1e8 18-Dec-2012 Guy Benyei <guy.benyei@intel.com> Re-commit r170428 changes with Linux style file endings.

Add OpenCL images as clang builtin types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Type.h
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
erialization/ASTBitCodes.h
7f92f2d8d9b7a07900c030183bc13a9ff60057cc 18-Dec-2012 Guy Benyei <guy.benyei@intel.com> Revert changes from r170428, as I accidentally changed the line endings of these files to Windows style.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170431 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Type.h
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
erialization/ASTBitCodes.h
736104a7619c53ef92553780273d7357a3cdde81 18-Dec-2012 Guy Benyei <guy.benyei@intel.com> Add OpenCL images as clang builtin types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170428 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Type.h
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
erialization/ASTBitCodes.h
8a0086cfd21e5a89f96715d7a504178c5fc0ca26 18-Dec-2012 Anders Carlsson <andersca@mac.com> When warning about a missing prototype because a function declaration is missing 'void', insert a fixit to add the void.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170399 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a6f8a6ed1ab163b3c4c863aa4a198fd1cb62fd97 18-Dec-2012 Bill Wendling <isanbard@gmail.com> Use the correct return type (size_t) for these builtins.
<rdar://problem/12646344>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170393 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
13d288bab69d517430b7c9473abac58fb491e17d 18-Dec-2012 Bill Wendling <isanbard@gmail.com> Add an expected parameter for the size of the destination.
<rdar://problem/12622659>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
27e2b983beb8b5a29869639637327725623069a8 18-Dec-2012 Eric Christopher <echristo@gmail.com> Add support for passing the main file name down to the assembler
for location information.

Part of PR14624

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170391 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
d566df67bed6381f6e859bbd21fd43ff89277cc0 17-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Fix PR14625 by teaching the driver to detect PWD for assembly files.

This also requires adding support to -cc1as for passing the detecting
PWD down through LLVM's debug info (which in turn required the LLVM
change in r170371).

The test case is weak (we only test the driver behavior) because there
is currently to infrastructure for running cc1as in the test suite. So
those four lines are untested (much like all other lines in that file),
but we have a test for the same pattern using llvm-mc in the LLVM
repository.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170373 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
6e48a2e2d677d9ba97b457e0af3494d6b6387380 17-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Just use begin()/end() instead of "&Vector[0], &Vector[0]+Vector.size()".

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
7959671d456c916706a5f61af609d8f1fc95decf 17-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Implement "do not inline large functions many times"
performance heuristic

After inlining a function with more than 13 basic blocks 32 times, we
are not going to inline it anymore. The idea is that inlining large
functions leads to drastic performance implications. Since the function
has already been inlined, we know that we've analyzed it in many
contexts.

The following metrics are used:
- Large function is a function with more than 13 basic blocks (we
should switch to another metric, like cyclomatic complexity)
- We consider that we've inlined a function many times if it's been
inlined 32 times. This number is configurable with -analyzer-config
max-times-inline-large=xx

This heuristic addresses a performance regression introduced with
inlining on one benchmark. The analyzer on this benchmark became 60
times slower with inlining turned on. The heuristic allows us to analyze
it in 24% of the time. The performance improvements on the other
benchmarks I've tested with are much lower - under 10%, which is
expected.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170361 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
d397cfef01d49a41554309d67ea26340c39e1e94 17-Dec-2012 David Chisnall <csdavec@swan.ac.uk> Reapply r170344, this time without forgetting to commit the header changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170354 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
355a1660d6a3c66546dfd2476b60fa7a19b70ee3 17-Dec-2012 Nico Weber <nicolasweber@gmx.de> IdentifierResolver: Remove an unnecessary include and an unused parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170297 91177308-0d34-0410-b5e6-96231b3b80d8
ema/IdentifierResolver.h
b1f67dbbb12dec8304434c76c72e01336bf186e4 14-Dec-2012 Edwin Vane <edwin.vane@intel.com> Style and Doc fix for CommonOptionsParser

- Renaming GetCompilations() and GetSourcePathList() to follow LLVM
style.
- Updating docs to reflect name change.
- Also updating help text to not mention clang-check since this class
can be used by any tool.

Reviewed By: Alexander Kornienko


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170229 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CommonOptionsParser.h
b707a4762fcc47c12b5f487856ba0781c9399295 14-Dec-2012 Nico Weber <nicolasweber@gmx.de> Don't require a space between the two ">" in "vector<id<protocol>>" in objc++11.

C++11 allowed writing "vector<vector<int>>" without a space between the two ">".
This change allows this for protocols in template lists too in -std=c++11 mode,
and improves the diagnostic in c++98 mode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170223 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f5e9d035840a4539222708032d75a0515e2508a8 14-Dec-2012 Nico Weber <nicolasweber@gmx.de> fix another spello

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170177 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5e24f2d83099bb557b1d39c6420787eeaf072a81 13-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Make the new PCH format (control block) backwards compatible and
don't crash when loading a PCH with the older format.

The introduction of the control block broke compatibility with PCHs from
older versions. This patch allows loading (and rejecting) PCHs from an older
version and allows newer PCHs to be rejected from older clang versions as well.

rdar://12821386

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170150 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
fc2929fdb7cce47daf5b2857a56013fad0257cb6 13-Dec-2012 Roman Divacky <rdivacky@freebsd.org> Dont use/link ARCMT, StaticAnalyzer and Rewriter to clang when the user
specifies not to. Dont build ASTMatchers with Rewriter disabled and
StaticAnalyzer when it's disabled.

Without all those three, the clang binary shrinks (x86_64) from ~36MB
to ~32MB (unstripped).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
463b48ba7eab6d7c96d23b59caea7f25de548293 13-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> ubsan: Add -fsanitize=bool and -fsanitize=enum, which check for loads of
bit-patterns which are not valid values for enumerated or boolean types.
These checks are the ubsan analogue of !range metadata.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Sanitizers.def
6febf1265b5a5c3025752193caa9714ed523b12d 13-Dec-2012 Eli Friedman <eli.friedman@gmail.com> Using CanQualType::getAs<ArrayType> is unsafe; fix the code currently using it,
and make sure additional uses don't get introduced. <rdar://problem/12858424>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
135aa60c613bdcc0e8e237b12bf93cab04284419 12-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [objc] For the ARC error that is emitted when a synthesized property implementation
has inconsistent ownership with the backing ivar, point the error location to the
ivar.

Pointing to the ivar (instead of the @synthesize) is better since this is where a fix is needed.
Also provide the location of @synthesize via a note.

This also fixes the problem where an auto-synthesized property would emit an error without
any location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170039 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b257afbae854c6817f26b7d61c4fed8ff7aebad 11-Dec-2012 Douglas Gregor <dgregor@apple.com> Use @import rather than @__experimental_modules_import, since the
latter is rather a mess to type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/IdentifierTable.h
asic/TokenKinds.def
443c999c967d555f6942834b0924c60226b3e6f2 11-Dec-2012 Hal Finkel <hfinkel@anl.gov> Add -fslp-vectorize to enable bb-vectorize

Add -fslp-vectorize (with -ftree-slp-vectorize as an alias for gcc compatibility)
to provide a way to enable the basic-block vectorization pass. This uses the same
acronym as gcc, superword-level parallelism (SLP), also common in the literature,
to refer to basic-block vectorization.

Nadav suggested this as a follow-up to the adding of -fvectorize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169909 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
10b5fa283359bd423f8624c4dda11899bcc8ca9c 11-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver] Add the -ftree-vectorize flag as a alias of -fvectorize to maintain
compatibility with gcc.
rdar://12839978

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169888 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c04d0934dfc78038ec1c073d9215750bd6a39c76 11-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver] Add the -fvectorize flag to enable the loop vectorization passes.
rdar://12839978

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169885 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e5d30e3b403539b10aaa52f03875a2243bf88904 11-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Extend stat query APIs to explicitly specify if the query is for
a file or directory, allowing just a stat call if a file descriptor
is not needed.

Doing just 'stat' is faster than 'open/fstat/close'.
This has the effect of cutting down system time for validating the input files of a PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/FileSystemStatCache.h
1d28caf3b5254e60d3e3a1d2d37e5df2e5924111 11-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14558: Compute triviality of special members (etc) at the end of the class
definition, rather than at the end of the definition of the set of nested
classes. We still defer checking of the user-specified exception specification
to the end of the nesting -- we can't check that until we've parsed the
in-class initializers for non-static data members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169805 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
31bdf071afc18bb9551e4f4254be297333200c4a 10-Dec-2012 Manuel Klimek <klimek@google.com> Clarifying comments for the MatchFinder and matchesNames matcher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169737 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchers.h
fff3248e69c478cfb4d1a1ffdefb808d5885535b 09-Dec-2012 Aaron Ballman <aaron@aaronballman.com> Virtual method overrides can no longer have mismatched calling conventions. This fixes PR14339.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169705 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
ema/Sema.h
afee0ff915b87f92e8c07c72d31c3165aacf6fa8 09-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14550: If a system header contains a bogus constexpr function definition,
don't mark the function as invalid, since we suppress the error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bc2a35d5ff492107dab5bdb7682f0da2f4a88861 08-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Finish implementing 'selected constructor' rules for triviality in C++11. In
the cases where we can't determine whether special members would be trivial
while building the class, we eagerly declare those special members. The impact
of this is bounded, since it does not trigger implicit declarations of special
members in classes which merely *use* those classes.

In order to determine whether we need to apply this rule, we also need to
eagerly declare move operations and destructors in cases where they might be
deleted. If a move operation were supposed to be deleted, it would instead
be suppressed, and we could need overload resolution to determine if we fall
back to a trivial copy operation. If a destructor were implicitly deleted,
it would cause the move constructor of any derived classes to be suppressed.

As discussed on cxx-abi-dev, C++11's selected constructor rules are also
retroactively applied as a defect resolution in C++03 mode, in order to
identify that class B has a non-trivial copy constructor (since it calls
A's constructor template, not A's copy constructor):

struct A { template<typename T> A(T &); };
struct B { mutable A a; };


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169673 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
55798658f879915992ed0ebe30b0b63fd570ff1b 08-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove some remnants of the assumption that there is at most one of each
flavour of special member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ac71351acdefc9de0c770c1d717e621ac9e684bf 08-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Properly compute triviality for explicitly-defaulted or deleted special members.
Remove pre-standard restriction on explicitly-defaulted copy constructors with
'incorrect' parameter types, and instead just make those special members
non-trivial as the standard requires.

This required making CXXRecordDecl correctly handle classes which have both a
trivial and a non-trivial special member of the same kind.

This also fixes PR13217 by reimplementing DiagnoseNontrivial in terms of the
new triviality computation technology.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
5f5250b140544436eb3c2fbd9f43e14019ef01f2 08-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Resolve a cursor that points to a macro name inside a #ifdef/#ifndef
directive as a macro expansion.

This is more of a "macro reference" than a macro expansion but it's close enough
for libclang's purposes. If it causes issues we can revisit and introduce a new
kind of cursor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169666 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
61c1c8ee3fa1bd1f4866d246c72af854be834634 08-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Preprocessor] Enhance Ifdef/Ifndef/Defined preprocessor callbacks to also pass
a MacroInfo object if the identifier was a macro name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169665 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PPConditionalDirectiveRecord.h
d5bc867f6597ee8d4eb31ea217934e436fc7c7e3 08-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++03 [dcl.init]p5's checking for value-initialization of references
properly, rather than faking it up by pretending that a reference member makes
the default constructor non-trivial. That leads to rejects-valids when putting
such types inside unions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169662 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
12f37e411462b8388eb1309357bd62257debacac 07-Dec-2012 DeLesley Hutchins <delesley@google.com> Fix analysis based warnings so that all warnings are emitted when compiling
with -Werror. Previously, compiling with -Werror would emit only the first
warning in a compilation unit, because clang assumes that once an error occurs,
further analysis is unlikely to return valid results. However, warnings that
have been upgraded to errors should not be treated as "errors" in this sense.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
60c4612d70229d1d079deaec62c7c8613070fbff 07-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Rename the option help to reflect better what it does.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169640 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Analyses.def
75f31c4862643ab09479c979fabf754e7ffe1460 07-Dec-2012 Anna Zaks <ganna@apple.com> [analyzer] Optimization heuristic: do not reanalyze every ObjC method as
top level.

This heuristic is already turned on for non-ObjC methods
(inlining-mode=noredundancy). If a method has been previously analyzed,
while being inlined inside of another method, do not reanalyze it as top
level.

This commit applies it to ObjCMethods as well. The main caveat here is
that to catch the retain release errors, we are still going to reanalyze
all the ObjC methods but without inlining turned on.

Gives 21% performance increase on one heavy ObjC benchmark, which
suffered large performance regressions due to ObjC inlining.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169639 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
afa7cae15b117c4b75794c6c32424953d94b4359 07-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Fix r168019 to work with unpruned paths as well.

This is the case where the analyzer tries to print out source locations
for code within a synthesized function body, which of course does not have
a valid source location. The previous fix attempted to do this during
diagnostic path pruning, but some diagnostics have pruning disabled, and
so any diagnostic with a path that goes through a synthesized body will
either hit an assertion or emit invalid output.

<rdar://problem/12657843> (again)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169631 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
6492c799b0135006ed7bea37a190bb03aedb3b9c 07-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add file missed from r169574!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169576 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5204d9e2fe0ea4e4b9c85087e355021c93221764 07-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove possible pessimizations from r169563.

Thanks for reminding me about copy-elision, David. Passing references here
doesn't help when we could get move construction in C++11. If we really
cared, we'd use std::swap to steal the reference from the temporary arg,
but it's probably not /that/ critical outside of Profile anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169570 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
0a6e09f67c719c318856be19d57e19972101f62c 07-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Avoid ProgramStateRef copy constructors.

Suggested by David Blaikie. ExplodedNode, CallEvent, and CheckerContext all
hang onto their ProgramState, so the accessors can return a reference to the
internal state rather than preemptively copying it. This helps avoid
temporary ProgramStateRefs, though local variables will still (correctly)
do an extra retain and release.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169563 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
b283da20cb2ad5e386ae04e004fbe80576f508fb 06-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify PDiag's move assignment overload a bit, the self-move check isn't actually necessary.

This just empties out the diag, which is fine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
fb4f3a2591782f8643f06724703d2e5b03af36d2 06-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure to initialize the HasSkippedBody bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
407a82fb22acad58be27f096748e74c83a295c40 06-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Add move semantics to PartialDiagnostic, which can be very expensive to copy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169535 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
35f3f36cb9451f347b83a6e7f01e3c702df4732d 06-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a bit on FunctionDecl/ObjCMethodDecl to indicate if there was a body
that was skipped by the parser.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ema/Sema.h
9428723d6730f4fd257e15b78d24991ae95bbd84 06-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove unused fields from ExprEngine.

'currStmt', 'CleanedState', and 'EntryNode' were being set, but only ever
used locally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169529 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
fbe4d36f1f83ca12b532e0a946cbffcdb54f904c 06-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Speed up ExplodedNode::Profile by avoiding copy constructors.

ProgramStateRef::Retain isn't free!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169525 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
7affe151f5689b2d3547b8947c4099532c78a021 06-Dec-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove bindExprAndLocation, which does extra work for no gain.

This feature was probably intended to improve diagnostics, but was currently
only used when dumping the Environment. It shows what location a given value
was loaded from, e.g. when evaluating an LValueToRValue cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169522 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
15757316d67cb7a854d53a0402d67ad58347600a 06-Dec-2012 Alexander Kornienko <alexfh@google.com> Clang-format: IndentCaseLabels option, proper namespace handling

Summary: + tests arranged in groups, as their number is already quite large.

Reviewers: djasper, klimek

Reviewed By: djasper

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D185

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169520 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
33c95f1178999ea06837769f90be8d7b8d57bb4d 06-Dec-2012 Matthew Curtis <mcurtis@codeaurora.org> Hexagon TC: Add/improve support for small data
threshold, pic, pie



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169517 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
5fdf350e39c6e260602dbbd709101a9bb55e75f1 06-Dec-2012 Matthew Curtis <mcurtis@codeaurora.org> Hexagon TC: Reimplement Link::ConstructJob to call
linker directly

Rather than calling gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169512 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e3ce2c10c3f6ae7b26700d758de909deab190d42 06-Dec-2012 Ted Kremenek <kremenek@apple.com> Only provide explicit getCapturedRegion() and getOriginalRegion() from referenced_vars_iterator.

This is a nice conceptual cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169480 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
24570c4c258545f8310e4bc96503a5668982cf67 06-Dec-2012 Ted Kremenek <kremenek@apple.com> Pull logic to map from VarDecl* to captured region using a helper function. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169479 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
15490fd42d7d8dca2f9b5b3a9dc074892ca1acd7 05-Dec-2012 Chad Rosier <mcrosier@apple.com> [driver, ms-inline asm] MS-Style inline assembly is controlled by the
-fasm-blocks flag, not the -fms-extensions flag.
rdar://12808010

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
99469f732efbd6600dfd0a70e0a36116a717dd06 05-Dec-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Reuse an existing diagnostic for tsan/msan needing -pie error.
Add a diagnosting for -fsanitize=memory conflicting with other sanitizers.
Extend tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169380 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
ac31c8346f1ce3628b5a7fb862fefab5b94f8e82 05-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Simplify slightly by seperating out the responsibility for emission of a caret
diagnostic from the emission of macro backtraces. Incidentally, we now get the
displayed source location for a diagnostic and the location for the caret from
the same place, rather than computing them separately. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169357 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/DiagnosticRenderer.h
678839297204002df215e0be12bcd10b20a9a4a4 05-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Simplify diagnostic emission. No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169351 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
fb4afc2fc659faff43a6df4c1d0e07df9c90479d 05-Dec-2012 DeLesley Hutchins <delesley@google.com> Thread safety analysis: Add a new "beta" warning flag: -Wthread-safety-beta.
As the analysis improves, it will continue to add new warnings that are
potentially disruptive to existing users. From now on, such warnings will
first be introduced under the "beta" flag. Such warnings are not turned on by
default; their purpose is to allow users to test their code against future
planned changes, before those changes are actually made. After a suitable
migration period, beta warnings will be folded into the standard
-Wthread-safety.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169338 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
36e29d6732814e958aea4b2f403cec63d7ed3116 04-Dec-2012 Daniel Jasper <djasper@google.com> Add parameterCountIs() matcher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169257 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
a88bb45f11c1e27f9caf60a85a8e1774d3e09ead 04-Dec-2012 Daniel Jasper <djasper@google.com> Replace workarounds with correct fixes.

Also fix header guard.

http://llvm-reviews.chandlerc.com/D159

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169254 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
30a2e16f6c27f888dd11eba6bbbae1e980078fcb 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort #include lines for all files under include/...

This is a simpler sort, entirely automatic with the help of
llvm/utils/sort_includes.py -- no manual edits here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169238 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/ARCMTActions.h
RCMigrate/FileRemapper.h
ST/APValue.h
ST/AST.h
ST/ASTContext.h
ST/ASTUnresolvedSet.h
ST/ASTVector.h
ST/CXXInheritance.h
ST/Comment.h
ST/CommentCommandTraits.h
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
ST/DeclCXX.h
ST/DeclContextInternals.h
ST/DeclVisitor.h
ST/DependentDiagnostic.h
ST/EvaluatedExprVisitor.h
ST/Expr.h
ST/ExprCXX.h
ST/ExternalASTSource.h
ST/Mangle.h
ST/PrettyPrinter.h
ST/StmtGraphTraits.h
ST/TemplateBase.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeOrdering.h
nalysis/Analyses/Dominators.h
nalysis/Analyses/LiveVariables.h
nalysis/AnalysisContext.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/BumpVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/DiagnosticOptions.h
asic/FileManager.h
asic/FileSystemStatCache.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/Module.h
asic/OnDiskHashTable.h
asic/SourceLocation.h
asic/SourceManager.h
asic/TargetInfo.h
asic/Version.h
river/Arg.h
river/ArgList.h
river/Driver.h
river/Job.h
river/Option.h
river/ToolChain.h
dit/Commit.h
dit/EditedSource.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/FrontendAction.h
rontend/LogDiagnosticPrinter.h
rontend/MultiplexConsumer.h
rontend/TextDiagnosticPrinter.h
ex/HeaderSearch.h
ex/Lexer.h
ex/LiteralSupport.h
ex/ModuleMap.h
ex/PPCallbacks.h
ex/PPConditionalDirectiveRecord.h
ex/PTHManager.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
ex/PreprocessorOptions.h
ex/Token.h
arse/Parser.h
ewrite/Core/RewriteRope.h
ewrite/Frontend/FixItRewriter.h
ema/AttributeList.h
ema/CodeCompleteConsumer.h
ema/DeclSpec.h
ema/Initialization.h
ema/Lookup.h
ema/MultiplexExternalSemaSource.h
ema/Sema.h
ema/SemaInternal.h
ema/Template.h
ema/TemplateDeduction.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
erialization/ModuleManager.h
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerRegistry.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
ooling/CompilationDatabase.h
ooling/FileMatchTrie.h
ooling/Refactoring.h
ooling/Tooling.h
55fc873017f10f6f566b182b70f6fc22aefa3464 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort all of Clang's files under 'lib', and fix up the broken headers
uncovered.

This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.

I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169237 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
taticAnalyzer/Core/BugReporter/BugType.h
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
37ed12720a35b7bfa1c4de73ad6f1c6c1c88ee17 04-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor recording the preprocessor conditional directive regions out of
PreprocessingRecord and into its own class, PPConditionalDirectiveRecord.

Decoupling allows a client to use the functionality of PPConditionalDirectiveRecord
without needing a PreprocessingRecord.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169229 91177308-0d34-0410-b5e6-96231b3b80d8
dit/Commit.h
dit/EditedSource.h
ex/PPConditionalDirectiveRecord.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
ex/PreprocessorOptions.h
df1059cac42d613547d86b4e44c5e364bfc03073 04-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> In the PreprocessingRecord, to identify the different conditional directive regions
use the SourceLocation at the start of the respective region, instead of a unique integer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169228 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
7e96bfb4d507700a122f270a11ce3fc0e8e36c85 04-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce CompilationDatabase::getAllCompileCommands() that returns all
compile commands of the database and expose it via the libclang API.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169226 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
ooling/JSONCompilationDatabase.h
91ecfa6af51836d3ccc90beddab1193b0c060739 03-Dec-2012 Alexey Samsonov <samsonov@google.com> Add Clang flags -fsanitize-blacklist and -fno-sanitize-blacklist. Make this flag usable for ASan. Blacklisting can be used to disable sanitizer checks for particular file/function/object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169144 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.h
bac016bd3f67ca2f4db1ddc619e611759352b84d 03-Dec-2012 Daniel Jasper <djasper@google.com> Initial version of formatting library.

This formatting library will be used by a stand-alone clang-format tool
and can also be used when writing other refactorings.

Manuel's original design document:
https://docs.google.com/a/google.com/document/d/1gpckL2U_6QuU9YW2L1ABsc4Fcogn5UngKk7fE5dDOoA/edit

The library can already successfully format itself.

Review: http://llvm-reviews.chandlerc.com/D80

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169137 91177308-0d34-0410-b5e6-96231b3b80d8
ormat/Format.h
189f2e421d06526ea8b4a3dcd9f4a072e10a859c 03-Dec-2012 Daniel Jasper <djasper@google.com> Make hasDeclaration work for enums.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169129 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
09ccf39c13cfca102deea2986f45cb908bc232fd 03-Dec-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Add -fsanitize=memory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169124 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/Sanitizers.def
ad95481b2769ad61f23afc5e2c31f11c66090657 02-Dec-2012 Will Dietz <wdietz2@illinois.edu> [ubsan] Add flag to enable recovery from checks when possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169114 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.def
c2b914fb6fed213a7e7d9847e543f1e7f94d852d 01-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Make helper classes anonymous. Make helper functions static instead of private members so the anonymous class doesn't leak out.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169099 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
bda07ace55e40bd1a620051156fa9b13ad3936aa 01-Dec-2012 Simon Atanasyan <satanasyan@mips.com> [MIPS] Add -mxgot/-mno-xgot command line options
to enable/disable support of GOT larger than 64k.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169098 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a93d0f280693b8418bc88cf7a8c93325f7fcf4c6 01-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Include pruning and general cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169095 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
9852f58f50b4fc20914fbce5b4454135a42343f4 01-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Don't include Type.h in DeclarationName.h.

Recursively prune some includes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclarationName.h
ST/Expr.h
ST/ExternalASTSource.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
1bf43cae5d3175838242060cbbc08f6f4fce3536 01-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Make ASTVector.h standalone without including all of ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
2fa67efeaf66a9332c30a026dc1c21bef6c33a6c 01-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Pull the Attr iteration parts out of Attr.h, so including DeclBase.h doesn't pull in all the generated Attr code.

Required to pull some functions out of line, but this shouldn't have a perf impact.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ASTMutationListener.h
ST/ASTVector.h
ST/Attr.h
ST/AttrIterator.h
ST/Decl.h
ST/DeclAccessPair.h
ST/DeclBase.h
ST/DeclObjC.h
ST/ExprCXX.h
ST/PrettyPrinter.h
ST/Stmt.h
ST/UnresolvedSet.h
ema/Initialization.h
ema/Sema.h
1f19c76253ae95153d84355c80342e8eaab81fe1 01-Dec-2012 Michael Han <Michael.Han@autodesk.com> Fix a typo in comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169078 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
b087248e32a993a3441436cffd10a4c9112eda6f 01-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Make these functions more clearly express the test they are performing. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e5411b7c9af683dab6b035825b71c284bfec364d 01-Dec-2012 Richard Smith <richard-llvm@metafoo.co.uk> Consistently use 'needsImplicit<special member>' to determine whether we need
an implicit special member, rather than sometimes using '!hasDeclared<special
member>'. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e2dbaa9f78be2b09b0723d1b614286412808b5d3 01-Dec-2012 Bill Wendling <isanbard@gmail.com> Don't warn if the input size is less than the register size. Also don't warn if
the output size is greater than the register size. No truncation occurs with
those. Reword warning to make it clearer what's the problem is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4565e487531c7bf6d348dbe9f5529784966fc7ae 30-Nov-2012 Douglas Gregor <dgregor@apple.com> Rename ModuleBuildPath -> ModuleBuildStack. Thanks, Dmitri!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/DiagnosticRenderer.h
6c3254316de2d0d554b19702f4b10117ae46b77b 30-Nov-2012 Douglas Gregor <dgregor@apple.com> When we're emitting a diagnostic with a source location in an imported
module, provide a module import stack similar to what we would get for
an include stack, e.g.,

In module 'DependsOnModule' imported from build-fail-notes.m:4:
In module 'Module' imported from DependsOnModule.framework/Headers/DependsOnModule.h:1:
Inputs/Module.framework/Headers/Module.h:15:12: note: previous definition is here
@interface Module

<rdar://problem/12696425>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/DiagnosticRenderer.h
rontend/TextDiagnostic.h
erialization/ASTReader.h
87e2cfcec7231daaa3f367dc32df74b411251e46 30-Nov-2012 Douglas Gregor <dgregor@apple.com> Actually keep track of the source locations at which particular module
files are loaded.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169027 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ModuleManager.h
830ea5b7c75413526c19531f0180fa6e45b98919 30-Nov-2012 Douglas Gregor <dgregor@apple.com> When an error occurs while building a module on demand, provide "While
building module 'Foo' imported from..." notes (the same we we provide
"In file included from..." notes) in the diagnostic, so that we know
how this module got included in the first place. This is part of
<rdar://problem/12696425>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169021 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/DiagnosticRenderer.h
rontend/TextDiagnostic.h
ex/PreprocessorOptions.h
7f2d4804510799a1a19d72b2b089e48370ab8686 30-Nov-2012 Manuel Klimek <klimek@google.com> Allow matchers to access the ASTContext.

Patch by Edwin Vane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169000 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
683b70c70dc47532af1215e4b1566de9d47a3be5 30-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Update to reflect the change of macro name in r168993.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168994 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
7d04d3a6855bc74d5c1a2213717eb5402b772ae6 30-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Refactor to reduce duplication in handling of special member functions. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
dcd42fbb418cf662c136cb035e235a44b58ad91e 30-Nov-2012 Jordan Rose <jordan_rose@apple.com> Use the new LLVM_LVALUE_FUNCTION to ban two getAs() calls on rvalues.

If 'x' is a temporary, x.getAs<Foo>() may not be safe if the result is
supposed to persist (if its address is stored somewhere). Since getAs()
can return a null value, the result is almost always stored into a
variable, which of course is not safe when the original value dies.

This has caused several bugs with GCC's "Temporaries May Vanish Sooner Than
You Expect" optimization; in C++11 builds, at least, we'll be able to catch
these problems now.

I would suggest applying these to other getAs() and get*As() methods
(castAs is "better" because sometimes the result is used directly, which
means the temporary will still be live), but these two have both caused
trouble in the analyzer in the past.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168967 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
463d90986ec54c62bf8fe31193ef5db701db48a5 30-Nov-2012 Douglas Gregor <dgregor@apple.com> Keep track of modules that have failed to build. If we encounter an
import of that module elsewhere, don't try to build the module again:
it won't work, and the experience is quite dreadful. We track this
information somewhat globally, shared among all of the related
CompilerInvocations used to build modules on-the-fly, so that a
particular Clang instance will only try to build a given module once.

Fixes <rdar://problem/12552849>.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168961 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
ex/PreprocessorOptions.h
4d1a6e41e1eaeaf5a4672c802519f15c8fb91e91 29-Nov-2012 Alexey Samsonov <samsonov@google.com> This patch exposes to Clang users three more sanitizers are experimental features of ASan:
1) init-order sanitizer: initialization-order checker.
Status: usable, but may produce false positives w/o proper blacklisting.
2) use-after-return sanitizer
Status: implemented, but heavily understed.
Should be optional, as it significanlty slows program down.
3) use-after-scope sanitizer
Status: in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Sanitizers.def
8b8a09e496fbed361d4c8e9e8cc259454a094258 29-Nov-2012 Rafael Espindola <rafael.espindola@gmail.com> Merge function types in C.

Among other differences, GCC accepts

typedef int IA[];
typedef int A10[10];
static A10 *f(void);
static IA *f(void);
void g(void) {
(void)sizeof(*f());
}

but clang used to reject it with:

invalid application of 'sizeof' to an incomplete type 'IA' (aka 'int []')

The intention of c99's 6.2.7 seems to be that we should use the composite type
and accept as gcc does.

Doing the type merging required some extra fixes:
* Use the type from the function type in initializations, even if an parameter
is available.
* Fix the merging of the noreturn attribute in function types.
* Make CodeGen handle the fact that an parameter type can be different from
the corresponding type in the function type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168895 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
84268904947ada7e251932a6f5b0f4364df7a2c7 29-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Reject uses of __int128 on platforms that don't support it. Also move the ugly
'getPointerWidth(0) >= 64' test to be a method on TargetInfo, ready to be
properly cleaned up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168856 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
a70779f6b9a8135c3459bdeb1f0197b82ea0cb2a 29-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Fix crash-on-invalid. <rdar://problem/12765391>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
afb49189d6962f3636d6a93d09c0b495e94ac782 29-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> The declaration of a special member can require overload resolution to be
performed, to determine whether that special member is deleted or constexpr.
That overload resolution process can in turn trigger the instantiation of a
template, which can do anything, including triggering the declaration of that
very same special member function. When this happens, do not try to recursively
declare the special member -- that's impossible. Instead, only try to realise
the truth. There is no special member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168847 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a4317709127e3b63c44a34f9fa1c3f8abe6a77a3 29-Nov-2012 Ted Kremenek <kremenek@apple.com> Change SValBuilder::getConditionType() to return BoolTy in C++. Fixes <rdar://problem/12772656>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168846 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
52b501cd723d56efe3ad2ab708c2b75530fe6caa 29-Nov-2012 Michael Han <Michael.Han@autodesk.com> Implement C++11 [dcl.attr.grammar] p4: If an attribute-specifier-seq appertains to a friend declaration, that declaration shall be a definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168826 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
b15c8984ea300624fbbde385d3907667ce1043fa 29-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C blocks: Make sure that identical logic is used
in deciding a copy/dispose field is needed in a byref structure
and when generating the copy/dispose helpers. In certain
cases, these fields were being added but no copy/dispose was
being generated. This was uncovered in ARC, but not in MRR.
// rdar://12759433


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a70c3f8738cc123ded68c183cedd6e93df670c2f 28-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Per C++11 [except.spec]p2, rvalue references are not permitted in exception specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
21173b1080abaa2738f9e700a9d4b0d04f928930 28-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14388: An array or function type in an exception specification should be
decayed to a pointer type. Patch by WenHan Gu, with a little tweaking and
additional testcases by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168822 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
acf796b4797c5b3e9e237148fa622afdc04b3eff 28-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Store on the CXXRecordDecl whether the class has, or would have, a copy
constructor/assignment operator with a const-qualified parameter type. The
prior method for determining this incorrectly used overload resolution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168775 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2a82ca255b0f99f6201a75ed52b91fc024f6e9cf 28-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTUnresolvedSet, an UnresolvedSet-like class, whose contents are
allocated using the allocator associated with an ASTContext.

Use this inside CXXRecordDecl::DefinitionData instead of an UnresolvedSet to
avoid a potential memory leak.

rdar://12761275

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTUnresolvedSet.h
ST/ASTVector.h
ST/DeclCXX.h
ST/Expr.h
ST/UnresolvedSet.h
erialization/ASTReader.h
erialization/ASTWriter.h
9d29543284e75648ac89c6e9586fc7cf786cf66f 28-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't return a pointer to an UnresolvedSetImpl in the CXXRecordDecl interface,
expose only the iterators instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b8abff66a8d30356c82314c4734c692cdd479e5e 28-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> C++ core issue 1344, PR10618: promote "addition of default argument makes this
a special member" diagnostic from warning to error, and fix the cases where it
produced diagnostics with incorrect wording.

We don't support this as an extension, and we ban it even in C++98 mode. This
breaks too much (for instance, the ABI-specified calling convention for a type
can change if it acquires a copy constructor through the addition of a default
argument).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168769 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f88836d949e42452167d312e57a1425b3859d36b 27-Nov-2012 Nico Weber <nicolasweber@gmx.de> Move PrettyStackTraceParserEntry to ParseAST.cpp

r128056 moved PrettyStackTraceParserEntry construction from Parser.h
to ParseAST.cpp, so there's no need to keep this class in a header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168731 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d1bac8d46740eb00085ec816af0829fd75fb4d5c 27-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Allow an ASTConsumer to selectively skip function bodies while parsing. Patch
by Olivier Goffart!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
17c874a944090a74aa890d7b5ef361be6e4a0184 27-Nov-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove some dead code. CLANG_IS_PRODUCTION is now just a build flag and
is not used in any #ifdef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168703 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
b85403658a77e9c19c391c8f02bc7767544a25d9 27-Nov-2012 Will Dietz <wdietz2@illinois.edu> Add -fsanitize=integer for reporting suspicious integer behaviors.

Introduces new sanitizer "unsigned-integer-overflow".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Sanitizers.def
6902e4146d426998ff6a94b16776c1b3f805a048 27-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Fix the definition of the vfork() builtin on Haiku. PR14378.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.def
asic/TargetInfo.h
2e39713a3d72c243a2bcd13cc8f5036ba6b487d9 26-Nov-2012 Michael Han <Michael.Han@autodesk.com> Improve diagnostic on C++11 attribute specifiers that appear at wrong syntactic locations around class specifiers.

This change list implemented logic that explicitly detects several combinations of locations where C++11 attribute
specifiers might be incorrectly placed within a class specifier. Previously we emit generic diagnostics like
"expected identifier" for such cases; now we emit specific diagnostic against the misplaced attributes, this also
fixed a bug in old code where attributes appear at legitimate locations were incorrectly rejected.

Thanks to Richard Smith for reviewing!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168626 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f9cb0bedb5c61fa270fd696113d4387456c70ebb 24-Nov-2012 Nico Weber <nicolasweber@gmx.de> Make err_module_expected_semi consistent with all the other expected_semi diags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168535 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
63b6ebe4e732f20fa24ea0666ed438dd5004cc20 23-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> Sema: Provide a valid source location when instantiating templates based on a CXXDefaultArgExpr.

Fixes PR13758.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
85489080807b47b70d26611ba543801e16bec4cd 23-Nov-2012 Joey Gouly <joey.gouly@arm.com> PR14306: Move -fbounds-checking to -fsanitize=bounds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168510 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Sanitizers.def
rontend/CodeGenOptions.def
f62c690c55fb920f3ba0a4f6e6e259e2ae7ce297 22-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix CXXRecordDecl::forallBases to not look through bases which are dependent
and defined within the current instantiation, but which are not part of the
current instantiation. Previously, it would look at bases which could be
specialized separately from the current template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a6b2581f9595fb803fe7e2ef1d9f25e75b26d2fb 22-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Fix the '-fuse-init-array' option to actually be an option.

Previously, this flag to CC1 was never exposed at the clang driver
layer, and if you happened to enable it (by being on Android or GCC 4.7
platform), you couldn't *disable* it, because there was no 'no' variant.
The whole thing was confusingly implemented.

Now, the target-specific flag processing gets the driver arg list, and
we use standard hasFlag with a default based on the GCC version and/or
Android platform. The user can still pass the 'no-' variant to forcibly
disable the flag, or pass the positive variant to clang itself to enable
the flag.

The test has also been substantially cleaned up and extended to cover
these use cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168473 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
river/ToolChain.h
289994c1e7f965f2556b8b566738396659066669 21-Nov-2012 Rafael Espindola <rafael.espindola@gmail.com> Don't walk a linked list twice in the same function. On my machine this takes
"clang -cc1" on a file with 10k repetitions of
extern int no_such_variable;
from 1.434s to 1.133s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1a5bd5d680726f3d133da27791b228b2c8fe96c6 19-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14381: Never skip constexpr function bodies when code-completing. We may need
them in order to parse the rest of the file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168327 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7ce816a77dc79f71950e9e96185e3523ee08994b 19-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Completely re-work how the Clang driver interprets PIC and PIE options.

There were numerous issues here that were all entangled, and so I've
tried to do a general simplification of the logic.
1) The logic was mimicing actual GCC bugs, rather than "features". These
have been fixed in trunk GCC, and this fixes Clang as well. Notably,
the logic was always intended to be last-match-wins like any other
flag.
2) The logic for handling '-mdynamic-no-pic' was preposterously unclear.
It also allowed the use of this flag on non-Darwin platforms where it
has no actual meaning. Now this option is handled directly based on
tests of how llvm-gcc behaves, and it is only supported on Darwin.
3) The APIs for the Driver's ToolChains had the implementation ugliness
of dynamic-no-pic leaking through them. They also had the
implementation details of the LLVM relocation model flag names
leaking through.
4) The actual results of passing these flags was incorrect on Darwin in
many cases. For example, Darwin *always* uses PIC level 2 if it uses
in PIC level, and Darwin *always* uses PIC on 64-bit regardless of
the flags specified, including -fPIE. Darwin never compiles in PIE
mode, but it can *link* in PIE mode.
5) Also, PIC was not always being enabled even when PIE was. This isn't
a supported mode at all and may have caused some fallout in builds
with complex PIC and PIE interactions.

The result is (I hope) cleaner and clearer for readers. I've also left
comments and tests about some of the truly strage behavior that is
observed on Darwin platforms. We have no real testing of Windows
platforms and PIC, but I don't have the tools handy to figure that out.
Hopefully others can beef up our testing here.

Unfortunately, I can't test this for every platform. =/ If folks have
dependencies on these flags that aren't covered by tests, they may
break. I've audited and ensured that all the changes in behavior of the
existing tests are intentional and good. In particular I've tried to
make sure the Darwin behavior (which is more suprising than the Linux
behavior) also matches that of 'gcc' on my mac.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ToolChain.h
72511f3adcc89a29c02e36283536beadf9ef555e 19-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Remove a no-op 'const' from a by-value return type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168296 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
86256af6c8515077278d0a78f183fb6d322518ac 19-Nov-2012 NAKAMURA Takumi <geek4civic@gmail.com> RecursiveASTVisitor.h: Rework Doug's r160404, "Eliminating the GCC_CAST hack, take two."

With this, ARCMT tests would not crash on certain hosts with g++ -O2, eg. cygwin g++-4.5.3.

r160404 crashed mingw32-g++-4.4.0. I guess method's pointer in conditional expression could not be handled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
36cbbe916f66f08d36492e75809fbf54416a5e8d 18-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> Documentation parsing: propely handle a lone '\endverbatim' and emit a warning.

We actually used to assert on this.

Thanks to NAKAMURA Takumi for noticing this!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommentKinds.td
d9ffa0c39ff9c71e2729eac4cdcf32b377c1d3b6 18-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix Doxygen comment start sequence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168276 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
97f8461a2c553f68a258612d2322e4281c3f0915 17-Nov-2012 Andy Gibbs <andyg1001@hotmail.co.uk> Made the "expected string literal" diagnostic more expressive

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168267 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
ex/Preprocessor.h
02a176871d91bba3004e4f94b2d4d588ae4b2122 17-Nov-2012 Andy Gibbs <andyg1001@hotmail.co.uk> Refactored duplicate string literal lexing code within Preprocessor, into a
common LexStringLiteral function. In doing so, some consistency problems have
been ironed out (e.g. where the first token in the string literal was lexed
with macro expansion, but subsequent ones were not) and also an erroneous
diagnostic has been corrected.

LexStringLiteral is complemented by a FinishLexStringLiteral function which
can be used in the situation where the first token of the string literal has
already been lexed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
ex/Preprocessor.h
48a7345a0bffcb01290447c73c6f17680d80f02f 17-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove copy ctor that provides no value over the default.

It's also simpler to just copy the words than mangling bits like this ctor did.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168258 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
7db16db1ad37a77d45de26bd26725a296025981a 17-Nov-2012 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168222 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
95f6190acb664b345b1395abaea84ee451740c5b 16-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> StmtDumper: remove incomplete support for limiting the maximum dump depth.
There are better ways of limiting the amount of information if there is a need
for that.

Patch by Philip Craig.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168206 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4a9e60fc7c36e323ae376601cc704fed4beb68ae 16-Nov-2012 Nick Lewycky <nicholas@mxc.ca> Store this Decl* as a Decl* instead of a uintptr_t. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168145 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
49a87549f4dc95ecb3d8a593b71df7c167a51f85 16-Nov-2012 Douglas Gregor <dgregor@apple.com> Since CreateTargetInfo is taking ownership of the target options, pass
it as a pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168136 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8149a98f6691f2b6eb58389f329187d0f1b8ffd1 16-Nov-2012 Douglas Gregor <dgregor@apple.com> Remove unused diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
426391cd51af86f9d59eceb0fb1c42153eccbb9a 16-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> A step towards sorting out handling of triviality of special members in C++11.

Separate out the notions of 'has a trivial special member' and 'has a
non-trivial special member', and use them appropriately. These are not
opposites of one another (there might be no special member, or in C++11 there
might be a trivial one and a non-trivial one). The CXXRecordDecl predicates
continue to produce incorrect results, but do so in fewer cases now, and
they document the cases where they might be wrong.

No functionality changes are intended here (they will come when the predicates
start producing the right answers...).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
84c484545c5906ba55143e212b4a5275ab55889f 15-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Mark symbol values as dead in the environment.

This allows us to properly remove dead bindings at the end of the top-level
stack frame, using the ReturnStmt, if there is one, to keep the return value
live. This in turn removes the need for a check::EndPath callback in leak
checkers.

This does cause some changes in the path notes for leak checkers. Previously,
a leak would be reported at the location of the closing brace in a function.
Now, it gets reported at the last statement. This matches the way leaks are
currently reported for inlined functions, but is less than ideal for both.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168066 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
3d145f660a23d5bdabdd1ead83c51f3df1489b09 15-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> block extended signatur option. Change previous option
to a cc1 -fencode-extended-block-signature and pass it
to cc1 and recognize this option to produce extended block
type signature. // rdar://12109031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168063 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
river/ToolChain.h
992d91742129c1f77563df0b3d0a40b36fd13e3e 15-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Use a memory buffer directly as input for the module includes,
instead of messing with virtual files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168062 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
958bcaf3d4e0c1ae46de3e84e7c2a7638c3c5286 15-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Setup the import location of a module file and use it
as the include location of the main file of an imported module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168061 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
2a683146db77a4dbeb2ef411345e97c9db30a247 15-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove unused diagnostics from TableGen files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
c4a77906c259cba58c147d8468c406a430ecdcbb 15-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> Use empty parens for empty function parameter list instead of '(void)'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168041 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
931c0833811c030884fa50b2ccbd3c34f0f4c4ee 15-Nov-2012 Lang Hames <lhames@gmail.com> Make -ffp-contract a codegen option, rather than a laguage option. This makes
more sense anyway - it determines how expressions are codegen'd. It also ensures
that -ffp-contract=fast has the intended effect when compiling LLVM IR.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/LangOptions.h
rontend/CodeGenOptions.def
rontend/CodeGenOptions.h
5bab9ae87c41148ee2f92d312945c1e9303222e8 15-Nov-2012 Nick Lewycky <nicholas@mxc.ca> Revert r167567, restoring the ability of clang to run gcc in cases where it
can't handle the input file type. This resulted in PR14338.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168024 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Types.h
368f3b070e8cb657a65bfa443d60256676d269e7 15-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Make sure calls in synthesized functions have valid path locations.

We do this by using the "most recent" good location: if a synthesized
function 'A' calls another function 'B', the path notes for the call to 'B'
will be placed at the same location as the path note for calling 'A'.

Similarly, the call to 'A' will have a note saying "Entered call from...",
and now we just don't emit that (since the user doesn't have a body to look
at anyway).

Previously, we were doing this for the "Calling..." notes, but not for the
"Entered call from..." or "Returning to caller". This caused a crash when
the path entered and then exiting a call within a synthesized body.

<rdar://problem/12657843>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168019 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
3dfb3fa859218272dcb6bf7a79dae533e245ba15 15-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C blocks: make cc1 flag -encode-extended-block-signature
the default. // rdar://12109031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168007 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
62221b17c90457df9ca0ff20bb54d634e8951def 15-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -cc1 option -fno-diagnostics-use-presumed-location, a handy mode for
working with preprocessed testcases. This causes source locations in
diagnostics to point at the spelling location instead of the presumed location,
while still keeping the semantic effects of the line directives (entering and
leaving system-header mode, primarily).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticOptions.def
asic/SourceManager.h
river/CC1Options.td
06cffc0511ba76d979fad9ef6944e685936b62f0 15-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C blocks: under cc1 flag -encode-extended-block-signature,
generate expanded signature encoding to include types as we
already do this for protocol method lists.
// rdar://12109031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
b6ad9b163d50827d4cd7eccadb20432cd3c089d5 14-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> In ExpressionEvaluationContextRecord manage LambdaMangle with a shared
pointer, otherwise we will double free it when ExpressionEvaluationContextRecord
gets copied.

Fixes crash in rdar://12645424 & http://llvm.org/PR14252

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167946 91177308-0d34-0410-b5e6-96231b3b80d8
ST/LambdaMangleContext.h
ema/Sema.h
3ca23d7dc6cb61e6f363a58d9256d548199d120c 14-Nov-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C blocks: Provide layout map for byref
variables captured in a block. // rdar://12184410



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
accaf19bc1129c0273ec50dba52318e60bc29103 14-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> s/tranform/transform/

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167929 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4fa4b480270c14dfdcd0dfd4f76938e973082e3b 14-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Suppress elided variadic macro argument extension diagnostic for macros using
the related comma pasting extension.

In certain cases, we used to get two diagnostics for what is essentially one
extension. This change suppresses the first diagnostic in certain cases
where we know we're going to print the second diagnostic. The
diagnostic is redundant, and it can't be suppressed in the definition
of the macro because it points at the use of the macro, so we want to
avoid printing it if possible.

The implementation works by detecting constructs which look like comma
pasting at the time of the definition of the macro; this information
is then used when the macro is used. (We can't actually detect
whether we're using the comma pasting extension until the macro is
actually used, but we can detecting constructs which will be comma
pasting if the varargs argument is elided.)

<rdar://problem/12292192>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167907 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
66cff7257698d5528632917d38f9a3037bb1506d 14-Nov-2012 David Blaikie <dblaikie@gmail.com> Provide the correct mangling and linkage for certain unnamed nested classes.

This corrects the mangling and linkage of classes (& their member functions) in
cases like this:

struct foo {
struct {
void func() { ... }
} x;
};

we were accidentally giving this nested unnamed struct 'no' linkage where it
should've had the linkage of the outer class. The mangling was incorrecty too,
mangling as TU-wide unnamed type mangling of $_X rather than class-scoped
mangling of UtX_.

This also fixes -Wunused-member-function which would incorrectly diagnose
'func' as unused due to it having no linkage & thus appearing to be TU-local
when in fact it might be correctly used in another TU.

Similar mangling should be applied to function local classes in similar cases
but I've deferred that for a subsequent patch.

Review/discussion by Richard Smith, John McCall, & especially Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ema/DeclSpec.h
0aabf93bc8e0fe5da316a66470aa8584017d0f6e 14-Nov-2012 Anders Carlsson <andersca@mac.com> Use consistent spelling of 'behavior' in a C++ warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167902 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ad8070b6bddf2867fd3aba8354cff7016e568758 14-Nov-2012 Nick Lewycky <nicholas@mxc.ca> This function isn't called SaveFiles any more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167901 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Core/Rewriter.h
8c88953ff0cebd861643ab92309aba71d23c306b 14-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove another questionable use of hasTrivial*. The relevant thing for this
test was whether the /selected/ operator= was trivial, not whether the class
had any trivial (or any non-trivial) operator=s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b8a8de316dade43fff95d7bfd2cfaa367f53faea 14-Nov-2012 John McCall <rjmccall@apple.com> Accept and pass arguments to __unknown_anytype in argument
positions of Objective-C methods.

It is possible to recover a lot of type information about
Objective-C methods from the reflective metadata for their
implementations. This information is not rich when it
comes to struct types, however, and it is not possible to
produce a type in the debugger's round-tripped AST which
will really do anything useful during type-checking.
Therefore we allow __unknown_anytype in these positions,
which essentially disables type-checking for that argument.
We infer the parameter type to be the unqualified type of
the argument expression unless that expression is an
explicit cast, in which case it becomes the type-as-written
of that cast.

rdar://problem/12565338

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167896 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6f0b00a2e286adc813beb0a55ce3ffcda10cce77 14-Nov-2012 Matt Beaumont-Gay <matthewbg@google.com> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167891 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
6e649737898ffb627c377fd8fa0a437d0a42ae4a 13-Nov-2012 Daniel Dunbar <daniel@zuster.org> Revert r167801, "[preprocessor] When #including something that contributes no
tokens at all,". This change broke External/Nurbs in LLVM test-suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167858 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/PreprocessorLexer.h
e5afdcfd6a80efc20b0a2e5bde806c08c3bda887 13-Nov-2012 David Blaikie <dblaikie@gmail.com> Simplify function try/catch scope handling.

Based on post-commit review feedback for r167766 by Richard Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167856 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Scope.h
4d10b40ea8ee489c7b9194aa2b025df4ecd2ab01 13-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] When #including something that contributes no tokens at all,
don't recursively continue lexing.

This avoids a stack overflow with a sequence of many empty #includes.
rdar://11988695

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167801 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/PreprocessorLexer.h
d449c792d98f58277e02c0ddc8330cd9de5f82f5 13-Nov-2012 Kaelyn Uhrain <rikka@google.com> A couple of small fixes to r167783

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
51ceb7bab599ea7d39d290ff5e88e4a1f0f5bc5c 13-Nov-2012 Kaelyn Uhrain <rikka@google.com> Enable C++11 attribute syntax for warn_unused_result and allow it to be
applied to CXXRecordDecls, where functions with that return type will
inherit the warn_unused_result attribute.

Also includes a tiny fix (with no discernable behavior change for
existing code) to re-sync AttributeDeclKind enum and
err_attribute_wrong_decl_type with warn_attribute_wrong_decl_type since
the enum is used with both diagnostic messages to chose the correct
description.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167783 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
3a9fefed0749f7a293379156c22a24509c24cc3e 12-Nov-2012 David Blaikie <dblaikie@gmail.com> Fix more try scoping bugs introduced by r167650.

Introduces more clear scoping flags & flag combinations which should hopefully
be more understandable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167766 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Scope.h
68fd608c2c0866064e974c3d43778c47c1cbb080 12-Nov-2012 Bill Wendling <isanbard@gmail.com> Check that the input size is correct for the given constraint.

The 'a', 'c', and 'd' constraints on i386 mean a 32-bit register. We cannot
place a 64-bit value into the 32-bit register. Error out instead of causing the
compiler to spew general badness.
<rdar://problem/12415959>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
778dd4a0b20cc176e441527734b1e3ccfd25e47a 12-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix const modifier on builtins

Some NVVM intrinsics were incorrectly labeled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsNVPTX.def
11c98771ba5d7fb1ec5707f9e1c77a6cf65bbc59 11-Nov-2012 Daniel Jasper <djasper@google.com> Fix binding of nodes in case of forEach..() matchers.

When recursively visiting the generated matches, the aggregated bindings need
to be copied during the recursion. Otherwise, we they might not be properly
overwritten (which is shown by the test), or there might be bound nodes present
that were bound on a different matching branch.

Review: http://llvm-reviews.chandlerc.com/D112

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167695 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
18f236886b02e999bea6ceff3aa90951198007cb 11-Nov-2012 Nico Weber <nicolasweber@gmx.de> Remove unneeded includes from IdentifierTable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167694 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
03e67fbf7a2646447972742b6bb97c82ce4698fb 11-Nov-2012 Nico Weber <nicolasweber@gmx.de> Delete comment reference to non-existent method

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167692 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
bb23628148f555a4cf71f98c27096a7a804c085c 11-Nov-2012 Nico Weber <nicolasweber@gmx.de> s/BCPLComment/LineComment/

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167690 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/LangOptions.def
rontend/LangStandard.h
rontend/LangStandards.def
ex/Lexer.h
879c92c87549e1c37276a29e7d610523c9659aab 11-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a typo which Matt pointed out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167679 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
229d47aef27e6f65fe4dc3beb22f622dd81104ad 10-Nov-2012 Douglas Gregor <dgregor@apple.com> Rework my implementation of circular-reference finding to not use
CXXRecordDecl::forallBases, which does *not* do what I need. Fixes the
failure introduced in r167651.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167668 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
463eb89d5e36b05d74c14b937384076d745b3b84 10-Nov-2012 Michael Liao <michael.liao@intel.com> Add clang support of RTM from TSX

- New options '-mrtm'/'-mno-rtm' are added to enable/disable RTM feature
- Builtin macro '__RTM__' is defined if RTM feature is enabled
- RTM intrinsic header is added and introduces 3 new intrinsics, namely
'_xbegin', '_xend', and '_xabort'.
- 3 new builtins are added to keep compatible with gcc, namely
'__builtin_ia32_xbegin', '__builtin_ia32_xend', and '__builtin_ia32_xabort'.
- Test cases for pre-defined macro and new intrinsic codegen are added.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167665 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
river/Options.td
e59188b0bd88ea488f2ec2f10a4ad3c4316adbce 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> -momit-leaf-frame-pointer is a -m option, not a -f option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167664 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d777e2845110469182809e4efc577899395805f7 10-Nov-2012 Douglas Gregor <dgregor@apple.com> Diagnostic circular inheritance involving dependent base classes. We
would have diagnosed this at instantiation time anyway, if only we
didn't hang on all of these test cases. Fixes <rdar://problem/12629723>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
c4027c82ad4a61f2da1b893ac8fe47bf11e5d50d 10-Nov-2012 David Blaikie <dblaikie@gmail.com> PR14296: function parameter name collisions in function try/catch

C++11 3.3.3/2 "A parameter name shall not be redeclared in the outermost block
of the function definition nor in the outermost block of any handler associated
with a function-try-block."

It's not totally clear to me whether the "FIXME" case is covered by this, but
Richard Smith thinks it probably should be. It's just a bit more involved to
fix that case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167650 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Scope.h
d1542c23b278f8420a938e8d6f192a55b225918e 10-Nov-2012 Justin Holewinski <justin.holewinski@gmail.com> [NVPTX] Add __nvvm_* intrinsics as Clang builtins

Fixes bug 13354.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsNVPTX.def
da2d2c724da8a495533187c3c8d385004a7ec3d0 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Document -W in clang --help. Also make the help text more consistent (don't end descriptions in periods, use | to separate possible values).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167645 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
028eb657ec50ac7c629e67660ee31ce27b8c5829 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Don't include the help for -mips* in clang --help. These are just aliases for other options, and not common enough to be worth including here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167644 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0f3edc5d4644d139501ece9e8c9926f64902ae52 10-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> -Wlarge-by-value-copy may be awesome, but it really shouldn't be the one and
only -W flag which clang --help lists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167643 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
762d15d5dccf818bd88c80e957390e31e41b9277 09-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove --help text for deprecated sanitizer options, add --help text for -fsanitize=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167639 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f1eaab122932a5c61b13ce9ae6d590e24558eb84 09-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14303: Add a NoDriverOption flag to those options which are not accepted by
the driver (the options defined in CC1Options.td) and exclude their help from
"clang --help".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167638 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/OptParser.td
river/OptTable.h
river/Option.h
b328ee55d86acaafd55ebf0e0c84766b29459530 09-Nov-2012 Chad Rosier <mcrosier@apple.com> Add string to try and fix build from r167629.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
9410928fb8434e8d26364cee45ebc1b798aafe41 09-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a SourceLocation::printToString() that returns in a std::string what dump()
writes to stderr; for debugging purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ecd27bf256c92f56c7c7ede6f40ec5d31a40b35e 09-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a FileCharacteristic parameter to SourceManager::createFileIDForMemBuffer
for completeness and use it in CompilerInstance::InitializeSourceManager if
the input is a memory buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167628 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8616f9af65b9a3662f2c9dfed38eeabc509f8446 09-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Turn FrontendInputFile into an immutable class and have it also accept
a memory buffer instead of only a filename.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167627 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
rontend/FrontendOptions.h
8e1fbbc492bc1f4833136d9b55e1aaf478565d32 09-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make CompilerInstance::InitializeSourceManager accept a FrontendInputFile,
no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167626 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
d96d82e1e1eb1858c6bdf670d1717c2f3d04a427 09-Nov-2012 Rafael Espindola <rafael.espindola@gmail.com> Don't use so many bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167624 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
485577dcac0b0877cfb5395b365490a0189c66f5 09-Nov-2012 Chad Rosier <mcrosier@apple.com> Implement -mstrict-align using '-backend-option -arm-strict-align' as this saves
us from having to make any backend changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167623 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.def
7e293276281bd5bf8526c064d298082b08f0bd8b 09-Nov-2012 Chad Rosier <mcrosier@apple.com> [driver] Add a -mstrict-align compiler option for ARM targets.
rdar://12340498

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167619 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.def
23700f083fb72f5c6792e253f203a43aba3cef86 08-Nov-2012 Abramo Bagnara <abramo.bagnara@bugseng.com> Allow to pass from syntactic form of InitListExpr to semantic form (just as viceversa). No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d2a527eae6df377b326e8d764782bc34f1e64189 08-Nov-2012 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: The -arch argument values aren't exactly the arch names from a
triple.

- Translate the special case of powerpc to its expected -arch name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167571 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
85b7f7ddf2f09778ec303f5a39f9e67e3aae1115 08-Nov-2012 Bob Wilson <bob.wilson@apple.com> Rip out a bunch of code for invoking gcc from clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167567 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Types.h
64c4f29ff3b98d412e0235504364096e997b04bb 08-Nov-2012 Bob Wilson <bob.wilson@apple.com> Remove code to fall back to llvm-gcc for i386 kexts.

More cleanups to follow in separate commits....

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167566 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
7cdd28162dc7ade4b14bf237e87b4bbc17b2f023 07-Nov-2012 Douglas Gregor <dgregor@apple.com> When loading a module fails because it is out of date, rebuild that
module in place. <rdar://problem/10138913>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167539 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ModuleManager.h
964490c0a8bd3398dc85d224a167ca9c35a36c85 07-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add some examples for the common REGISTER_*_WITH_PROGRAMSTATEs.

No functionality change (doc comments only).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167523 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
8fcdea5cc450bee3d79f0749cf9b98cdbeae30e2 07-Nov-2012 Ted Kremenek <kremenek@apple.com> Add -Wmismatched-return-types flag for existing warning on conflicting return types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
eaa6b12031e55e7b039a8bf4b11e58df1f06cc5e 07-Nov-2012 Ted Kremenek <kremenek@apple.com> Add -Wmismatched-parameter-types flag for existing warning on conflicting parameter types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
530564196fe7e2e30fbc2b0edae45975447583e0 07-Nov-2012 David Blaikie <dblaikie@gmail.com> PR13552: Fix the end location of a CXXNewExpr.

Spent longer than reasonable looking for a nice way to test this & decided to
give up for now. Open to suggestions/requests. Richard Smith suggested adding
something to ASTMatchers but it wasn't readily apparent how to test this with
that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
9e60371ba07faa2f173ab614ceaad0332518c8dc 07-Nov-2012 Douglas Gregor <dgregor@apple.com> Tease out the routine that reads the control block of an AST file from
the validation of an AST file against a specific set of options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167504 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
82e52377bd76ed71e8c09edc5f2f452e388b16ad 06-Nov-2012 Douglas Gregor <dgregor@apple.com> Introduce inferred framework modules into the module map file,
allowing a module map to be placed one level above the '.framework'
directories to specify that all .frameworks within that directory can
be inferred as framework modules. One can also specifically exclude
frameworks known not to work.

This makes explicit (and more restricted) behavior modules have had
"forever", where *any* .framework was assumed to be able to be built
as a module. That's not necessarily true, so we white-list directories
(with exclusions) when those directories have been audited.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/ModuleMap.h
f64231e9f47234826fbcdc3b4fe0370ef6c9961d 06-Nov-2012 Michael Han <Michael.Han@autodesk.com> Teach Clang parser to reject C++11 attributes that appertain to declaration specifiers.

We don't support any C++11 attributes that appertain to declaration specifiers so reject
the attributes in parser until we support them; this also conforms to what g++ 4.8 is doing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167481 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
164fcd022185fddc0e689f61ac8ad4b3ac744c2a 06-Nov-2012 Nico Weber <nicolasweber@gmx.de> Delete an outdated comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167441 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
d1ad5e5d6c895f809ada5b420060b2ec0b48567b 06-Nov-2012 Anna Zaks <ganna@apple.com> [analyzer] Remove isWithinInlined. It's been replaced with inTopFrame().

Thanks Jordan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167438 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
04fd3820d04032df40ec073a901cade92869c765 06-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Per discussion on cfe-commits, treat -faddress-sanitizer,
-fno-address-sanitizer, -fthread-sanitizer, -fno-thread-sanitizer, and
-fcatch-undefined-behavior as deprecated: produce a warning if they are used
pointing to the corresponding -fsanitize= option. In passing add the missing
'-' to some diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167429 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
ce36ecd5a509af8fc5924d21694df36e8bc94a95 05-Nov-2012 Daniel Dunbar <daniel@zuster.org> Frontend: Add support for reading named pipes as the main file.

- The whole {File,Source}Manager is built around wanting to pre-determine the
size of files, so we can't fit this in naturally. Instead, we handle it like
we do STDIN, where we just replace the main file contents upfront.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167419 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
d6396a681c9acbe56bc41bbc2bed2db45755bcd7 05-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Use the individual -fsanitize=<...> arguments to control which of the UBSan
checks to enable. Remove frontend support for -fcatch-undefined-behavior,
-faddress-sanitizer and -fthread-sanitizer now that they don't do anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
c4dabadb51475e76b606024f144e7cf93b0bad00 05-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -fsanitize=<sanitizers> argument to driver and frontend, and add
-fno-sanitize=<sanitizers> argument to driver. These allow ASan, TSan, and the
various UBSan checks to be enabled and disabled separately. Right now, the
different modes can't be combined, but the intention is that combining UBSan
and the other sanitizers will be permitted in the near future.

Currently, the UBSan checks will all be enabled if any of them is; that will be
fixed by the next patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/Sanitizers.def
river/Options.td
ca1b62a33cacee20d3bd756210d3211dd663209e 05-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Rename LangOptions members for address sanitizer and thread sanitizer from
*Sanitizer to Sanitize* in preparation for later patches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167405 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
40d8551890bc8454c4e0a28c9072c9c1d1dd588a 05-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Move convenience REGISTER_*_WITH_PROGRAMSTATE to CheckerContext.h

As Anna pointed out, ProgramStateTrait.h is a relatively obscure header,
and checker writers may not know to look there to add their own custom
state.

The base macro that specializes the template remains in ProgramStateTrait.h
(REGISTER_TRAIT_WITH_PROGRAMSTATE), which allows the analyzer core to keep
using it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167385 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
d096acc220fc72ec73c2abf21d6c251d867e950d 05-Nov-2012 Matt Beaumont-Gay <matthewbg@google.com> Our style for diagnostic messages is to not include a trailing dot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
a60d21d9ffd2a995c58dc5c5a4e3d9a014e3bc60 03-Nov-2012 Lang Hames <lhames@gmail.com> Support interleaving of other pragmas with FP_CONTRACT at the beginning of a
compound statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167363 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1e905da74dbfd353d77dfc548fc9d6ff420d515a 03-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove a const_cast by propagating constness to the member function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8501b7a1c4c4a9ba0ea6cb8e500e601ef3759deb 03-Nov-2012 Anna Zaks <ganna@apple.com> [analyzer] Run remove dead on end of path.

This will simplify checkers that need to register for leaks. Currently,
they have to register for both: check dead and check end of path.

I've modified the SymbolReaper to consider everything on the stack dead
if the input StackLocationContext is 0.

(This is a bit disruptive, so I'd like to flash out all the issues
asap.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167352 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
fadcd5d5bbe1bfc1c6b8d819cc2242f780a49fec 03-Nov-2012 Anna Zaks <ganna@apple.com> [analyzer] add LocationContext::inTopFrame() helper.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167351 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
b355be838a22a511d078504b2277f70aea52ca85 03-Nov-2012 Anna Zaks <ganna@apple.com> [analyzer] Refactor: Remove Pred from NodeBuilderContext.

Node builders should manage the nodes, not the context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167350 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
2f3017f9cbd3774f690c979410bfec38423d03af 03-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add some convenience accessors to CallEvent, and use them.

These are CallEvent-equivalents of helpers already accessible in
CheckerContext, as part of making it easier for new checkers to be written
using CallEvent rather than raw CallExprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167338 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
d624607d4196e4b37d235daa14699bcb3c1012a6 03-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] isCLibraryFunction: check that the function is at TU-scope.

Also, Decls already carry a pointer to the ASTContext, so there's no need
to pass an extra argument to the predicate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167337 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
161db02a747e0c8e717f542674c0581c03fc3c93 02-Nov-2012 DeLesley Hutchins <delesley@google.com> Thread safety analysis: Fixed ICE caused by double delete when late parsed
attributes are attached to function declarations nested inside a class method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167321 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d730705d448c184e73c14be22fccd05563399748 02-Nov-2012 Richard Trieu <rtrieu@google.com> Fix grammar of diagnostic message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
28e9cf1ac27862c22e8f9333c5f8fae3eb2ea680 02-Nov-2012 Ted Kremenek <kremenek@apple.com> Move -Wimplicit-retain-self to be off-by-default until we can evaluate
more how noisy it is.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
92f9bb3e7d9cec718f4614f1a9e9084ce8a02565 02-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Delete lines which do nothing from DiagnosticGroups.td.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
19ebeb70c4b79ebb2de7d87a415acd6b2dbbc15b 02-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Add missing diagnostic group to format string warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
466224fd068a0a0084968a7f521a690a51c3b226 02-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Convert some of the harder cases over to ProgramStateTrait macros.

Add FIXMEs for the traits visible from multiple translation units.
Currently the macros hide their key types in an anonymous namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167277 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/TaintManager.h
166d502d5367ceacd1313a33cac43b1048b8524d 02-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Use nice macros for the common ProgramStateTraits (map, set, list).

Also, move the REGISTER_*_WITH_PROGRAMSTATE macros to ProgramStateTrait.h.

This doesn't get rid of /all/ explicit uses of ProgramStatePartialTrait,
but it does get a lot of them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167276 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
785950e59424dca7ce0081bebf13c0acd2c4fff6 02-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename 'EmitReport' to 'emitReport'.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167275 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
80a8eb76a0043271adcfee5cb1e643ce3927fcbf 02-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Tweak wording and add diagnostic groups to misc diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
cef3a7bf84817c58c7666df9e87199b9a6b8b9a3 02-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Change diagnostics for enums with fixed underlying type so in C++98 mode, we cite C++11.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e579328ec9a95acc7f181e04c58a747ba001d80f 02-Nov-2012 Manuel Klimek <klimek@google.com> Insert interception point onStartOfTranslationUnit.

Often users of the ASTMatchers want to add tasks that are done once per
translation unit, for example, cleaning up caches. Combined with the
interception point for the end of source file one can add to the factory
creation, this covers the cases we've seen users need.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167271 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
919b9557b4f0155dfaaea309493ff2a702fca676 02-Nov-2012 Richard Trieu <rtrieu@google.com> When finding a '(' after '::', emit error with hint to remove '(' and matching
')', if found. Don't crash.
Fixes PR11852.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167268 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
aee56faf90c04a75d9c432a92a8fdd2c875559a7 02-Nov-2012 Quentin Colombet <qcolombet@apple.com> Update the front end to use minsize attribute

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
1d489cf4a04ad0ad8ac2696e4eed0995f3a67288 01-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove first argument from Arg::getValue; it's been unused since r105760.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167211 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
7c3f8b3dafebc87b4b1492276f63b6cabbc7c59b 01-Nov-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove CompilerInvocation::toArgs and clang -cc1test mode. These were untested
and apparently unused (and since they are untested, they're presumably also
broken).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167210 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
e4a990f34904eb572c8d6aa1deef19465214359c 01-Nov-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Introduce clang_Cursor_getReceiverType which returns the CXType for
the receiver of an ObjC message expression.

rdar://12578643

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167201 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
3cdd84318a3ae43fa31da849f1a6d3eeb8a39d2d 01-Nov-2012 NAKAMURA Takumi <geek4civic@gmail.com> clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h: Appease msvc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167199 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
baf764092c76d74fb1528cfd62540ae7dc01efbd 01-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Optimize assumeDual by assuming constraint managers are consistent.

Specifically, if adding a constraint makes the current system infeasible,
assume the constraint is false, instead of attempting to add its negation.

In +Asserts builds we will still assert that at least one state is feasible.

Patch by Ryan Govostes!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167195 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
ec8d420d4fa57fc6b5a5a2b1446742e976a7ba00 01-Nov-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename ConditionTruthVal::isTrue to isConstrainedTrue.

(and the same for isFalse)

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167186 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
4182ed686283b72736b287cbe28583cb641f8934 31-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Remove the stat cache from the PCH file.

The stat cache became essentially useless ever since we started
validating all file entries in the PCH.
But the motivating reason for removing it now is that it also affected
correctness in this situation:

-You have a header without include guards (using "#pragma once" or #import)
-When creating the PCH:
-The same header is referenced in an #include with different filename cases.
-In the PCH, of course, we record only one file entry for the header file
-But we cache in the PCH file the stat info for both filename cases

-Then the source files are updated and the header file is updated in a way that
its size and modification time are the same but its inode changes

-When using the PCH:
-We validate the headers, we check that header file and we create a file entry with its current inode
-There's another #include with a filename with different case than the previously created file entry
-In order to get its stat info we go through the cached stat info of the PCH and we receive the old inode
-because of the different inodes, we think they are different files so we go ahead and include its contents.

Removing the stat cache will potentially break clients that are attempting to use the stat cache
as a way of avoiding having the actual input files available. If that use case is important, patches are welcome
to bring it back in a way that will actually work correctly (i.e., emit a PCH that is self-contained, coping with
literal strings, line/column computations, etc.).

This fixes rdar://5502805

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167172 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ex/PreprocessorOptions.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
66fb02897b5c2e66b80e8acd9c8a5811dd02d6ee 31-Oct-2012 Chad Rosier <mcrosier@apple.com> [driver] Remove the -ccc-host-triple alias. This has been replaced by the
-target option.
rdar://10692880

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167158 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c91b41a64ccce6d1097d85c8c7354ea63a5566a0 31-Oct-2012 Chad Rosier <mcrosier@apple.com> [driver] Completely rework how superfluous options are stripped out of the crash
diagnostics script.

This addresses the FIXME pertaining to quoted arguments. We also delineate
between those flags that have an argument (e.g., -D macro, -MF file) and
those that do not (e.g., -M, -MM, -MG). Finally, we add the -dwarf-debug-flags
to the list of flags to be removed.
rdar://12329974

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167152 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
c45bb4dcb648cd8b5250492afe7df254e4157aaa 31-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Let ConstraintManager subclasses provide a more efficient checkNull.

Previously, every call to a ConstraintManager's isNull would do a full
assumeDual to test feasibility. Now, ConstraintManagers can override
checkNull if they have a cheaper way to do the same thing.
RangeConstraintManager can do this in less than half the work.

<rdar://problem/12608209>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167138 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
8c610b075cb2f9dae1178ab881a0aa9f91b9bcd5 31-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove the -ccc-no-clang option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167093 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.td
e63aedd0cb064fc106636ad856cc0e645e6374ce 31-Oct-2012 Anna Zaks <ganna@apple.com> Address Jordan's review: comments, spaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167091 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e6c3458723d954d1ba9b73a2d93d2e2d67dd3510 31-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove ccc-no-clang-cpp, which is also dead now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Driver.h
river/Options.td
82c6dc72adc30e785ce5bc6e8b43ae92070d2e08 31-Oct-2012 David Blaikie <dblaikie@gmail.com> Handle string encoding diagnostics when there are too many invalid ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
d1ce3c178b9c648687591b190e0d252124fc2459 30-Oct-2012 Daniel Jasper <djasper@google.com> Implement descendant matchers for NestedNamespecifiers

This implements has(), hasDescendant(), forEach() and
forEachDescendant() for NestedNameSpecifier and NestedNameSpecifierLoc
matchers.

Review: http://llvm-reviews.chandlerc.com/D86

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167017 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
4a131e1c6360419ceabdae80175ccb43d0ca31ee 30-Oct-2012 Ted Kremenek <kremenek@apple.com> Change -Wcompare-distinct-pointer-type to -Wcompare-distinct-pointer-types, as
the warning is about comparing different types (plural).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
360b29c52a4c10f9d4c031d84d962ed2a4d58263 30-Oct-2012 Anna Zaks <ganna@apple.com> [analyzer] Fix a bug in REGISTER_MAP_WITH_PROGRAMSTATE

The ImmutableMap should not be the key into the GDM map as there could
be several entries with the same map type. Thanks, Jordan.

This complicates the usage of the macro a bit. When we want to retrieve
the whole map, we need to use another name. Currently, I set it to be
Name ## Ty as in "type of the map we are storing in the ProgramState".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167000 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
ac150f2619efcadbf23acd6e86695b5412723eb1 30-Oct-2012 Anna Zaks <ganna@apple.com> [analyzer] Rename REGISTER_MAP_WITH_GDM ->REGISTER_MAP_WITH_PROGRAMSTATE

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166999 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
942fbddccc1b5540336674e577abb59e5c231778 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove leftover const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166996 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
848bc3a5db57fb267e2b2541cb55e71dba4bf228 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> getOriginalSourceFileName and getOriginalSourceFile can return a StringRef.
MaybeAddSystemRootToFilename doesn't need to return anything, it modifies
its argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166988 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTReader.h
d2d4d68a58898c5d13d66d45a5d9440fc1d790fe 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> In the past "production" clang builds would not be used for c++, and
we had the -ccc-clang-cxx and -ccc-no-clang-cxx options to force them
on or off for testing.

Clang c++ support is now production quality and these options are dead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Driver.h
river/Options.td
2902829d27ca3d3bb24d55dd99e8a218cc3a415f 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove a bit of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166983 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
badb3f6971bec4a7341ed152d367f27d572682e0 30-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Move getOriginalSourceFileName inline. Patch by Laszlo Nagy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166981 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5ac1df3e15f91ed663826faec7efe2462c18d98c 29-Oct-2012 Anna Zaks <ganna@apple.com> [analyzer] Add checker helpers to CheckerContext.

- Adding Immutable Map to GDM and getIdentifierInfo helper method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166975 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
8e68ef0e4c3892b80d9fec77b5d477cd54e90db9 29-Oct-2012 Quentin Colombet <qcolombet@apple.com> Revert commit r166946

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166957 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ba927d9b26ead2ad535c7761b8862d8e82c41b13 29-Oct-2012 Quentin Colombet <qcolombet@apple.com> Make forcesizeopt attribute available to the end user

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
c0e44454bd78b8b4f3d70f08cf1edd5466b0c798 29-Oct-2012 Jordan Rose <jordan_rose@apple.com> -Warc-repeated-use-of-weak: allow single reads in loops from local variables.

Previously, the warning would erroneously fire on this:

for (Test *a in someArray)
use(a.weakProp);

...because it looks like the same property is being accessed over and over.
However, clearly this is not the case. We now ignore loops like this for
local variables, but continue to warn if the base object is a parameter,
global variable, or instance variable, on the assumption that these are
not repeatedly usually assigned to within loops.

Additionally, do-while loops where the condition is 'false' are not really
loops at all; usually they're just used for semicolon-swallowing macros or
using "break" like "goto".

<rdar://problem/12578785&12578849>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166942 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
6a329ee7567cf3267ffab2bc755ea8c773d967e7 29-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] New option to not suppress null return paths if an argument is null.

Our one basic suppression heuristic is to assume that functions do not
usually return NULL. However, when one of the arguments is NULL it is
suddenly much more likely that NULL is a valid return value. In this case,
we don't suppress the report here, but we do attach /another/ visitor to
go find out if this NULL argument also comes from an inlined function's
error path.

This new behavior, controlled by the 'avoid-suppressing-null-argument-paths'
analyzer-config option, is turned off by default. Turning it on produced
two false positives and no new true positives when running over LLVM/Clang.

This is one of the possible refinements to our suppression heuristics.
<rdar://problem/12350829>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166941 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
09f7bf14d25bdc55cb715bc8d40600906848a409 29-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Use the CallEnter node to get a value for tracked null arguments.

Additionally, don't collect PostStore nodes -- they are often used in
path diagnostics.

Previously, we tried to track null arguments in the same way as any other
null values, but in many cases the necessary nodes had already been
collected (a memory optimization in ExplodedGraph). Now, we fall back to
using the value of the argument at the time of the call, which may not
always match the actual contents of the region, but often will.

This is a precursor to improving our suppression heuristic.
<rdar://problem/12350829>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166940 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
a267cf6f87dc695143d65fc61ec1744564f55932 29-Oct-2012 Daniel Jasper <djasper@google.com> Implement has(), hasDescendant(), forEach() and forEachDescendant() for
Types, QualTypes and TypeLocs.

Review: http://llvm-reviews.chandlerc.com/D83

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166917 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTTypeTraits.h
286d6236850ed3710822e659afdfdf08a315716b 27-Oct-2012 Mahesha S <mahesha.llvm@gmail.com> Reverted back the changes made in 166868 and in 166869

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/LangOptions.def
asic/TokenKinds.def
river/Options.td
arse/Parser.h
68de140b5d1df4c21cbf5ef1be2abcbfbc835cb5 27-Oct-2012 Mahesha S <mahesha.llvm@gmail.com> Feature:
OpenMP support.

Sub-Feature:
Support for "#pragma omp ..." registration with
Preprocessor.

Files Changed/Added:
* include/clang/Basic/DiagnosticGroups.td (C)
* include/clang/Basic/DiagnosticParseKinds.td (C)
* include/clang/Basic/TokenKinds.def (C)
* include/clang/Parse/Parser.h (C)
* lib/Parse/Parser.cpp (C)

Test Cases Changed/Added:
* test/Preprocessor/pragma_omp.c (A)
* test/Preprocessor/pragma_omp_ignored_warning.c (A)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166869 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
arse/Parser.h
f3b52315e2ee52bdff9cba31b037c7e6b3adfadc 27-Oct-2012 Mahesha S <mahesha.llvm@gmail.com> -------------------------------------------------
Feature:
OpenMP support in CLANG:

Sub-Feature:
Support for option -fopenmp

Files Changed/Added:
* include/clang/Driver/Options.td (C)
* include/clang/Basic/LangOptions.def (C)
* lib/Driver/Tools.cpp (C)
* lib/Frontend/CompilerInvocation.cpp (C)

Test Cases Changed/Added:
* test/Driver/clang_fopenmp_opt.c (A)
-------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
0a7dd835184343ec9149277b668ecdc5d49fe8b0 27-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Move two helper functions to AST so that sema can use them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
681b89826f960f1069c89a51cd7090cda73f31b7 26-Oct-2012 Bill Wendling <isanbard@gmail.com> Fix grammar-o.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
50d46caf00c743312e0ea1f87a693d504b12ef51 26-Oct-2012 Bill Wendling <isanbard@gmail.com> Recommit Eric's code to validate ASM string's constraints and modifiers.

This code checks the ASM string to see if the output size is able to fit within
the variable specified as the output. For instance, scalar-to-vector conversions
may not really work. It's on by default, but can be turned off with a flag if
you think you know what you're doing.

This is placed under a flag ('-Wasm-operand-widths') and flag group ('-Wasm').

<rdar://problem/12284092>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166737 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
b85cce094887ab5cf1c47acfe306e2fb1d3cfbb1 26-Oct-2012 Ted Kremenek <kremenek@apple.com> TrackConstraintBRVisitor and ConditionBRVisitor can emit similar
path notes for cases where a value may be assumed to be null, etc.
Instead of having redundant diagnostics, do a pass over the generated
PathDiagnostic pieces and remove notes from TrackConstraintBRVisitor
that are already covered by ConditionBRVisitor, whose notes tend
to be better.

Fixes <rdar://problem/12252783>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166728 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
802f93736a9ae76ffcbd90dbaf1c0b185531bb30 25-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add support for field lookup in the SemaCallback. Patch by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166723 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c3f1742bdd1ae0091d51168e111cd63861587b13 25-Oct-2012 Douglas Gregor <dgregor@apple.com> When capturing 'this' in a lambda, make sure to update the set of
array-index starting values for the 'this' capture. Fixes
<rdar://problem/12426831>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166709 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
9fb6b27e6d584ac339363357335f8d6de3a652ac 25-Oct-2012 Manuel Klimek <klimek@google.com> Adds the possibility to inject a callback that's called after each translation unit is processed.

This is important when one wants to deduplicate results during one run over a translation unit by pointer identity of AST nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166671 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
c6cd9afd15f0f83ee07844e592d2a698416f33ca 25-Oct-2012 Bill Wendling <isanbard@gmail.com> Revert r166647 to rethink the patch...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166655 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
0ca6e27138e2fe12e03284d4d820182702141a7d 25-Oct-2012 Douglas Gregor <dgregor@apple.com> Remove the old predefines-buffer diffing code completely. It's been
replaced by the more efficient, cleaner preprocessor-option version
that occurs earlier in PCH validation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166654 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
erialization/ASTReader.h
8769924c97ecf2af88f7f3aa6754d381b30d1c5f 25-Oct-2012 Douglas Gregor <dgregor@apple.com> The the preprocessor option validator to compute suggested
predefines. We're not quite ready to cut over to these suggested
predefines yet, however.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166648 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
a0b9ce03880b7dbab766ec80817eb17a20eba508 25-Oct-2012 Bill Wendling <isanbard@gmail.com> Add some support for diagnosing possibly mismatched constraint, type size and
modifiers. (From an idea by Eric...)
<rdar://problem/12284092>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
4c0c7e86645dfa1719d17d70e009ab49347aba62 25-Oct-2012 Douglas Gregor <dgregor@apple.com> Teach the PCH validator to check the preprocessor options, especially
the macros that are #define'd or #undef'd on the command line. This
checking happens much earlier than the current macro-definition
checking and is far cleaner, because it does a direct comparison
rather than a diff of the predefines buffers. Moreover, it allows us
to use the result of this check to skip over PCH files within a
directory that have non-matching -D's or -U's on the command
line. Finally, it improves the diagnostics a bit for mismatches,
fixing <rdar://problem/8612222>.

The old predefines-buffer diff'ing will go away in a subsequent commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
erialization/ASTReader.h
a71a7d8a1ce4474e7bdb680658fb58b6caf391d3 24-Oct-2012 Douglas Gregor <dgregor@apple.com> (De-)serialize the preprocessor options, including macros defined,
-include'd files, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166614 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
36a16498ff911a218f26c7955376bbe99ddb16df 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Teach the preprocessor to hold onto the preprocessor options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166599 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
14e71f04136de056c08ffb9ccd44b4ca391cc8a5 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Move PreprocessorOptions into the Lex library, and make it intrusively
reference-counted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166587 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/PreprocessorOptions.h
ex/PreprocessorOptions.h
bbf38319edd4eddc55ec273934e990d7e84991de 24-Oct-2012 Douglas Gregor <dgregor@apple.com> (De-)serialize header search options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166586 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
c042edd54face617a3b9d0b4b9d5a3ff229d0f48 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Move HeaderSearchOptions into the Lex library, make it intrusively
reference-counted, and hold a reference to it in HeaderSearch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166583 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInvocation.h
rontend/HeaderSearchOptions.h
ex/HeaderSearch.h
ex/HeaderSearchOptions.h
04d25fcb26610601466fb52a75ce9b4e9d18eed5 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Undef SEMANTIC_VALUE_DIAGOPT appropriately

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticOptions.def
1b2c3c0884e917ae5d59edde7d93b2af33c6a1b6 24-Oct-2012 Douglas Gregor <dgregor@apple.com> (De-)serialize the file system options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166577 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
5f3d8224af99ad0d9107601c0c31b74693371cc1 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Serialize DiagnosticOptions to the AST file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166572 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticOptions.def
asic/DiagnosticOptions.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
3e2aa99e992b89bd421ac2a6bf79307114d257fc 24-Oct-2012 Manuel Klimek <klimek@google.com> Adds the possibility to run ASTMatchFinder over arbitrary AST nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166567 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
aafd111afa6acd50fe4bec6c41add02ecf556535 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Remove the HiddenWeakTemplateVTables CodeGen option. It's currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166561 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.def
4d9e497a2b1eab3b1214848216050c64fc3acfd6 24-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Replace -analyzer-no-eagerly-trim-egraph with graph-trim-interval.

After every 1000 CFGElements processed, the ExplodedGraph trims out nodes
that satisfy a number of criteria for being "boring" (single predecessor,
single successor, and more). Rather than controlling this with a cc1 option,
which can only disable this behavior, we now have an analyzer-config option,
'graph-trim-interval', which can change this interval from 1000 to something
else. Setting the value to 0 disables reclamation.

The next commit relies on this behavior to actually test anything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166528 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
dc7b641574a733624489bd87fc7061771edf2113 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Use a .def file for most of the diagnostic options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166520 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
asic/Diagnostic.h
asic/DiagnosticOptions.def
asic/DiagnosticOptions.h
rontend/CompilerInstance.h
02c23ebf41ae2f70da0ba7337e05c51fbfe35f7f 24-Oct-2012 Douglas Gregor <dgregor@apple.com> Make DiagnosticOptions intrusively reference-counted, and make sure
the various stakeholders bump up the reference count. In particular,
the diagnostics engine now keeps the DiagnosticOptions object alive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166508 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticOptions.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/DiagnosticOptions.h
rontend/DiagnosticRenderer.h
rontend/LogDiagnosticPrinter.h
rontend/SerializedDiagnosticPrinter.h
rontend/TextDiagnostic.h
rontend/TextDiagnosticPrinter.h
e4851f26eb7be1f71f919bb5890da7e3583f727d 23-Oct-2012 Eli Friedman <eli.friedman@gmail.com> Add a new warning -Wmissing-variable-declarations, to warn about variables
defined without a previous declaration. This is similar to
-Wmissing-prototypes, but for variables instead of functions.

Patch by Ed Schouten.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4cdad3151bfb2075c6bdbfe89fbb08f31a90a45b 23-Oct-2012 Douglas Gregor <dgregor@apple.com> Switch CodeGenOptions over to a .def file, like we do with LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166497 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.def
rontend/CodeGenOptions.h
c711af2ddbbb1d46223cc9379d32a203fb5bc7f4 23-Oct-2012 Daniel Jasper <djasper@google.com> Make hasDeclaration() matcher work inside the memberExpr() matcher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166479 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
70b9db9879c1cb8b8ca7d6c9809e35361cab83dc 23-Oct-2012 Manuel Klimek <klimek@google.com> Implements the thisExpr matcher.
Patch by Gabor Horvath.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166477 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
27ffa6caf965ef20fdef5ae23b81cdc3d05e7afb 23-Oct-2012 Douglas Gregor <dgregor@apple.com> If the precompiled header named by "-include" is actually a directory,
check each of the files within that directory to determine if any of
them is an AST file that matches the language and target options. If
so, the first matching AST file is loaded. This fixes a longstanding
discrepency with GCC's precompiled header implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
erialization/ASTReader.h
5f1385b81b0a6c6878ff1e35118a5b0bf52ca930 23-Oct-2012 Eli Friedman <eli.friedman@gmail.com> [ms-inline-asm] Add handling for errors coming out of the backend.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166463 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bb531706602048716a6c36f1ea59f277be9f6753 23-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Fix two options I mistransformed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166458 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
38295beb73db5f90bfcf31625fb81dbc3b96290a 23-Oct-2012 Douglas Gregor <dgregor@apple.com> Allow clients of the AST reader to specify what kinds of AST load
failures they know how to tolerate, e.g., out-of-date input files or
configuration/version mismatches. Suppress the corresponding
diagnostics if the client can handle it.

No clients actually use this functionality, yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166449 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
8b53d141ee5a91da92c4196ed7ad4142e1009d6f 23-Oct-2012 Douglas Gregor <dgregor@apple.com> Collapse ASTReader::ReadSLocEntryRecord() into its only caller,
ReadSLocEntry(). No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166447 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
4825fd7fbb3fe87cdf8da9bccc1361fac45bdf2d 23-Oct-2012 Douglas Gregor <dgregor@apple.com> Distinguish the various kinds of AST file loading failures:
file corruption, compiler version mismatch, target/language
configuration mismatch, out-of-date AST file. No functionality change
yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166446 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
c635710bcbb9598acd5a14647ba7ca28bee89a68 23-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Add prefixes to options.

Each option has a set of prefixes. When matching an argument such as
-funroll-loops. First the leading - is removed as it is a prefix. Then
a lower_bound search for "funroll-loops" is done against the option table by
option name. From there each option prefix + option name combination is tested
against the argument.

This allows us to support Microsoft style options where both / and - are valid
prefixes. It also simplifies the cases we already have where options come in
both - and -- forms. Almost every option for gnu-ld happens to have this form.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166444 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/CC1AsOptions.h
river/CC1AsOptions.td
river/CC1Options.td
river/OptParser.td
river/OptTable.h
river/Option.h
river/Options.h
river/Options.td
a930dc9b46572cb6e5bb54f3d724e8fe23a6b66e 22-Oct-2012 Douglas Gregor <dgregor@apple.com> Eliminate the redundancy between source-file information in the source
manager block and input-file information in the control block. The
source manager entries now point back into the control block. Input
files are now lazily deserialized (if validation is disabled). Reduces
Cocoa's PCH by the ~70k I added when I introduced the redundancy in
r166251.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166429 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
c99a3ad8c2bf29da45a0c64b88d58bfbd2f78ef2 22-Oct-2012 Daniel Jasper <djasper@google.com> Implement hasParent()-matcher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166421 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
03e6fda61f48a6f11fb3c9459d5ac3d5b1db2809 22-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14141 (part of DR1351): An implicitly-deduced "any" exception specification
produces an exception of 'noexcept(false)' and is thus compatible with an
explicit exception specification of 'noexcept(false)'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166404 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
87234c83831dfb18247135add2bf14198604b3b4 21-Oct-2012 Lang Hames <lhames@gmail.com> Fix typo, make test case slightly more reabable. Thanks to Dmitri Gribenko for
the suggestions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166400 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
efeeccfb5efa94b6b4198298a80ad9a699bebcce 21-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> Unrevert r166268, reverted in r166272, with a fix for the issue which Nick
found: if an overloaded operator& is present before a template definition,
the expression &T::foo is represented as a CXXOperatorCallExpr, not as a
UnaryOperator, so we didn't notice that it's permitted to reference a non-static
data member of an unrelated class.

While investigating this, I discovered another problem in this area: we are
treating template default arguments as unevaluated contexts during substitution,
resulting in performing incorrect checks for uses of non-static data members in
C++11. That is not fixed by this patch (I'll look into this soon; it's related
to the failure to correctly instantiate constexpr function templates), but was
resulting in this bug not firing in C++11 mode (except with -Wc++98-compat).

Original message:

PR14124: When performing template instantiation of a qualified-id outside of a
class, diagnose if the qualified-id instantiates to a non-static class member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166385 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
860022ccf71b3d63acd29912af970dad655630f7 21-Oct-2012 Lang Hames <lhames@gmail.com> When used in a compound expression FP_CONTRACT should proceed all explicit
declarations and statements. Emit an error if the FP_CONTRACT is used
later in a compound statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166383 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
aa9a8ce5d31975900c7243b1508f5111baddacbe 20-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> DR1473: Do not require a space between operator"" and the ud-suffix in a
literal-operator-id.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
444d384a969ce05ae534bf8be3174e308dc8c58b 20-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> Rework implementation of DR1492: Apply the resolution to operator delete too,
since it also has an implicit exception specification. Downgrade the error to
an extwarn, since at least for operator delete, system headers like to declare
it as 'noexcept' whereas the implicit definition does not have an explicit
exception specification. Move the exception specification for user-declared
'operator delete' functions from the type-as-written into the type, to reflect
reality and to allow us to detect whether there was an implicit exception spec
or not.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed1d5d8ee17f639563dc0397bd9af1b482f17295 20-Oct-2012 Nico Weber <nicolasweber@gmx.de> Accept -Wno-arc-abi without warning for a while.

Xcode 4.5 passes -Wno-arc-abi to clang, which makes a clang newer than
r163917 warn that it doesn't understand -Wno-arc-abi. I asked if adding
this is ok at
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121015/066433.html
and nobody objected.

Adding this makes life a bit easier for the chromium project. If you think
this is a burden on for clang, shout, and I'll revert this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
0872a06d1ee1a3b62ef833f955051418d18006a1 20-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> When associating file ranges of macro arguments with their
macro expansion ranges, make sure to check all the FileID
entries that are contained in the spelling range of the
expansion for the macro argument.

Fixes rdar://12537982

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
91e06dab9335ed6b4474a74353549c708cf3d936 20-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Make Option non clang specific.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166348 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
e4151c5d1b48efac740b89cc16e5054850cbdecb 20-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166347 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/OptTable.h
river/Option.h
e62cec287c7369f50b327ba58ebb2e5a153b6b73 20-Oct-2012 Shuxin Yang <shuxin.llvm@gmail.com> remove noreturn attribute from __builtin_debugtrap

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166345 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ef933cab028c13bda49768f570cf2330d9a57ca4 19-Oct-2012 Shuxin Yang <shuxin.llvm@gmail.com> add __builtin_debugtrap

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5f531a489774ce46370fcb005a51d46d511f7914 19-Oct-2012 David Blaikie <dblaikie@gmail.com> Clarify wording of -Wshift-op-parentheses.

Suggestion from Matt Beaumont-Gay reviewing r165283.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8cfabf2cb278efc1f694f1d9aab76888a60ee3ac 19-Oct-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove const_casts by propagating constness down to called functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166287 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
535a5d001b2035a7aa68ee368fbe44ec90e33740 19-Oct-2012 Jordan Rose <jordan_rose@apple.com> Allow objc_requires_super to be used to check class methods as well.

Also, unify ObjCShouldCallSuperDealloc and ObjCShouldCallSuperFinalize.
The two have identical behavior and will never be active at the same time.

There's one last simplification now, which is that if we see a call to
[super foo] and we are currently in a method named 'foo', we will
/unconditionally/ clear the ObjCShouldCallSuper flag, rather than check
first to see if we're in a method where calling super is required. There's
no reason to pay the extra lookup price here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166285 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
266dba3661928d26f043560b169bea87578aa917 19-Oct-2012 Andy Gibbs <andyg1001@hotmail.co.uk> Change VerifyDiagnosticConsumer so that it *must* contain at least one "expected-*" directive. As a result, for test-cases that are not expected to generate any diagnostics, an additional directive "expected-no-diagnostics" has been implemented which can then be included in such test-cases. This new directive may not be used in conjunction with any other "expected-*" directive.

This change was initially proposed as a solution to the problem highlighted by check-in r164677, i.e. that -verify will not cause a test-case failure where the compile command does not actually reference the file.

Patch reviewed by David Blaikie.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/VerifyDiagnosticConsumer.h
79cf161f178e36ce6d8aeea2a247e367b8d0fc34 19-Oct-2012 Nick Lewycky <nicholas@mxc.ca> Revert r166268, this fix for a crash-on-invalid introduced a rejects-valid.
Richard has an unreduced testcase to work with.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166272 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
80ddc31c5379df78a007eaf08d531efdbcd9b161 19-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR14124: When performing template instantiation of a qualified-id outside of a
class, diagnose if the qualified-id instantiates to a non-static class member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166268 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a1a4c0385a0fd458243d9e357e1eceb137f29abf 19-Oct-2012 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166253 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
745e6f168d0276c15fb72f3d90e3d93d60282b1b 19-Oct-2012 Douglas Gregor <dgregor@apple.com> Move the set of files to be validated in an AST file into the control
block, so the input files are validated early on, before we've
committed to loading the AST file. This (accidentally) fixed a but
wherein the main file used to generate the AST file would *not* be
validated by the existing validation logic.

At the moment, this leads to some duplication of filenames between the
source manager block and input-file blocks, as well as validation
logic. This will be handled via an upcoming patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166251 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
f38523388174760dcbad810ef60d8504d7df6b4c 19-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r166223 and the subsequent commits that depend on it, r166230 & r166235.

This seems to have introduced assertion hit when building compiler-rt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166245 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/OptTable.h
river/Option.h
da3301eec823fe770bfa49a1cb19649506caa698 18-Oct-2012 Eric Christopher <echristo@gmail.com> Add a new option for and disable column number information as there
are no known current users of column info. Robustify and fix up
a few tests in the process. Reduces the size of debug information
by a small amount.

Part of PR14106

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166236 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
5b341da0eb6478c22b9587f03572a249ebbd00dc 18-Oct-2012 Eric Christopher <echristo@gmail.com> Remove trailing comma.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166235 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
69e160869dc10567a878601e98987079ad984c64 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Move OriginalDir from ASTReader to ModuleFile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166233 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
262e60c1ccb5197e8e2ea49ada1196ed65183734 18-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> [doc parsing] use getParamName to access parameter
for current(rewritten) comment and getParamNameAsWritten
to access param name coming with \param marker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
d2deb91b02ae1d810719e4a5a63dc404f362575a 18-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Make Option non clang specific.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166230 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
caed060d38f404c3a7650dbd236c25ec356bc5a3 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Move the "RelocatablePCH" bit from the ASTReader to the module file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166229 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
11407b89c9d7ce8bc31869b0a7aae06add49e3dc 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Move information about the "original file" from the ASTReader into the
module files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166228 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
97b8fd941475ec233b329a21a4ec94698f8a4b5b 18-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166223 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/OptTable.h
river/Option.h
c337d1457e4600107a1b3793f62ca96a33f1308b 18-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add a size argument to the LookupInlineAsmIdentifier() callback,
which will be used by the asm matcher in the near future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166221 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9a14db3fefa73ef8a702dea1928fd0ee0befe59b 18-Oct-2012 Eli Friedman <eli.friedman@gmail.com> Fix Objective-C implicit property synthesis for C++ classes so we use valid
source locations in places where it is necessary for diagnostics. By itself,
this causes assertions, so while I'm here, also fix property synthesis
for properties of C++ class type so we use so we properly set up a scope
and mark variable declarations.

<rdar://problem/12514189>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166219 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b36ea375e20f71df19c101fa2399b7ea3a607e04 18-Oct-2012 Anna Zaks <ganna@apple.com> Factor CollectClassPropertyImplementations out of Sema into AST

This would make it possible for the analyzer to use the function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166210 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0ec56b7add7be643f490ea9b430823570f01b4e2 18-Oct-2012 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev: enable Sema to deal with multiple ExternalSemaSources.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166208 91177308-0d34-0410-b5e6-96231b3b80d8
ema/MultiplexExternalSemaSource.h
ema/Sema.h
39c497b6d5e99acecbe03ee173249ee21933e855 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Collapse the original file name and original file ID records into a
single record.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166206 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
7ae467f02b0f2ba3897ee03e0d011433789b5434 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Collapse the "version control revision/tag" AST file record into the
metadata record, which already had other version information. Clean up
the block info block along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166204 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
7ae5717de7a6a20df60b7b058eb04c2452e39906 18-Oct-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix more documentation comments in Comment.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
168425c9bdd8ed17df0ac76a19d6033f4808bd46 18-Oct-2012 Dmitri Gribenko <gribozavr@gmail.com> Expand the comment for DeclInfo::CurrentDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ee097c1a3f5e02605dd585c0a9bf22976f09ccc2 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Split the target options out into their own record within the AST
file's control block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166195 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
b1502bcd67fb593a95cbf73ec3814f4015666da0 18-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> DR1442: In a range-based for statement, namespace 'std' is not an associated
namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
4a7c6eb2bbc9f7c00604d8d93ec66fd98cf4e404 18-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> Improve comment in couple of fields of DeclInfo.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166192 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
7fd00b153c991fbe30f9fa76391d2ad9fa1d349d 18-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Move most of the AsmParsing logic in clang back into the MC
layer. Use the new ParseMSInlineAsm() API and add an implementation of the
MCAsmParserSemaCallback interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166184 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1d9d9898ce2b338314161d92f39561a09a2a8b6f 18-Oct-2012 Douglas Gregor <dgregor@apple.com> Start factoring the on-disk records for an AST file into a control
block, which stores information about how the AST file to generated,
from the AST block, which stores the actual serialized AST. The
information in the control block should be enough to determine whether
the AST file is up-to-date and compatible with the current translation
unit, and reading it should not cause any side effects that aren't
easy to undo. That way, we can back out from an attempt to read an
incompatible or out-of-date AST file.

Note that there is still more factoring to do. In particular,
information about the source files used to generate the AST file
(along with their time stamps, sizes, etc.) still resides in the
source manager block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166166 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
d654f2d722d4cb6366edcb8f27e99745fcbae486 18-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> DR1528: C++11 doesn't allow repeated cv-qualifiers in declarators after all.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166152 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
bea52dac0c2e717990109cfd4812bc3422378b1a 18-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> Adds couple of missing warning flags so warnings can be turned
off. // rdar://12501960


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166150 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
5ba49c0177bd594a9760956f51293b5731b03d6d 18-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -std=c++1y argument, for *highly* experimental C++14 support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166139 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
rontend/LangStandard.h
rontend/LangStandards.def
1bfb00dabf83d8c8b95b7276b4c0ae3fd64832c8 17-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> [Doc parsing]: This patch adds <Declaration> tag to
XML comment for declarations which pretty-prints
declaration. I had to XFAIL one test annotate-comments.cpp.
This test is currently unmaintainable as written.
Dmitri G., can you see what we can do about this test.
We should change this test such that adding a new tag does not wreck
havoc to the test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166130 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/PrettyPrinter.h
d4ce811ae08398e357c8ce3e707ba5f2aa0041a5 17-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] When binding to a ParenExpr, bind to its inner expression instead.

This actually looks through several kinds of expression, such as
OpaqueValueExpr and ExprWithCleanups. The idea is that binding and lookup
should be consistent, and so if the environment needs to be modified later,
the code doing the modification will not have to manually look through these
"transparent" expressions to find the real binding to change.

This is necessary for proper updating of struct rvalues as described in
the previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166121 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Environment.h
485841a29e1ffb36773481566b96209e4a0f67b5 17-Oct-2012 David Blaikie <dblaikie@gmail.com> Move -Wint-to-pointer-cast from -Wall to -Wmost to group it with more things.

Addressing feedback on r166039 given by Matt Beaumont-Gay.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166118 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
ce62007526cdf718faed10df5e9fc7c3cd160cde 17-Oct-2012 Daniel Jasper <djasper@google.com> First version of matchers for Types and TypeLocs.

Review: http://llvm-reviews.chandlerc.com/D47

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166094 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTMatchersMacros.h
STMatchers/ASTTypeTraits.h
b03527a9a395168762ad8e25e59a7a272dd74561 17-Oct-2012 John McCall <rjmccall@apple.com> Set a special flag in class metadata when an Objective-C class
has ivars that require destruction, but none that require anything
except zero-initialization. This is common in ARC and (when true
throughout a class hierarchy) permits the elimination of an
unnecessary message-send during allocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5708c18904304ed4e39abed8131fcad5e2fc0896 17-Oct-2012 David Blaikie <dblaikie@gmail.com> Implement C++ 10.3p16 - overrides involving deleted functions must match.

Only deleted functions may override deleted functions and non-deleted functions
may only override non-deleted functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
57016dda61498294120b1a881d9e6606337b29d9 17-Oct-2012 Douglas Gregor <dgregor@apple.com> Serialize TargetOptions into an AST file, and make sure that we keep
target options around so they can be accessed at any point (rather
than keeping them transient).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166072 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
asic/TargetInfo.h
asic/TargetOptions.h
rontend/ASTUnit.h
rontend/CompilerInvocation.h
erialization/ASTReader.h
263366f9241366f29ba65b703120f302490c39ff 17-Oct-2012 Derek Schuff <dschuff@google.com> Add pnaclcall convention to Native Client targets.

Because PNaCl bitcode must be target-independent, it uses some
different bitcode representations from other targets (e.g. byval and
sret for structures). This means that without additional type
information, it cannot meet some native ABI requirements for some
targets (e.g. passing structures containing unions by value on
x86-64). To allow generation of code which uses the correct native
ABIs, we also support triples such as x86_64-nacl, which uses
target-dependent IR (as opposed to le32-nacl, which uses byval and
sret).

To allow interoperation between the two types of code, this patch adds
a calling convention attribute to be used in code compiled with the
target-dependent triple, which will generate code using the le32-style
bitcode. This calling convention does not need to be explicitly
supported in the backend because it determines bitcode representation
rather than native conventions (the backend just needs to undersand
how to handle byval and sret for the Native Client OS).

This patch implements __attribute__((pnaclcall)) to generate calls in
bitcode according to the le32 bitcode conventions, an attribute which
is accepted by any Native Client target, but issues a warning
otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166065 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/Specifiers.h
e54cba1ec0b0e498ee67d200289035797932e714 16-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Move some logic around to simplify the interface between the
front-end and the AsmParser. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166063 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9b29f4fe3d0600edf6ba00d48f2d4f2b1984f247 16-Oct-2012 David Blaikie <dblaikie@gmail.com> Implement GCC's -Wint-to-pointer-cast.

This implementation doesn't warn on anything that GCC doesn't warn on with the
exception of templates specializations (GCC doesn't warn, Clang does). The
specific skipped cases (boolean, constant expressions, enums) are open for
debate/adjustment if anyone wants to demonstrate that GCC is being overly
conservative here. The only really obvious false positive I found was in the
Clang regression suite's MPI test - apparently MPI uses specific flag values in
pointer constants. (eg: #define FOO (void*)~0)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166039 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
7a0c064770355a4918df69f95de8dea6338a59a2 16-Oct-2012 Daniel Dunbar <daniel@zuster.org> Un-revert r164907 and r164902 (+ follow-ups), 10.6 build fix to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
88d285cc0fc4ecdbc88d1779dcd2da968aa8b191 15-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> Fixes location of overriding declaration with no comment
of their own.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
dc0d4e251b4c41b75c5d93f1866a8a0952b1c6ae 15-Oct-2012 Nico Weber <nicolasweber@gmx.de> Revert r164907 and r164902 (+ follow-ups). They broke building on 10.6.

See PR14013.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
6553c686cb419b22b4c79d05a422fb1e96f6e122 15-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> structured document comment: patch to provide comment for overriding function
template when comment is comming from overridden declaration.
// rdar://12378793


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
9a022bb007a3e77e1ac1330f955a239cfb1dd0fb 15-Oct-2012 Douglas Gregor <dgregor@apple.com> Teach TargetInfo to hold on to the TargetOptions with which it was
created.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
rontend/ASTUnit.h
2b49d1f0ad790a8a5d514af1be211591a746cb73 15-Oct-2012 Douglas Gregor <dgregor@apple.com> Introduce the notion of excluded headers into the module map
description. Previously, one could emulate this behavior by placing
the header in an always-unavailable submodule, but Argyrios guilted me
into expressing this idea properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
ex/ModuleMap.h
erialization/ASTBitCodes.h
10be5bad483cfe66bb5eb5ff948c03c4628ce774 14-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
e5a934d3c840872d58724383a83443ed38f1d831 13-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove the "direct bindings only" Environment lookup.

This was only used by OSAtomicChecker and makes it more
difficult to update values for expressions that the environment
may look through instead (it's not the same as IgnoreParens).
With this gone, we can have bindExpr bind to the inner
expression that getSVal will find.

Groundwork for <rdar://problem/12137950>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165866 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
42e95acef35f4633119be1c1381e88878c966502 13-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove unneeded 'inlineCall' checker callback.

I believe the removed assert in CheckerManager says it best:

InlineCall is a special hacky callback to allow intrusive
evaluation of the call (which simulates inlining). It is
currently only used by OSAtomicChecker and should go away
at some point.

OSAtomicChecker has gone away; inlineCall can now go away as well!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165865 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
5f608aedb6c5d32d2f7c51f9354a75b21f1eeaee 13-Oct-2012 Eli Friedman <eli.friedman@gmail.com> Make -mms-bitfields behave consistently.

Patch by Jeremiah Zanin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6952c018318a8ce57e336d7ed2a4819a98182fa2 12-Oct-2012 David Blaikie <dblaikie@gmail.com> Fix typo correction of one qualified name to another.

When suggesting "foo::bar" as a correction for "fob::bar" we mistakenly
replaced only "bar" with "foo::bar" producing "fob::foo::bar" which was broken.

This corrects that replacement in as many places as I could find & provides
test cases for all those cases I could find a test case for. There are a couple
that don't seem to be reachable (one looks entirely dead, the other just
doesn't seem to ever get called with a namespace to namespace change).

Review by Richard Smith ( http://llvm-reviews.chandlerc.com/D57 ).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165817 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
54c8a40ed658676b1f3f983728feae488c501477 12-Oct-2012 Douglas Gregor <dgregor@apple.com> Track which particular submodule #undef's a macro, so that the actual
#undef only occurs if that submodule is imported.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165773 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
749ace614b6ea1ae11d194a60b18e1e43e1db243 12-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> search for overridden methods with comment when overriding method
has none of its own. Factor in Doug's comments.
// rdar://12378793


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Comment.h
b43d87b0646aa04951056c7e0d1ab9a58eb09f66 12-Oct-2012 Sean Silva <silvas@purdue.edu> Remove pointless classof()'s.

Updates to llvm/Support/Casting.h have rendered these classof()'s
irrelevant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/Attr.h
ST/Comment.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
ST/Type.h
ST/TypeLoc.h
nalysis/AnalysisContext.h
nalysis/CFG.h
nalysis/ProgramPoint.h
river/Action.h
river/Arg.h
river/Job.h
rontend/MultiplexConsumer.h
ex/PreprocessingRecord.h
ema/ExternalSemaSource.h
ema/LocInfoType.h
ema/ScopeInfo.h
ema/SemaConsumer.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
d680b986651227b10f1e307861bc23cc89064161 12-Oct-2012 Sean Silva <silvas@purdue.edu> Add missing classof().

Somewhat troublingly, without this implemented, the check inside
isa_impl<> would silently use the parent's `classof()` when determining
whether it was okay to downcast from the parent to the child!

Bug analysis:

A build failure after removing the parent's `classof()` initially
alerted me to the bug, after which a little bit of thinking and reading
of the code identified the root cause.

The compiler could be made to prevent this bug from happening if there
were a way to ensure that in the code

template <typename To, typename From, typename Enabler = void>
struct isa_impl {
static inline bool doit(const From &Val) {
return To::classof(&Val);
}
};

that `To::classof` is actually inside the class `To`, and not in a base
class. I am not aware of a way to check this in C++. If there is a means
to perform that check, please bring it up on the list and this will be
fixed.

There is a high likelihood that there are other instances of this same
bug in the codebase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165769 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
e8219a655128b98d0573658a139de5d848451fda 11-Oct-2012 Douglas Gregor <dgregor@apple.com> Diagnose the expansion of ambiguous macro definitions. This can happen
only with modules, when two disjoint modules #define the same
identifier to different token sequences.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
ex/MacroInfo.h
3ab50fe3fc8311fb68c4f5eb97e9bb3d0041bf1a 11-Oct-2012 Douglas Gregor <dgregor@apple.com> Introduce a simple "hint" scheme to eliminate the quadratic behavior
associated with deserializing macro history for an identifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165729 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
erialization/ASTReader.h
e9652bf15246d6e08e953b52cdb7812ddb8a43e0 11-Oct-2012 Douglas Gregor <dgregor@apple.com> Make the deserialization of PendingMacroIDs deterministic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165727 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
7fffce781e6ecbf4058b24df7e5ae3037569aa56 11-Oct-2012 Jordan Rose <jordan_rose@apple.com> -Warc-repeated-use-of-weak: Check messages to property accessors as well.

Previously, [foo weakProp] was not being treated the same as foo.weakProp.
Now, for every explicit message send, we check if it's a property access,
and if so, if the property is weak. Then for every assignment of a
message, we have to do the same thing again.

This is a potentially expensive increase because determining whether a
method is a property accessor requires searching through the methods it
overrides. However, without it -Warc-repeated-use-of-weak will miss cases
from people who prefer not to use dot syntax. If this turns out to be
too expensive, we can try caching the result somewhere, or even lose
precision by not checking superclass methods. The warning is off-by-default,
though.

<rdar://problem/12407765>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165718 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
900ab95e12bb7483971640a91075699eec391804 11-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Improve AST serialization done by ASTUnit::Save().

The ASTUnit needs to initialize an ASTWriter at the beginning of
parsing to fully handle serialization of a translation unit that
imports modules. Do this by introducing an option to enable it, which
corresponds to CXTranslationUnit_ForSerialization on the C API side.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165717 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
c5f804636e367ef744fd24cf88f7c956a5af0434 11-Oct-2012 Nico Weber <nicolasweber@gmx.de> Add codegen support for __uuidof().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
146e5a4a787a2ebfe89a6b74e7c22d850bf1c858 11-Oct-2012 Manman Ren <mren@apple.com> X86: add F16C support in Clang

Support the following intrinsics:
_mm_cvtph_ps, _mm256_cvtph_ps, _mm_cvtps_ph, _mm256_cvtps_ph

rdar://12407875


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
river/Options.td
4145228b758892afd3545835a4caaea722f20510 11-Oct-2012 Douglas Gregor <dgregor@apple.com> Remove the ASTDeserializationListener's MacroVisible() callback, which
is no longer necessary, as well as the little bit of infrastructure in
the AST writer that used it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165684 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTWriter.h
6c6c54a59a6e7dbe63ff6a9bbab76f6e0c7c8462 11-Oct-2012 Douglas Gregor <dgregor@apple.com> Deserialize macro history when we deserialize an identifier that has
macro history.

When deserializing macro history, we arrange history such that the
macros that have definitions (that haven't been #undef'd) and are
visible come at the beginning of the list, which is what the
preprocessor and other clients of Preprocessor::getMacroInfo()
expect. If additional macro definitions become visible later, they'll
be moved toward the front of the list. Note that it's possible to have
ambiguities, but we don't diagnose them yet.

There is a partially-implemented design decision here that, if a
particular identifier has been defined or #undef'd within the
translation unit, that definition (or #undef) hides any macro
definitions that come from imported modules. There's still a little
work to do to ensure that the right #undef'ing happens.

Additionally, we'll need to scope the update records for #undefs, so
they only kick in when the submodule containing that update record
becomes visible.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165682 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ExternalPreprocessorSource.h
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTReader.h
bc0a925caac5e1a8201af4e8500da0bc4bd4d955 11-Oct-2012 Eric Christopher <echristo@gmail.com> Revert "[Options] make Option a value type."

Author: Michael J. Spencer <bigcheesegs@gmail.com>
Date: Wed Oct 10 21:48:26 2012 +0000

[Options] make Option a value type.

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

This reverts commit 0464fd5e4ce2193e786e5adcab6b828f9366dae3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165667 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/OptTable.h
river/Option.h
0464fd5e4ce2193e786e5adcab6b828f9366dae3 10-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] make Option a value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165663 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/OptTable.h
river/Option.h
831339c36eefc9d2d1447d5d6ffa294510db8044 10-Oct-2012 David Blaikie <dblaikie@gmail.com> Make -Wshift-op-parentheses a subgroup of -Wparentheses

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165653 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
bf967be66ea8c51b66c61659c23240f762a56dbe 10-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> [Doc parsing] This patch searches overridden objc/c++
methods looking for documentation on a particular base
class inherited by any method that overrides the base class.
In case of redeclaration, as when objc method is defined
in the implementation, it also looks up for documentation
in class/class extension being redeclared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/DeclObjC.h
04bec39d61f2b392d798882c9141fecf3ca653c5 10-Oct-2012 Jordan Rose <jordan_rose@apple.com> Move Sema::PropertyIfSetterOrGetter to ObjCMethodDecl::findPropertyDecl.

Then, switch users of PropertyIfSetterOrGetter and LookupPropertyDecl
(the latter by name) over to findPropertyDecl. This actually makes
-Wreceiver-is-weak a bit stronger than it was before.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
9a1f7d8c33304f973a59c68d80c2cce280afb1d4 10-Oct-2012 Jordan Rose <jordan_rose@apple.com> Change Sema::PropertyIfSetterOrGetter to make use of isPropertyAccessor.

Old algorithm:
1. See if the name looks like a getter or setter.
2. Use the name to look up a property in the current ObjCContainer
and all its protocols.
3. If the current container is an interface, also look in all categories
and superclasses (and superclass categories, and so on).

New algorithm:
1. See if the method is marked as a property accessor. If so, look through
all properties in the current container and find one that has a matching
selector.
2. Find all overrides of the method using ObjCMethodDecl's
getOverriddenMethods. This collects methods in superclasses and protocols
(as well as superclass categories, which isn't really necessary), and
checks if THEY are accessors. This part is not done recursively, since
getOverriddenMethods is already recursive.

This lets us handle getters and setters that do not match the property
names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165627 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1e4691b9d8e1bdcc8ef62b323969d702c51b3c08 10-Oct-2012 Jordan Rose <jordan_rose@apple.com> Rename ObjCMethodDecl::isSynthesized to isPropertyAccessor.

This more accurately reflects its use: this flag is set when a method
matches the getter or setter name for a property in the same class,
and does not actually specify whether or not the definition of the method
will be synthesized (either implicitly or explicitly with @synthesize).

This renames the setter and backing field as well, and changes the
(soon-to-be-obsolete?) XML dump format to use 'property_accessor'
instead of 'synthesized'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165626 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
eae5a820bced67465c8517793a1602dfaeed8a06 10-Oct-2012 Logan Chien <tzuhsiang.chien@gmail.com> Fix PR 11709: Change the definition of va_list to meet AAPCS requirement

AAPCS ABI Section 7.1.4 [1] specifies that va_list
should be defined as struct __va_list { void *__ap;};
And in C++, it is defined in namespace std.

[1] http://infocenter.arm.com/help/topic
/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf

Patch by Weiming Zhao.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
62288edde26ff4af9fc079c979a0e1bdc577ce9d 10-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> When indexing a module file, for the ppIncludedFile callback give
an invalid location if the location points to the synthetic buffer
for the module input.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165592 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTReader.h
2a857180050fb78b356c17931e311eef7f2daf3e 10-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [modules] Consistently construct a buffer as input to build the module.
This means the main file for modules will always be a virtual one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
a8235d6c4093cd38dcf742909651f867de62e55b 10-Oct-2012 Douglas Gregor <dgregor@apple.com> Rework the (de-)serialization of macros, as stored in
MacroInfo*. Instead of simply dumping an offset into the current file,
give each macro definition a proper ID with all of the standard
modules-remapping facilities. Additionally, when a macro is modified
in a subsequent AST file (e.g., #undef'ing a macro loaded from another
module or from a precompiled header), provide a macro update record
rather than rewriting the entire macro definition. This gives us
greater consistency with the way we handle declarations, and ties
together macro definitions much more cleanly.

Note that we're still not actually deserializing macro history (we
never were), but it's far easy to do properly now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165560 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTMutationListener.h
ex/PPMutationListener.h
ex/Preprocessor.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
6c2fd0d71406c5f311ff00208448a63fa9071453 09-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Initialize the end loc in ObjCInterfaceTypeLoc.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
238b6a9d33bf87e23f86866885394cd453a06495 09-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> The clang driver has a fairly fancy support for executing gcc instead of
clang itself. This dates back to clang's early days and while it looks like
some of it is still used (for kext for example), other parts are probably dead.

Remove the -ccc-clang-archs option and associated code. I don't think there
is any remaining setup where clang doesn't support an architecture but it can
expect an working gcc cross compiler to be available.

A nice side effect is that tests no longer need to differentiate architectures
that are included in production builds of clang and those that are not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Driver.h
river/Options.td
4def70d3040e73707c738f7c366737a986135edf 09-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> -fcatch-undefined-behavior: emit calls to the runtime library whenever one of the checks fails.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165536 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
26a9438753984df39eb52592a9038cde272a3569 09-Oct-2012 Ted Kremenek <kremenek@apple.com> Create variable for warning group -Wshorten-64-to-32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165521 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
740ae67dbf8dac44dbc8d6593a60f4f37a0a2aa5 09-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the functionality that looks for ObjC overridden methods from
ASTContext to the ObjCMethodDecl, and have the more generic
ASTContext::getOverriddenMethods() use the ObjCMethodDecl::getOverriddenMethods()
function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165518 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ce12d2f8863588d408897602089d17c4d3c3d0e5 09-Oct-2012 Douglas Gregor <dgregor@apple.com> Make the order of visitation of the pending bodies in the AST reader
deterministic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165515 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
5456b0fe40714a78cd0ba7c1a5b7dc34eda385af 09-Oct-2012 Douglas Gregor <dgregor@apple.com> When we load a function or method body from an AST file, we check
whether that function/method already has a body (loaded from some
other AST file), as introduced in r165137. Delay this check until
after the redeclaration chains have been wired up.

While I'm here, make the loading of method bodies lazy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
erialization/ASTReader.h
3644d970095d9c638c658cfd17f8e19fc333aadc 09-Oct-2012 Douglas Gregor <dgregor@apple.com> If a macro has been #undef'd in a precompiled header, we still need to
write out the macro history for that macro. Similarly, we need to cope
with reading a macro definition that has been #undef'd.

Take advantage of this new ability so that global code-completion
results can refer to #undef'd macros, rather than losing them
entirely. For multiply defined/#undef'd macros, we will still get the
wrong result, but it's better than getting no result.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165502 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
f5b132f7b373203eab7cf357b01f935bd88087bd 09-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Clearing a SmallPtrSet is still expensive, split it out from OverloadCandidateSet::clear and don't do it on destruction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165501 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
de7c0017d3f28a2e099244a154e89858bc34067b 09-Oct-2012 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> CXXMethodDecl::isConst() and CXXMethodDecl::isVolatile() can be const methods

Patch by: Laszlo Nagy

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165486 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
21c3607282550779c9ae5fe784928597807fd110 09-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the logic that searches for overridden methods from libclang to
ASTContext so that it can be widely available.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165473 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
635dc3a2b5283cbe93a327367aa2fd07ad0210dd 09-Oct-2012 Chandler Carruth <chandlerc@gmail.com> Actually add the -Wenum-conversion group to -Wconversion as r165361
seems to have intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165440 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
fc80b799d3a10c6b125776e0760a1f895fa3d6a4 09-Oct-2012 Chandler Carruth <chandlerc@gmail.com> Sort the subgroups of the diagnostic group for -Wconversion. No
functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165439 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
2dbe2fa7eb3ccf8eabae884a177b4570d3fb260d 08-Oct-2012 Daniel Jasper <djasper@google.com> FileNameMatchTrie: Use StringRef instead of Twines where possible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165412 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/FileMatchTrie.h
d3420c906e3605d94c084e8b8b1f3fa490093c86 08-Oct-2012 Daniel Jasper <djasper@google.com> Support symlinks and relative paths in complilation databases.

Review: http://llvm-reviews.chandlerc.com/D30

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165392 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
ooling/FileMatchTrie.h
ooling/JSONCompilationDatabase.h
6b34c176994aaa781eff6cd8755a48cfb109e809 08-Oct-2012 David Blaikie <dblaikie@gmail.com> Use a single note diagnostic for all the precedent/parentheses warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0bea86307eb8c16339315a1e261fc490eb505c5b 08-Oct-2012 David Blaikie <dblaikie@gmail.com> StringRef-ify Binary/UnaryOperator::getOpcodeStr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ema/Overload.h
d190057934331390ff67ebf51d66186dd5e392f0 06-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Expose __builtin_bswap16.

GCC has always supported this on PowerPC and 4.8 supports it on all platforms,
so it's a good idea to expose it in clang too. LLVM supports this on all targets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
0b06e33d480552c920186a8958830d7679c1cb87 06-Oct-2012 Ted Kremenek <kremenek@apple.com> Place warn_impcast_different_enum_types in a new warning group, -Wenum-conversion, that is a subgroup of -Wconversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165361 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b3f55c5728aaf0d28579e67db3dd34c2934e7805 05-Oct-2012 David Blaikie <dblaikie@gmail.com> Implement -Wshift-op-parentheses for: a << b + c

This appears to be consistent with GCC's implementation of the same warning
under -Wparentheses. Suppressing a << b + c for cases where 'a' is a user
defined type for compatibility with C++ stream IO. Otherwise suggest
parentheses around the addition or subtraction subexpression.

(this came up when MSVC was complaining (incorrectly, so far as I can tell)
about a perceived violation of this within the LLVM codebase, PR14001)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165283 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c7782d96c657eeb767bfea5117db49dc40e6356c 05-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Modules] Introduce Module::TopHeaders which is a set of top-level headers
that are associated with a (sub)module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
erialization/ASTBitCodes.h
f03b888a12ccff7d54ddd8a79a0141cf23adbf67 05-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessing record] Have PPEntityID be independent of the size of the
loaded entities vector, otherwise its meaning will change when a module
is imported and the vector size changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165278 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
d1a55a6631b11b6c5364772023451c547eafedee 05-Oct-2012 Richard Smith <richard-llvm@metafoo.co.uk> Egriegious hack to support libstdc++4.6's broken <atomic> header, which defines
a non-inline namespace, then reopens it as inline to try to add its symbols to
the surrounding namespace. In this one special case, permit the namespace to be
reopened as inline, and patch up the name lookup tables to match.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
59c0a818a79be850f7ae8fdafd57a1710e5b809a 04-Oct-2012 Abramo Bagnara <abramo.bagnara@bugseng.com> Fixed FunctionTypeLoc source range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165259 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ema/DeclSpec.h
03a400510fb8ba2e88e27c95ec797d944d944c4b 04-Oct-2012 Abramo Bagnara <abramo.bagnara@bugseng.com> Fixed friend decl source range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
e20e508aecf413f84b0dc4928cbf4bb5ce6c5bdc 04-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Driver: Link crtfastmath.o if it's available and -ffast-math is specified.

crtfastmath.o contains routines to set the floating point flags to a faster,
unsafe mode. Linking it in speeds up code dealing with denormals significantly
(PR14024).

For now this is only enabled on linux where I can test it and crtfastmath.o is
widely available. We may want to provide a similar file with compiler-rt
eventually and/or enable it on other platforms too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165240 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
9595c7e2533c836537dc300e75d059c29feb7094 04-Oct-2012 Eli Friedman <eli.friedman@gmail.com> Permanently end the whole "pragma got handled by the parser too early"
mess by handling all pragmas which the parser touches uniformly.
<rdar://problem/12248901>, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165195 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
5904c9c74ed3972af2003927c6df3fbb1e6131e3 04-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> use ';' instead of '-' in the note part of my last patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3da76bfbd24b2747ceb72d1918bbbe3123dac841 03-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When indexing, invoke the importedASTFile for PCH files as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165161 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
9b7dcdb53cee4234c48bb4ceeef39536419945cf 03-Oct-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Store the owning OptTable in Option so it can construct Group and Alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165150 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
fc44e88cbdf013d285f2e4e3962fb80dcad56770 03-Oct-2012 Simon Atanasyan <satanasyan@mips.com> Remove useless parameter "WantFile" from Driver::GetProgramPath().
This parameter is useless because nowhere used explicitly and always
gets its default value - "false".

The patch reviewed by Rafael Espindola.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165149 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
5b8207358f2bd972edeb28d29062424af38e8239 03-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> Fix a typo in my last patch reported by Erik Schwiebert.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165142 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3021475d7ab05424d8a56829011cf0563562a6d6 03-Oct-2012 Douglas Gregor <dgregor@apple.com> Remove ASTReader::needPendingInstantiation(), introduced in r164993,
which is neither correct nor necessary. The use of this routine was
eliminated by r165137.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165139 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
e5fa3c26919c0fa9817fbbb967f1a418e2fd3140 03-Oct-2012 Douglas Gregor <dgregor@apple.com> Revert most of the functionality in r165001. Instead, make sure that
the ASTReader doesn't attach a body to a function that is already
defined elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165137 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
3f001ff471aec590a65a383a25367a4e1c82f5a3 03-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C arc: Warn under arc about a use of an ivar inside a block
that doesn't have a 'self' as this implicitly captures 'self' and could
create retain cycles. Provide fixit. // rdar://11194874


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165133 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d64c26f6676eef69d1713f353ca8a3c2fe963f17 03-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Set the file entry for a Module* that was created during deserialization
of a module file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165086 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/Module.h
erialization/ModuleManager.h
50e71f1040a4cbc13245f897f9056e846345688d 03-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165085 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/Module.h
d3d981627c375b187f33cc92a034a77ac329ec47 03-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTConsumer::HandleImplicitImportDecl() callback that is invoked
when an ImportDecl that was implicitly created due to an inclusion directive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165084 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
95c579cae01118eadd311d445ff7f491d0011fb0 03-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Some renames to use the 'visitor' nomenclature, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165083 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
6880f492365cc4fa4c941aa83688635003ee7498 03-Oct-2012 Michael Han <Michael.Han@autodesk.com> Improve C++11 attribute parsing.

- General C++11 attributes were previously parsed and ignored. Now they are parsed and stored in AST.
- Add support to parse arguments of attributes that in 'gnu' namespace.
- Differentiate unknown attributes and known attributes that can't be applied to statements when emitting diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165082 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
aa66b08d2d8bbf05bae8c68f58724f754ab57b35 03-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Push evalDynamicCast and evalDerivedToBase up to Store.

These functions are store-agnostic, and would benefit from information in
DynamicTypeInfo but gain nothing from the store type.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165078 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
041ce8e00afd1185549a25d5c2b97d219ae032d9 03-Oct-2012 Jordan Rose <jordan_rose@apple.com> Teach getCXXRecordDeclForPointerType about references.

Then, rename it getPointeeCXXRecordDecl and give it a nice doc comment,
and actually use it.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a2ea4d94f2133aad0d864cf1327af142a47ffb09 02-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH/Module] Change the map of file-level DeclIDs to use a FileID
as key instead of a SLocEntry pointer. This allows the array of
file sorted declarations in a PCH/module to be deterministic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165047 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
2093e0bc4e436b1b2791d5423fb3274dd37231b8 02-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When indexing an AST file, only deserialize the file level
declarations of the current primary module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165046 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTReader.h
erialization/Module.h
48d05e6d776f4b68f3db4016eb5680ac041c2b7d 02-Oct-2012 Ted Kremenek <kremenek@apple.com> Refactor clients of AnalyzerOptions::getBooleanOption() to have
an intermediate helper method to query and populate the Optional value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165043 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
94bb74cef72a33d77c5d6739abfc0840c781eb8e 02-Oct-2012 Ted Kremenek <kremenek@apple.com> Tweak AnalyzerOptions::getOptionAsInteger() to populate the string
table, making it printable with the ConfigDump checker. Along the
way, fix a really serious bug where the value was getting parsed
from the string in code that was in an assert() call. This means
in a Release-Asserts build this code wouldn't work as expected.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165041 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
9e28fe60bbfa5de196ce4aa396210bf10fc5c266 02-Oct-2012 Ted Kremenek <kremenek@apple.com> Change AnalyzerOptions::mayInlineCXXMemberFunction to default populate
the config string table. Also setup a test for dumping the analyzer
configuration for C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165040 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
632dcc92f60ab7f806a89c5bca3a0951763a9219 02-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When indexing an AST file, only deserialize the preprocessing record
entities of the current primary module.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165023 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/PreprocessingRecord.h
erialization/ASTReader.h
8dd927cf03e85b942f323eebb42e06c839887ebb 02-Oct-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add info in the preprocessing record whether an inclusion directive
resulted in an automatic module import.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165022 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
82bfa19fe3be324b13fdbcda46304b52c500f0d4 02-Oct-2012 Aaron Ballman <aaron@aaronballman.com> Allowing individual targets to determine whether a given calling convention is allowed or ignored with warning. This allows for correct name mangling for x64 targets on Windows, which in turn allows for linking against the Win32 APIs.

Fixes PR13782

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TargetInfo.h
1ecf0e6e271f3046bc53264318c47eae0fb80afd 02-Oct-2012 Axel Naumann <Axel.Naumann@cern.ch> Enable programmatic provisioning of virtual module.map files (instead of writing out actual module.map files).
Opens up the wonders of clang::Modules to tools - though they remain as experimental as before.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165002 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
38c3bb40c2cef630c236f3f455ea98999990b8ee 02-Oct-2012 Axel Naumann <Axel.Naumann@cern.ch> Only those InterestingDecls that got added to the AST should be passed to the ASTConsumer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165001 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
39d26c3e499470cd80a3e6f26f11ac681cd9712c 02-Oct-2012 Axel Naumann <Axel.Naumann@cern.ch> Merge pending instantiations instead of overwriting existing ones.
Check whether a pending instantiation needs to be instantiated (or whether an instantiation already exists).
Verify the size of the PendingInstantiations record (was only checking size of existing PendingInstantiations).

Migrate Obj-C++ part of redecl-merge into separate test, now that this is growing.
templates.mm: test that CodeGen has seen exactly one definition of template instantiations.
redecl-merge.m: use "@" specifier for expected-diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164993 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
3ba17ee280d58bf702eb3836c119bab42dcbb9c8 02-Oct-2012 Ted Kremenek <kremenek@apple.com> Tweak diagnostic text to indicate that __weak on a local variable is only allowed
for ARC. Fixes <rdar://problem/12407705>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164990 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
be9af1288881110e406b87914162eaa59f1e5918 02-Oct-2012 Lang Hames <lhames@gmail.com> Add FP_CONTRACT support for clang.

Clang will now honor the FP_CONTRACT pragma and emit LLVM
fmuladd intrinsics for expressions of the form A * B + C (when they occur in a
single statement).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ema/Sema.h
bbff82f302a1dd67589f65912351978905f0c5a7 01-Oct-2012 Anna Zaks <ganna@apple.com> Move isObjCSelf into Expr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
faab5618b5beed350d7444de97cf513ef1a42ca6 01-Oct-2012 Fariborz Jahanian <fjahanian@apple.com> availability in structured documents. Takes
care of comments by Dimitri and Doug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164957 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
622b6fb0a1d280c16e135c7e427b79cafffbde1f 01-Oct-2012 Ted Kremenek <kremenek@apple.com> Have AnalyzerOptions::getBooleanOption() stick the matching config
string in the config table so that it can be dumped as part of the
config dumper. Add a test to show that these options are sticking
and can be cross-checked using FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164954 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
568f785a76e0a21de20932abf09ce7653e651f92 01-Oct-2012 Richard Trieu <rtrieu@google.com> Cleaning up the self initialization checker.
-Allow Sema to do more processing on the initial Expr before checking it.
-Remove the special conditions in HandleExpr()
-Move the code so that only one call site is needed.
-Removed the function from Sema and only call it locally.
-Warn on potentially evaluated reference variables, not just casts to r-values.
-Update tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164951 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ca5d78d0bc3010164f2f9682967d64d7e305a167 01-Oct-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Make ProgramStateManager's SubEngine parameter optional.

It is possible and valid to have a state manager and associated objects
without having a SubEngine or checkers.

Patch by Olaf Krzikalla!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164947 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
31f7c08a0d2b140bf31a08894d1948649de53c15 01-Oct-2012 Daniel Jasper <djasper@google.com> Add matchers for selected C++11 features.

Patch by Gábor Horváth.
Review: http://llvm-reviews.chandlerc.com/D46

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164943 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
f2f3ce54fc1235bec2d0d0b0ef3b53bdff6d9655 30-Sep-2012 Bob Wilson <bob.wilson@apple.com> Add Clang support for iOS6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
02262662b4550d0227038470f2d7b3db7ada2b87 30-Sep-2012 Bob Wilson <bob.wilson@apple.com> Add an FMA intrinsic for ARM Neon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164904 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
2e4457a006fa2beaa87d909b743aa8f09fbf9ec6 30-Sep-2012 Bob Wilson <bob.wilson@apple.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164900 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
aaa8e45b8e392a1f1b7498e2f00c6ed66d41119a 29-Sep-2012 Daniel Jasper <djasper@google.com> Fix refersToDeclaration()-matcher and add missing test case. This was
broken as of r164656 as TemplateArgument::getAsDecl() now asserts
instead of returning NULL for other template arugment kinds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164896 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
1952354bd376062c3ab3d328c0fc6c36530c9309 29-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Move the 'find macro by spelling' infrastructure to the Preprocessor class and
use it to suggest appropriate macro for __attribute__((deprecated)) in
-Wdocumentation-deprecated-sync.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CommentSema.h
ST/RawCommentList.h
ex/Preprocessor.h
f8afcffe6a0213760b64c211812b1750e1e1e967 29-Sep-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> For PPCallbacks::InclusionDirective() add a parameter for the module, whenever
an inclusion directive was automatically turned into a module import, and
PPCallbacks::moduleImport() for an explicit module import.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164874 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
e2ac16b09ea66ad955752381b82fb8719d003e5e 29-Sep-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> In the Module class, add a reference to the corresponding AST file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
b6d80fe68d30ebd14b20c96643c252c36041df8d 29-Sep-2012 Jordan Rose <jordan_rose@apple.com> Use a custom DenseMapInfo for WeakObjectProfileTy.

We can't specialize the usual llvm::DenseMapInfo at the end of the file
because by that point the DenseMap in FunctionScopeInfo has already been
instantiated.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164862 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
66da0abf7ab7cd449bb1d5134b2ef97d9d34d812 29-Sep-2012 Alexander Kornienko <alexfh@google.com> Compatibility macro detection for the -Wimplicit-fallthrough diagnostic.

Summary:
When issuing a diagnostic message for the -Wimplicit-fallthrough diagnostics, always try to find the latest macro, defined at the point of fallthrough, which is immediately expanded to "[[clang::fallthrough]]", and use it's name instead of the actual sequence.

Known issues:
* uses PP.getSpelling() to compare macro definition with a string (anyone can suggest a convenient way to fill a token array, or maybe lex it in runtime?);
* this can be generalized and used in other similar cases, any ideas where it should reside then?

Reviewers: doug.gregor, rsmith

Reviewed By: rsmith

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D50

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164858 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TokenKinds.h
ex/MacroInfo.h
ex/Token.h
3437daad71d8694d4ddd25418751f2763c0f8979 29-Sep-2012 Jordan Rose <jordan_rose@apple.com> -Wreceiver-is-weak: rephrase warning text and add a suggestion Note.

New output:
warning: weak property may be unpredictably set to nil
note: property declared here
note: assign the value to a strong variable to keep the object alive
during use

<rdar://problem/12277204>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164857 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a55d32d1b8f799bf58c02540983976368c42d895 29-Sep-2012 Jordan Rose <jordan_rose@apple.com> Pull ScopeInfo implementation into its own file.

The infrastructure for -Warc-repeated-use-of-weak got a little too heavy
to leave sitting at the top of Sema.cpp.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164856 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
7a2704800943fbb69207e125d28186278712af36 29-Sep-2012 Jordan Rose <jordan_rose@apple.com> -Warc-repeated-use-of-weak: check ivars and variables as well.

Like properties, loading from a weak ivar twice in the same function can
give you inconsistent results if the object is deallocated between the
two loads. It is safer to assign to a strong local variable and use that.

Second half of <rdar://problem/12280249>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
58b6bdcdeb683a3504f2248a409e1f4e85876cee 29-Sep-2012 Jordan Rose <jordan_rose@apple.com> Add a warning (off by default) for repeated use of the same weak property.

The motivating example:

if (self.weakProp)
use(self.weakProp);

As with any non-atomic test-then-use, it is possible a weak property to be
non-nil at the 'if', but be deallocated by the time it is used. The correct
way to write this example is as follows:

id tmp = self.weakProp;
if (tmp)
use(tmp);

The warning is controlled by -Warc-repeated-use-of-receiver, and uses the
property name and base to determine if the same property on the same object
is being accessed multiple times. In cases where the base is more
complicated than just a single Decl (e.g. 'foo.bar.weakProp'), it picks a
Decl for some degree of uniquing and reports the problem under a subflag,
-Warc-maybe-repeated-use-of-receiver. This gives a way to tune the
aggressiveness of the warning for a particular project.

The warning is not on by default because it is not flow-sensitive and thus
may have a higher-than-acceptable rate of false positives, though it is
less noisy than -Wreceiver-is-weak. On the other hand, it will not warn
about some cases that may be legitimate issues that -Wreceiver-is-weak
will catch, and it does not attempt to reason about methods returning weak
values.

Even though this is not a real "analysis-based" check I've put the bug
emission code in AnalysisBasedWarnings for two reasons: (1) to run on
every kind of code body (function, method, block, or lambda), and (2) to
suggest that it may be enhanced by flow-sensitive analysis in the future.

The second (smaller) half of this work is to extend it to weak locals
and weak ivars. This should use most of the same infrastructure.

Part of <rdar://problem/12280249>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164854 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
ad0ce53c8219456938405b84c5d13341a47e3d94 27-Sep-2012 Anna Zaks <ganna@apple.com> Make getDefaultSynthIvarName() a member of ObjCPropertyDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
023bd7d6ff3bf9ad6c9fa2e404924195e4f31584 27-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> Pass PrintingPolicy by reference, copying it isn't cheap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
dc6c6d31d797300be4cbe899b4493c48900ffa65 27-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> Shrink LinkageInfo from 96 bits to 8 bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f3477c13eeaf11b32a41f181398fb5deffd0dd73 27-Sep-2012 Sylvestre Ledru <sylvestre@debian.org> Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164766

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164769 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
nalysis/AnalysisContext.h
asic/Diagnostic.h
ema/Sema.h
94ff8e1f57c6382d91d0de981a4f311509d83e37 27-Sep-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo 'iff' => 'if'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
nalysis/AnalysisContext.h
asic/Diagnostic.h
ema/Sema.h
da313592441db36cf4b06be97c4bcc238ee6fa9c 27-Sep-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Per discussion in http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120917/064551.html
have PPCallbacks::InclusionDirective pass the character range for the filename quotes or brackets.

rdar://11113134 & http://llvm.org/PR13880

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164743 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
526d24444c91404dc4165b141e5ec095125c1bc8 26-Sep-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Remove the ParentKind cursor kind from code-completion results.

This is to reduce dependency to cursors for the code-completion results.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164705 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e6d22027bc22d3767a2acdc80299c76b91159867 26-Sep-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Have ASTUnit::Save() return a bool to indicate save error.

Removes a dependency of ASTUnit to clang-c/Index.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164704 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
93dec51750411678bb9c5bc1b27b259f5f5a23bd 26-Sep-2012 Nico Weber <nicolasweber@gmx.de> Revert r163022, it caused PR13924.

Add a test for PR13924. Do not revert the test added in r163022,
it surprisingly still passes even after reverting the code changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164672 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
732cdf383f9030ff2b9fb28dfbdae2285ded80c6 26-Sep-2012 Ted Kremenek <kremenek@apple.com> Remove unnecessary ASTContext& parameter from SymExpr::getType().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164661 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
80bfa3d125fa0b9c636977ea37b4a55b2c9b1037 26-Sep-2012 Eli Friedman <eli.friedman@gmail.com> Fix an edge case of mangling involving the combination of a lambda and typeid.
typeid (and a couple other non-standard places where we can transform an
unevaluated expression into an evaluated expression) is special
because it introduces an an expression evaluation context,
which conflicts with the mechanism to compute the current
lambda mangling context. PR12123.

I would appreciate if someone would double-check that we get the mangling
correct with this patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164658 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d7a6b1640e565487d163023a6a2e83f55476ae96 26-Sep-2012 Eli Friedman <eli.friedman@gmail.com> Fix the AST representation for non-type template arguments to encode
enough information so we can mangle them correctly in cases involving
dependent parameter types. (This specifically impacts cases involving
null pointers and cases involving parameters of reference type.)
Fix the mangler to use this information instead of trying to scavenge
it out of the parameter declaration.

<rdar://problem/12296776>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164656 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
073819806ba2441e2a3e550107f1e756a6ee3ad0 26-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> Teach Type::getAs<TemplateSpecializationType> that a TemplateSpecializationType
for a type alias template can appear as sugar at any level of desugaring, just
like a TypedefType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164655 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
663117ab56390a18f4157ca84c9a92e5c6cad054 26-Sep-2012 Michael J. Spencer <bigcheesegs@gmail.com> [Options] Store the option ID in OptTable::Info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164644 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
river/Option.h
afbb66262948732dc0f9617ffd80768c7145e0c7 26-Sep-2012 Ted Kremenek <kremenek@apple.com> Remove 'const' version of getBasicVals(), which is useless.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164643 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
80ecf5e66738a7058da58489ca55200212f3d42c 26-Sep-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for the -fno-fast-math option.
rdar://12299433

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164638 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
4d7e0ced7f16a04aabe2d8d91cbbb52fb1162810 25-Sep-2012 Alexander Kornienko <alexfh@google.com> Macro history (de-)serialization. Deserialization currently reads only the latest macro definition. Needs more work.

Summary: Passes all tests (+ the new one with code completion), but needs a thorough review in part related to modules.

Reviewers: doug.gregor

Reviewed By: alexfh

CC: cfe-commits, rsmith

Differential Revision: http://llvm-reviews.chandlerc.com/D41

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/Preprocessor.h
1370d37f60a173b2acf0afce92db063f06b30b2d 25-Sep-2012 Douglas Gregor <dgregor@apple.com> -iframework should allow separate arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164607 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b09de5177ee8101818a59dcd0038c75b190a2509 25-Sep-2012 Douglas Gregor <dgregor@apple.com> Introduce builtin macros to determine whether we're building a
specific module (__building_module(modulename)) and to get the name of
the current module as an identifier (__MODULE__).

Used to help headers behave differently when they're being included as
part of building a module. Oh, the irony.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
9158a5624154bc43bbbf059c07a2f7b2cd45c1a1 25-Sep-2012 Alexander Kornienko <alexfh@google.com> A minor doc fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164601 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
ea30e2f8667668173cf7433c3c80cf603bd922a4 25-Sep-2012 John McCall <rjmccall@apple.com> Add the Microsoft __is_interface_class type trait.
Patch by Andy Gibbs!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
asic/TypeTraits.h
e402e72273cde2a64fa6097c1fe93f500038675d 25-Sep-2012 John McCall <rjmccall@apple.com> Fix for r163013 regression and further __interface enhancement.
Patch by Andy Gibbs!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
e49ff3ef3459e97fa76502bd9eae4ed9170fd048 25-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix crash when a decltype expression in a trailing return type refers to the
function being instantiated. An error recovery codepath was recursively
performing name lookup (and triggering an unbounded stack of template
instantiations which blew out the stack before hitting the depth limit).

Patch by Wei Pan!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164586 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9b760e8050c6ffcffdfdbde3f8db2992fa717aab 25-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: use 'instance variables' as plural when referring
to the feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
59ed9e40bbb6d0b8f8cd194e059624e954b0eae7 25-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: remove use of 'ivar' in favor of
'instance variable' in text of all diagnostics
for objective-C: // rdar://12352442


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164559 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
374b3837d676133fcc1eb70a25c8baf8ec4a5c4a 24-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> StringRef'ize Preprocessor::CreateString().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164555 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
b0f6b9c94077446ceb29167add2e87fb99733a55 24-Sep-2012 Bob Wilson <bob.wilson@apple.com> Replace an assertion with an error for empty __asm statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c12906ee78e006df6a71acf52ca9dd3171ddbf07 24-Sep-2012 Douglas Gregor <dgregor@apple.com> Make sure that we don't end up making an #undef'd macro visible after
the fact. Test cases will come when we're actually (de-)serializing
macro history.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164549 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
71455895e6b333f42d226646bc93715f8f572870 24-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Include 'long long' extension warning in the LongLong group so that it can be
silenced by -Wno-long-long. Thanks Richard Smith for the fix idea!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164546 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
e3b136bd873508c9ac0ee6eba98c2a810a177eba 24-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Change the wording of the extension warning from
> 'long long' is an extension when C99 mode is not enabled
to
> 'long long' is a C++11 extension
while compiling in C++98 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
8cd3f1505f7c8b71cb77aeb8027e6059eb8b6289 24-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Remove unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164542 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
fc97ea29b1afd9e87341bce2b0cbb0c7172b7dd8 24-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Small cleanup of literal semantic analysis: hiding 'char *' pointers behind
StringRef makes code cleaner. Also, make the temporary buffer smaller:
512 characters is unreasonably large for integer literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164484 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
03a86385d6628398e1671db1d1970eb83ef0f8b3 23-Sep-2012 Rafael Espindola <rafael.espindola@gmail.com> Implement ToolChain::IsUnwindTablesDefault to reduce code duplication a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164473 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
0bd9838751384181ff387f2fb346896792b89617 22-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment sema: warn when comment has \deprecated but declaration does not have a
deprecation attribute ('deprecated', 'availability' or 'unavailable').

This warning is under a separate flag, -Wdocumentation-deprecated-sync, so it
can be turned off easily while leaving other -Wdocumentation warnings on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164467 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
asic/DiagnosticGroups.td
4bc38d69a2cf391555644900d78d074634973aa5 22-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove superfluous \namespace command.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164466 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b9d4e5e3bb235f1149e99d3c833ff7cb3474c9f1 22-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Suppress bugs whose paths go through the return of a null pointer.

This is a heuristic intended to greatly reduce the number of false
positives resulting from inlining, particularly inlining of generic,
defensive C++ methods that live in header files. The suppression is
triggered in the cases where we ask to track where a null pointer came
from, and it turns out that the source of the null pointer was an inlined
function call.

This change brings the number of bug reports in LLVM from ~1500 down to
around ~300, a much more manageable number. Yes, some true positives may
be hidden as well, but from what I looked at the vast majority of silenced
reports are false positives, and many of the true issues found by the
analyzer are still reported.

I'm hoping to improve this heuristic further by adding some exceptions
next week (cases in which a bug should still be reported).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164449 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
8347d3d45e6f128bba19821f0d2f54cadd4d49bb 22-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Allow a BugReport to be marked "invalid" during path generation.

This is intended to allow visitors to make decisions about whether a
BugReport is likely a false positive. Currently there are no visitors
making use of this feature, so there are no tests.

When a BugReport is marked invalid, the invalidator must provide a key
that identifies the invaliation (intended to be the visitor type and a
context pointer of some kind). This allows us to reverse the decision
later on. Being able to reverse a decision about invalidation gives us more
flexibility, and allows us to formulate conditions like "this report is
invalid UNLESS the original argument is 'foo'". We can use this to
fine-tune our false-positive suppression (coming soon).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164446 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
615a092a511cd2dfe1a5364ebf5f80e55e33034d 22-Sep-2012 Jordan Rose <jordan_rose@apple.com> Use llvm::getOrdinalSuffix to print ordinal numbers in diagnostics.

Just a refactoring of common infrastructure. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164443 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
5d99a252c63a7745bcd71231ca5240d2a65e4f1d 22-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix bug which sometimes resulted in further diagnostics being produced after a
fatal error. Previously, if a fatal error was followed by a diagnostic which
was suppressed due to a SFINAETrap, we'd forget that we'd seen a fatal error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
fd09088880f758c874edc8d3d22fa922baec0483 21-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: when diagnosing deprecated/unavailable usage of
setter or getter backing a deprecated/unavailable property,
also not location of the property. // rdar://12324295


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164412 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DelayedDiagnostic.h
ema/Sema.h
8e1c598310d5cd75700cf800cb333b985ce05420 21-Sep-2012 Simon Atanasyan <satanasyan@mips.com> Add four new command line options for MIPS CPU selection:
-mips32, -mips32r2, -mips64, -mips64r2.

The patch reviewed by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164410 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
72d54e1ee7fdd6d309d34fae59844ab7b1d5b58e 21-Sep-2012 Chad Rosier <mcrosier@apple.com> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164390 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
490dd9c70dc25bd7b1936a05d7878dc151f96c46 21-Sep-2012 Rafael Espindola <rafael.espindola@gmail.com> Use MapVectors to make the order we mark virtual functions used by a vtable
deterministic. Fixes pr13868.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
7821e0756744018a34c533f30cdabe62a72d4e4a 21-Sep-2012 Hans Wennborg <hans@hanshq.net> Make warnings about uninitialized fields include the field name.

This makes the wording more informative, and consistent with the other
warnings about uninitialized variables.

Also, me and David who reviewed this couldn't figure out why we would
need to do a lookup to get the name of the variable; so just print the
name directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164366 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ddc0c4814788dda4ef224cd4d22d07154a6ede49 21-Sep-2012 Ted Kremenek <kremenek@apple.com> Simplify getRuntimeDefinition() back to taking no arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164363 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
b6b5b97c517cc651285f620a70b1ca52fa808c5a 21-Sep-2012 David Blaikie <dblaikie@gmail.com> PR13890: Warn on abstract final classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
4c919eb0c022be30d6130446cb8d50a7e8da9f46 21-Sep-2012 Jim Grosbach <grosbach@apple.com> ARM: Use a dedicated intrinsic for vector bitwise select.

The expression based expansion too often results in IR level optimizations
splitting the intermediate values into separate basic blocks, preventing
the formation of the VBSL instruction as the code author intended. In
particular, LICM would often hoist part of the computation out of a loop.

rdar://11011471

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164342 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
a43df9539644bf1c258e12710cd69d79b0b078cd 21-Sep-2012 Ted Kremenek <kremenek@apple.com> Implement faux-body-synthesis of well-known functions in the static analyzer when
their implementations are unavailable. Start by simulating dispatch_sync().

This change is largely a bunch of plumbing around something very simple. We
use AnalysisDeclContext to conjure up a fake function body (using the
current ASTContext) when one does not exist. This is controlled
under the analyzer-config option "faux-bodies", which is off by default.

The plumbing in this patch is largely to pass the necessary machinery
around. CallEvent needs the AnalysisDeclContextManager to get
the function definition, as one may get conjured up lazily.

BugReporter and PathDiagnosticLocation needed to be relaxed to handle
invalid locations, as the conjured body has no real source locations.
We do some primitive recovery in diagnostic generation to generate
some reasonable locations (for arrows and events), but it can be
improved.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164339 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
445895a97ae3f1d7bad3480839d31ed3ebcc9c83 21-Sep-2012 Ted Kremenek <kremenek@apple.com> Constify method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164338 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
cca300a91966df70c9c320e477a3c26ba622673d 21-Sep-2012 Ted Kremenek <kremenek@apple.com> Ensure that the Decl* wrapped by an AnalysisDeclContext cannot be changed after
construction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164337 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
20255039eb5844cd4301eda798032a638f765b2b 21-Sep-2012 Ted Kremenek <kremenek@apple.com> Remove unused fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164336 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
8b533d97e0683a0c87096b95927a2e9ce02243d4 20-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> If the range in a for range statement doesn't have a viable begin/end function,
but can be dereferenced to form an expression which does have viable begin/end
functions, then typo-correct the range, even if something else goes wrong with
the statement (such as inaccessible begin/end or the wrong type of loop
variable).

In order to ensure we recover correctly and produce any followup diagnostics in
this case, redo semantic analysis on the for-range statement outside of the
diagnostic trap, after issuing the typo-correction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164323 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a193f20916f0e0e5a3b0f76ca69e2b3870c1a325 20-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> Improvements to my patch in r164143 per
Richard's comments. // rdar://12202422


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a405b2523b8857e0ba7e6374648b14f618879f33 20-Sep-2012 David Blaikie <dblaikie@gmail.com> Include types when a definition's type differs from a prior declaration.

This is some really old code (took me a while to find the test cases) & the
diagnostic text is slightly incorrect (it should really only apply to
re/declarations/, redefinitions are an error regardless of whether the types
match). Not sure if anyone cares about it, though.

For now this just makes the diagnostic more clear in less obvious cases where
the type of a declaration might not be explicitly written (eg: because it
uses decltype)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164313 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b54b7646b2d00a85d80e40adf7c49553f150c736 20-Sep-2012 Daniel Jasper <djasper@google.com> Add some matchers for basic AST nodes.

Patch by Gábor Horváth.
Review: http://llvm-reviews.chandlerc.com/D45

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164304 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
34af5a23af56af43cd6502096f1d7ed29ad34c20 20-Sep-2012 Nico Weber <nicolasweber@gmx.de> Be more consistent about ending suggestions with a '?'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b3278162bd6d34783607d4bfe8814df73e8ef8c1 20-Sep-2012 Daniel Jasper <djasper@google.com> Provide better error messages for incorrect matchers.

By changing the conversion operator into a conversion constructor, we
can enabled based on the template parameters leading to better error
messages. E.g.: stmt(decl()) will now create an error message including:

note: candidate function not viable: no known conversion from
'clang::ast_matchers::internal::BindableMatcher<clang::Decl>' to 'const
clang::ast_matchers::internal::Matcher<clang::Stmt>' for 1st argument

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164298 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
7c3c6bca2662704fbe038137d8ef2e4112359586 20-Sep-2012 Eli Friedman <eli.friedman@gmail.com> Handle lambdas where the lambda-declarator is an explicit "(void)". PR13854.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164274 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d6f80daa84164ceeb8900da07f43b6a150edf713 20-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> Per C++11 [class.friend]p3, the 'friend' keyword must appear first in a
non-function friend declaration. Patch by Josh Magee!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
561e3c68864d11f39a07a6d1711ce08d2739a263 20-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13881: Add -Wzero-length-array for zero length array extension, and move it into -Wgnu.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3bd762deaace1d62dab413d22c7430434e57a0d5 19-Sep-2012 Rafael Espindola <rafael.espindola@gmail.com> Add some typedefs for clarity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
93e4599196654907dad3bd476013ad05d36ce604 19-Sep-2012 Craig Topper <craig.topper@gmail.com> Remove Context argument from TemplateDeductionInfo constructor. It was no longer needed after the unused Context member was removed in r164104.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164196 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TemplateDeduction.h
8da8a660128180a31479216111ff9b19b11c95b4 19-Sep-2012 Eli Friedman <eli.friedman@gmail.com> Add the TypeSourceInfo for the lambda call operator to the lambda's
definition info; it needs to be there because the mangler needs to
access it before we're finished defining the lambda class.
PR12808.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164186 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
15a9356464f0809e1cb24aa3a7cc2577914ff5bb 18-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> c: warn when an integer value comparison with an
integral expression have the obvious result.
Patch reviewed by John McCall off line.
// rdar://12202422


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e6d2a96cc9689be584c3bfc09ac527a03a25b3bc 18-Sep-2012 Daniel Jasper <djasper@google.com> Add missing matcher for C-style cast expressions.

Patch by Gábor Horváth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164123 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
3680b4f7494b6744b9c5a25f83b63cd8b7e434fc 18-Sep-2012 Daniel Jasper <djasper@google.com> Make all VariadicDynCast-Expr-matchers StatementMatchers

Having Expr-subclass-matchers being VariadicDynCast-Expr-matchers does
not provide additional type safety and just makes using them harder. In
the clang AST, expressions are always statements and an expression
matcher can be used anywhere, a statement matcher is expected. Any given
matcher definition still has at least one noun.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164121 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
6bd4e2bae896284171d3df58308629f7d7426c10 18-Sep-2012 Craig Topper <craig.topper@gmail.com> Remove an unused private field exposed by the recent LLVM_DELETED_FUNCTION changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164104 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TemplateDeduction.h
1a1e9955b3221822f8f2cd100be9b090168bfb78 18-Sep-2012 Craig Topper <craig.topper@gmail.com> Remove an unused private field exposed by the recent LLVM_DELETED_FUNCTION changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164103 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
be2fa7ebf01259b63dc52fe46c8d101c18e72269 18-Sep-2012 Craig Topper <craig.topper@gmail.com> Mark unimplemented copy constructors and copy assignment operators with LLVM_DELETED_FUNCTION.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/NestedNameSpecifier.h
ST/UnresolvedSet.h
asic/IdentifierTable.h
asic/SourceManager.h
ex/HeaderSearch.h
ema/AttributeList.h
ema/Overload.h
ema/Sema.h
ema/Template.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
4b0824229b96d024a96f3c7dd75ab70652c05c5b 18-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> If a comma operator is followed by a token which unambiguously indicates the
start of a statement or the end of a compound-statement, diagnose the comma as
a typo for a semicolon. Patch by Ahmed Bougacha! Additional test cases and
minor refactoring by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164085 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
43f8c40b05482894d94a8779a5ccd0f9a35420f3 18-Sep-2012 Ted Kremenek <kremenek@apple.com> Per discussion on cfe-dev, remove -Wunique-enums entirely. There
is no compelling argument that this is a generally useful warning,
and imposes a strong stylistic argument on code beyond what it was
intended to find warnings in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164083 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
03ebd3b4af9e4ab8e14a3f136d8a28df463f54ec 18-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: improve on warnings about misplacement of method
argument names. // rdar://12263549


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164077 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
08602359845e668194d111b794b8965358babfe6 17-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: issue warning when there is no whitespace
between objc method parameter name and colon.
// rdar://12263549


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
5fc1d0c4532c55cc47ba6628f296bf5b86d2eaf0 17-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Teach the analyzer about implicit initialization of statics
in ObjCMethods.

Extend FunctionTextRegion to represent ObjC methods as well as
functions. Note, it is not clear what type ObjCMethod region should
return. Since the type of the FunctionText region is not currently used,
defer solving this issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164046 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
6944e20065955414a56a6aab9b7e271e3e826a88 17-Sep-2012 Axel Naumann <Axel.Naumann@cern.ch> Open up a few higher-level functions for tools.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164028 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
19ec962baba4bd332cb4dd83b3cfb67e33ea2b4c 15-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: support \namespace like other commands that contain just a
declaration for the entity being documented.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
f56faa01936b9cf909623d7f06e3c2569ca4a78e 15-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
ST/Expr.h
ST/RecordLayout.h
ST/Type.h
STMatchers/ASTMatchersInternal.h
asic/Diagnostic.h
asic/IdentifierTable.h
river/Arg.h
river/ArgList.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/VerifyDiagnosticConsumer.h
ex/HeaderMap.h
ex/Lexer.h
ex/PTHLexer.h
ex/PreprocessorLexer.h
ex/TokenLexer.h
arse/Parser.h
ewrite/Core/DeltaTree.h
ewrite/Core/RewriteRope.h
ewrite/Core/TokenRewriter.h
ema/CodeCompleteConsumer.h
ema/DeclSpec.h
ema/DelayedDiagnostic.h
ema/Sema.h
ema/TemplateDeduction.h
erialization/ASTReader.h
erialization/ContinuousRangeMap.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
ec1b330cc309efa2f0835e8d83892ea2c89e3ae1 15-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Make PTHManager properly noncopyable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163982 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
d11aa850a955027578ff47ab7e266ccf9173b5c2 15-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Address a long-standing FIXME: remove an unused copy constructor and make
UnqualifiedId() properly noncopyable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163981 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
bc57b108b2253e26b83768dba196c28564952f18 15-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> const _Atomic(T) is not an atomic type, so do not allow it as the type 'A' in
C11 7.17's atomic operations. GNU's __atomic_* builtins do allow const-qualified
atomics, though (!!) so don't restrict those.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e10f4d384f5ae113d72a5193a1332c1930635ccc 15-Sep-2012 Jordan Rose <jordan_rose@apple.com> -Warc-retain-cycles: warn at variable initialization as well as assignment.

Specifically, this should warn:

__block block_t a = ^{ a(); };

Furthermore, this case which previously warned now does not, since the value
of 'b' is captured before the assignment occurs:

block_t b; // not __block
b = ^{ b(); };

(This will of course warn under -Wuninitialized, as before.)

<rdar://problem/11015883>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163962 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6f5a2ec123ffebfb27f74a024ec3dccd65be5e83 14-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C arc: remove -Warc-abi in its entirety.
// rdar://10554025


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
388a594cd04aae78be452f6eacb9ca6be239c1f8 14-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: support the "\invariant" command.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
ae19fbba559d8199d1f2b7154863180b0ae22ac7 13-Sep-2012 Douglas Gregor <dgregor@apple.com> Don't perform template argument deduction against invalid templates;
it's likely to lead to a crash later on. Fixes PR12933 /
<rdar://problem/11525335>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163838 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
abcf0dccc9cd4c802f4e7797bf452c6808d2226f 13-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: handle \deprecated command. It is a block command, but it
should be fine to use it without further explanations in the attached
paragraph, so the warning about empty paragraph was turned off for it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163836 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
ST/CommentCommands.td
75379455fc88ca1f021e55ffe1cab3a9c2b2a37a 13-Sep-2012 Douglas Gregor <dgregor@apple.com> Promote the warning about extra qualification on a declaration from a
warning to an error. C++ bans it, and both GCC and EDG diagnose it as
an error. Microsoft allows it, so we still warn in Microsoft
mode. Fixes <rdar://problem/11135644>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
760402327bd688bb477b1d8084e34be81db5baf0 13-Sep-2012 NAKAMURA Takumi <geek4civic@gmail.com> ASTMatchersMacros.h: Appease msvc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163798 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersMacros.h
a7564433191601cb8851196b8dde39392c9c05ee 13-Sep-2012 Daniel Jasper <djasper@google.com> Create initial support for matching and binding NestedNameSpecifier(Loc)s.

Review: http://llvm-reviews.chandlerc.com/D39

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163794 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTMatchersMacros.h
STMatchers/ASTTypeTraits.h
1824d54df85a462ada812dadda18130f951d40f3 13-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix Doxygen misuse: refer to parameter names in paragraphs correctly (\arg is
not what most people want -- it starts a new paragraph).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163793 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
ST/ASTContext.h
ST/CharUnits.h
ST/Decl.h
ST/DeclObjC.h
ST/ExternalASTSource.h
ST/NSAPI.h
ST/SelectorLocationsKind.h
odeGen/CodeGenAction.h
river/ArgList.h
river/Compilation.h
river/Driver.h
river/Tool.h
river/ToolChain.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/FrontendAction.h
rontend/HeaderSearchOptions.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
ex/TokenLexer.h
ewrite/Core/Rewriter.h
ema/Initialization.h
ema/Sema.h
erialization/ASTReader.h
30c8a1f79f6d0b61235f5c2762c9077af70d426d 13-Sep-2012 Manuel Klimek <klimek@google.com> Add missing accessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163792 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
127ff2ea6440c3da4b47f9c8b3b190254a97e7b5 13-Sep-2012 Ted Kremenek <kremenek@apple.com> Conditionally parse documentation comments in system headers by
passing -fretain-comments-from-system-headers. By default, the
compiler no longer parses such documentation comments, as they
can result in a noticeable compile time/PCH slowdown.

Fixes <rdar://problem/11860820>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/LangOptions.def
river/Options.td
670941c28c0683ecc251dafdf093a71629625dc9 13-Sep-2012 Jordan Rose <jordan_rose@apple.com> Format strings: offer a fixit for Darwin's %D/%U/%O to ISO %d/%u/%o.

<rdar://problem/12061922>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163772 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
275b6f52c7bcafc1f3cf291813b5c60ee776965a 13-Sep-2012 Jordan Rose <jordan_rose@apple.com> Format strings: %D, %U, and %O are valid on Darwin (same as %d, %u, %o).

These will warn under -Wformat-non-iso, and will still be rejected
outright on other platforms.

<rdar://problem/12061922>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163771 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
5f7c0add1ea1d8e1d2f920d77fd1a7b6160c2d93 13-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Don't reimplement an existing function.

Thanks Jordan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163762 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
4ef19205b6912316296db74a9073ad6fa60e4cca 13-Sep-2012 Ted Kremenek <kremenek@apple.com> Refactor logic in ExprEngine for detecting 'noreturn' methods
in NSException to a helper object in libAnalysis that can also
be used by Sema. Not sure if the predicate name 'isImplicitNoReturn'
is the best one, but we can massage that later.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163759 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/ObjCNoReturn.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
e6f18c3e6a28229b5871007858b8c30882494b09 13-Sep-2012 Richard Trieu <rtrieu@google.com> Add two new functions to Qualifiers.

static Qualifiers removeCommonQualifiers(Qualifiers &L, Qualifiers &R)
Removes the common qualifiers from L and R and returns them in a new Qualifier.
This will be used in template diffing.

void removeQualifiers(Qualifiers Q)
Removes the qualifiers in Q from the current qualifier.
This replaces the current underlying implementation of operator- and
operator -= which only performed bit masking.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163752 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
16e6a7cb41319459ded69b4d47f405c1035dd347 13-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Do not report use of undef on "return foo();" when the return type is void.

Fixes a false positive found by analyzing LLVM code base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163750 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
522fc21f3adc647817edc8017e6928a64c96899b 13-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Teach UndefOrNullArgVisitor to track parent regions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163748 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
63d88728d862f8a69b3291e533d193d1d8513f5a 12-Sep-2012 Daniel Jasper <djasper@google.com> Rename isA to isSameOrDerivedFrom.

There are two evils we can choose from:
- Name overlap between isA-matcher and llvm::isa<>()
- Bad name for what the isA-matcher currently does

After some discussion we have agreed to go with the latter evil.

Review: http://llvm-reviews.chandlerc.com/D40

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163740 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
0841a07498af164a9702f943ab2f517e23eecc77 12-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: recognize more Doxygen commands


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163723 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommands.td
e23fb90712233bdfa04387e48b54a7168e23cb3e 12-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix a couple of Doxygen issues pointed out by -Wdocumentation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163722 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b648cf02f13ae74ec346f8d22933298f9977e4e0 12-Sep-2012 Ted Kremenek <kremenek@apple.com> Revert "objective-C: warn under a flag if missing argument"

We plan on discussing this more, but we shouldn't have it in the compiler
in an incomplete state.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163720 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e62b1295ec71d4f0ca05b973e88d4b4e858eb96e 12-Sep-2012 Ted Kremenek <kremenek@apple.com> Revert "objective-C: warn if selector has nothing but bare"

We plan on discussing this more.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163719 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9a4db032ecd991626d236a502e770126db32bd31 12-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13811: Add a FunctionParmPackExpr node to handle references to function
parameter packs where the reference is not being expanded but the pack has
been. Previously, Clang would segfault in such cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163672 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
10d65cd8c8974d71ade0f926ab0578fc7dc325e9 11-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: warn if selector has nothing but bare
':' in its name. // rdar://8366823


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b0b8a96df25660cbdbf35d23c3ff5887c33f82f9 11-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: handle non-builtin commands correctly. After semantic
analysis registers a command, it becomes a "known" command for the lexer, since
it has an ID. Having this freedom of choice to register a command is a good
thing since BriefParser does not need this.

But the parser should still invoke the correct semantic analysis method
(actOnUnknownCommand) in this case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
ST/CommentSema.h
92faee71f4fa01565c1c1eab617e936a01d56276 11-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: warn under a flag if missing argument
name results in unintended selector name.
// rdar://12263549


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fb7669ee725ec699e2b49b8359c4652536949739 11-Sep-2012 Douglas Gregor <dgregor@apple.com> Fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
00b4f64ecb26b031c1f4888f39be6c706156356a 11-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Member function calls that use qualified names are non-virtual.

C++11 [expr.call]p1: ...If the selected function is non-virtual, or if the
id-expression in the class member access expression is a qualified-id,
that function is called. Otherwise, its final overrider in the dynamic type
of the object expression is called.

<rdar://problem/12255556>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163577 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
9f0b1324a5352713337c75ef4a5acffd96609c6c 11-Sep-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge-2012_09_10
4ea9b89ff6dc50d5404eb56cad5e5870bce49ef2 11-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Do not count calls to small functions when computing stack
depth.

We only want to count how many substantial functions we inlined. This
is an improvement to r163558.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163571 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
57330eed3fbe530cb05996e4a346cc5fc217c0d9 11-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Add an option to enable/disable objc inlining.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163562 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
7229d0011766c174beffe6a846d78f448f845b39 11-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Add ipa-always-inline-size option (with 3 as the default).

The option allows to always inline very small functions, whose size (in
number of basic blocks) is set using -analyzer-config
ipa-always-inline-size option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163558 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
978869aa6e31a4bc6afdf5446ffb717aad3f7d97 10-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Make the defaults explicit for each of the new config options.

Also, document both new inlining options in IPA.txt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163551 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
81fb50e8b120fc95dc0245b4112972d4d7cca3b5 10-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] For now, don't inline C++ standard library functions.

This is a (heavy-handed) solution to PR13724 -- until we know we can do
a good job inlining the STL, it's best to be consistent and not generate
more false positives than we did before. We can selectively whitelist
certain parts of the 'std' namespace that are known to be safe.

This is controlled by analyzer config option 'c++-stdlib-inlining', which
can be set to "true" or "false".

This commit also adds control for whether or not to inline any templated
functions (member or non-member), under the config option
'c++-template-inlining'. This option is currently on by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163548 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
e4330a302ac20b41b9800267ebd4b5b01f8553f8 10-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST: TableGen'ize all command lists in CommentCommandTraits.cpp.

Now we have a list of all commands. This is a good thing in itself, but it
also enables us to easily implement typo correction for command names.

With this change we have objects that contain information about each command,
so it makes sense to resolve command name just once during lexing (currently we
store command names as strings and do a linear search every time some property
value is needed). Thus comment token and AST nodes were changed to contain a
command ID -- index into a tables of builtin and registered commands. Unknown
commands are registered during parsing and thus are also uniformly assigned an
ID. Using an ID instead of a StringRef is also a nice memory optimization
since ID is a small integer that fits into a common bitfield in Comment class.

This change implies that to get any information about a command (even a command
name) we need a CommandTraits object to resolve the command ID to CommandInfo*.
Currently a fresh temporary CommandTraits object is created whenever it is
needed since it does not have any state. But with this change it has state --
new commands can be registered, so a CommandTraits object was added to
ASTContext.

Also, in libclang CXComment has to be expanded to include a CXTranslationUnit
so that all functions working on comment AST nodes can get a CommandTraits
object. This breaks binary compatibility of CXComment APIs.

Now clang_FullComment_getAsXML(CXTranslationUnit TU, CXComment CXC) doesn't
need TU parameter anymore, so it was removed. This is a source-incompatible
change for this C API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CMakeLists.txt
ST/Comment.h
ST/CommentCommandTraits.h
ST/CommentCommands.td
ST/CommentLexer.h
ST/CommentSema.h
ST/Makefile
3f0ec5209726641782468bd4c7597e79dda78b15 10-Sep-2012 DeLesley Hutchins <delesley@google.com> Thread-safety analysis: differentiate between two forms of analysis; a precise
analysis that may give false positives because it is confused by aliasing, and
a less precise analysis that has fewer false positives, but may have false
negatives. The more precise warnings are enabled by -Wthread-safety-precise.
An additional note clarify the warnings in the precise case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163537 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9f55983d966bbf3e6916b5cf5b35acfab2944887 10-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: Improving diagnostocs for missing call to
super's annotated methods. // rdar://6386358


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163517 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fcde83c75ef72da920cfc02e24edeaf36f79f47f 10-Sep-2012 Ted Kremenek <kremenek@apple.com> Have PathDiagnosticPiece::getString() return a StringRef instead
of a std::string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163488 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
4a66557c297e1e5a71a3da4ceca1969800e7de70 09-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> RawCommentList: don't copy the whole new RawComment to LastComment each time.
We just need a single SourceLocation for previous comment end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
ce15cce38c34ae73348457da73c52df81cde3588 09-Sep-2012 Ted Kremenek <kremenek@apple.com> Remove dead method ProgramState::MarshalState().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163479 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
762f159c3295552f1f3e5e1af8b66385bfaed786 09-Sep-2012 Abramo Bagnara <abramo.bagnara@bugseng.com> Added missing const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e5f0588840b20897631cc8110344fd2745ef4caa 08-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> When a bad UTF-8 encoding or bogus escape sequence is encountered in a
string literal, produce a diagnostic pointing at the erroneous character
range, not at the start of the literal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163459 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
ex/LiteralSupport.h
8be066e6733364cd34f25c4f7b7344f72aa23369 08-Sep-2012 Jordan Rose <jordan_rose@apple.com> Format strings: suggest %lld instead of %qd and %Ld with -Wformat-non-iso.

As a corollary to the previous commit, even when an extension is
available, we can still offer a fixit to the standard modifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163453 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
bbb6bb4952b77e57b842b4d3096848123ae690e7 08-Sep-2012 Jordan Rose <jordan_rose@apple.com> Format strings: %Ld isn't available on Darwin or Windows.

This seems to be a GNU libc extension; we offer a fixit to %lld on
these platforms.

<rdar://problem/11518237>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163452 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
asic/DiagnosticSemaKinds.td
841011373b345cf79d0da4b7242dcf2869a43502 08-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: introduce __attribute((objc_requires_super)) on method
in classes. Use it to flag those method implementations which don't
contain call to 'super' if they have 'super' class and it has the method
with this attribute set. This is wip. // rdar://6386358


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
47cbd0f3892c7965cf16a58393f9f17a22d4d4d9 08-Sep-2012 Ted Kremenek <kremenek@apple.com> Remove ProgramState::getSymVal(). It was being misused by Checkers,
with at least one subtle bug in MacOSXKeyChainAPIChecker where the
calling the method was a substitute for assuming a symbolic value
was null (which is not the case).

We still keep ConstraintManager::getSymVal(), but we use that as
an optimization in SValBuilder and ProgramState::getSVal() to
constant-fold SVals. This is only if the ConstraintManager can
provide us with that information, which is no longer a requirement.
As part of this, introduce a default implementation of
ConstraintManager::getSymVal() which returns null.

For Checkers, introduce ConstraintManager::isNull(), which queries
the state to see if the symbolic value is constrained to be a null
value. It does this without assuming it has been implicitly constant
folded.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163428 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
526b4a63cd567393fd43af837ac9d0f35fc267f7 08-Sep-2012 Ted Kremenek <kremenek@apple.com> Add default implementation of ConstraintManager::getSymVal() and a doxygen comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163426 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
ace64b5f6a338111084bf4a7c9b7488a9965ef4e 08-Sep-2012 Ted Kremenek <kremenek@apple.com> Remove ConstraintManager:isEqual(). It is no longer used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163425 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
9366a5a8d0c5834cffda2c31c924605fb9dffc9b 07-Sep-2012 Abramo Bagnara <abramo.bagnara@bugseng.com> Moved back getCharAndSizeNoWarn to public area.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163408 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
76dafa7e6487c0b51fadebd16bdefe0e0e23d595 07-Sep-2012 Daniel Jasper <djasper@google.com> Change the behavior of the isDerivedFrom-matcher to not match on the
class itself. This caused some confusion (intuitively, a class is not
derived from itself) and makes it hard to write certain matchers, e.g.
"match and bind any pair of base and subclass".

The original behavior can be achieved with a new isA-matcher. Similar
to all other matchers, this matcher has the same behavior and name as
the corresponding AST-entity - in this case the isa<>() function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163385 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
579b120038ca817e0ce423303ebc1b4e0c6cbbe1 07-Sep-2012 Manuel Klimek <klimek@google.com> Implements hasAncestor.

Implements the hasAncestor matcher. This builds
on the previous patch that introduced DynTypedNode to build up
a parent map for an additional degree of freedom in the AST traversal.

The map is only built once we hit an hasAncestor matcher, in order
to not slow down matching for cases where this is not needed.

We could implement some speed-ups for special cases, like building up
the parent map as we go and only building up the full map if we break
out of the already visited part of the tree, but that is probably
not going to be worth it, and would make the code significantly more
complex.

Major TODOs are:
- implement hasParent
- implement type traversal
- implement memoization in hasAncestor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163382 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
6964b3f80ce1ba489e7e25e7cd58062699af9b0c 07-Sep-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR9023: A template template parameter whose template parameter list contains an
unexpanded parameter pack is a pack expansion. Thus, as with a non-type template
parameter which is a pack expansion, it needs to be expanded early into a fixed
list of template parameters.

Since the expanded list of template parameters is not itself a parameter pack,
it is permitted to appear before the end of the template parameter list, so also
remove that restriction (for both template template parameter pack expansions and
non-type template parameter pack expansions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163369 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ema/Sema.h
erialization/ASTBitCodes.h
1edeed3b0fe01fb07a769bd1acc2ce2dc9ec431d 07-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Assert that StmtPoint should be created with a non-null Stmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163358 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
8123b6e7838216a53ba050f07e36fee28e1bbdaf 06-Sep-2012 Sam Panzer <espanz@gmail.com> Clarified diagnostics for range-based for loops with invalid ranges

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
200fa2e70d52ae6d620e81cd45536071fdde70c0 06-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Don't attempt to devirtualize calls to base class destructors.

CXXDestructorCall now has a flag for when it is a base destructor call.
Other kinds of destructor calls (locals, fields, temporaries, and 'delete')
all behave as "whole-object" destructors and do not behave differently
from one another (specifically, in these cases we /should/ try to
devirtualize a call to a virtual destructor).

This was causing crashes in both our internal buildbot, the crash still
being tracked in PR13765, and some of the crashes being tracked in PR13763,
due to a assertion failure. (The behavior under -Asserts happened to be
correct anyway.)

Adding this knowledge also allows our DynamicTypePropagation checker to do
a bit less work; the special rules about virtual method calls during a
destructor only require extra handling during base destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163348 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
3359fa306836ffb64401aad4b561e7647b20d6ef 06-Sep-2012 Fariborz Jahanian <fjahanian@apple.com> refactoring + objective-C specific test for my last patch.
// rdar://12233989


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163338 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2675b8ed4063ee1d2553cb4acad54d86b2d2047c 06-Sep-2012 Enrico Granata <egranata@apple.com> Enabling the UTF conversion routines that were previously conditionally ifdef'ed out. This change is required to support enhancements in the LLDB data formatters

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
31ba6135375433b617a8587ea6cc836a014ebd86 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Dont cast away const needlessly. Found by gcc48 -Wcast-qual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163325 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
9b925ac059089dfe74e3b8fa5effe519fb9ee885 06-Sep-2012 Anna Zaks <ganna@apple.com> [analyzer] Enhance the member expr tracking to account for references.

As per Jordan's suggestion. (Came out of code review for r163261.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163269 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
ec08735e1b6a51c11533311b774bf6336c0a5d63 06-Sep-2012 Jordan Rose <jordan_rose@apple.com> Format strings: suggest casts for NS(U)Integer and [SU]Int32 on Darwin.

These types are defined differently on 32-bit and 64-bit platforms, and
trying to offer a fixit for one platform would only mess up the format
string for the other. The Apple-recommended solution is to cast to a type
that is known to be large enough and always use that to print the value.

This should only have an impact on compile time if the format string is
incorrect; in cases where the format string matches the definition on the
current platform, no warning will be emitted.

<rdar://problem/9135072&12164284>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5a1ffe98b04120846a15f7105905b5f363b08635 06-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Always include destructors in the analysis CFG.

While destructors will continue to not be inlined (unless the analyzer
config option 'c++-inlining' is set to 'destructors'), leaving them out
of the CFG is an incomplete model of the behavior of an object, and
can cause false positive warnings (like PR13751, now working).

Destructors for temporaries are still not on by default, since
(a) we haven't actually checked this code to be sure it's fully correct
(in particular, we probably need to be very careful with regard to
lifetime-extension when a temporary is bound to a reference,
C++11 [class.temporary]p5), and
(b) ExprEngine doesn't actually do anything when it sees a temporary
destructor in the CFG -- not even invalidate the object region.

To enable temporary destructors, set the 'cfg-temporary-dtors' analyzer
config option to '1'. The old -cfg-add-implicit-dtors cc1 option, which
controlled all implicit destructors, has been removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163264 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
river/CC1Options.td
taticAnalyzer/Core/AnalyzerOptions.h
5b86ffd219bdee7720217d5755b772726668b242 05-Sep-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Allow disabling of wchar_t type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163221 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/TokenKinds.def
river/CC1Options.td
6ebea89be233eaba5e29de8cf3524ad150c860bb 05-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Be more forgiving about calling methods on struct rvalues.

The problem is that the value of 'this' in a C++ member function call
should always be a region (or NULL). However, if the object is an rvalue,
it has no associated region (only a conjured symbol or LazyCompoundVal).
For now, we handle this in two ways:

1) Actually respect MaterializeTemporaryExpr. Before, it was relying on
CXXConstructExpr to create temporary regions for all struct values.
Now it just does the right thing: if the value is not in a temporary
region, create one.

2) Have CallEvent recognize the case where its 'this' pointer is a
non-region, and just return UnknownVal to keep from confusing clients.

The long-term problem is being tracked internally in <rdar://problem/12137950>,
but this makes many test cases pass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163220 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
fd11957f02da689480618d5fc642ef14164e9cdc 05-Sep-2012 Jordan Rose <jordan_rose@apple.com> Revert "[analyzer] Treat all struct values as regions (even rvalues)."

This turned out to have many implications, but what eventually seemed to
make it unworkable was the fact that we can get struct values (as
LazyCompoundVals) from other places besides return-by-value function calls;
that is, we weren't actually able to "treat all struct values as regions"
consistently across the entire analyzer core.

Hopefully we'll be able to come up with an alternate solution soon.

This reverts r163066 / 02df4f0aef142f00d4637cd851e54da2a123ca8e.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163218 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/SVals.h
a78d0d6203a990b88c9c3e4c4f2a277001e8bd46 05-Sep-2012 Manuel Klimek <klimek@google.com> Introduces DynTypedMatcher as a new concept that replaces the UntypedBaseMatcher and TypedMatcher.

Due to DynTypedNode the basic dynamically typed matcher interface can now be simplified.

Also switches the traversal interfaces to use DynTypedNode;
this is in preperation for the hasAncestor implementation, and
also allows us to need fewer changes when we want to add new
nodes to traverse, thus making the code a little more decoupled.

Main design concerns: I went back towards the original design
of getNodeAs to return a pointer, and switched DynTypedNode::get
to always return a pointer (in case of value types like QualType
the pointer points into the storage of DynTypedNode, thus allowing
us to treat all the nodes the same from the point of view of a
user of the DynTypedNodes.

Adding the QualType implementation for DynTypedNode was needed
for the recursive traversal interface changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163212 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTTypeTraits.h
568ba871bbac959029671b81f8e531edb7e0d7d6 04-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Revert r163083 per chandlerc's request.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DiagnosticParseKinds.td
asic/StmtNodes.td
ema/Scope.h
ema/Sema.h
erialization/ASTBitCodes.h
5d9cb1b9880f3cc5a96950644da6bf9c2b76149f 04-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Revert r163076 per chandlerc's request.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163146 91177308-0d34-0410-b5e6-96231b3b80d8
river/Util.h
679fc9314c2bde5eb6bea33c790d1a035461e618 04-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Revert r163078 per chandlerc's request.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163145 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9a134afc12d2f85e9574b8ba70a6d966eefb08d5 03-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Improved the warning for the #@ Microsoft charizing operator. The existing one misspelled the token as "@#" and didn't capitalize Microsoft.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163113 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ca0d10edcf1192ab8546a75e8be5bab7ef32e488 02-Sep-2012 James Dennett <jdennett@google.com> Documentation cleanup: Add \file comment for ASTContest.h, add \brief to many
items, remove redundant names from doc comments, fix various typos, and tidy
up some wording.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163085 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5be92de217a1940d0e109abd0f401df4480c1a4b 02-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Implemented parsing and AST support for the MS __leave exception statement. Also a minor fix to __except printing in StmtPrinter.cpp. Thanks to Aaron Ballman for review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DiagnosticParseKinds.td
asic/StmtNodes.td
ema/Scope.h
ema/Sema.h
erialization/ASTBitCodes.h
850388527e89b802e2f658484200d8584ed5f238 02-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Include the diagnostic introduced in r163078 in a group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163079 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f712c48ce80763f3c0bbc2e1b0afe6ed3b5b88cb 02-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Added a diagnostic for mismatched MS inheritance attributes. Also fixed the incomplete type member pointer size calculation under the MS ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163078 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
601944aeaf1369f92b90e5c279c22f557eb87cdb 02-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Refactored the Windows headers location lookup code. Expose it so standalone tools can have access to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163076 91177308-0d34-0410-b5e6-96231b3b80d8
river/Util.h
91ab900a939e95d965e18299b66928fdbe2aa38d 01-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Disallow creation of int vals with explicit bit width / signedness.

All clients of BasicValueFactory should be using QualTypes instead, and
indeed it seems they are. This caught the (fortunately harmless) bug
fixed in the previous commit.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163069 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/APSIntType.h
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
02df4f0aef142f00d4637cd851e54da2a123ca8e 01-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Treat all struct values as regions (even rvalues).

This allows us to correctly symbolicate the fields of structs returned by
value, as well as get the proper 'this' value for when methods are called
on structs returned by value.

This does require a moderately ugly hack in the StoreManager: if we assign
a "struct value" to a struct region, that now appears as a Loc value being
bound to a region of struct type. We handle this by simply "dereferencing"
the struct value region, which should create a LazyCompoundVal.

This should fix recent crashes analyzing LLVM and on our internal buildbot.

<rdar://problem/12137950>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163066 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/SVals.h
5699f62df144545702b91e91836a63db4e5f2627 01-Sep-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Always derive a CallEvent's return type from its origin expr.

Previously, we preferred to get a result type by looking at the callee's
declared result type. This allowed us to handlereferences, which are
represented in the AST as lvalues of their pointee type. (That is, a call
to a function returning 'int &' has type 'int' and value kind 'lvalue'.)

However, this results in us preferring the original type of a function
over a casted type. This is a problem when a function pointer is casted
to another type, because the conjured result value will have the wrong
type. AdjustedReturnValueChecker is supposed to handle this, but still
doesn't handle the case where there is no "original function" at all,
i.e. where the callee is unknown.

Now, we instead look at the call expression's value kind (lvalue, xvalue,
or prvalue), and adjust the expr's type accordingly. This will have no
effect when the function is inlined, and will conjure the value that will
actually be used when it is not.

This makes AdjustedReturnValueChecker /nearly/ unnecessary; unfortunately,
the cases where it would still be useful are where we need to cast the
result of an inlined function or a checker-evaluated function, and in these
cases we don't know what we're casting /from/ by the time we can do post-
call checks. In light of that, remove AdjustedReturnValueChecker, which
was already not checking quite a few calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163065 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
305c613af6cfc40e519c75d9d2c84c6fa9a841c0 01-Sep-2012 Ted Kremenek <kremenek@apple.com> Split library clangRewrite into clangRewriteCore and clangRewriteFrontend.
This is similar to how we divide up the StaticAnalyzer libraries to separate
core functionality to what is clearly associated with Frontend actions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163050 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/ASTConsumers.h
ewrite/Core/DeltaTree.h
ewrite/Core/HTMLRewrite.h
ewrite/Core/RewriteRope.h
ewrite/Core/Rewriter.h
ewrite/Core/TokenRewriter.h
ewrite/DeltaTree.h
ewrite/FixItRewriter.h
ewrite/Frontend/ASTConsumers.h
ewrite/Frontend/FixItRewriter.h
ewrite/Frontend/FrontendActions.h
ewrite/Frontend/Rewriters.h
ewrite/FrontendActions.h
ewrite/HTMLRewrite.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ewrite/Rewriters.h
ewrite/TokenRewriter.h
17d35c36fbae764fcd68fa8b31624078a033aabc 01-Sep-2012 Joao Matos <ripzonetriton@gmail.com> Normalize line endings of r163013 (part 2).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163032 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticASTKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
1999bd61da97b230da0b4a7b744e12bb51fb995e 01-Sep-2012 Richard Trieu <rtrieu@google.com> Update a warning to point to the DiagGroup created in DiagnosticGroups.td
instead of referring to the flag name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
181cd5bdebf0b88e8194c3f58da60f7f5b918b33 31-Aug-2012 Joao Matos <ripzonetriton@gmail.com> Emulate MSVC's preprocessor macro argument separator behavior by not considering commas from nested macro expansions as argument separators. Fixes parsing of VS 2012 headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163022 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
6666ed4ed2e2bc13da5ac5d0a4947019137d45be 31-Aug-2012 Joao Matos <ripzonetriton@gmail.com> Improved MSVC __interface support by adding first class support for it, instead of aliasing to "struct" which had some incorrect behaviour. Patch by David Robins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Decl.h
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticASTKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
de5277fc555551857602bd7a7e5e616274e2d4a6 31-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Though C++ inlining is enabled, don't inline ctors and dtors.

More generally, this adds a new configuration option 'c++-inlining', which
controls which C++ member functions can be considered for inlining. This
uses the new -analyzer-config table, so the cc1 arguments will look like this:

... -analyzer-config c++-inlining=[none|methods|constructors|destructors]

Note that each mode implies that all the previous member function kinds
will be inlined as well; it doesn't make sense to inline destructors
without inlining constructors, for example.

The default mode is 'methods'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163004 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalyzerOptions.h
376c43223ee29334685250c59fdb11e4b3c594fb 31-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: underline name of the missing method
in the diagnbostic. // rdar://11303469



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163003 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
af503a6f218cbef8704609812668360b0cbd0b60 31-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove the useless CommentOptions class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
da5922f4864b5da254c6676af8833c42adaa6d86 31-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Use LLVM_DELETED_FUNCTION instead of a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
45796b10d11869e86c6b85e24df165410536b313 31-Aug-2012 Ted Kremenek <kremenek@apple.com> Make AnalyzerOptions a shared object between CompilerInvocation and
AnalysisManager, allowing the StringMap of configuration values to
be propagated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162978 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
taticAnalyzer/Core/AnalyzerOptions.h
987695a5ddd78beca784d4e503ffbc2dc879181a 31-Aug-2012 Ted Kremenek <kremenek@apple.com> Move AnalyzerOptions.h into 'Core' StaticAnalyzer sub-library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162977 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
taticAnalyzer/Analyses.def
taticAnalyzer/AnalyzerOptions.h
taticAnalyzer/Core/Analyses.def
taticAnalyzer/Core/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
e506f8a41063410c75945ebb804758bd0202947f 31-Aug-2012 Eli Friedman <eli.friedman@gmail.com> Make a bunch of methods on Lexer private.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162970 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
c24a76e376a767edc14e60bed716396a84cb127a 31-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment HTML tag name machers: move from StringSwitch to an efficient
TableGen-generated string matcher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/CommentHTMLTags.td
ST/CommentSema.h
ST/Makefile
3a46f5fd1709f6df03bbb8b0abf84052dc0f39ff 31-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Ensure that PathDiagnostics profile the same regardless of path.

PathDiagnostics are actually profiled and uniqued independently of the
path on which the bug occurred. This is used to merge diagnostics that
refer to the same issue along different paths, as well as by the plist
diagnostics to reference files created by the HTML diagnostics.

However, there are two problems with the current implementation:

1) The bug description is included in the profile, but some
PathDiagnosticConsumers prefer abbreviated descriptions and some
prefer verbose descriptions. Fixed by including both descriptions in
the PathDiagnostic objects and always using the verbose one in the profile.

2) The "minimal" path generation scheme provides extra information about
which events came from macros that the "extensive" scheme does not.
This resulted not only in different locations for the plist and HTML
diagnostics, but also in diagnostics being uniqued in the plist output
but not in the HTML output. Fixed by storing the "end path" location
explicitly in the PathDiagnostic object, rather than trying to find the
last piece of the path when the diagnostic is requested.

This should hopefully finish unsticking our internal buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162965 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
a6c66cedc022c9e5d45a937d6b8cff491a6bf81b 31-Aug-2012 Eli Friedman <eli.friedman@gmail.com> Change the representation of builtin functions in the AST
(__builtin_* etc.) so that it isn't possible to take their address.
Specifically, introduce a new type to represent a reference to a builtin
function, and a new cast kind to convert it to a function pointer in the
operand of a call. Fixes PR13195.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/OperationKinds.h
asic/DiagnosticSemaKinds.td
erialization/ASTBitCodes.h
918546c584c91ee917c919c967d7d73cecd295dc 31-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C ARC: under -Wexplicit-ownership-type diagnose those
method parameter types which are reference to an objective-C
pointer to object with no explicit ownership. // rdar://10907090



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162959 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fbcb3f11fc90e9f00e6074e9b118b8dc11ca604c 31-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Refactor the logic that determines if a functions should be
reanalyzed.

The policy on what to reanalyze should be in AnalysisConsumer with the
rest of visitation order logic.

There is no reason why ExprEngine needs to pass the Visited set to
CoreEngine, it can populate it itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162957 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
3f2a55d81983577c85c03f6b9844f51c566c785b 31-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Make analyzer-ipa=dynamic-bifurcate the default.

There are two tests regressions that come from the fact that the Retain
Count checker does not cancel out inlining of ObjC methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162950 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/AnalyzerOptions.h
dc601f4a9f69315521abddbca04d4652deee5fdb 31-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Fixup for r162935 as per Jordan's review.

Thanks for catching this!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162949 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
9f6419f96d6cad3f7bd39f444cfc784ccbbdcd65 30-Aug-2012 Richard Trieu <rtrieu@google.com> Add -Wduplicate-enum warning. Clang will emit this warning when an implicitly
initiated enum constant has the same value as another enum constant.

For instance:
enum test { A, B, C = -1, D, E = 1 };
Clang will warn that:
A and D both have value 0
B and E both have value 1

A few exceptions are made to keep the noise down. Enum constants which are
initialized to another enum constant, or an enum constant plus or minus 1 will
not trigger this warning. Also, anonymous enums are not checked.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d295970adc93ed4035d18df23673c2a72d124cc8 30-Aug-2012 Douglas Gregor <dgregor@apple.com> Extend the "__is_pod" hack, which demotes various type trait keywords
(__is_pod, __is_signed, etc.) to normal identifiers if they are
encountered in certain places in the grammar where we know that prior
versions of libstdc++ or libc++ use them, to still allow the use of
these keywords as type traits. Fixes <rdar://problem/9836262> and PR10184.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162937 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
66341c596f93d0c6475d839db94072b8ebd1cf5b 30-Aug-2012 Manuel Klimek <klimek@google.com> Fixes a bug for binding memoized match results.

Intorduces an abstraction for DynTypedNode which makes
is impossible to create in ways that introduced the bug;
also hides the implementation details of the template
magic away from the user and prepares the code for adding
QualType and TypeLoc bindings, as well as using DynTypedNode
instead of overloads for child and ancestor matching.

getNodeAs<T> was changed towards a non-pointer type, as
we'll want QualType and TypeLoc nodes to be returned
by value (the alternative would be to create new storage
which is prohibitively costly if we want to use it for
child / ancestor matching).

DynTypedNode is moved into a new header ASTTypeTraits.h,
as it is completely independent of the rest of the matcher
infrastructure - if the need comes up, we can move it to
a more common place.

The interface for users before the introduction of the
common storage change remains the same, minus the introduced
bug, for which a regression test was added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162936 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTTypeTraits.h
05fcbd3dc28f4cba4a6d33e7aeaabb5f6f7837e3 30-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Do not propagate the [super init] could be nil assumption
from callee to caller.

radar://12109638

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162935 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
2fa9d72d4d23ccdcd4137946e5ebafac7a04f04c 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename 'MaxLoop' to 'maxBlockVisitOnPath' to reflect reality. We
should consider renaming the command line option as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162932 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/AnalyzerOptions.h
3b8a04004afa46057a9af4afbd086be71d619793 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename 'VisualizeEGUbi' and 'VisualizeEGDot' to 'visualizeExplodedGraphWithUbigGraph'
and 'visualizeExplodedGraphWithGraphViz' respectively.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162931 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
0caa2d47b84337e942b3f6652adfafe4ae506cfe 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename AnalyzerOptions 'EagerlyAssume' to 'eagerlyAssumeBinOpBifurcation'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162930 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
255d4d4226b24036ceb11228fbb74286e58620f7 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Store const& to AnalyzerOptions in AnalysisManager instead of copying
individual flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162929 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
5705a40c7ec62f1a903bf26e1e6a7f91b5b98ba3 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Move AnalyzerOptions.h to include/clang/StaticAnalyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162928 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalyzerOptions.h
rontend/CompilerInvocation.h
taticAnalyzer/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
82f5aceed89b85e79373086b7e0e7986e2c59179 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Move Analyses.def to include/clang/StaticAnalyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162927 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/AnalyzerOptions.h
taticAnalyzer/Analyses.def
961713055e636170da59d7006a878cb4ba518a5d 30-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: clang must implicitly convert
__objc_yes/__objc_no to (BOOL)1/(BOOL)0 when
BOOL is declared; otherwise it resorts to
default of 'signed char'. This is important to
selecting the correct Numeric API numberWithBool:
Can't have a clang test for this. Will checkin and
executable llvm test. // rdar://12156616


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c30981a563a8947cb26b1e308d122fa2ef90fceb 30-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Make preprocessor act in a GCC-compatible fashion when a macro is redefined
within its own argument list. The original definition is used for the immediate
expansion, but the new definition is used for any subsequent occurences within
the argument list or after the expansion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162906 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/TokenLexer.h
318cc3c07eaca04d319be841e9e3bac35d1ff9f5 30-Aug-2012 Ted Kremenek <kremenek@apple.com> Change -analyzer-config to use '=' as the key-value separator, and only
support the '-analyzer-config key=val' variant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/CC1Options.td
566698851d76416129cd20ceea02bdd697934c5c 30-Aug-2012 Nico Weber <nicolasweber@gmx.de> Tooling: Add a runToolOnCodeWithArgs() function that allows
passing additional parameters to a tool.

Use this to fix a FIXME in testing code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162889 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
80de487e03dd0f44e4572e2122ebc1aa6a3961f5 29-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Improved diagnostic pruning for calls initializing values.

This heuristic addresses the case when a pointer (or ref) is passed
to a function, which initializes the variable (or sets it to something
other than '0'). On the branch where the inlined function does not
set the value, we report use of undefined value (or NULL pointer
dereference). The access happens in the caller and the path
through the callee would get pruned away with regular path pruning. To
solve this issue, we previously disabled diagnostic pruning completely
on undefined and null pointer dereference checks, which entailed very
verbose diagnostics in most cases. Furthermore, not all of the
undef value checks had the diagnostic pruning disabled.

This patch implements the following heuristic: if we pass a pointer (or
ref) to the region (on which the error is reported) into a function and
it's value is either undef or 'NULL' (and is a pointer), do not prune
the function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162863 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
e40c4238a572bf8241a04e0005f70550cbfc1cfb 29-Aug-2012 Alexander Kornienko <alexfh@google.com> Fixed a problem with #pragma push_macro/pop_macro implementation.

Summary:
The problem was with the following sequence:
#pragma push_macro("long")
#undef long
#pragma pop_macro("long")
in case when "long" didn't represent a macro.
Fixed crash and removed code duplication for #undef/pop_macro case. Added regression tests.

Reviewers: doug.gregor, klimek

Reviewed By: doug.gregor

CC: cfe-commits, chapuni

Differential Revision: http://llvm-reviews.chandlerc.com/D31

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162845 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
a14f400e4c4239b92137fc8aab1ac4700a209591 29-Aug-2012 Aaron Ballman <aaron@aaronballman.com> Reversing the logic since C99 mode is actually not an extension. Also, changing the group to the singular to match the diagnostic better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
7b73e0832b20af1f43601a3d19e76d02d9f4dce5 29-Aug-2012 Ted Kremenek <kremenek@apple.com> Add new -cc1 driver option -analyzer-config, which allows one to specify
a comma separated collection of key:value pairs (which are strings). This
allows a general way to provide analyzer configuration data from the command line.

No clients yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162827 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
8a64bb58c3b24d7d97895e435bbc0965c99bd3be 29-Aug-2012 Alexander Kornienko <alexfh@google.com> Keep history of macro definitions and #undefs

Summary:
Summary: Keep history of macro definitions and #undefs with corresponding source locations, so that we can later find out all macros active in a specified source location. We don't save the history in PCH (no need currently). Memory overhead is about sizeof(void*)*3*<number of macro definitions and #undefs>+<in-memory size of all #undef'd macros>

I've run a test on a file composed of 109 .h files from boost 1.49 on x86-64 linux.
Stats before this patch:
*** Preprocessor Stats:
73222 directives found:
19171 #define.
4345 #undef.
#include/#include_next/#import:
5233 source files entered.
27 max include stack depth
19210 #if/#ifndef/#ifdef.
2384 #else/#elif.
6891 #endif.
408 #pragma.
14466 #if/#ifndef#ifdef regions skipped
80023/451669/1270 obj/fn/builtin macros expanded, 85724 on the fast path.
127145 token paste (##) operations performed, 11008 on the fast path.

Preprocessor Memory: 5874615B total
BumpPtr: 4399104
Macro Expanded Tokens: 417768
Predefines Buffer: 8135
Macros: 1048576
#pragma push_macro Info: 0
Poison Reasons: 1024
Comment Handlers: 8

Stats with this patch:
...
Preprocessor Memory: 7541687B total
BumpPtr: 6066176
Macro Expanded Tokens: 417768
Predefines Buffer: 8135
Macros: 1048576
#pragma push_macro Info: 0
Poison Reasons: 1024
Comment Handlers: 8

In my test increase in memory usage is about 1.7Mb, which is ~28% of initial preprocessor's memory usage and about 0.8% of clang's total VMM allocation.

As for CPU overhead, it should only be noticeable when iterating over all macros, and should mostly consist of couple extra dereferences and one comparison per macro + skipping of #undef'd macros. It's less trivial to measure, though, as the preprocessor consumes a very small fraction of compilation time.


Reviewers: doug.gregor, klimek, rsmith, djasper

Reviewed By: doug.gregor

CC: cfe-commits, chandlerc

Differential Revision: http://llvm-reviews.chandlerc.com/D28

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162810 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
ec2a396c6f11b4017e30f1865f7b62c5a42425b8 29-Aug-2012 Manuel Klimek <klimek@google.com> Modifes BoundNodes to store void* and allow casting them
into the correct types when pulling them out in the result
callback in a type safe way.

This is also the base change for multiple things that will
allow handling things more generally and thus supporting more
of the AST, especially handling Type nodes.

Patch contributed by Michael Diamond.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162804 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
c828620a03b20835a376f6f456a72e44599f4f87 28-Aug-2012 Aaron Ballman <aaron@aaronballman.com> Splitting the duplicated decl spec extension warning into two: one is an ExtWarn and the other a vanilla warning. This addresses PR13705, where const char const * wouldn't warn unless -pedantic was specified under the right conditions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
89fb6d7eba51c7864ec544e07accd23b24057122 28-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add constraints to MSAsmStmt. We don't currently compute
the constraints, so in the interim we speculatively assume a 'r' constraint.
This is expected to work for most cases on x86.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
aba59aafd47ded6d483894cd6ab7bff494eb7587 28-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Make the AsmStmt class non-virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
88617a24adafed42e33d196972f97c72d9a5e0a0 28-Aug-2012 Hans Wennborg <hans@hanshq.net> Warn about suspicious implicit conversions from floating point to bool

This warns in two specific situations:

1) For potentially swapped function arguments, e.g.

void foo(bool, float);
foo(1.7, false);

2) Misplaced brackets around function call arguments, e.g.

bool InRange = fabs(a - b < delta);

Where the last argument in a function call is implicitly converted
from bool to float, and the function returns a float which gets
implicitly converted to bool.

Patch by Andreas Eckleder!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162763 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
64f9b500987394c69cd9a2f5483d06b5cafb0824 28-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix a -Wdocumentation warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162721 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
a1f81bb0e55749a1414b1b5124bb83b9052ff2ac 28-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename addTrackNullOrUndefValueVisitor to trackNullOrUndefValue.

This helper function (in the clang::ento::bugreporter namespace) may add more
than one visitor, but conceptually it's tracking a single use of a null or
undefined value and should do so as best it can.

Also, the BugReport parameter has been made a reference to underscore that
it is non-optional.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162720 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
166b7bd43551964d65bcf4918f51a167b8374e2a 28-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Refactor FindLastStoreBRVisitor to not find the store ahead of time.

As Anna pointed out to me offline, it's a little silly to walk backwards through
the graph to find the store site when BugReporter will do the exact same walk
as part of path diagnostic generation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162719 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
6062334cc388bce69fb3978c4ecb26c6485a5c2b 28-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename CallEvent::mayBeInlined to CallEvent::isCallStmt.

The two callers are using this in order to be conservative, so let's just
clarify the information that's actually being provided here. This is not
related to inlining decisions in any way.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162717 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
c4fb221120f2c8b158082d0b2b9daa29d2f65d5b 28-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Hoist more common code into the AsmStmt base class. Add stubs
with FIXMEs for unimplemented features. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
33f0558f75f70061707d1388e305b8f92f4e55de 28-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add virtual function, getClobber, that returns a StringRef.
More work towards unifying asm stmt codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162712 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
2fd559f041d49863a7396d9e330bc9dae95ac8c4 28-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Hoist getNumClobbers into base class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162711 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5c7f59445ae68109c7ffee731aca2ce32db587c7 28-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Rename getClobber to getClobberStringLiteral. No functional
change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
29760b452876548f59804e8c02c3276bc7281d5d 27-Aug-2012 Matt Beaumont-Gay <matthewbg@google.com> Appease -Wnon-virtual-dtor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
12b95e523c193bac4bdde0b23f2a9777ca956145 27-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add a few comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162699 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
19c0134d465a1d9a1edc45ebac51652d8636c68e 27-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Hoist common Expr handling logic into AsmStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
da083b2ce8db27ce6e508cb77cb12c0fc8b7cad9 27-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Rename GenerateAsmString to generateAsmString to conform with
coding standards. Also, add stub for MSAsmStmt class as part of unifying
codegen logic for AsmStmts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
bbdfe24a19833e4deabc73e50a5c639fefb60a07 27-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Base class AsmStmt implements these.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
066ef86b435a5c567778c25fc201a2831049ad4b 27-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Hoist common logic into the AsmStmt base class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162692 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
728581e7702cafe32cc9e1b5b61a15f5042ce189 27-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add a new base class, AsmStmt, for the GCCAsmStmt and MSAsmStmt
classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/StmtNodes.td
7d2c5ca9c3dad400f66aca58eebef321c04cf57e 27-Aug-2012 Chad Rosier <mcrosier@apple.com> Update comment, per Jordan's suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162684 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8f7f3a65a5e81fbf5c9e184abd9250cc8e67b58c 27-Aug-2012 Chad Rosier <mcrosier@apple.com> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162682 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
be22cb84f32cfa6cf0b6bdaf523288b747bb0f18 27-Aug-2012 Simon Atanasyan <satanasyan@mips.com> Support MIPS DSP Rev2 intrinsics.
The patch reviewed by Akira Hatanaka.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsMips.def
80fd37a57176433d05854dff27b9c5fa869fadd2 27-Aug-2012 John McCall <rjmccall@apple.com> Tweak the ARC-requires-10.6 diagnostic according to Jordan's review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
3682f1ea9c7fddc7dcbc590891158ba40f7fca16 25-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Use the common evalBind infrastructure for initializers.

This allows checkers (like the MallocChecker) to process the effects of the
bind. Previously, using a memory-allocating function (like strdup()) in an
initializer would result in a leak warning.

This does bend the expectations of checkBind a bit; since there is no
assignment expression, the statement being used is the initializer value.
In most cases this shouldn't matter because we'll use a PostInitializer
program point (rather than PostStmt) for any checker-generated nodes, though
we /will/ generate a PostStore node referencing the internal statement.
(In theory this could have funny effects if someone actually does an
assignment within an initializer; in practice, that seems like it would be
very rare.)

<rdar://problem/12171711>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162637 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
df5faf5e7ae6823d0af0b801c4ac26d47f2cee97 25-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] As part of a larger refactoring, rename AsmStmt to GCCAsmStmt.
No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
cd518a0ebc7c0a6aa41d717c360462540ef80a76 25-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Update the AST Reader/Writer for MS-style inline asms.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
erialization/ASTBitCodes.h
c831d8b977a09bf2907d03128b48b5c914a2fafd 25-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix integer unsigned behavior in clang due to signed left shift overflow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162626 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
e16acd3817e501ee2bcf5f631b6911021fa88ba7 25-Aug-2012 Sam Panzer <espanz@gmail.com> New matcher for MaterializeTemporaryExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162609 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
56d7f2348a182002563700db2158da0c6fc115a5 24-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Change the -fenable-experimental-ms-inline-asm option from a
CodeGen option to a LangOpt option. In turn, hoist the guard into the parser
so that we avoid the new (and fairly unstable) Sema/AST/CodeGen logic. This
should restore the behavior of clang to that prior to r158325.
<rdar://problem/12163681>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162602 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.def
rontend/CodeGenOptions.h
53b890ba226e8c84a157ab5e757b93666cc6859d 24-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] More fixups/rewording based on Jordan's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162597 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
42f48fbdf31a7e8c516ba5eed486ff53966459fc 24-Aug-2012 John McCall <rjmccall@apple.com> Instantiate class template specializations during ADL.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162586 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b75e2602e246b44bb285be8cc31166302d77998f 24-Aug-2012 Ted Kremenek <kremenek@apple.com> Rework how PathDiagnosticConsumers pass knowledge of what files they
generated for a given diagnostic to another. Because PathDiagnostics
are specific to a give PathDiagnosticConsumer, store in
a FoldingSet a unique hash for a PathDiagnostic (that will be the same
for the same bug for different PathDiagnosticConsumers) that
stores a list of files generated. This can then be read by the
other PathDiagnosticConsumers.

This fixes breakage in the PLIST-HTML output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162580 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
81e6cfddcbb32eb9bbbee5c3f5156fc19ca7e774 24-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Address Jordan's review comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162579 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
9edd2c8a2ff6c6326ff2d5b081929e4baaa798ed 24-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment diagnostics: for unresolved parameters, do not suggest parameter fixit
with parameter that is documented.

Fixes PR13670, <rdar://problem/12155840>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
be3ace834ee7438915e73d2115365d57d03ceb99 24-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Refactor code. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
3b6bef9a213249c6ab6d67c07b1ac6380961be3e 24-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Push ArrayRef through the Expr hierarchy.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
8268fe7c4bdfa341975a687a8a5e236c2c5b88a4 24-Aug-2012 James Dennett <jdennett@google.com> Allow RecursiveASTVisitor to visit CXXCtorInitializer objects for which
isWritten() returns false, if shouldVisitImplicitCode() returns true.
Previously those CXXCtorInitializers were always skipped.

In order to make this change easier to test, this patch also extends the
test class template ExpectedLocationVisitor to support arbitrary numbers
of expected matches and disallowed matches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7fd90b03a28df0626fdb44d05be9ddcdb2562686 24-Aug-2012 Daniel Jasper <djasper@google.com> Use LLVM's plugin registry to enable registering new compilation
databases. Move JSONCompilationDatabase.h to its own files and
register it as plugin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162541 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
ooling/CompilationDatabasePluginRegistry.h
ooling/JSONCompilationDatabase.h
2dc75ed2ef2fa3cbfd8b2ed88eb2369f3fcd98a9 24-Aug-2012 Daniel Jasper <djasper@google.com> Rename the ASTMatchers to better match AST nodes. Now, all
ASTMatchers have the same name as the corresponding AST nodes
but are lower case. The only exceptions are the "CXX" prefixes
which are not copied over to the matcher names as the goal is to
actually remove these prefixes from the AST node names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162536 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
80ea4bc944eb01c220eeaa004b21ad709ba928e1 24-Aug-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2

Conflicts:
lib/Sema/SemaDeclAttr.cpp

Change-Id: If47d0d39459760017258502b4d9e859ac36a273b
e54778d77d4f2b2d006bdb7e16f49271e1e9d13d 24-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Move DynamicTypeInfo out of the ProgramState.h

(I am not sure if we should move the setters and getters as well and
make them into static methods..)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162528 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
6fbe982bb487931feb3f1ceb9eec8f7f1961393a 24-Aug-2012 Alexander Kornienko <alexfh@google.com> Updated LibTooling.html, minor improvements in CommonOptionsParser

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162521 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CommonOptionsParser.h
633abb0ea01d37ab9c8e4ce1ee9e48894a12dfca 24-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add the basic APIs for Exprs to the MSAsmStmt AST. Next we need
generate the Input/Output expressions using Sema::ActOnIdExpression().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5a90193ad825656d4a03099cd5e9c928d1782b5e 24-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Make analyzer less aggressive when dealing with [self init].

With inlining, retain count checker starts tracking 'self' through the
init methods. The analyser results were too noisy if the developer
did not follow 'self = [super init]' pattern (which is common
especially in older code bases) - we reported self init anti-pattern AND
possible use-after-free. This patch teaches the retain count
checker to assume that [super init] does not fail when it's not consumed
by another expression. This silences the retain count warning that warns
about possibility of use-after-free when init fails, while preserving
all the other checking on 'self'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162508 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
70ff1091315c60fed68d7197c637ec8c588e67a1 24-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment semantic analysis: treat function typedefs as functions so that one can
use \param and \returns in documentation.

Fixes PR13533.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
5354e77e60e82828c7c2361f5c688c2667ab59cc 24-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Now that ASTMultiPtr is nothing more than a array reference, make it a MutableArrayRef.

This required changing all get() calls to data() and using the simpler constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162501 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Ownership.h
4e28d9e2ba9ce237549b45cfd4136ec6536d1325 24-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove ASTOwningVector, it doesn't own anything and provides no value over SmallVector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162492 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Ownership.h
ema/Sema.h
2603fa6c0e0fff904317b525724170ba8ae5bfa8 23-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add a few helper function to the MSAsmStmt class that are needed
by CodeGen.

In the long-term, much of the codegen logic will be shared between the GNU-style
and MS-style inline assembly, but for now I'm replicating this logic to avoid
regressions with the GNU-style.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162478 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
3fe198bf0d6118c7b080c17c3bb28d7c84e458b9 23-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Rip out remnants of move semantic emulation and smart pointers in Sema.

These were nops for quite a while and only lead to confusion. ASTMultiPtr
now behaves like a proper dumb array reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162475 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Ownership.h
ema/ParsedTemplate.h
ema/Sema.h
d5a20c19416d7143771b4d503fa808ae01c4e7ad 23-Aug-2012 Sean Callanan <scallanan@apple.com> Added a method to DeclContext that marks the
lookup table as needing to be built.

This is required for LLDB, which provides the
contents of many DeclContexts through a custom
ExternalASTSource.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
70517ca5c07c4b41ff8662b94ee22047b0299f8c 23-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix a bunch of -Wdocumentation warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Stmt.h
ST/TypeLoc.h
rontend/ASTUnit.h
rontend/DiagnosticRenderer.h
ex/Lexer.h
ex/Preprocessor.h
ema/Sema.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
88920d1a84dc63a3722b1f2b1fb5926c44bd81ab 23-Aug-2012 Roman Divacky <rdivacky@freebsd.org> Mark these const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162443 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
a8eaf008e92759142982f7b40720b2b2674bd663 23-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix undefined behavior: member function calls where 'this' is a null pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162430 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ad0fe03b897f9486191e75c8d90c3ffa9b4fd6a5 23-Aug-2012 Ted Kremenek <kremenek@apple.com> Fix an assortment of doxygen comment issues found by -Wdocumentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Expr.h
ST/ExprObjC.h
ex/Preprocessor.h
taticAnalyzer/Core/PathSensitive/Store.h
1becab2120142b1be87d684a68d3bea98f5abfb5 22-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Add more comments to CallEvent and RuntimeDefinition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162399 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
d7166b01df14173b7f26620c5a89f9934a968f85 22-Aug-2012 Alexander Kornienko <alexfh@google.com> Reverted clang-check to fully supported CommandLine Library use-case: global
static variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162391 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CommandLineClangTool.h
ooling/CommonOptionsParser.h
e3f3825bd82f84f2a1ae0a02274a33298bb720b3 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Remove BasicConstraintManager. It hasn't been in active service for a while.

As part of this change, I discovered that a few of our tests were not testing
the RangeConstraintManager. Luckily all of those passed when I moved them
over to use that constraint manager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162384 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
a148fbcb5f441a089ea33067473fae5a8d5f778e 22-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Make ceil/floor/nearbyint/rint/round const even with -fmath-errno.

The conditions described by POSIX can never happen with IEEE-754 floats.
When the function is const we can emit a single sse4.1 instruction for
it, without losing anything :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5c1dcc59754c539cddc967b938d7b3a688d0c430 22-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Math builtin definition tweaks.

There were missed optimizations when the system headers didn't have attributes
in place, specifically:

- Add copysign, exp2, log2, nearbyint, rint and trunc to the list.
These are functions that get inlined by LLVM's optimizer, but only when they
have the right attributes.
- Mark copysign, fabs, fmax, fmin and trunc const unconditionally.
Previously these were only const with -fno-math-errno, but they never set
errno per POSIX.

For ceil/floor/nearbyint/round I'm not aware of any implementation that sets
errno, but POSIX says it may signal overflow so I left them alone for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
56a46b51df691f857f7120aaf2d4deeff0b014de 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename 'unbindLoc()' (in ProgramState) and 'Remove()' to
'killBinding()'. The name is more specific, and one just forwarded
to the other.

Add some doxygen comments along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162350 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
66c486f275531df6362b3511fc3af6563561801b 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename 'currentX' to 'currX' throughout analyzer and libAnalysis.
Also rename 'getCurrentBlockCounter()' to 'blockCount()'.

This ripples a bunch of code simplifications; mostly aesthetic,
but makes the code a bit tighter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162349 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
3b1df8bb941a18c4a7256d7cfcbccb9de7e39995 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename 'getConjuredSymbol*' to 'conjureSymbol*'.

No need to have the "get", the word "conjure" is a verb too!
Getting a conjured symbol is the same as conjuring one up.

This shortening is largely cosmetic, but just this simple changed
cleaned up a handful of lines, making them less verbose.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162348 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
32a549a64922af0903bdb777613ae7ae4490b70f 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Remove Store::bindDecl() and Store::bindDeclWithNoInit(), and
all forwarding methods.

This functionality is already covered by bindLoc().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162346 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
5be88dc79d2768d67371103b6535fb8c4a6f27a1 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Rename 'BindCompoundLiteral' to 'bindCompoundLiteral' and
add doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162345 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
9641d451d5d97474a4ae0788114f22ddfe65dc9e 22-Aug-2012 Ted Kremenek <kremenek@apple.com> Remove stale header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162341 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/DereferenceChecker.h
c568e2f801a62e442cbbd823b71f70175715661f 21-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Set the default IPA mode to 'basic-inlining', which excludes C++.

Under -analyzer-ipa=basic-inlining, only C functions, blocks, and C++ static
member functions are inlined -- essentially, the calls that behave like simple
C function calls. This is essentially the behavior in Xcode 4.4.

C++ support still has some rough edges, and we don't want users to be worried
about them if they download and run their own checker. (In particular, the
massive number of false positives for analyzing LLVM comes from inlining
defensively-written code in contexts where more aggressive assumptions are
implicitly made. This problem is not unique to C++, but it is exacerbated by
the higher proportion of code that lives in header files in C++.)

The eventual goal is to be comfortable enough with C++ support (and simple
Objective-C support) to advance to -analyzer-ipa=inlining as the default
behavior. See the IPA design notes for more details.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162318 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/AnalyzerOptions.h
59c91c8d0000af8f8a1022ee0f0eec46c397b347 21-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Update comment to match the reality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentBriefParser.h
04a42791609ea958bcb13c84e97118f1a3007eb9 21-Aug-2012 Michael J. Spencer <bigcheesegs@gmail.com> Reduce the amount of state in the Option class by relying on the data from OptTable::Info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162299 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
river/Option.h
a796b6c4b99116ca31e6e61d8765b321678d580e 21-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Switch some realignment calculations over to llvm::RoundUpToAlignment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/OnDiskHashTable.h
d1fc82efd53ffda30f4f16041399d78f3bf0705f 21-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Rename PrintingPolicy::DontRecurseInDeclContext to PrintingPolicy::TerseOutput
to reflect the intention, not the implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
a7afeb040416c0eaac19b92db914913a788044f5 21-Aug-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for the --param ssp-buffer-size= driver option.
PR9673


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162285 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
88d2f678e70ab9360f09f3534d9223e6ec20f129 21-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix alignment of array of VarDecl* following array of unsigned in LambdaExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
929bbfb0b69165b55da3c56abf22aa10e20dadc6 21-Aug-2012 John McCall <rjmccall@apple.com> When performing a trivial copy of a C++ type, we must be careful not
to overwrite objects that might have been allocated into the type's
tail padding. This patch is missing some potential optimizations where
the destination is provably a complete object, but it's necessary for
correctness.

Patch by Jonathan Sauer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0a7dd788dbef975f35f273c7ab913f480f7edd60 21-Aug-2012 John McCall <rjmccall@apple.com> Screw around with ObjCRuntime some more, changing the
diagnostics for bad deployment targets and adding a few
more predicates. Includes a patch by Jonathan Schleifer
to enable ARC for ObjFW.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162252 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/LangOptions.def
asic/ObjCRuntime.h
river/ToolChain.h
eb8f2efb17c74620510a38cb437e792ea9c76021 21-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> DeclPrinter: describe what 'terse' output is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
e1715b66a878bcab315513351e5df68bfc010d2e 21-Aug-2012 Sam Panzer <espanz@gmail.com> Better diagnostics for range-based for loops with bad range types.

The old error message stating that 'begin' was an undeclared identifier
is replaced with a new message explaining that the error is in the range
expression, along with which of the begin() and end() functions was
problematic if relevant.

Additionally, if the range was a pointer type or defines operator*,
attempt to dereference the range, and offer a FixIt if the modified range
works.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
49795ae2c7cbb0845ed07b6626ac24275234e3d1 21-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> DeclPrinter: add terse output mode and lots of tests

Add a flag PrintingPolicy::DontRecurseInDeclContext to provide "terse" output
from DeclPrinter. The motivation is to use DeclPrinter to print declarations
in user-friendly format, without overwhelming user with inner detail of the
declaration being printed.

Also add many tests for DeclPrinter. There are quite a few things that we
print incorrectly: search for WRONG in DeclPrinterTest.cpp -- and these tests
check our output against incorrect output, so that we can fix/refactor/rewrite
the DeclPrinter later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
99f074c34f76ca461cd22d20a3968383f727b735 21-Aug-2012 David Blaikie <dblaikie@gmail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4327557dfafe16c031691ed061f52a708e4c6b7a 20-Aug-2012 Michael J. Spencer <bigcheesegs@gmail.com> Make Option non virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162231 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
1833d284346b9fa11aae4e6aa07381347c04745c 20-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add comments to ExplodedNode::NodeGroup.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162216 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
fa06f0464a04bb7fce1fcfb3780d151bb029e00c 20-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Replace boolean IsSink parameters with 'generateSink' methods.

Generating a sink is significantly different behavior from generating a
normal node, and a simple boolean parameter can be rather opaque. Per
offline discussion with Anna, adding new generation methods is the
clearest way to communicate intent.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162215 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
df4ee102aa909e2f40c294701bfeffac63e8d29b 20-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove old cruft now that MS-style asms their own code path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162210 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
e50ee7e513c0707302bd8e2a78befc318a7d593c 20-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Use correct matcher name in the comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162206 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
25466496a2ace2aa533abc7bac1e92a4f425e2b1 20-Aug-2012 Manuel Klimek <klimek@google.com> Fix comments and variable naming:
- use InnerMatcher consistently, fix style violations on the way
- doxygenify code snippets across all comments
- start doxygenifying code references in text
- addeed missing Usable as: sections



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162205 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
5965b7c7ddf8d9635426943a05441c71cb59fef6 20-Aug-2012 Hans Wennborg <hans@hanshq.net> Better wording for reference self-initialization warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7eaaa186d1e9797f424136f565403f7a8b6672fa 18-Aug-2012 Jordan Rose <jordan_rose@apple.com> Allow -verify to be used with files that don't have an associated FileEntry.

In Debug builds, VerifyDiagnosticConsumer checks any files with diagnostics
to make sure we got the chance to parse them for directives (expected-warning
and friends). This check previously relied on every parsed file having a
FileEntry, which broke the cling interpreter's test suite.

This commit changes the extra debug checking to mark a file as unparsed
as soon as we see a diagnostic from that file. At the very end, any files
that are still marked as unparsed are checked for directives, and a fatal
error is emitted (as before) if we find out that there were directives we
missed. -verify directives should always live in actual parsed files, not
in PCH or AST files.

Patch by Andy Gibbs, with slight modifications by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162171 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticConsumer.h
217c484522926f9fc664ec3bfaf3cffe456244b0 18-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Silence a sign compare warning that only occurs on 32 bit platforms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162168 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
0576681bac125be07f77f66b02a3dba2c3a24557 18-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR41111, PR5925, PR13210: Teach tentative parsing to annotate identifiers and
nested names as id-expressions, using the annot_primary_expr annotation, where
possible. This removes some redundant lookups, and also allows us to
typo-correct within tentative parsing, and to carry on disambiguating past an
identifier which we can determine will fail lookup as both a type and as a
non-type, allowing us to disambiguate more declarations (and thus offer
improved error recovery for such cases).

This also introduces to the parser the notion of a tentatively-declared name,
which is an identifier which we *might* have seen a declaration for in a
tentative parse (but only if we end up disambiguating the tokens as a
declaration). This is necessary to correctly disambiguate cases where a
variable is used within its own initializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162159 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
arse/Parser.h
ema/Sema.h
46e778145c56cd9b42cb399795a294b29cb78b62 18-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Use PointerUnion to implement ExplodedNode::NodeGroup.

We shouldn't be reinventing our own wheels. This also paves the way for
marking different kinds of sinks.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162154 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
767a1a2391e60e358ed7d793e091cc1731a5e186 17-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> c: privide deprecated warning when __private_extern__ storage
specifier is unsed in a declaration; as it may not make the symbol
local to linkage unit as intended. Suggest using "hidden" visibility
attribute instead. // rdar://7703982


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
82b4550fb25ad578b6c8143b87a003fae7106cae 17-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Part of PR13618: visit the TypeLoc when RecursiveASTVisitor visits a CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
8ecf59afbab1dbf184dc4c0c47e7213cbd32ba0a 17-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Make BlockDataRegions typed, so that they have DynamicTypeInfo.

Fixes <rdar://problem/12119814>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162123 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
80ad88d0936e27ebab592c8668926228855218c5 17-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> Remove -Wbad-function-cast from -Wall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162117 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
8456ae602783b615019a42f7d5c6f0e71639b11b 17-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> AST Matchers: introduce functionTemplate(), classTemplate() and
isExplicitTemplateSpecialization() matchers which do what their name says.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162115 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
bbb8afd7f0bdac635583e07c72a9fcf905aa7c4c 17-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> c: implement gcc's -Wbad-function-cast which warns
on unsafe cast of a c-function call. This is
a C-only option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162109 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d6bbc98fe4690f31904f306c61090404843466fe 17-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Define __builtin_ffs[ll] with a signed argument instead of unsigned.

GCC documents these as unsigned, but defines them as signed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162106 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
fb4306756208118d66f63abdd82cc10b19b5e4ba 17-Aug-2012 Douglas Gregor <dgregor@apple.com> When we need the complete set of visible declarations from a
declaration context, check whether the primary context---not the
current context---has any external visible declarations. Fixes
PR13616.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclLookups.h
c141b51d78b40c7b0b04f27adfa70ec5bbddc49c 17-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Switch PTH format from a 7 byte magic number to an 8 byte one, to avoid
misaligned reads throughout the file. Bump PTH format version to 10.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162076 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
aeb288123e51cbf5855b06eb9d8c108fd6124286 17-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix misaligned DeclGroup allocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162069 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
0d5a069f66df09b3308ccfdce84a88170034c657 17-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Add support for "type safety" attributes that allow checking that 'void *'
function arguments and arguments for variadic functions are of a particular
type which is determined by some other argument to the same function call.

Usecases include:
* MPI library implementations, where these attributes enable checking that
buffer type matches the passed MPI_Datatype;
* for HDF5 library there is a similar usecase as MPI;
* checking types of variadic functions' arguments for functions like
fcntl() and ioctl().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162067 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/AttributeList.h
ema/Sema.h
7f90b531818ad772f6e407f88101dc618c738fa4 17-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C++: issue diagnostic when ivar type is
an abstract c++ class. // rdar://12095239


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
bc20bbb0bf90446a469848c658ca376832f43dc8 16-Aug-2012 Sam Panzer <espanz@gmail.com> Removed unused LParenLoc parameter to ActOnCXXForRangeStmt

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162048 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ca7a7be386537f9d3c070a71c1267aa4fa9f596c 16-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: make -Wcast-of-sel-type the default.
// rdar://12107381


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
81c53b461951ef5de8ea3d55d06aed8af8d81ac4 16-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> CommentCommandTraits: rename BeginName -> StartName for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
91dd9df4435f8b14e599d15f14c4bad77bc4e71f 16-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: deprecate casts of ObjC's SEL
expressions except to void, void * and their
qualified versions. // rdar://12107381


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162036 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1599eac40a3b28de0824013dc2fb90551dfa01b0 16-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Attaching comments to declarations: parse the comment in context of the
declaration it was attached to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2b2c49d2ac5adb34f900f7a854a3ad5a6b0dff3c 16-Aug-2012 Ted Kremenek <kremenek@apple.com> Remove "range_iterator" from PathDiagnosticPiece and just use ArrayRef<SourceRange> for ranges. This
removes conceptual clutter, and can allow us to easy migrate to C++11 style for-range loops if we
ever move to using C++11 in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162029 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
c4bac8e376b98d633bb00ee5f510d5e58449753c 16-Aug-2012 Ted Kremenek <kremenek@apple.com> Allow multiple PathDiagnosticConsumers to be used with a BugReporter at the same time.

This fixes several issues:

- removes egregious hack where PlistDiagnosticConsumer would forward to HTMLDiagnosticConsumer,
but diagnostics wouldn't be generated consistently in the same way if PlistDiagnosticConsumer
was used by itself.

- emitting diagnostics to the terminal (using clang's diagnostic machinery) is no longer a special
case, just another PathDiagnosticConsumer. This also magically resolved some duplicate warnings,
as we now use PathDiagnosticConsumer's diagnostic pruning, which has scope for the entire translation
unit, not just the scope of a BugReporter (which is limited to a particular ExprEngine).

As an interesting side-effect, diagnostics emitted to the terminal also have their trailing "." stripped,
just like with diagnostics emitted to plists and HTML. This required some tests to be updated, but now
the tests have higher fidelity with what users will see.

There are some inefficiencies in this patch. We currently generate the report graph (from the ExplodedGraph)
once per PathDiagnosticConsumer, which is a bit wasteful, but that could be pulled up higher in the
logic stack. There is some intended duplication, however, as we now generate different PathDiagnostics (for the same issue)
for different PathDiagnosticConsumers. This is necessary to produce the diagnostics that a particular
consumer expects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162028 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathDiagnosticConsumers.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
425f41b370a8795fbca9ffc3b35e9b0ccbb15d97 16-Aug-2012 Sam Panzer <espanz@gmail.com> Matchers related to DeclStmt for matching the count of declarations, a particular declaration within the statement, and single-Decl DeclStmts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162027 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
089e5b3bf2e57da0173b170ad501867b43395385 16-Aug-2012 Sam Panzer <espanz@gmail.com> Matchers which correspond to CastExpr, IgnoreImpCasts, IgnoreParenCasts, and IgnoreParenImpCasts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162025 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
d1420c6fa788669e49f21e184927c7833881e399 16-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Store SourceManager pointer on PrintingPolicy in the case where we're dumping,
and remove ASTContext reference (which was frequently bound to a dereferenced
null pointer) from the recursive lump of printPretty functions. In so doing,
fix (at least) one case where we intended to use the 'dump' mode, but that
failed because a null ASTContext reference had been passed in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162011 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
ST/Stmt.h
0dae729a69c4fccc38c97d5dd44f7b20bb20de1c 16-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Don't constant-fold when pretty-printing alignment attribute. This fixes a
potential crasher -- Context is sometimes a null reference (!!) here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
058ab170a5b8597f32c3f343a1e9de2cd7b05848 16-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add inputs and outputs to AST. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162000 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4e79fdfe22db1c982e8fdf8397fee426a8c57821 15-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Correctly devirtualize virtual method calls in constructors.

This is the other half of C++11 [class.cdtor]p4 (the destructor side
was added in r161915). This also fixes an issue with post-call checks
where the 'this' value was already being cleaned out of the state, thus
being omitted from a reconstructed CXXConstructorCall.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161981 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8cc7efa2da2c6be43cbd3d09a9ae01353bb921d2 15-Aug-2012 Daniel Jasper <djasper@google.com> Add ASTMatcher for matching extern "C" function declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161974 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
4cc83c2b0aed5ab06081ea3250426c3a7e58df93 15-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> Patch to warn about __private_extern__ on tentative definitions
as it does something unexpected (but gcc compatible).
Suggest use of __attribute__((visibility("hidden")))
on declaration instead. // rdar://7703982


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161972 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
7bd092b054444e9800e8de1d8d71c408dbdc8ead 15-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add the left brace source location and improve the pretty
printer. Patch by Enea Zaffanella <zaffanella@cs.unipr.it>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
7f397c5d97fc0c11333d939f2c07bc3b230956e2 15-Aug-2012 Hans Wennborg <hans@hanshq.net> Check for improper use of 'static' and type qualifiers in array
declarators.

They are only allowed for function parameters, and then only on the
outermost array type derivation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
97f6026f460c3aaa250fc9dcd7c2b8b6c1f3ba69 15-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix overallocation and underalignment of ASTTemplateArgumentListInfo objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
09647f28d7955d0c948ebbbb376a46844056f11a 15-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Doxygen comments in ObjCMethodCall.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161917 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
0ad36baedc516005cb6ea97d96327517ebfe5138 15-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Correctly devirtualize virtual method calls in destructors.

C++11 [class.cdtor]p4: When a virtual function is called directly or
indirectly from a constructor or from a destructor, including during
the construction or destruction of the class’s non-static data members,
and the object to which the call applies is the object under
construction or destruction, the function called is the final overrider
in the constructor's or destructor's class and not one overriding it in
a more-derived class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161915 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
1e059da457ba65062448f24975db386efa0d51f8 15-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Mark getClobber() const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
92570bd1597f355d5673a94960323f81d99c4921 15-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove the last bits of LineEnds.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
9fbf327cfdd27ddb5d845042c95f2299ac95b143 15-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove trailing return flag from FunctionTypeLoc, since we now carry that
information on FunctionProtoType. (This also fixes one of *many* misalignment
problems in the TypeLoc hierarchy...)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
c41ace950dcf2254c9aa48e73647b89c35109f80 14-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Attaching comments to redeclarations: fix wrong assumptions

The reason for the recent fallout for "attaching comments to any redeclaration"
change are two false assumptions:
(1) a RawComment is attached to a single decl (not true for 'typedef struct X *Y'
where we want the comment to be attached to both X and Y);
(2) the whole redeclaration chain has only a single comment (obviously false, the
user can put a separate comment for each redeclaration).

To fix (1) I revert the part of the recent change where a 'Decl*' member was
introduced to RawComment. Now ASTContext has a separate DenseMap for mapping
'Decl*' to 'FullComment*'.

To fix (2) I just removed the test with this assumption. We might not parse
every comment in redecl chain if we already parsed at least one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RawCommentList.h
5375d82d1d096ddd8879d8e6641a8f042b0d1d43 14-Aug-2012 Aaron Ballman <aaron@aaronballman.com> Changing an enumeration to a const int to fix MSVC compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161877 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
42c72c258e08ca79c9267346b4badcddd8fcd001 14-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Do NOT use inline functions with LLVM_ATTRIBUTE_USED.

The function will be emitted into every single TU including the header!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
00aae5243d965aa7bcee81a39ba0900c7869be21 14-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix undefined behavior: don't bind a dereferenced null pointer to a reference.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
026b3588b9916f3fcb20ad2f02ca5472cbbdc5d7 14-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix undefined behavior in code completion, caught by
-fcatch-undefined-behavior. Don't try to fit 34 different flags
into 32 bits. Also, don't use 32-bit signed left shifts for this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161830 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
955cd444f445bcdbade1cdd3926254c8ee7890d8 14-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Add getStackFrame() to CheckerContext and ExplodedNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161819 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
645baeed6800f952e9ad1d5666e01080385531a2 14-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Reduce code duplication: make CXXDestructorCall a CXXInstanceCall.

While there is now some duplication between SimpleCall and the CXXInstanceCall
sub-hierarchy, this is much better than copy-and-pasting the devirtualization
logic shared by both instance methods and destructors.

An unfortunate side effect is that there is no longer a single CallEvent type
that corresponds to "calls written as CallExprs". For the most part this is a
good thing, but the checker callback eval::Call still takes a CallExpr rather
than a CallEvent (since we're not sure if we want to allow checkers to
evaluate other kinds of calls). A mistake here will be caught by a cast<> in
CheckerManager::runCheckersForEvalCall.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161809 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
b11a3ada9a22e146c6edd33bcc6301e221fedd7a 14-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Don't strip CXXBaseObjectRegions when checking dynamic_casts.

...and /do/ strip CXXBaseObjectRegions when casting to a virtual base class.

This allows us to enforce the invariant that a CXXBaseObjectRegion can always
provide an offset for its base region if its base region has a known class
type, by only allowing virtual bases and direct non-virtual bases to form
CXXBaseObjectRegions.

This does mean some slight problems for our modeling of dynamic_cast, which
needs to be resolved by finding a path from the current region to the class
we're trying to cast to.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161797 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SVals.h
0d729105ecb50a7e3cbe6e57c29149edfa5cf05a 13-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Factor out computation of whether a typeid's expression is potentially
evaluated into a CXXTypeid member function. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f50555eedef33fd5a67d369aa0ae8a6f1d201543 11-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Attaching comments to declarations: find comment attached to any redeclaration

Not only look for the comment near the declaration itself, but also walk the
redeclaration chain: the previous declaration might have had a documentation
comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161722 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RawCommentList.h
f9c29088a8f64d4af2423fb7b556419597c996df 11-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove unused StoreManager::CastResult class.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161715 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
e6b3fea007e25842d6523043b17f7dde8c4d0107 11-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> Removed an unused function I added a while back.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161714 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
33c72e1c0bbb477cf36dd7becd933b860c42ed8c 10-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Avoid extra allocations by making this an array of StringRefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e790bc32ca3eb7cc396b45071d7987776e965ed7 10-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Fix a memory leak introduced in r161686.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4399ea9d473365224d9e4db0cd94aab849eb59b7 10-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add clobbers to AST representation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161686 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
54918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9 10-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Track if a region can be a subclass in the dynamic type info.

When object is allocated with alloc or init, we assume it cannot be a
subclass (currently used only for bifurcation purposes).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161682 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
3f558af01643787d209a133215b0abec81b5fe30 10-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Optimize dynamic dispatch bifurcation by detecting the cases
when we don't need to split.

In some cases we know that a method cannot have a different
implementation in a subclass:
- the class is declared in the main file (private)
- all the method declarations (including the ones coming from super
classes) are in the main file.

This can be improved further, but might be enough for the heuristic.
(When we are too aggressive splitting the state, efficiency suffers.
When we fail to split the state coverage might suffer.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161681 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
1f2e1a96bec2ba6418ae7f2d2b525a3575203b6a 10-Aug-2012 John McCall <rjmccall@apple.com> Check access to friend declarations. There's a number of different
things going on here that were problematic:
- We were missing the actual access check, or rather, it was suppressed
on account of being a redeclaration lookup.
- The access check would naturally happen during delay, which isn't
appropriate in this case.
- We weren't actually emitting dependent diagnostics associated with
class templates, which was unfortunate.
- Access was being propagated incorrectly for friend method declarations
that couldn't be matched at parse-time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161652 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
7c304f56eecbd03db7d222a05dfcd593750d50d3 10-Aug-2012 Jordan Rose <jordan_rose@apple.com> Update VerifyDiagnosticConsumer to only get directives during parsing.

The old behavior was to re-scan any files (like modules) where we may have
directives but won't actually be parsing during the -verify invocation.
Now, we keep the old behavior in Debug builds as a sanity check (though
modules are a known entity), and expect all legitimate directives to come
from comments seen by the preprocessor.

This also affects the ARC migration tool, which captures diagnostics in
order to filter some out. This change adds an explicit cleanup to
CaptureDiagnosticsConsumer in order to let its sub-consumer handle the
real end of diagnostics.

This was originally split into four patches, but the tests do not run
cleanly without all four, so I've combined them into one commit.

Patches by Andy Gibbs, with slight modifications from me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161650 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticConsumer.h
4ef832ffc1147ce2f9777f9fad650cb3139a1d00 10-Aug-2012 David Blaikie <dblaikie@gmail.com> Provide isConst/Volatile on CXXMethodDecl.

This also provides isConst/Volatile/Restrict on FunctionTypes to coalesce
the implementation with other callers (& update those other callers).

Patch contributed by Sam Panzer (panzer@google.com).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
824e07ac8f5c9efdddb4254de0203b9675b1ef0b 10-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Cache the "concrete offset base" for regions with symbolic offsets.

This makes it faster to access and invalidate bindings with symbolic offsets
by only computing this information once.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161635 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
bf74b568182bcfbe711b6a4f74293d007b8d5f00 10-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Devirtualize StoreManager::evalDerivedToBase(SVal, CastExpr)

This was triggering -Woverloaded-virtual, but there's really no reason for
the cast version to be virtual anyway. It just calls through to the QualType
entry point.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161631 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
2c5f8d79ed128892fa548a3308a938a3a53fbb5e 09-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] A CXXBaseObjectRegion should correspond to a DIRECT base.

An ASTContext's RecordLayoutInfo can only be used to look up offsets of
direct base classes, and we need the offset to make non-symbolic bindings
in RegionStore. This change makes sure that we have one layer of
CXXBaseObjectRegion for each base we are casting through.

This was causing crashes on an internal buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161621 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
cace2103efe3449c406bcdfd4874dfb1e94c811a 09-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Use StringRef here, per Jordan's suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d4fe57f7f7a8793227effc1274d70ec44cee9a4f 09-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Rename the function to better reflect what it actually does.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161617 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
5960f4aeac9760198c80e05d70d8dadb1db0ff0e 09-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Improve readability of the dyn. dispatch bifurcation patch
r161552.

As per Jordan's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161603 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
62290ae569016345b79d4e11dd93abc300e5a681 09-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment to HTML and XML conversion: ignore commands that contain a declaration
as their argument. For example, \fn, \function, \typedef, \method, \class etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
d1db12540e572d6e3d998a4b770a6b2c7267d7fc 09-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment to HTML and XML conversion: use CommandTraits to classify commands.

This also fixes a bug in comment to XML conversion: \result was just an
ordinary paragraph, not an alias for \returns.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161596 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentCommandTraits.h
fc05decf08feefd2ffe8cc250219aee6eab3119c 09-Aug-2012 Anna Zaks <ganna@apple.com> Unbreak the build.

Declaring "const Decl *Decl" is not a good idea.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161567 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
e90d3f847dcce76237078b67db8895eb7a24189e 09-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Bifurcate the path with dynamic dispatch.

This is an initial (unoptimized) version. We split the path when
inlining ObjC instance methods. On one branch we always assume that the
type information for the given memory region is precise. On the other we
assume that we don't have the exact type info. It is important to check
since the class could be subclassed and the method can be overridden. If
we always inline we can loose coverage.

Had to refactor some of the call eval functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161552 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
aa58081902ad31927df02e8537d972eabe29d6df 09-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: extract TableGen'able pieces into new CommandTraits class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentBriefParser.h
ST/CommentCommandTraits.h
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
dcdff46dd8e6d749283fe6c43adfcfe780c1d562 09-Aug-2012 Eli Friedman <eli.friedman@gmail.com> Minor simplification for r161534.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161544 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
8c6cb462946b8be19167fad7ff21d4f9fbaebfef 09-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-C: refactor/simplify parsing of delayed
method/c-funcs defined in objc class implementation.
No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161540 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
de01b7a6b4df27555ff7b25e51c0d3df29e3a0cf 09-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13558: Fix typo 'compatiblity'. Thinking of the children. Apparently.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161537 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f66a0dda541cd859a928193efba6dc5d7ba8fe54 09-Aug-2012 Eli Friedman <eli.friedman@gmail.com> Handle deprecation diagnostics correctly for C struct fields and Objective-C properties/ivars. <rdar://problem/6642337>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161534 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
0f38acee92014cb15af980808f87144e5564031d 08-Aug-2012 Anna Zaks <ganna@apple.com> Address code review comments for Wstrncat-size warning (r161440).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
62f22b87801882646418bae85111e565f7a53ddb 08-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Refactor the logic to generate the AsmString into Sema. No
functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161518 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
d24bf90ae72d7df5e0ef0a1d3dd2806462ec15b1 08-Aug-2012 Chad Rosier <mcrosier@apple.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161517 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
919e8a1c6698bfa6848571d366430126bced727d 08-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Clean up the printing of FieldRegions for leaks.

Unfortunately, generalized region printing is very difficult:
- ElementRegions are used both for casting and as actual elements.
- Accessing values through a pointer means going through an intermediate
SymbolRegionValue; symbolic regions are untyped.
- Referring to implicitly-defined variables like 'this' and 'self' could be
very confusing if they come from another stack frame.

We fall back to simply not printing the region name if we can't be sure it
will print well. This will allow us to improve in the future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161512 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
e0d24eb1060a213ec9820dc02c45f26b2d5b348b 08-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Revamp RegionStore to distinguish regions with symbolic offsets.

RegionStore currently uses a (Region, Offset) pair to describe the locations
of memory bindings. However, this representation breaks down when we have
regions like 'array[index]', where 'index' is unknown. We used to store this
as (SubRegion, 0); now we mark them specially as (SubRegion, SYMBOLIC).

Furthermore, ProgramState::scanReachableSymbols depended on the existence of
a sub-region map, but RegionStore's implementation doesn't provide for such
a thing. Moving the store-traversing logic of scanReachableSymbols into the
StoreManager allows us to eliminate the notion of SubRegionMap altogether.

This fixes some particularly awkward broken test cases, now in
array-struct-region.c.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161510 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
2aa800a955132d83a666bcd52d3d59d09cffc079 08-Aug-2012 Jordan Rose <jordan_rose@apple.com> Constify CXXRecordDecl::isVirtuallyDerivedFrom.

No functionality change. A couple ugly const_casts because the ancestor
search code is used for other purposes as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3a32c9c565f970fd319b97a6056a4725cfa4f0f5 08-Aug-2012 Chad Rosier <mcrosier@apple.com> Add the IsSimple/IsVolatile parameters to the MSAsmStmt constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
50800fc551ac6b8a95cca662223e7f061bbd169a 08-Aug-2012 David Blaikie <dblaikie@gmail.com> Implement warning for integral null pointer constants other than the literal 0.

This is effectively a warning for code that violates core issue 903 & thus will
become standard error in the future, hopefully. It catches strange null
pointers such as: '\0', 1 - 1, const int null = 0; etc...

There's currently a flaw in this warning (& the warning for 'false' as a null
pointer literal as well) where it doesn't trigger on comparisons (ptr == '\0'
for example). Fix to come in a future patch.

Also, due to this only being a warning, not an error, it triggers quite
frequently on gtest code which tests expressions for null-pointer-ness in a
SFINAE context (so it wouldn't be a problem if this was an error as in an
actual implementation of core issue 903). To workaround this for now, the
diagnostic does not fire in unevaluated contexts.

Review by Sean Silva and Richard Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
50d61c8ccfc633b13cdf594ea3cd3a217076debe 08-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement final piece of DR963 and also DR587:

A conditional operator between glvalues of types cv1 T and cv2 T produces a
glvalue if the expressions are of the same value kind and one of cv1 and cv2
is a subset of the other.

A conditional operator between two null pointer constants is permitted if one
of them is of type std::nullptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3189d8c8f2f26d49e129b68f708042da3703816b 07-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove obsolete comment. Obsoleted by r116524 when Type hierarhy bitfield
implementation was changed to a union of bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
cff339a60a571a606a7510548f661dc6a719368d 07-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST: DeclInfo: add a special kind for enums.
Comment XML: add a root node kind for enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161442 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
d43e114291eed272f8d7b735d3d1c4ca4cd04986 07-Aug-2012 Anna Zaks <ganna@apple.com> Turn on strncat-size warning implemented a while ago.

Warns on anti-patterns/typos in the 'size' argument to strncat. The
correct size argument should look like the following:
- strncat(dst, src, sizeof(dst) - strlen(dest) - 1);

We warn on:
- sizeof(dst)
- sizeof(src)
- sizeof(dst) - strlen(dst)
- sizeof(src) - anything

(This has been implemented in void Sema::CheckStrncatArguments().)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161440 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16bec0630ef488af263d521b166b41ffa3c71743 07-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment.h: fix typo in comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
dd7b803e6ce5b8e61cf3b14af2c57199e5e991d9 07-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST: treat enumerators as "variables" in DeclInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
58e1e54476d610d6c33ef483f216ed8a1282d35c 07-Aug-2012 Hans Wennborg <hans@hanshq.net> Remove ScanfArgType and bake that logic into ArgType.

This is useful for example for %n in printf, which expects
a pointer to int with the same logic for checking as %d
would have in scanf.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161407 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
f3749f4168c5cee59627a681ca4ca6e4116d0761 07-Aug-2012 Hans Wennborg <hans@hanshq.net> Rename analyze_format_string::ArgTypeResult to ArgType

Also remove redundant constructors and unused member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161403 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
60b70388e43d146d968a1cc0705b30cb2d7263fe 07-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Update documentation of HasSideEffects to match its callers' expectations, and
update implementation to match. An elidable, non-trivial constructor call is a
side-effect under this definition, but wasn't under the old one, because we are
not required to evaluate it even though it may have an effect.

Also rationalize checking for volatile reads: just look for lvalue-to-rvalue
conversions on volatile glvalues, and ignore whether a DeclRefExpr etc is for
a volatile variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4a535368eb4fca10b05c442e04725747dbf76081 07-Aug-2012 Ted Kremenek <kremenek@apple.com> Enhance ClangDiagnosticsEmitter to reject diagnostics that are errors that are also
included in warning groups. Warning groups can only contain warnings, because only
warnings can be mapped to errors or ignored.

This caught a few diagnostics that were incorrectly in diagnostic groups, and
could have resulted in a compiler crash when those diagnostic groups were mapped.

Fixes <rdar://problem/12044436>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161389 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
97d029305999f940869ff8eea42902bbd193f6d0 07-Aug-2012 Ted Kremenek <kremenek@apple.com> Remove two fall through diagnostics from the IgnoredAttributes group, since they are errors, not warnings.

Only warnings should be in warning groups. This was causing an assertion failure in
code using pragmas to map -Wignored-attributes to ignored, but this kind of
diagnostic mapping is disallowed for builtin errors. We should just wire
up tablegen to reject errors being in diagnostic groups.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
79efe24e125553b7fd4a35ffb3b7a45c4f1e661a 07-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Stmt destructors are never called, so allocate the AsmToks using
the ASTContext BumpPtr. Also use the preferred llvm::ArrayRef interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
c69d7356caa9dd08cd957f1a4a263da62eae5bc1 07-Aug-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Implement gcc's -Wdirect-ivar-access option.
// rdar://6505197


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c7ecc43c33a21b82c49664910b19fcc1f555aa51 07-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] Add a checker to manage dynamic type propagation.

Instead of sprinkling dynamic type info propagation throughout
ExprEngine, the added checker would add the more precise type
information on known APIs (Ex: ObjC alloc, new) and propagate
the type info in other cases (ex: ObjC init method, casts (the second is
not implemented yet)).

Add handling of ObjC alloc, new and init to the checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161357 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
71f55f771794674a410171dbf3cb5dbedf95d033 07-Aug-2012 David Blaikie <dblaikie@gmail.com> Refactor checks for unevaluated contexts into a common utility function.

The one caller that's surrounded by nearby code manipulating the underlying
evaluation context list is left unmodified for readability.

Review by Sean Silva and Richard Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161355 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
04bf29eb1b197e0a103139ab5d63b0b97432f004 06-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST: DeclInfo: collapse a bunch of boolean flags into an enum.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161352 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentSema.h
8f726de55412870ef70e788b852c6cc50873e15b 06-Aug-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Pass Tokens to Sema and store them in the AST. No functional
change intended. No test case as there's no real way to test at this time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161342 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ema/Sema.h
cc83f26c48dfdc99ea5fbc3c28c9c9653bd71e8c 06-Aug-2012 Simon Atanasyan <satanasyan@mips.com> Fix MIPS DSP Rev1 intrinsics memory properties.
The patch reviewed by Akira Hatanaka.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsMips.def
7d9b51107999c1c1fada7319c4687fe570eb2c0b 06-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parser and sema: remove useless return values


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentParser.h
ST/CommentSema.h
9443c57150e870e308406e1e4e6d9d64712b417e 06-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment diagnostics: warn on duplicate \brief and \return commands.

Doxygen manual claims that multiple \brief or \returns commands will be merged
together, but actual behavior is different (second \brief command becomes a
part of a discussion, second \returns becomes a "Returns: blah" paragraph on
its own). Anyway, it seems to be a bad idea to use multiple \brief or \returns
commands in a single command.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161325 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
88815f3f81361692dd281000e3e46bf163b2f28b 06-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment diagnostics: \return in void function: specialize diagnostic text for
ObjC methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161324 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
asic/DiagnosticCommentKinds.td
427435fb15593f19f86aee0c25e2b96e03aadf69 06-Aug-2012 Craig Topper <craig.topper@gmail.com> Re-enable pcmpistri/pcmpestri builtins in clang now that llvm supports them properly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
04c3a25bd45ad8a6ad715783aee03df7284c5591 06-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13529: Don't crash if the driver sees an unused input file when running as
'clang-cpp'.

For now, the test uses "REQUIRES: shell" to determine if the host system
supports "ln -s", which it uses to create a 'clang-cpp' symlink. This is a bit
hacky and should likely be directly supported by lit.cfg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
a4b39658673954fb9f75673594b50028685fc665 06-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13499: Don't try to check whether 'override' has been validly applied until
we know whether the function is virtual. But check it as soon as we do know;
in some cases we don't need to wait for an instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161316 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a841c19f7860393d6319bf40e9d662284462771d 06-Aug-2012 Hal Finkel <hfinkel@anl.gov> Add __builtin_readcyclecounter() to produce the @llvm.readcyclecounter() intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161310 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
685379965c1b105ce89cf4f6c60810932b7f4d0d 04-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] When a symbol is null, we should track its constraints.

Because of this, we would previously emit NO path notes when a parameter
is constrained to null (because there are no stores). Now we show where we
made the assumption, which is much more useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161280 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
b0e1badc2a9b8275b48dfb15c6907a282b949b02 04-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Flatten path diagnostics for text output like we do for HTML.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161279 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
9da59a67a27a4d3fc9d59552f07808a32f85e9d3 04-Aug-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Track null/uninitialized C++ objects used in method calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161278 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
148fee988e32efcad45ecf7b3bf714880c657dda 03-Aug-2012 Anna Zaks <ganna@apple.com> [analyzer] ObjC Inlining: Start tracking dynamic type info in the GDM

In the following code, find the type of the symbolic receiver by
following it and updating the dynamic type info in the state when we
cast the symbol from id to MyClass *.

MyClass *a = [[self alloc] init];
return 5/[a testSelf];

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161264 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
89ab7d0012ffe02a335b765eeb9b48977a5ecd79 03-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment diagnostics: warn if \returns is used in a non-function comment or if
the function returns void.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
ee959355b93c0648fea88dc986d196e3705407dc 03-Aug-2012 Shih-wei Liao <sliao@google.com> Apply changes to migrate to CLANG-160673-20120724.

Change-Id: I00d23ac9b893c62dca281ec771eeb5f911854bae
asic/Attr.td
08fc8eb5a1cc9c01af67e016ab21c9b905711eb1 03-Aug-2012 Shih-wei Liao <sliao@google.com> Merge with Clang upstream r160673 (Jul 24th 2012)

Conflicts:
lib/Sema/SemaDeclAttr.cpp

Change-Id: I37f02f20642a037b9da8d35fefa01986cd250b14
af19a6aaa2959ef5e76f19d51e87ef523bdeedde 02-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comments AST: refactor DeclInfo to use an enum for decl kind instead of
separate flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
1abee64ad71519ea9d91f1fe76441b9cdb75b6c0 02-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> ASTContext.h: replace include by a forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161186 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1ca7ecc8854ffea215c033a0d8482551bf1b73f0 02-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST: add DeclInfo to store information about the declaration. Sema was
already extracting most of this, but discarding at the end of semantic analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentSema.h
95aac15936e8362aeb4813f95bc255dee6473592 01-Aug-2012 Eli Friedman <eli.friedman@gmail.com> Fix an assertion failure instantiating a constexpr function from within a -dealloc method. PR13401.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161135 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
96b098674908eaa59a9128f3305cda6fbbdad563 01-Aug-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: add support for \tparam command on all levels.

The only caveat is renumbering CXCommentKind enum for aesthetic reasons -- this
breaks libclang binary compatibility, but should not be a problem since API is
so new.

This also fixes PR13372 as a side-effect.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentParser.h
ST/CommentSema.h
asic/CommentNodes.td
asic/DiagnosticCommentKinds.td
e1ce783708b65eaa832ffad03d239264046dd0eb 31-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Turn -cfg-add-initializers on by default, and remove the flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161060 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
98be86038b1e891a05583061c55dfa974150eb2c 31-Jul-2012 Manuel Klimek <klimek@google.com> Fixes a segfault in Tooling when using pch's:
Clear the FileManager's stat cache in between running
translation units, as the stat cache loaded from a pch
is only valid for one compiler invocation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
94be8ea90795d00fe2a97fea9a9a727911a70997 31-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove deprecated getNameAsCString methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
171af64ef10ae816ed2a4f15f5d17aca1d71769f 31-Jul-2012 Alexander Kornienko <alexfh@google.com> Added -ast-list option to dump filterable AST decl node names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161040 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
297f71daa4eec8beb2eb29573e0892539f8e7172 31-Jul-2012 Manuel Klimek <klimek@google.com> Document the result type of the matcher functions where
it's not obvious from the source code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161035 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
1503f0ddab0057e33efa21393fc0577580d6287a 31-Jul-2012 John McCall <rjmccall@apple.com> Introduce new queries on ObjCRuntime for how to interpret subscripts
on object pointers and whether pointer arithmetic on object pointers
is supported. Make ObjFW interpret subscripts as pseudo-objects.
Based on a patch by Jonathan Schleifer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
ef15831780b705475e7b237ac16418e9b53cb7a6 31-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Let CallEvent decide what goes in an inital stack frame.

This removes explicit checks for 'this' and 'self' from
Store::enterStackFrame. It also removes getCXXThisRegion() as a virtual
method on all CallEvents; it's now only implemented in the parts of the
hierarchy where it is relevant. Finally, it removes the option to ask
for the ParmVarDecls attached to the definition of an inlined function,
saving a recomputation of the result of getRuntimeDefinition().

No visible functionality change!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161017 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
57c033621dacd8720ac9ff65a09025f14f70e22f 31-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Perform post-call checks for all inlined calls.

Previously, we were only checking the origin expressions of inlined calls.
Checkers using the generic postCall and older postObjCMessage callbacks were
ignored. Now that we have CallEventManager, it is much easier to create
a CallEvent generically when exiting an inlined function, which we can then
use for post-call checks.

No test case because we don't (yet) have any checkers that depend on this
behavior (which is why it hadn't been fixed before now).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161005 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CallEvent.h
b9c6261d02f688d0a9a36b736ad5956fbc737854 30-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Improvements to vexing-parse warnings. Make the no-parameters case more
accurate by asking the parser whether there was an ambiguity rather than trying
to reverse-engineer it from the DeclSpec. Make the with-parameters case have
better diagnostics by using semantic information to drive the warning,
improving the diagnostics and adding a fixit.

Patch by Nikola Smiljanic. Some minor changes by me to suppress diagnostics for
declarations of the form 'T (*x)(...)', which seem to have a very high false
positive rate, and to reduce indentation in 'warnAboutAmbiguousFunction'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160998 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/DeclSpec.h
1b0a13e91088f6818016464ffb23616ced820cbc 30-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c arc: ARC IRGen correctly assumes result
type of generated call to super dealloc is 'void'
and asserts if user's dealloc is not of 'void type.
This rule must be enforced in clang front-end (with a
fixit) if this is not the case, instead of asserting in CodeGen.
// rdar://11987838


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2d18419a7c8f9a2975d4ed74a202de6467308ad1 30-Jul-2012 Anna Zaks <ganna@apple.com> [analyzer] Very simple ObjC instance method inlining

- Retrieves the type of the object/receiver from the state.
- Binds self during stack setup.
- Only explores the path on which the method is inlined (no
bifurcation to explore the path on which the method is not inlined).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160991 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
3738db9445b60d6d7cab5367122308f5f2c302fc 30-Jul-2012 Anna Zaks <ganna@apple.com> [analyzer] fixup for adding of the "dynamic" ipa option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160990 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
ca93ee707d9570b74d24c7d55defe18dac38bcc0 30-Jul-2012 Anna Zaks <ganna@apple.com> Mark ObjCInterfaceDecl::lookupPrivateMethod as const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e13056a8bb532ddfdc07952a13169aa422bacd3b 30-Jul-2012 Anna Zaks <ganna@apple.com> [analyzer] Add -analyzer-ipa=dynamic option for inlining dynamically
dispatched methods.

Disabled by default for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160988 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
d563d3fb73879df7147b8a5302c3bf0e1402ba18 30-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Only allow CallEvents to be created by CallEventManager.

This ensures that it is valid to reference-count any CallEvents, and we
won't accidentally try to reclaim a CallEvent that lives on the stack.
It also hides an ugly switch statement for handling CallExprs!

There should be no functionality change here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160986 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
a989aebecde3d2fd374b894e894a950b0bd9cf67 30-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove declaration of refactored evalObjCMessage method.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160985 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
78a1b196cc6854a29c0ff2d6ea5f5643be6040c6 30-Jul-2012 Matt Beaumont-Gay <matthewbg@google.com> Do not warn on correct use of the '%n' format specifier.

While '%n' can be used for evil in an attacker-controlled format string, there
isn't any acute danger in using it in a literal format string with an argument
of the appropriate type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160984 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
972a3680bdd95f2e9d6316b391f1c47513dc78cc 30-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Introduce a CallEventManager to keep a pool of CallEvents.

This allows us to get around the C++ "virtual constructor" problem
when we'd like to create a CallEvent from an ExplodedNode, an inlined
StackFrameContext, or another CallEvent. The solution has three parts:

- CallEventManager uses a BumpPtrAllocator to allocate CallEvent-sized
memory blocks. It also keeps a cache of freed CallEvents for reuse.
- CallEvents all have protected copy constructors, along with cloneTo()
methods that use placement new to copy into CallEventManager-managed
memory, vtables intact.
- CallEvents owned by CallEventManager are now wrapped in an
IntrusiveRefCntPtr. Going forwards, it's probably a good idea to create
ALL CallEvents through the CallEventManager, so that we don't accidentally
try to reclaim a stack-allocated CallEvent.

All of this machinery is currently unused but will be put into use shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160983 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
b740316a122b5ceaaa7cf50557b1b39af5fbbf5f 30-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Add an assert to ParamCommandComment::getParamIndex() -- it should not be
called unless index is valid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
b2efdf3e92f986956f0a755ba815f3870838583b 29-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Microoptimize isOffsetInFileID a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
477a9f58c1b197f315befd03b42a8a0b3a2f0ff9 27-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Implement resolving of HTML character references (named: &amp;, decimal: &#42;,
hex: &#x1a;) during comment parsing.

Now internal representation of plain text in comment AST does not contain
character references, but the characters themselves.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
e43031344b17cdb345957c4acc9d39d26f86efd3 27-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Add a function to convert a single Unicode code point to a UTF8 sequence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
4684778993c667246039b4664acbce59dc99440c 27-Jul-2012 Hans Wennborg <hans@hanshq.net> Make -Wformat walk the typedef chain when looking for size_t, etc.

Clang's -Wformat fix-its currently suggest using "%zu" for values of
type size_t (in C99 or C++11 mode). However, for a type such as
std::vector<T>::size_type, it does not notice that type is actually
typedeffed to size_t, and instead suggests a format for the underlying
type, such as "%lu" or "%u".

This commit makes the format string fix mechanism walk the typedef chain
so that it notices if the type is size_t, even if that isn't "at the
top".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160886 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
e61354b274ec5aa6acf3d15271896ce7596bb123 27-Jul-2012 Anna Zaks <ganna@apple.com> Consolidate ObjC lookupPrivateMethod methods from Sema and DeclObjC.

Also, fix a subtle bug, which occurred due to lookupPrivateMethod
defined in DeclObjC.h not looking up the method inside parent's
categories.

Note, the code assumes that Class's parent object has the same methods
as what's in the Root class of a the hierarchy, which is a heuristic
that might not hold for hierarchies which do not descend from NSObject.
Would be great to fix this in the future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
6fbe0317aa38dbac22a29f7519c52db838aa1990 27-Jul-2012 Anna Zaks <ganna@apple.com> [analyzer] Address Jordan's and Fariborz's review of r160768.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160883 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
b9d0b76e42fd2d4cdfd135220302458d03ad09fe 27-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Final piece of core issue 1330: delay computing the exception specification of
a defaulted special member function until the exception specification is needed
(using the same criteria used for the delayed instantiation of exception
specifications for function temploids).

EST_Delayed is now EST_Unevaluated (using 1330's terminology), and, like
EST_Uninstantiated, carries a pointer to the FunctionDecl which will be used to
resolve the exception specification.

This is enabled for all C++ modes: it's a little faster in the case where the
exception specification isn't used, allows our C++11-in-C++98 extensions to
work, and is still correct for C++98, since in that mode the computation of the
exception specification can't fail.

The diagnostics here aren't great (in particular, we should include implicit
evaluation of exception specifications for defaulted special members in the
template instantiation backtraces), but they're not much worse than before.

Our approach to the problem of cycles between in-class initializers and the
exception specification for a defaulted default constructor is modified a
little by this change -- we now reject any odr-use of a defaulted default
constructor if that constructor uses an in-class initializer and the use is in
an in-class initialzer which is declared lexically earlier. This is a closer
approximation to the current draft solution in core issue 1351, but isn't an
exact match (but the current draft wording isn't reasonable, so that's to be
expected).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/ExceptionSpecificationType.h
ema/DeclSpec.h
ema/Sema.h
7c99aa385178c630e29f671299cdd9c104f1c885 26-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] CallEvent is no longer a value object.

After discussion, the type-based dispatch was decided to be bad for
maintenance and made it very easy for subtle bugs to creep in. Instead,
we'll just be very careful when we do have to allocate these on the heap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160817 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
f540c54701e3eeb34cb619a3a4eb18f1ac70ef2d 26-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename Calls.{h,cpp} to CallEvent.{h,cpp}. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160815 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CallEvent.h
taticAnalyzer/Core/PathSensitive/Calls.h
3a0a9e3e8bbaa45f3ca22b1e20b3beaac0f5861e 26-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Handle C++ member initializers and destructors.

This uses CFG to tell if a constructor call is for a member, and uses
the member's region appropriately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160808 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
888c90ac0ef6baf7d47e86cf5cc4715707d223b1 26-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Handle base class initializers and destructors.

Most of the logic here is fairly simple; the interesting thing is that
we now distinguish complete constructors from base or delegate constructors.
We also make sure to cast to the base class before evaluating a constructor
or destructor, since non-virtual base classes may behave differently.

This includes some refactoring of VisitCXXConstructExpr and VisitCXXDestructor
in order to keep ExprEngine.cpp as clean as possible (leaving the details for
ExprEngineCXX.cpp).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160806 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
183ba8e19d49ab1ae25d3cdd0a19591369c5ab9f 26-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Show paths for destructor calls.

This modifies BugReporter and friends to handle CallEnter and CallExitEnd
program points that came from implicit call CFG nodes (read: destructors).

This required some extra handling for nested implicit calls. For example,
the added multiple-inheritance test case has a call graph that looks like this:

testMultipleInheritance3
~MultipleInheritance
~SmartPointer
~Subclass
~SmartPointer
***bug here***

In this case we correctly notice that we started in an inlined function
when we reach the CallEnter program point for the second ~SmartPointer.
However, when we reach the next CallEnter (for ~Subclass), we were
accidentally re-using the inner ~SmartPointer call in the diagnostics.

Rather than guess if we saw the corresponding CallExitEnd based on the
contents of the active path, we now just ask the PathDiagnostic if there's
any known stack before popping off the top path.

(A similar issue could have occured without multiple inheritance, but there
wasn't a test case for it.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160804 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
132283beb1b032e0acd09bdfb45dceadeea0026e 26-Jul-2012 Jordan Rose <jordan_rose@apple.com> Add a const version of Expr::IgnoreImplicit. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
559b928b05aeacc9c984a9d633ad586bbe858196 26-Jul-2012 Alexander Kornienko <alexfh@google.com> Put back dump() without a default argument, "because debuggers don't usually respect default arguments".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160788 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
e34a052d642ba7830174b1a51787251d7f704f80 26-Jul-2012 Alexander Kornienko <alexfh@google.com> Added -ast-dump-filter option to clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendOptions.h
9dc5167e4017ef4c8b327abb6f72225eec2e0f19 26-Jul-2012 Anna Zaks <ganna@apple.com> [analyzer] Inline ObjC class methods.

- Some cleanup(the TODOs) will be done after ObjC method inlining is
complete.
- Simplified CallEvent::getDefinition not to require ISDynamicDispatch
parameter.
- Also addressed Jordan's comments from r160530.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160768 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
a2ad394dad8c90fb0374756a331d4a141f4a227d 26-Jul-2012 Ted Kremenek <kremenek@apple.com> Remove the ability to stash arbitrary pointers into UndefinedVal (no longer needed).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160764 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
829846b5002d7f8d6a54b9c58c3ecf7cac56d2cc 25-Jul-2012 Ted Kremenek <kremenek@apple.com> Remove ExprEngine::MarkBranch(), as it is no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160761 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
715c9568ee5d75f25dab98229c87bcec880daf5d 25-Jul-2012 Manuel Klimek <klimek@google.com> Introduces the 'decl' matcher which was missing for a while
and became necessary with the change to require BindableMatchers
for binding.

Also fixes PR 13445: "hasSourceExpression only works for implicit casts".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160716 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
34653184b0dbd9423215b8324b23c260ab7efa2e 25-Jul-2012 Ted Kremenek <kremenek@apple.com> Turn -Wobjc-root-class on by default. <rdar://problem/11203649>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160707 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c0a43777ef48f6f07123b52d4e54b637d5e2d01c 25-Jul-2012 Ted Kremenek <kremenek@apple.com> Promote warn_unknown_analyzer_checker to an error. Addresses <rdar://problem/10987863>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
612409ece080e814f79e06772c690d603f45fbd6 25-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12057: Allow variadic template pack expansions to cross lambda boundaries.
Rather than adding a ContainsUnexpandedParameterPack bit to essentially every
AST node, we tunnel the bit directly up to the surrounding lambda expression
when we reach a context where an unexpanded pack can not normally appear.
Thus any statement or declaration within a lambda can now potentially contain
an unexpanded parameter pack.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/ScopeInfo.h
ema/Sema.h
ema/Template.h
6f36366c85dc81d67d70efdeeea4cfc382053feb 25-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Make comments::Parser and comments::Sema noncopyable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160702 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentParser.h
ST/CommentSema.h
6582277bfc8bb587602e2c0689b6b2ff4b9bef53 24-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment diagnostics: add warning for multiple \param commands with duplicate
parameter names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
42926a065572a63610f651bb1589fe1217e2e0a7 24-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Pedantic -pedantic correction. Duplicate cv-qualifiers are permitted in C++11
unless they appear in a decl-specifier-seq.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160688 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
168c07b93510aabd2a19af323d1132fffe498ee4 24-Jul-2012 Hans Wennborg <hans@hanshq.net> Tweak warning text for returning incomplete type from extern "C" functions.

A warning was added in r150128 for returning non-C compatible
user-defined types from functions with C linkage.

This makes the text more clear for the case when the type isn't
decidedly non-C compatible, but incomplete.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160681 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
db13f04dd0579874932bdb958647d0903f632dd4 24-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: couple TextTokenRetokenizer and comment parser together to
remove one of the two variable-length lookahead buffers. Now retokenizer will
ask for more tokens when it needs them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160680 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentParser.h
c4b0f9b851ca59e61b802d58792ea3600fd9a9d4 24-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Move TextTokenRetokenizer from CommentLexer.h to CommentParser.cpp since it is
an implementation detail of the parser.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
fd939162ff99a0084ed22a08dd37c149a0883a2b 24-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: retokenized text tokens are now pushed back in correct (not
reverse) order


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160675 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentParser.h
9f17408d50c1d76c5eab435e4ceb924cc10757ab 24-Jul-2012 Manuel Klimek <klimek@google.com> Introduces a new concept for binding results to matchers
as per Chandler's request:
- introduces a new matcher base type BindableMatcher that
provides the bind() call
- makes all dynamic-cast matcher creation functions return
BindableMatchers; the special case about dynamic-cast
matchers is that the node they match on and the node
their child matchers match on are the same node, just
casted to a different type; thus, there is no ambiguity
on what bind() matches on; additionally, those are the
matchers that we name with nouns in the matcher language,
so it's easy for users to intuitively know which matchers
are bindable

To make this change possible, we got rid of a non-orthogonal
implementation of thisPointerType, which had an implicit
dynamic-cast matcher from CallExpr to CXXMemberCallExpr; as
alternative, we now provide a memberCall dynamic-cast matcher
and thisPointerType is a predicate on CXXMemberCallExpr.

Last, the ArgumentAdaptingMatcher is actually not required
for the implementation of makeDynCastAllOfComposite - this
simplification makes it more obvious where the bind() call
can be used based on the matcher creation function types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160673 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
78d1a10e13a1abfd4830bccf2a97b2993da1ed5c 24-Jul-2012 Nick Lewycky <nicholas@mxc.ca> Emit debug info for dynamic initializers. Permit __attribute__((nodebug)) on
variables that have static storage duration, it removes debug info on the
emitted initializer function but not all debug info about this variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8487c524fdfcea3da858fd0af850b4784c8096d0 23-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment Sema: refactor handling of 'ParmVarDecl's and save them in Sema members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
2d66a5016d4aacce362f89290261c8a1a6eef0d3 23-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST: add InlineContentComment::RenderKind to specify a default
rendering mode for clients that don't want to interpret Doxygen commands.

Also add a libclang API to query this information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentSema.h
bed28ac1d1463adca3ecf24fca5c30646fa9dbb2 23-Jul-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo (the the => the)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
asic/DiagnosticIDs.h
asic/SourceManager.h
ex/HeaderSearch.h
ema/Sema.h
erialization/ASTReader.h
eab9d6f9065b042d39fbaf9842c9d8cc968dd6d0 23-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add diagnostics for comma at end of enum and for extra semicolon at namespace
scope to -Wc++11-extensions. Move extra semicolon after member function
definition diagnostic out of -pedantic, since C++ allows a single semicolon
there. Keep it in -Wextra-semi, though, since it's still questionable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160618 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
arse/Parser.h
adb1d4c18ee83249d4cffc99ef902f98e846092a 23-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12917: Remove incorrect assumption that lambda mangling information cannot
change once it's been assigned. It can change in two ways:
1) In a template instantiation, the context declaration should be the
instantiated declaration, not the declaration in the template.
2) If a lambda appears in the pattern of a variadic pack expansion, the
mangling number will depend on the pack length.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160614 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
dfd110ce5e64077ec94df195233e7a39895bf15e 22-Jul-2012 Francois Pichet <pichet2000@gmail.com> char16_t and char32_t are defined via typedef in MSVC 11 RC. So introduce a way to disable keywords under Microsoft mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160612 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
8986e108e04a4fbe9248f87708410bb073940d7b 21-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST nodes: add NumHTMLStartTagCommentBits member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160600 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
d256f8673bf2499f57e0f40aab30ff243d576c17 21-Jul-2012 Chad Rosier <mcrosier@apple.com> Rename -fms-inline-asm to -fenable-experimental-ms-inline-asm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160590 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d759cddde308fe7419d652b76eb143e2ab094560 20-Jul-2012 Chad Rosier <mcrosier@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160581 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
89770e5640dd5039569ecdc64c61acd9aa22cff9 20-Jul-2012 Chad Rosier <mcrosier@apple.com> Add the mechanics for -fms-inline-asm. No easy way to test at this time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160580 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
ae99b75fbbac1deaccdcc1b326b8fb6b07a1e72d 20-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Add libclang APIs to walk comments ASTs and an API to convert a comment to an
HTML fragment.

For testing, c-index-test now has even more output:
* HTML rendering of a comment
* comment AST tree dump in S-expressions like Comment::dump(), but implemented
* with libclang APIs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentVisitor.h
0cfe9a1ceb8c4e60a9deb91003c04aba3ec9eade 20-Jul-2012 Chad Rosier <mcrosier@apple.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160574 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
f925e0414d76d39d612d54d233e9fa2ee04b0a27 20-Jul-2012 Chad Rosier <mcrosier@apple.com> Add a new flag, -fms-inline-asm, that enables the output of MS-style inline
assembly.

By default, we don't emit IR for MS-style inline assembly (see r158833 as to
why). This is strictly for testing purposes and should not be enabled with the
expectation that things will work. This is a temporary flag and will be removed
once MS-style inline assembly is fully supported.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160573 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
fd8b43596478b779b6777cb3a595e69d7856c378 20-Jul-2012 Jordan Rose <jordan_rose@apple.com> Add a reverse iterator to DeclStmt, and use it when building a CFG.

The CFG creates dummy DeclStmts with one Decl per statement, and it has
to do so from last to first in order to build the graph correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160560 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
72021ff4038cbc48b09a3acb743e319809f086db 20-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> CommentBriefParser: use \returns if we can't find the \brief or just a plain
paragraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160550 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentBriefParser.h
e81ce256b62717dd846bd19aecc4115a0dcd4995 20-Jul-2012 Anna Zaks <ganna@apple.com> [analyzer] Refactor VisitObjCMessage and VisitCallExpr to rely on the
same implementation for call evaluation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160530 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
ffb0c3adc27d257c8453886957b8d220d1ad14d8 20-Jul-2012 Eric Christopher <echristo@apple.com> Remove HasSynthBitfield and all callers/writers/etc. Also remove
previous ResetObjCLayout calls since this is now handled in Sema.

Part of rdar://11842763

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160527 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ddcfbc9ad1817f545610999d655ac6c28d4c0c12 19-Jul-2012 Jordan Rose <jordan_rose@apple.com> For varargs, diagnose passing ObjC objects by value like other non-POD types.

While we still want to consider this a hard error (non-POD variadic args are
normally a DefaultError warning), delaying the diagnostic allows us to give
better error messages, which also match the usual non-POD errors more closely.

In addition, this change improves the diagnostic messages for format string
argument type mismatches by passing down the type of the callee, so we can
say "variadic method" or "variadic function" appropriately.

<rdar://problem/11825593>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160517 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b13291aa59c4c074e70f2d0181f9721e38b494d4 19-Jul-2012 Jordan Rose <jordan_rose@apple.com> Capitalize "Objective-C" and "C++" in user-facing contexts.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160516 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.def
river/CC1Options.td
455e72e7625a8f87c2c302d8d82baee5c111e094 19-Jul-2012 Bob Wilson <bob.wilson@apple.com> Define __FINITE_MATH_ONLY__ based on -ffast-math and -ffinite-math-only.

This macro was being unconditionally set to zero, preceded by a FIXME comment.
This fixes <rdar://problem/11845441>. Patch by Michael Gottesman!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160491 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
ce40e6f3dc3287348fb51a0eb7d4654b317435b8 19-Jul-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert r160404, "Eliminating the GCC_CAST hack, take two.", for now.

It crashes mingw32-gcc-4.4.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160486 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7dfbfb1835198bf0cb4b0caaa5d9f3c6301f9920 19-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Silence GCC warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160485 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
e3898ac6cca333f9a781eb6df4be5f3ba8258559 19-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix OverloadCandidateSet::clear to not leak PartialDiagnostics, found by Samuel
Panzer. I've not been able to trigger a failure caused by this, so no test yet.
Also included is a small change from Paul Robinson to only consider the
FailureKind if the overload candidate did actually fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160470 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
8919e688dc610d1f632a4d43f7f1489f67255476 18-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Combine all ObjC message CallEvents into ObjCMethodCall.

As pointed out by Anna, we only differentiate between explicit message sends

This also adds support for ObjCSubscriptExprs, which are basically the same
as properties in many ways. We were already checking these, but not emitting
nice messages for them.

This depends on the llvm::PointerIntPair change in r160456.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160461 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
4b3918e9534e46f9ac067c6e0018f94613292efa 18-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Rename addExtraInvalidatedRegions to get...Regions

Per Anna's comment that "add..." sounds like a method that modifies
the receiver, rather than its argument.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160460 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
b7a23e05d1d8f07f2a6edce5c88c728fe894c2c7 18-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Make CallEvent a value object.

We will need to be able to easily reconstruct a CallEvent from an ExplodedNode
for diagnostic purposes, and that's exactly what factory functions are for.
CallEvent objects are small enough (four pointers and a SourceLocation) that
returning them through the stack is fairly cheap. Clients who just need to use
existing CallEvents can continue to do so using const references.

This uses the same sort of "kind-field-dispatch" as SVal, though most of the
nastiness is contained in the DISPATCH and DISPATCH_ARG macros at the end of
the file. (We can't use a template for this because member-pointers to base
class methods don't call derived-class methods even when casting to the
derived class. We can't use variadic macros because they're a C99 feature.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160459 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
4ccc4cc5d4e7c5c436d5f45065d3639cfc7c6e48 18-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove obsolete ObjCPropRef SVal kind.

ObjC properties are handled through their semantic form of ObjCMessageExprs
and their wrapper PseudoObjectExprs, and have been for quite a while. The
syntactic ObjCPropertyRefExprs do not appear in the CFG and are not visited
by ExprEngine.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160458 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
7ff8f5e9b1b8d87a64853735fc4218a6a9f70652 18-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Remove unused ExprEngine::VisitCXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160457 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
0f7f10bd0ea08abf56c69fea9316275a1ee0e40c 18-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Add caching for TextComment::isWhitespace(), ParagraphComment::isWhitespace().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
7373ead8719ceedd21c108419159ea74b02b2461 18-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove trivial destructor from SVal.

This enables the faster SmallVector in clang and also allows clang's unused
variable warnings to be more effective. Fix the two instances that popped up.

The RetainCountChecker change actually changes functionality, it would be nice
if someone from the StaticAnalyzer folks could look at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160444 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
fb3643a7509dcde7fb0fb7290e4b3b42b317700c 18-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> On Darwin, the linker removes functions in CommentDumper.o (Comment::dump())
despite __attribute__(__used__). As explained by Argyrios,
> .a archive files do some stripping of their own and they remove .o files that
> contain functions that are not referenced by any other .o file.

The fix is to use these functions from another .o file.

Thanks, Argyrios!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
6a06e5ff3b680dcf7234d200309fd2400c478095 18-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13381: consider cv-qualifiers on a class member's type when determining which
constructor will be used for moving that object, in the computation of its
exception specification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160417 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
500d729e85028944355a119f9823ac99fa5ddcab 18-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13386: When matching up parameters between a function template declaration
and a function template instantiation, if there's a parameter pack in the
declaration and one at the same place in the instantiation, don't assume that
the pack wasn't expanded -- it may have expanded to nothing. Instead, go ahead
and check whether the parameter pack was expandable. We can do this as a
side-effect of the work we'd need to do anyway, to find how many parameters
were produced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160416 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a52f5a3ee2156849b3b91255c360b9f0bb1ebd51 18-Jul-2012 Aaron Ballman <aaron@aaronballman.com> Adding a fixit for includes that cannot be found with angle brackets, but can be found with quoted strings instead. Implements PR13201.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160406 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
8c77758b6546a61b7cc9b71d05049aa0fad3d841 18-Jul-2012 Douglas Gregor <dgregor@apple.com> Improve comment for TypeDecl::getTypeForDecl(), from Sean Silva!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160405 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d47bc514d49e3707063dc30b166d28e954b338f1 18-Jul-2012 Douglas Gregor <dgregor@apple.com> Eliminating the GCC_CAST hack, take two.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
befceba36bb91f05dd36b06fae93e2539c944622 18-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST nodes: rename Num*Bitfields to Num*Bits to be consistent with Stmt AST nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
8de0956c736428c6aa2d317a8bad0c0c494ad6c3 18-Jul-2012 Douglas Gregor <dgregor@apple.com> Reinstate the GCC_CAST hack; I apparently did not appease GCC with r160397.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
75c5754260b4a3a0ff7f6437c850be9f95cad836 17-Jul-2012 Douglas Gregor <dgregor@apple.com> Try to eliminate GCC_CAST hack in a manner that should work for both
GCC and MSVC.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
93ed7cf05f900b9150dcf59c0e0f37f3bd325f62 17-Jul-2012 Douglas Gregor <dgregor@apple.com> Teach the ASTImporter how to handle anonymous structs/unions
better. Fixes <rdar://problem/11466212>; the test (and back-ported
version of this code) were committed to LLDB in r160186.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
379b28183a7dcb715c3f3eb2da4b0157d6d8ffbe 17-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> Issue warning when assigning out-of-range integer values to enums.
Due to performance cost, this is an opt-in option placed
under -Wassign-enum. // rdar://11824807


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160382 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
eec207f02a0208814bb8b4ca90099a2fed016244 17-Jul-2012 Jordan Rose <jordan_rose@apple.com> Add -Wobjc-string-compare under -Wobjc-literal-compare.

Suggested by Ted, since string literal comparison is at least slightly more
sensible than comparison of runtime literals. (Ambiguous language on
developer.apple.com implies that strings are guaranteed to be uniqued within
a translation unit and possibly across a linked binary.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160378 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8d872ca7f10bb70d0757b894af79641679262bba 17-Jul-2012 Jordan Rose <jordan_rose@apple.com> Now that -Wobjc-literal-compare is a warning, put the fixit on a note.

Recovering as if the user had actually called -isEqual: is a bit too far from
the semantics of the program as written, /even though/ it's probably what they
intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8ee04480df468a11667dbfad1049d2b08c4b9482 17-Jul-2012 Daniel Jasper <djasper@google.com> Finishing the move of RefactoringCallbacks and fixing the corresponding
buildbot failures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160355 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/RefactoringCallbacks.h
d5c66dd664b005866c9f7fc91eb0d49164bca36f 17-Jul-2012 Daniel Jasper <djasper@google.com> Move RefactoringCallbacks to Tooling to avoid dependency from
ASTMatchers (lower level abstraction) to Tooling (higher level
abstraction).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160351 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/RefactoringCallbacks.h
ooling/RefactoringCallbacks.h
19e88c02889017753747e64606d9b1ad0041f11a 17-Jul-2012 Alexey Samsonov <samsonov@google.com> Fixup for r160345 - uintptr_t is not always unsigned

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160349 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
20b802d186dfc5db9b4a9ce83e9f31fa5aa4efcc 17-Jul-2012 Daniel Jasper <djasper@google.com> Make the isDerivedFrom matcher more generic.

It now accepts an arbitrary inner matcher but is fully backwards
compatible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160348 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
e4ed215ccf35d4407916cd0223de26f87ccbb055 17-Jul-2012 Galina Kistanova <gkistanova@gmail.com> Fixed few warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160345 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
beef1cb6ebfaea4542fb6d6686caae27787a75e0 17-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix BlockCommandComment::classof() to return true for objects of derived classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
177f1be7fe5b7d71a791901fb83d95e18c413513 16-Jul-2012 Aaron Ballman <aaron@aaronballman.com> Fixing an MSVC warning -- the compiler did not like the cast added to work around a g++ bug (it would claim to possibly emit incorrect code).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
dea8fba3c632745136017f3e8e9d9e0341d6feb9 16-Jul-2012 Alexander Kornienko <alexfh@google.com> The new clang-ast-dump tool for selective AST dumping. Moved common command-line tool stuff to CommandLineClangTool

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160265 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CommandLineClangTool.h
e994bb6b02f061c4e2442abe0c72913f6a74b961 16-Jul-2012 Daniel Jasper <djasper@google.com> Add two more missing parameters in diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fef3f6f6e920d5beb4b62f252cc96f1b9d871d59 16-Jul-2012 Daniel Jasper <djasper@google.com> Fix diagnostic adding missing parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fe7beeb421b90f66b4a96c2358c5a838c376a0a8 16-Jul-2012 Daniel Jasper <djasper@google.com> Add refactoring callbacks to make common kinds of refactorings easy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160255 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/RefactoringCallbacks.h
ooling/Tooling.h
a770a4daf77037b5526dba1c447d61acf0aba01a 16-Jul-2012 Daniel Jasper <djasper@google.com> Add correct parenthesis range to CXXConstructExprs inside
CXXFunctionalCastExprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
aa488ea287c219565b5169d50142947d1b63a6ca 16-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> More for PR11848: a pack expansion type isn't necessarily type-dependent (its
pattern might be an alias template which doesn't use its arguments). It's always
instantiation-dependent, though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160246 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7e54fb5fcc7d7b8e843501652cf7c19cea6c4c57 16-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13365: Fix code which was trying to treat an array of DeducedTemplateArgument
as an array of its base class TemplateArgument. Switch the const
TemplateArgument* parameters of InstantiatingTemplate's constructors to
ArrayRef<TemplateArgument> to prevent this from happening again in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160245 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ff2fcb8db242a54f72bbb4e5595261e12672ed66 15-Jul-2012 Daniel Jasper <djasper@google.com> Fix spelling of anyOf matcher and add missing test.

Patch by Sam Panzer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160233 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
08c39d88ffe88d6212feb6e93d5938a24474f337 14-Jul-2012 Richard Trieu <rtrieu@google.com> Update Sema diagnostic messages to take advantage of template type diffing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f9e9af7df0cea6e997ac04131c7af6ca4384b0cc 14-Jul-2012 Chad Rosier <mcrosier@apple.com> Add a per target max vector alignment field (e.g., 32-byte alignment for x86 due to
AVX). Currently, if no aligned attribute is specified the alignment of a vector is
inferred from its size. Thus, very large vectors will be over-aligned with no
benefit. Target owners should set this target max.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
d64e2ee48a6dca4612dda56b785be571be391047 14-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment.h: reword comments


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160197 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
916ea6522a200c4a3a4f5eecd29ee7bea315be5f 13-Jul-2012 Tanya Lattner <tonic@nondot.org> Move a bunch of the attribute warnings under the IgnoreAttributes group. Cleaned up test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160190 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0eaf69d9a10149f0f344238183915912c2dca392 13-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment AST nodes: rename getXXXCount() methods to getNumXXXs() to be in line with Statement AST nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160182 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
a3c70966babdd6c63623470fbba9bb4ec37de4a5 13-Jul-2012 Manuel Klimek <klimek@google.com> Allows retrieving all files in a CompilationDatabase.

Patch by Tobias Koenig, some test changes by myself.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160167 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
838925dc841f0968ac5daf941aed5d2331775a59 13-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Provide a special-case diagnostic when two class member functions instantiate
to the same signature. Fix a bug in the type printer which would cause this
diagnostic to print wonderful types like 'const const int *'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f38bf2d441fac379c427f86153fbb0cb41256c6 13-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment parsing: repaint the bikesched: rename 'HTML open tags' to 'HTML start tags' and 'HTML close tags' to 'HTML end tags' according to HTML spec.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
asic/CommentNodes.td
asic/DiagnosticCommentKinds.td
3d986980bd02594b1a5aa7b9f9f68d201621ced7 13-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Make concepts of optional and forbidden end tags separate. Thanks Jordan for pointing this!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentSema.h
asic/DiagnosticCommentKinds.td
99b28e7e6b136acd8b294a807550e66f78c07f44 12-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Always initialize variable. If opening quote is the last character in comment, we will be using an uninitialized value. There is already a test for that in unittests/AST/CommentLexer.cpp, but it seems like we were lucky with the value that got loaded into the variable so the test passed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
8f88a1dcc57cfe8580eb1558a783ad8499bfe8e0 12-Jul-2012 Timur Iskhodzhanov <timurrrr@google.com> [Windows] Use thiscall as the default calling convention for class methods. PR12785

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160121 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9a50249cd35f3d9d4d2b194a3edd6815ccf746d7 12-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Add _rdrand{16,32,64}_step intrinsics to immintrin.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160118 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
6a12449ec8862211856447d3df4c082a346339f2 12-Jul-2012 Daniel Jasper <djasper@google.com> This commit combines three patches to the ASTMatchers.

One adds matchers for the various parts of a for loop (initializer, condition,
increment), as well as extending the hasBody matcher to work for while and
do-while loops. The second patch adds an isInteger matcher for types.
The third patch fixes a bug in allOf, where a few of the name chages
(AllOf --> allOf) had been missed.

All matchers come with unit tests.

Patches by Sam Panzer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160115 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
f729ce0b231e045b8e7db61e85e87186c09db238 12-Jul-2012 Rafael Espindola <rafael.espindola@gmail.com> Ignore visibility attributes after definitions. This matches newer (4.7) gcc's
behavior and is the first step in fixing pr13338.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160104 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f7226fbe677a9c7578fa0613491ed15c6dc6a5e1 12-Jul-2012 John McCall <rjmccall@apple.com> Add the ObjFW runtime. Patch by Jonathan Schleifer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160102 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
c36b30c92c78b95fd29fb5d9d6214d737b3bcb02 12-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Don't inline virtual calls unless we can devirtualize properly.

Previously we were using the static type of the base object to inline
methods, whether virtual or non-virtual. Now, we try to see if the base
object has a known type, and if so ask for its implementation of the method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160094 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
198871cc90375246d8692680467ff6e810edac36 12-Jul-2012 Tanya Lattner <tonic@nondot.org> Add OpenCL metadata for kernel arg names. This output is controlled via a flag as noted in the OpenCL Spec.
Includes a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160092 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.h
e3f470a718ec00eb8b546e405fa59bc2df2d7c46 12-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> Stop instantiating a class if we hit a static_assert failure. Also, if the
static_assert fails when parsing the template, don't diagnose it again on every
instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
a5ef44ff5d93a3be6ca67782828157a71894cf0c 11-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Enable comment parsing and semantic analysis to emit diagnostics. A few
diagnostics implemented -- see testcases.

I created a new TableGen file for comment diagnostics,
DiagnosticCommentKinds.td, because comment diagnostics don't logically
fit into AST diagnostics file. But I don't feel strongly about it.

This also implements support for self-closing HTML tags in comment
lexer and parser (for example, <br />).

In order to issue precise diagnostics CommentSema needs to know the
declaration the comment is attached to. There is no easy way to find a decl by
comment, so we match comments and decls in lockstep: after parsing one
declgroup we check if we have any new, not yet attached comments. If we do --
then we do the usual comment-finding process.

It is interesting that this automatically handles trailing comments.
We pick up not only comments that precede the declaration, but also
comments that *follow* the declaration -- thanks to the lookahead in
the lexer: after parsing the declgroup we've consumed the semicolon
and looked ahead through comments.

Added -Wdocumentation-html flag for semantic HTML errors to allow the user to
disable only HTML warnings (but not HTML parse errors, which we emit as
warnings in -Wdocumentation).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Comment.h
ST/CommentDiagnostic.h
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
ST/RawCommentList.h
asic/AllDiagnostics.h
asic/CMakeLists.txt
asic/Diagnostic.td
asic/DiagnosticCommentKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticIDs.h
asic/DiagnosticSemaKinds.td
asic/Makefile
ema/Sema.h
ff398965a5abfaf5bc47bc022876f56a28e5b9a7 11-Jul-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a flag in SourceManager to treat non-system source files
as "volatile", meaning there's a high enough chance that they may
change while we are trying to use them.

This flag is only enabled by libclang.
Currently "volatile" source files will be stat'ed immediately
before opening them, because the file size stat info
may not be accurate since when we got it (e.g. from the PCH).
This avoids crashes when trying to reference mmap'ed memory
from a file whose size is not what we expect.

Note that there's still a window for a racing issue to occur
but the window for it should be way smaller than before.
We can consider later on to avoid mmap completely on such files.

rdar://11612916

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/SourceManager.h
rontend/ASTUnit.h
78541c433049322b27b4f437973076ba29cff709 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> Allow -verify directives to be filtered by preprocessing.

This is accomplished by making VerifyDiagnosticsConsumer a CommentHandler,
which then only reads the -verify directives that are actually in live
blocks of code. It also makes it simpler to handle -verify directives that
appear in header files, though we still have to manually reparse some files
depending on how they are generated.

This requires some test changes. In particular, all PCH tests now have their
-verify directives outside the "header" portion of the file, using the @line
syntax added in r159978. Other tests have been modified mostly to make it
clear what is being tested, and to prevent polluting the expected output with
the directives themselves.

Patch by Andy Gibbs! (with slight modifications)

The new Frontend/verify-* tests exercise the functionality of this commit,
as well as r159978, r159979, and r160053 (Andy's other -verify enhancements).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160068 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticConsumer.h
2db5abb43b7a7fce4771063f6a5de561780c1335 11-Jul-2012 Daniel Jasper <djasper@google.com> Move CompileAssert into namespace clang::ast_matchers:: to avoid naming
collisions until it is properly integrated in llvm/Support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160063 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchersInternal.h
c6d64a26c28bbeee50e06c94c4f4c08e610327b7 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> Emit -verify diagnostics even when we have a fatal error.

Previously we'd halt at the fatal error as expected, but not actually emit
any -verify-related diagnostics. This lets us catch cases that emit a
/different/ fatal error from the one we expected.

This is implemented by adding a "force emit" mode to DiagnosticBuilder, which
will cause diagnostics to immediately be emitted regardless of current
suppression. Needless to say this should probably be used /very/ sparingly.

Patch by Andy Gibbs! Tests for all of Andy's -verify patches coming soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
202c0541b69cab612bf0aceb49ddd8bb11199c8d 11-Jul-2012 Nico Weber <nicolasweber@gmx.de> Remove unused override of CompilerInvocation::setLangDefaults().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160051 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
0ffbfd1a7f80f9a3c07317cb8f44c562f2ba1ba5 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add debug.DumpCalls, which prints out any CallEvents it sees.

This is probably not so useful yet because it is not path-sensitive, though
it does try to show inlining with indentation.

This also adds a dump() method to CallEvent, which should be useful for
debugging.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160030 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
e54cfc7b9990acffd0a8a4ba381717b4bb9f3011 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Use CallEvent for building inlined stack frames.

In order to accomplish this, we now build the callee's stack frame
as part of the CallEnter node, rather than the subsequent BlockEdge node.
This should not have any effect on perceived behavior or diagnostics.

This makes it safe to re-enable inlining of member overloaded operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160022 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Make CallEnter, CallExitBegin, and CallExitEnd not be StmtPoints

These ProgramPoints are used in inlining calls,
and not all calls have associated statements anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160021 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
8d276d38c258dfc572586daf6c0e8f8fce249c0e 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add a CXXDestructorCall CallEvent.

While this work is still fairly tentative (destructors are still left out of
the CFG by default), we now handle destructors in the same way as any other
calls, instead of just automatically trying to inline them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160020 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
28038f33aa2db4833881fea757a1f0daf85ac02b 11-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add new PreImplicitCall and PostImplicitCall ProgramPoints.

These are currently unused, but are intended to be used in lieu of PreStmt
and PostStmt when the call is implicit (e.g. an automatic object destructor).

This also modifies the Data1 field of ProgramPoints to allow storing any
pointer-sized value, as opposed to only aligned pointers. This is necessary
to store SourceLocations.

There is currently no BugReporter support for these; they should be skipped
over in any diagnostic output.

This commit also tags checkers that currently rely on function calls only
occurring at StmtPoints.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160019 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/PathSensitive/Calls.h
e0e6b9e79a0c4edae92abd3928263875c78e23aa 10-Jul-2012 Daniel Jasper <djasper@google.com> Add more matchers and do cleanups.

Reviewers: klimek

Differential Revision: http://ec2-50-18-127-156.us-west-1.compute.amazonaws.com/D2

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160013 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
4187df5f7bdda66d2fbe64a3f2660ee3977f0d12 10-Jul-2012 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> Adds support for auto-detection of compilation databases, looking in a directory and all its parents.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159998 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
5ba0559f2f0ddd62de16547af514dbaf93b79585 10-Jul-2012 Axel Naumann <Axel.Naumann@cern.ch> Improve r159256 following Chandler's comments:
Implement UniqueFileContainer::erase(), camelCase, add comment on future optimizations of the cache versus de-optimizations of invalidations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
8fa2fb859a4cb8e67d9763225281d9b0aa9cb59f 10-Jul-2012 Manuel Klimek <klimek@google.com> Adds support for auto-detection of compilation databases
from a source file and changes clang-check to make use of this.

This makes clang-check just work on in-tree builds, and allows
easy setup via a symlink per source directory to make clang-check
work without any extra configuration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159990 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
ooling/Tooling.h
3b81b7d604e851498243ee732dee3babc1cf20d4 10-Jul-2012 Jordan Rose <jordan_rose@apple.com> Allow -verify directives to specify a min and max count, not just "+".

void f(); // expected-note 0+ {{previous declaration is here}}
void g(); // expected-note 0-1 {{previous declaration is here}}

The old "+" syntax is still an alias for "1+", and single numbers still work.

Patch by Andy Gibbs!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159979 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/VerifyDiagnosticConsumer.h
aa48fe80a1b2000809900a437f0819d929793002 10-Jul-2012 Jordan Rose <jordan_rose@apple.com> Allow line numbers on -verify directives.

// expected-warning@10 {{some text}}

The line number may be absolute (as above), or relative to the current
line by prefixing the number with either '+' or '-'.

Patch by Andy Gibbs!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/SourceManager.h
rontend/VerifyDiagnosticConsumer.h
4313c013c658f6c97e6460e7780c26faa6b78d9a 10-Jul-2012 Jordan Rose <jordan_rose@apple.com> Clean up VerifyDiagnosticsConsumer in preparation for upcoming enhancements.

Patch by Andy Gibbs!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159977 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticConsumer.h
5409d28b6167032696f4915bb765a6f7db579f3f 10-Jul-2012 Richard Trieu <rtrieu@google.com> Properly update the FormattedArgs vector when the template type diffing falls
back to regular type printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
52bcb21031460fae0cecba440f6ab5bbd3559ff0 10-Jul-2012 Chad Rosier <mcrosier@apple.com> Revert 159966 since Tanya temporarily updated the test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d521b700ff6b6c7e1ac49e45fb37fa93ae22dcb9 10-Jul-2012 Chad Rosier <mcrosier@apple.com> Put new warning in r159965 under a flag to appease buildbots. Someone please
verify this is the correct grouping.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159966 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0df579ec000ffe52e0cddf1e7ee5e50a55256835 10-Jul-2012 Tanya Lattner <tonic@nondot.org> Patch by Anton Lokhmotov to add OpenCL work group size attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159965 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
d57aa886f06215da3a1bffecf6bfb7ad92075e80 09-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: yank any use of "non-fragile abi" phrase
from diagnostics. // rdar://9657485


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
94f29f4bf5d6b49dd1b7fc16cfa1521adc0c71c0 09-Jul-2012 Jordan Rose <jordan_rose@apple.com> Better parser recovery in Objective-C containers.

Previously it was possible to get an infinite-loop-on-invalid with a namespace
decl within @interface. Since 'namespace' is normally a safe place to retry
top-level parsing, we just didn't consume the token.

This adds a flag that tracks whether we have temporarily left Objective-C
scope to parse a C-like declaration, and uses that to better recover from
parse problems by stopping at possible method declarations and at @end. To
fix the original problem, we do /not/ stop at 'namespace' when in an
Objective-C @interface or @protocol context (but still do in @implementation).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159941 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ee158bc29bc12ce544996f7cdfde14aba63acf4d 09-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] When inlining, make sure we use the definition decl.

This was a regression introduced during the CallEvent changes; a call to
FunctionDecl::hasBody was also being used to replace the decl found by
lookup with the actual definition. To keep from making this mistake again
(particularly if/when we start inlining Objective-C methods), this commit
adds a "getDefinition()" method to CallEvent, which should do the right
thing under any circumstances.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159940 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
6deae7cc8de2fb7578ed244d064cd34af744aac5 09-Jul-2012 Jordan Rose <jordan_rose@apple.com> Downgrade the "direct comparison" error for ObjC literals to a warning.

Chris pointed out that while the comparison is certainly problematic
and does not have well-defined behavior, it isn't any worse than some
of the other abuses that we merely warn about and doesn't need to make
the compilation fail.

Revert the release notes change (r159766) now that this is just a new warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4990890fc9428f98bef90ba349203a648c592778 09-Jul-2012 Alexander Kornienko <alexfh@google.com> Inline storage of attributes in AttributedStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Stmt.h
ema/Sema.h
erialization/ASTWriter.h
6994bb61eff86b2db53253ec74b24c4142fc080e 08-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Add missing options for -m(no-){pclmul,fma,xop}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159913 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
fad0a32da8ea34a58aa0a0dd3fd67cd30959b080 08-Jul-2012 Simon Atanasyan <satanasyan@mips.com> MIPS: Range check __builtin_mips_wrdsp / __builtin_mips_rddsp arguments against the upper/lower values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159911 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e471d87a278cf2fba653b2f6d2c8d9c33f5721b7 08-Jul-2012 Simon Atanasyan <satanasyan@mips.com> MIPS: Mark arguments of __builtin_mips_wrdsp / __builtin_mips_rddsp as a constant expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsMips.def
84f30809a2ce02183609a738aaa116d832e61da3 07-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Wire up -mrdrnd for X86.

For some reason GCC decided to call the feature rdrnd instead of rdrand,
which requires translating it for LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159897 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e8cf7d143446c45568bb7c9a6fbd8f32ca6ae93e 07-Jul-2012 Ted Kremenek <kremenek@apple.com> Re-apply r159875 with fixes.

- Split pedantic driver flag test into separate test file, and XFAIL on cygwin,mingw32
- Fix bug in tablegen logic where a missing '{' caused errors to be included in -Wpedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159892 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
river/Options.td
3b4c53259603ba389373362f476648b2b1ab9eca 07-Jul-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert rr159875, "Implement -Wpedantic and --no-pedantic to complement -Weverything." It broke several builds.

I suspect FileCheck might match assertion failure, even if clang/test/Misc/warning-flags.c passed the test.

> 0. Program arguments: bin/./clang -### -pedantic -Wpedantic clang/test/Driver/warning-options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
river/Options.td
25570a94ca6b706d19812b0f8df25a63ec3445c8 07-Jul-2012 Ted Kremenek <kremenek@apple.com> Implement -Wpedantic and --no-pedantic to complement -Weverything.

This patch introduces some magic in tablegen to create a "Pedantic" diagnostic
group which automagically includes all warnings that are extensions. This
allows a user to suppress specific warnings traditionally under -pedantic used
an ordinary warning flag. This also allows users to use #pragma to silence
specific -pedantic warnings, or promote them to errors, within blocks of text
(just like any other warning).

-Wpedantic is NOT an alias for -pedantic. Instead, it provides another way
to (a) activate -pedantic warnings and (b) disable them. Where they differ
is that -pedantic changes the behavior of the preprocessor slightly, whereas
-Wpedantic does not (it just turns on the warnings).

The magic in the tablegen diagnostic emitter has to do with computing the minimal
set of diagnostic groups and diagnostics that should go into -Wpedantic, as those
diagnostics that already members of groups that themselves are (transitively) members
of -Wpedantic do not need to be included in the Pedantic group directly. I went
back and forth on whether or not to magically generate this group, and the invariant
was that we always wanted extension warnings to be included in -Wpedantic "some how",
but the bookkeeping would be very onerous to manage by hand.

-no-pedantic (and --no-pedantic) is included for completeness, and matches many of the
same kind of flags the compiler already supports. It does what it says: cancels out
-pedantic. One discrepancy is that if one specifies --no-pedantic and -Weverything or
-Wpedantic the pedantic warnings are still enabled (essentially the -W flags win). We
can debate the correct behavior here.

Along the way, this patch nukes some code in TextDiagnosticPrinter.cpp and CXStoredDiagnostic.cpp
that determine whether to include the "-pedantic" flag in the warning output. This is
no longer needed, as all extensions now have a -W flag.

This patch also significantly reduces the number of warnings not under flags from 229
to 158 (all extension warnings). That's a 31% reduction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159875 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
river/Options.td
4a0beb20655ae9f28d519e088c6ec8dceec59edd 07-Jul-2012 Jordan Rose <jordan_rose@apple.com> Constify the argument to SourceLocation::getFromPtrEncoding.

This allows SourceLocations to be stored in generic "data" fields
that are typed as "const void *" and are also used to point to
const objects.

Really we should probably be returning a const pointer from
getPtrEncoding as well, but in some places we want to store
SourceLocations in the same generic "data" field as proper
pointers to /mutable/ objects. Oh well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
0e020adcb69e91826f4ee14a0c1d381f7b624a34 07-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add comments to Calls.h.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159867 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
bd2e27e8484c1d378c9c9d089f61ff496627f391 06-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> objc-arc: warn when assigning retained object to
a 'weak' property just as we do the same for
'weak' variables. // rdar://11814185


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159859 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
811c820257746b1799b790b6adc7804f44154011 06-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Don't store pointers into a std::vector (RawCommentList::Comments). Although
currently we take address of std::vector's contents only after we finished
adding all comments (so no reallocation can happen), this will change in
future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159845 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RawCommentList.h
814e219fc6d5faeb48e4fd5375843346f2d4a7a7 06-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Stop using new[] on llvm::BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
ST/CommentParser.h
4da216637fa1ad4bdfd31bc265edb57ca35c2c12 06-Jul-2012 Manuel Klimek <klimek@google.com> Adds the AST Matcher library, which provides a in-C++ DSL to express
matches on interesting parts of the AST, and callback mechanisms to
act on them.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159805 91177308-0d34-0410-b5e6-96231b3b80d8
STMatchers/ASTMatchFinder.h
STMatchers/ASTMatchers.h
STMatchers/ASTMatchersInternal.h
STMatchers/ASTMatchersMacros.h
ca6debb464191f97d6637023fe5bd6cfe880ff1f 06-Jul-2012 Lang Hames <lhames@gmail.com> Forgot to rename one use of FPContractModeTy

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159796 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
c9686716d2ceb5518178dca98670ec34c472a1be 06-Jul-2012 Lang Hames <lhames@gmail.com> Add -ffp-contract = { fast | on | off } command line option support.

This flag sets the 'fp-contract' mode, which controls the formation of fused
floating point operations. Available modes are:

- Fast: Form fused operations anywhere.
- On: Form fused operations where allowed by FP_CONTRACT. This is the default
mode.
- Off: Don't form fused operations (in future this may be relaxed to forming
fused operations where it can be proved that the result won't be
affected).

Currently clang doesn't support the FP_CONTRACT pragma, so the 'On' and 'Off'
modes are equivalent.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159794 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/LangOptions.h
river/Options.td
36cbfbfce889642057bd007eac3569ea9f58e1e8 06-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Comment.h: correct identation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Comment.h
8a10d9fcb5a207a519be95ff9281c3536f79cf03 06-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> Added a new memberfor Parser, to be used soon
for doing delayed parsing of c++ method defined in
objc class implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159792 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
8d3ba23f2d9e6c87794d059412a0808c9cbacb25 06-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Implement AST classes for comments, a real parser for Doxygen comments and a
very simple semantic analysis that just builds the AST; minor changes for lexer
to pick up source locations I didn't think about before.

Comments AST is modelled along the ideas of HTML AST: block and inline content.

* Block content is a paragraph or a command that has a paragraph as an argument
or verbatim command.
* Inline content is placed within some block. Inline content includes plain
text, inline commands and HTML as tag soup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159790 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CMakeLists.txt
ST/Comment.h
ST/CommentLexer.h
ST/CommentParser.h
ST/CommentSema.h
ST/CommentVisitor.h
ST/Makefile
asic/CommentNodes.td
d797a85866fd5ce62850dd145396b451364032a3 05-Jul-2012 Simon Atanasyan <satanasyan@mips.com> MIPS: Add -mdsp/-mno-dsp and -mdspr2/-mno-dspr2 command line options support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159769 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e6df0ce08fcdf9f906556d98cca96d38ab440bba 05-Jul-2012 Manuel Klimek <klimek@google.com> Adapts the FrontendAction convenience functions so that it can be
used with classes that generate ASTConsumers; this allows decoupling
the ASTConsumer generation from the Frontend library (like, for example,
the MatchFinder in the upcoming ASTMatcher patch).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159760 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
0b273efa37a38deab77dadf72540c9c07c63f8cf 05-Jul-2012 Simon Atanasyan <satanasyan@mips.com> MIPS: Add -mips16 / -mno-mips16 command line support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159747 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
471c8b49982d1132f30b0b0da27fef94fd6e4f67 04-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Drop the ASTContext.h include from DeclFriend.h and DeclTemplate.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159723 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
ST/DeclTemplate.h
ema/Initialization.h
d4f5198ae07d9a4958d8191bac694ded12173ad9 04-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove get(V)BaseClassOffsetInBits, the CharUnit functions should be used instead.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
478851c3ed6bd784e7377dffd8e57b200c1b9ba9 04-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Drop the ASTContext.h include from Stmt.h and fix up transitive users.

This required moving the ctors for IntegerLiteral and FloatingLiteral out of
line which shouldn't change anything as they are usually called through Create
methods that are already out of line.

ASTContext::Deallocate has been a nop for a long time, drop it from ASTVector
and make it independent from ASTContext.h

Pass the StorageAllocator directly to AccessedEntity so it doesn't need to
have a definition of ASTContext around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/RecordLayout.h
ST/Stmt.h
rontend/ASTUnit.h
ema/DelayedDiagnostic.h
ema/Sema.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
3a2d0fb726aca3096b5c1ea9be734417060f34d7 04-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Split out the "empty" case for compound statement into a separate ctor.

Move the ASTContext-dependent version out of line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ee3096a2d3092892d4c6f607a6323d9409714ed5 04-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> CXXRecordDecl: Split getBases/getVBases into a slow and a fast path.

This avoids costly computation of getASTContext() and drops the header
dependency from DeclCXX.h to ASTContext.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2c7886ddec1e2cee68daee9866637d2e02f434ef 04-Jul-2012 David Chisnall <csdavec@swan.ac.uk> Hoist the logic for selecting the Objective-C dispatch method into the runtime
class, from the target. No functionality change, just less duplicated logic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
river/ToolChain.h
a422cd0ed4da8cb5a172498f29bb02065707c6ce 04-Jul-2012 David Chisnall <csdavec@swan.ac.uk> A few more cleanups for the GNU family of ObjC runtimes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
c50a0e3900f1b44503be48457508af372f4dd05a 04-Jul-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Renamed RawComment kinds to avoid name clash.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
ST/RawCommentList.h
fdaa33818cf9bad8d092136e73bd2e489cb821ba 04-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] For now, don't inline non-static member overloaded operators.

Our current inlining support (specifically RegionStore::enterStackFrame)
doesn't know that calls to overloaded operators may be calls to non-static
member functions, and that in these cases the first argument should be
treated as 'this'. This caused incorrect results and sometimes crashes.

The long-term fix will be to rewrite RegionStore::enterStackFrame to use
CallEvent and its subclasses, but for now we can just disable these
problematic calls by classifying them under a new CallEvent,
CXXMemberOperatorCall.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159692 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
a1eec4bd198b96ef40a7c15cd0e131ca94511ad8 04-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Refactor parse/sema portion of
objective-c's fast enumeration statement,
for more work to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159689 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
11d3f4cc27e6b923fc32481dc1bb5ec46c7d1f4b 03-Jul-2012 David Chisnall <csdavec@swan.ac.uk> Rename the GCC Objective-C runtime to gcc from gnu-fragile and the GNUstep
runtime to gnustep from gnu. Fix EH for the GCC runtime.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
15cdcbf14b899d0189a5284dda9bf1f043e48f7a 03-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> CommentLexer: remove Markdown tokens from the token list (they are not emitted by lexer).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
941e47cef26fb6300a8d3e366f7c5694277e5849 03-Jul-2012 Nico Weber <nicolasweber@gmx.de> Share ConvertUTF8toWide() between Lex and CodeGen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
7c81b43bef441960e921e0eb72d249369b7dd96c 03-Jul-2012 Nico Weber <nicolasweber@gmx.de> Rename -Wself-assign-memvar to -Wself-assign-field to improve local consistency a bit.

(cf -Wunused-private-field and several other existing -field diagnostics.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159633 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
109e6de8db5614fa327754a279ca4f0be04dea3f 03-Jul-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Added file header documentation with \file and \brief;
* Cleaned up existing doc comments and added/annotated \brief summaries.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159629 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
6c89eafc90f5c51a0bf185a993961170aee530c2 03-Jul-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: just as we have done for method definitions,
c-functions declared in implementation should have their
parsing delayed until the end so, they can access forward
declared private methods. // rdar://10387088


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159626 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
af50aab0c317462129d73ae8000c6394c718598d 03-Jul-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Primarily, added \brief to most of include/clang/Basic, instead of prefixing
the comments with "DeclaredName - ";
* Made some brief summaries significantly briefer;
* Fixed up some erroneous uses of \see and \arg;
* Fixed up some extraneous backslashes in \code...\endcode blocks;
* Fixed up some typos/spelling errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ABI.h
asic/AddressSpaces.h
asic/AttrKinds.h
asic/Builtins.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/FileManager.h
asic/FileSystemStatCache.h
asic/IdentifierTable.h
asic/Lambda.h
asic/LangOptions.h
asic/Linkage.h
asic/ObjCRuntime.h
asic/OpenCL.h
asic/OperatorKinds.h
asic/PartialDiagnostic.h
asic/PrettyStackTrace.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/Specifiers.h
asic/TargetBuiltins.h
asic/TargetInfo.h
asic/TargetOptions.h
asic/TokenKinds.h
asic/TypeTraits.h
asic/Version.h
asic/VersionTuple.h
asic/Visibility.h
70cbf3cc09eb21db1108396d30a414ea66d842cc 03-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Introduce CXXAllocatorCall to handle placement arg invalidation.

This is NOT full-blown support for operator new, but removes some nasty
duplicated code introduced in r158784.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159608 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
879a4334e4c4cab0c22ba91492ffc2838bbc21fc 03-Jul-2012 DeLesley Hutchins <delesley@google.com> Thread safety analysis: fixed incorrect error message at the end of a locks_required function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159607 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
asic/DiagnosticSemaKinds.td
5fe9b296fa44a81c3e2528f102fa25b33ca2fa43 02-Jul-2012 Matt Beaumont-Gay <matthewbg@google.com> Add a warning flag for "'extern' variable has an initializer".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
840c9842ed8b3a2b1276519a80f89e7d409fc148 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> Revert "Remove unused member (& consequently unused parameter) in SA's Call code."

...and instead add an accessor. We're not using this today, but it's something
that should probably stay in the source for potential clients, and it doesn't
cost a lot. (ObjCPropertyAccess is only created on the stack, and right now
there's only ever one alive at a time.)

This reverts r159581 / commit 8e674e1da34a131faa7d43dc3fcbd6e49120edbe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159595 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
7dd900ed308506f9cf1cb72c70db1652f94cab37 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> In blocks, only pretend that enum constants have enum type if necessary.

In C, enum constants have the type of the enum's underlying integer type,
rather than the type of the enum. (This is not true in C++.) Thus, when a
block's return type is inferred from an enum constant, it is incompatible
with expressions that return the enum type.

In r158899, I told block returns to pretend that enum constants have enum
type, like in C++. Doug Gregor pointed out that this can break existing code.

Now, we don't check the types of return statements until the end of the block.
This lets us go back and add implicit casts in blocks with mixed enum
constants and enum-typed expressions.

<rdar://problem/11662489> (again)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159591 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
8e674e1da34a131faa7d43dc3fcbd6e49120edbe 02-Jul-2012 David Blaikie <dblaikie@gmail.com> Remove unused member (& consequently unused parameter) in SA's Call code.

This member became unused in r159559.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159581 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
a5335769ab676c455543d8e705e72ece6bf15cfb 02-Jul-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Reintroduced FieldDecl public methods setBitWidth and removeBitWidth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159579 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8f4783c6a5ae1e95aeb58b41da9707310e60ab5b 02-Jul-2012 Douglas Gregor <dgregor@apple.com> Reduce default template instantiation depth to 512; we're blowing out
the stack too often with 1024. Fixes <rdar://problem/11678534>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
96479da6ad9d921d875e7be29fe1bfa127be8069 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add generic preCall and postCall checks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159562 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
69f87c956b3ac2b80124fd9604af012e1061473a 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Use CallEvent for inlining and call default-evaluation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159560 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
de507eaf3cb54d3cb234dc14499c10ab3373d15f 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Finish replacing ObjCMessage with ObjCMethodDecl and friends.

The preObjCMessage and postObjCMessage callbacks now take an ObjCMethodCall
argument, which can represent an explicit message send (ObjCMessageSend) or an
implicit message generated by a property access (ObjCPropertyAccess).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159559 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
cde8cdbd6a662c636164465ad309b5f17ff01064 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Begin replacing ObjCMessage with ObjCMethodCall and friends.

Previously, the CallEvent subclass ObjCMessageInvocation was just a wrapper
around the existing ObjCMessage abstraction (over message sends and property
accesses). Now, we have abstract CallEvent ObjCMethodCall with subclasses
ObjCMessageSend and ObjCPropertyAccess.

In addition to removing yet another wrapper object, this should make it easy
to add a ObjCSubscriptAccess call event soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159558 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
85d7e01cf639b257d70f8a129709a2d7594d7b22 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Move the last bits of CallOrObjCMessage over to CallEvent.

This involved refactoring some common pointer-escapes code onto CallEvent,
then having MallocChecker use those callbacks for whether or not to consider
a pointer's /ownership/ as escaping. This still needs to be pinned down, and
probably we want to make the new argumentsMayEscape() function a little more
discerning (content invalidation vs. ownership/metadata invalidation), but
this is a good improvement.

As a bonus, also remove CallOrObjCMessage from the source completely.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159557 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
740d490593e0de8732a697c9f77b90ddd463863b 02-Jul-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add a new abstraction over all types of calls: CallEvent

This is intended to replace CallOrObjCMessage, and is eventually intended to be
used for anything that cares more about /what/ is being called than /how/ it's
being called. For example, inlining destructors should be the same as inlining
blocks, and checking __attribute__((nonnull)) should apply to the allocator
calls generated by operator new.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159554 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/Calls.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
7518b3784ed2176aad8dcabe0685c6e02c5f1043 02-Jul-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Make sure that all newly introduced visible decls in a DeclContext
coming from an AST file are registered for serialization.

A static data member instantiation of in a chained PCH could be missed
when serializing decls; the result was that when emitting the visible decls
map of its DeclContext, we would use a DeclID that was not actually emitted,
leading to crashes or hangs.

Fix this by making sure such decls are always registered for serialization.
Also introduce extra sanity checks to make sure we don't register new
declarations or types after we have serialized the types/decls block.

rdar://11728990

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159550 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
139be7007eba3bd491ca50297888be507753a95d 02-Jul-2012 Richard Smith <richard-llvm@metafoo.co.uk> A ':' after an enum-specifier at class scope is a bitfield, not a typo for a ';'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159549 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d99ef536b241071b6f4c01db6525dc03242ac30b 02-Jul-2012 Dmitri Gribenko <gribozavr@gmail.com> Add a new libclang completion API to get brief documentation comment that is
attached to a declaration in the completion string.

Since extracting comments isn't free, a new code completion option is
introduced.

A new code completion option that enables including brief comments
into CodeCompletionString should be a, err, code completion option.
But because ASTUnit caches global declarations during parsing before
even completion consumer is created, the option is duplicated as a
translation unit option (in both libclang and ASTUnit, like the option
to cache code completion results).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159539 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
river/CC1Options.td
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
ema/CodeCompleteOptions.h
2f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622 02-Jul-2012 James Dennett <jdennett@google.com> Documentation cleanup: reformatting/fixing up file comments so that they have
\file and \brief markup and appear in Doxygen's summaries (and eventually at
http://clang.llvm.org/doxygen/files.html). Fixed up another couple of minor
glitches in the docs at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159517 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ABI.h
asic/AddressSpaces.h
asic/AllDiagnostics.h
asic/AttrKinds.h
asic/Builtins.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/ExceptionSpecificationType.h
asic/ExpressionTraits.h
asic/FileManager.h
asic/FileSystemOptions.h
asic/FileSystemStatCache.h
asic/IdentifierTable.h
asic/LLVM.h
asic/Lambda.h
asic/LangOptions.h
asic/Linkage.h
asic/MacroBuilder.h
asic/Module.h
asic/ObjCRuntime.h
asic/OnDiskHashTable.h
asic/OpenCL.h
asic/OperatorKinds.h
asic/PartialDiagnostic.h
asic/PrettyStackTrace.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/Specifiers.h
asic/TargetBuiltins.h
asic/TargetInfo.h
asic/TargetOptions.h
asic/TemplateKinds.h
asic/TokenKinds.h
asic/TypeTraits.h
asic/Version.h
asic/VersionTuple.h
asic/Visibility.h
fb40e3f10ccef93c4f8fb6bd4fe5a108fa6cd369 01-Jul-2012 Meador Inge <meadori@codesourcery.com> PR13189: va_list broken with precompiled headers

For some targets a structure named __va_list_tag is built to help define
the __builtin_va_list type. However, __va_list_tag was not being treated as a
predefined type thus causing problems when serializing the AST. This commit
fixes that oversight by adding the necessary support to treat __va_list_tag
as a predefined type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
f70a88612a4bc2de2872a518267b9b4891ab6431 30-Jun-2012 Jordan Rose <jordan_rose@apple.com> Add support for the C11 _Alignof keyword.

This behaves like the existing GNU __alignof and C++11 alignof keywords;
most of the patch is simply adding the third token spelling to various places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
b6bc31e8c592aded604f240309e367089c5e05dd 30-Jun-2012 Matt Beaumont-Gay <matthewbg@google.com> Add a missing argument index, wordsmith a little, and 80(ish) columns

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159478 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
648e7630008aac5caa591bcc6d0f77b9594b85fd 30-Jun-2012 Richard Trieu <rtrieu@google.com> Fix typos from r159463 and update tests. Added Matt Beaumont-Gay's suggestion
to improve wording of a diagnostic message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e75d9cfbf41a0ee9e456a665776f91fdd9773b36 30-Jun-2012 David Blaikie <dblaikie@gmail.com> Use -frewrite-includes for crash reports.

In future changes we should:
* use __builtin_trap rather than derefing 'random' volatile pointers.
* avoid dumping temporary files into /tmp when running tests, instead
preferring a location that is properly cleaned up by lit.

Review by Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
river/Compilation.h
river/Types.def
529cdf4c2ef0985dd6f4b7b68ab76e6a1a5082d5 29-Jun-2012 Richard Trieu <rtrieu@google.com> Update the %diff modifer to have an alternate string print when a template tree
is selected. This will allow more flexibility when converting diagnostics to
use template type diffing.

Also updated the internal manual and test cases for correctly keeping the bold
attribute and for tree printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159463 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
04ca19b97e85381920df7214f2c31b6833b314ce 29-Jun-2012 Richard Trieu <rtrieu@google.com> Add a fix-it hint note to -Wunique-enum to suggest that the last element gets
initialized with the next to last element to silence the warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159458 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
20e7d992140cc6bc94f2e65f3638346527150756 29-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objc diagnostic: pass IdentifierInfo* to the diagnostic system
to produce quotes instead of adding qoute to the test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159450 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c84804a7409927813430f5bb1b56bb7b8afbcee8 29-Jun-2012 Manman Ren <mren@apple.com> X86: add more GATHER intrinsics in Clang

Corrected type for index of _mm256_mask_i32gather_pd
from 256-bit to 128-bit
Corrected types for src|dst|mask of _mm256_mask_i64gather_ps
from 256-bit to 128-bit

Support the following intrinsics:
_mm_mask_i32gather_epi64, _mm256_mask_i32gather_epi64,
_mm_mask_i64gather_epi64, _mm256_mask_i64gather_epi64,
_mm_mask_i32gather_epi32, _mm256_mask_i32gather_epi32,
_mm_mask_i64gather_epi32, _mm256_mask_i64gather_epi32


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
8d0f528afd9fcb9ebb8ccb4b8a529a05375b628e 29-Jun-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Add a test that we are, in fact, doing a DFS on the ExplodedGraph.

Previously:
...the comment said DFS...
...the WorkList being instantiated said BFS...
...and the implementation was actually DFS...
...due to an unintentional change in 2010...
...and everything kept working anyway.

This fixes our std::deque implementation of BFS, but switches back to a
SmallVector-based implementation of DFS.

We should probably still investigate the ramifications of DFS vs. BFS,
especially for large functions (and especially when we hit our block path
limit), since this might completely change our memory use. It can also mask
some bugs and reveal others depending on when we halt analysis. But at least
we will not have this kind of little mistake creep in again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159397 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
43bb1793c523f714bca1c49d804ba7c0cb62aca2 29-Jun-2012 Nico Weber <nicolasweber@gmx.de> Warn on self-assignment to member variables. PR13104.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
712692e130af20b1759b1cf1aae83e22d585233f 28-Jun-2012 Matt Beaumont-Gay <matthewbg@google.com> Only print a semicolon after "no known conversion for Nth argument" if there
is a following clause.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e327aa81e38d9d17702f95ad4df56f8e3e9b7e91 28-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Now that we use the GCC builtin <-> llvm intrinsic, dead code eliminate the handwritten emitter.

The generated code uncovered an invalid prototype for __builtin_mips_shilo, fix it along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159368 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsMips.def
fbf7005138d199bad238f0dd1ff509931a24ab10 28-Jun-2012 Simon Atanasyan <satanasyan@mips.com> Support MIPS DSP Rev1 intrinsics.
This patch was reviewed in the llvm-commits list by Jim Grosbach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159366 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsMips.def
asic/TargetBuiltins.h
de981f3ff163bc9ec69e4c5e7316e94276412993 28-Jun-2012 Hans Wennborg <hans@hanshq.net> Add -ftls-model command-line flag.

This allows for setting the default TLS model. (PR9788)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159336 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.h
b6ebd4490235c9ea6016530d623c46d0b9ce565b 28-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add warning flag -Winvalid-pp-token for preprocessing-tokens which have
undefined behaviour, and move the diagnostic for '' from an Error into
an ExtWarn in this group. This is important for some users of the preprocessor,
and is necessary for gcc compatibility.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159335 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
632fbaa22fbed7c090eb83775731bfff786c2198 28-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix another issue with devirtualizing calls to final methods by passing them
the correct this pointer. There is some potential for sharing a bit more
code with canDevirtualizeMemberFunctionCalls, but that can be done in an
independent patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159326 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
12d2cc71bfeb1e7be9ce00fc52feab50941cac24 27-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> patch to suggest 'static' function should be 'static inline'
when it appears to be unused and occurs in a header.
// rdar://11202617


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d852e35adb46e0799538dfc9c80d44f27cd3597 27-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Implement John McCall's review of r159212 other than the this pointer not
being updated. Will fix that in a second.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
962668d2c192dd02f75b8ec3628a89964bfb738b 27-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove unsigned and a pointer from a comment token (so that each token can have only one semantic string value attached to it), at a cost of adding an additional token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentLexer.h
3ce42c37b0ef6b10538f5040a33d19a6e6988d05 27-Jun-2012 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev:
add interface for removing a FileEntry from the cache.
Forces a re-read the contents from disk, e.g. because a tool (like cling) wants to pick up a modified file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
c2cda0284a3e80fa4b39b540f6c73782fa69fa6b 27-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Initialize RawCommentList::BriefTextValid when deserializing AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159246 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
7349cce2b303c8cc1e00c3aa7192513d6ca5004f 27-Jun-2012 Daniel Jasper <djasper@google.com> Always use getDerived().shouldVisitImplicitCode() so it can be altered
in subclasses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
540f9ae1023bba27052c742cd92d0b32361b28eb 26-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> preprocessing: gcc supports #line 0. So, treat this
as a gcc supported extension with usual treatment
with -pedantic (warn) and -pedantic-errors (error).
// rdar://11550996


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
2d44d77fed3200e2eff289f55493317e90d3398c 26-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Implement a lexer for structured comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CommentBriefParser.h
ST/CommentLexer.h
ST/RawCommentList.h
5283c99365ec4697a5a6bb2b2505469a9aa474d5 26-Jun-2012 Manman Ren <mren@apple.com> X86: add GATHER intrinsics (AVX2) in Clang

Support the following intrinsics:
_mm_mask_i32gather_pd, _mm256_mask_i32gather_pd, _mm_mask_i64gather_pd
_mm256_mask_i64gather_pd, _mm_mask_i32gather_ps, _mm256_mask_i32gather_ps
_mm_mask_i64gather_ps, _mm256_mask_i64gather_ps


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159222 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
246b6aa6763de8c617d564ef33123a8f3293a80e 26-Jun-2012 Richard Trieu <rtrieu@google.com> Add template type diffing to Clang. This feature will provide a better
comparison between two templated types when they both appear in a diagnostic.
Type elision will remove indentical template arguments, which can be disabled
with -fno-elide-type. Cyan highlighting is applied to the differing types.

For more formatting, -fdiagnostic-show-template-tree will output the template
type as an indented text tree, with differences appearing inline. Template
tree works with or without type elision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159216 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/Options.td
rontend/DiagnosticOptions.h
7e0f1ee35fe98d6751b9e736410f8254795b5f68 26-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix comment: refer to documentation comments in general, not just Doxygen comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
de376286f1276a694f465e797c5edb6222075137 26-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objc: adds diagnostic group to several old objc warnings.
// rdar://11741435 pr13184



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159213 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
0b4fe503ef00d9f8ea330850d3e3b303e9c7c876 26-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> During codegen of a virtual call we would extract any casts in the expression
to see if we had an underlying final class or method, but we would then
use the cast type to do the call, resulting in a direct call to the wrong
method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Expr.h
7ed4f663287b087bc566d29d9febdfdeb8dd2776 26-Jun-2012 Chad Rosier <mcrosier@apple.com> [driver] Make -serialize-diagnostics (one dash) and alias for
--serialize-diagnostics.
rdar://11734800


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159208 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
4904bf4e84cfb48080270ebaa9005327f18ab0e5 26-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> block literal irgen: several improvements on naming block
literal helper functions. All helper functions (global
and locals) use block_invoke as their prefix. Local literal
helper names are prefixed by their enclosing mangled function
names. Blocks in non-local initializers (e.g. a global variable
or a C++11 field) are prefixed by their mangled variable name.
The descriminator number added to end of the name starts off
with blank (for first block) and _<N> (for the N+2-th block).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159206 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
c9f351700721150a985f21844fbfec55b04e861d 25-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Extend the "expected ';' after struct" logic to also apply to enums, and to
struct and enum forward-declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159164 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ee681111c713f300884550b1503713ade3b32374 25-Jun-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Be careful about implicitly-declared operator new/delete. (PR13090)

The implicit global allocation functions do not have valid source locations,
but we still want to treat them as being "system header" functions for the
purposes of how they affect program state.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159160 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
831421f24057b93ea28bc92d8bd6290631a43caf 25-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Unrevert r158887, reverted in r158949, along with a fix for the bug which
resulted in it being reverted. A test for that bug was added in r158950.

Original comment:

If an object (such as a std::string) with an appropriate c_str() member function
is passed to a variadic function in a position where a format string indicates
that c_str()'s return type is desired, provide a note suggesting that the user
may have intended to call the c_str() member.

Factor the non-POD-vararg checking out of DefaultVariadicArgumentPromotion and
move it to SemaChecking in order to facilitate this. Factor the call checking
out of function call checking and block call checking, and extend it to cover
constructor calls too.

Patch by Sam Panzer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159159 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6b02009359a462ffe633696a4441313b462e6566 25-Jun-2012 Nico Weber <nicolasweber@gmx.de> Make explicit specializations at class scope work
for non-type template parameters in microsoft mode.
PR12709.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/RecursiveASTVisitor.h
5e2d5dec7736f6f9292d4212dec67295909f1328 23-Jun-2012 Hans Wennborg <hans@hanshq.net> Support the tls_model attribute (PR9788)

This adds support for the tls_model attribute. This allows the user to
choose a TLS model that is better than what LLVM would select by
default. For example, a variable might be declared as:

__thread int x __attribute__((tls_model("initial-exec")));

if it will not be used in a shared library that is dlopen'ed.

This depends on LLVM r159077.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159078 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
2edf0a2520313cde900799b1eb9bd11c9c776afe 23-Jun-2012 Sean Hunt <scshunt@csclub.uwaterloo.ca> Clean up a large number of C++11 attribute parse issues, including parsing
attributes in more places where we didn't and catching a lot more issues.

This implements nearly every aspect of C++11 attribute parsing, except for:
- Attributes are permitted on explicit instantiations inside the declarator
(but not preceding the decl-spec)
- Attributes are permitted on friend declarations of functions.
- Multiple instances of the same attribute in an attribute-list (e.g.
[[noreturn, noreturn]], not [[noreturn]] [[noreturn]] which is conforming)
are allowed.
The first two are marked as expected-FIXME in the test file and the latter
is probably a defect and is currently untested.

Thanks to Richard Smith for providing the lion's share of the testcases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159072 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
28ad063b279378b19cb0704f977429df366a151e 23-Jun-2012 Nico Weber <nicolasweber@gmx.de> Support L__FUNCTION__ in microsoft mode, PR11789

Heavily based on a patch from
Aaron Wishnick <aaron.s.wishnick@gmail.com>.

I'll clean up the duplicated function in CodeGen as
a follow-up, later today or tomorrow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159060 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/TokenKinds.def
9f728cd37476c6588b06d241fa778d2df6e277da 23-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Minor improvements to some C99 variadic-macro-related diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
10f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2 23-Jun-2012 Ted Kremenek <kremenek@apple.com> Implement initial static analysis inlining support for C++ methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159047 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
c1fb54265614845ee1e09856af6e46961c6209f4 23-Jun-2012 Kaelyn Uhrain <rikka@google.com> Perform typo correction for base class specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159046 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4b2239bec687dd8d45524205209c2629febb6663 22-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Mark Doxygen warnings DefaultIgnore.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159026 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27c0bb04bfdbf82b1d7e6670b8e806451e8ce2c3 22-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Correct include guard to reflect new directory name


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
9dda4746867a747c1c3421d8a04a1b666aeb5809 22-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Add a warning about almost-Doxygen trailing comments: //< and /*< ... */


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159001 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
67e8a8b00b67a903ab4916947712963942f1ef40 22-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: improve diagnostic when collection expression is
not a pointer to a fast-enumerable object. // rdar://11488666


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158998 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8da16874f48d2c5c8f1275c7fd77caf8a8af3f81 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: making \param and \returns docs match the code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158985 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
16ae9de07730832945204877d752db7f1c070962 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: making \param docs match the code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158982 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
erialization/ASTReader.h
taticAnalyzer/Core/PathSensitive/Store.h
efce31f51d6e7e31e125f96c20f6cdab3ead0a47 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Primarily fixed \param commands with names not matching any actual
parameters of the documented functions. In many cases this consists
just of fixing up the parameter name in the \param to match the code,
in some it means deleting obsolete documentation and occasionally it
means documenting the parameter that has replaced the older one that
was documented, which sometimes means some simple reverse-engineering
of the docs from the implementation;
* Fixed \param ParamName [out] to the correct format with [out] before
the parameter name;
* Fixed some \brief summaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
asic/Diagnostic.h
rontend/CompilerInvocation.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/PPCallbacks.h
ema/Initialization.h
27289b1b8f249bd5bea46b215b5f2e72bbe1c6d4 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Added \file documentation for PPCallbacks.h;
* Added/formated \brief summaries;
* Deleted documentation for parameters that no longer exist;
* Used \param more systematically for documentation of parameters;
* Escaped # characters in Doxygen comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158978 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
4ae383f1d5c6505cdc60005cecfc20afc2ca7817 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Add \file documentation;
* Add \verbatim...\endverbatim markup as needed;
* Add \brief summaries;
* Escaped "::" in Doxygen comments when preceded by space, to avoid a
Doxygen warning where Doxygen takes this as an explicit link request;
* Add \code...\endcode markup to code examples;
* Fix a grammatical glitch in "is this declarator is a".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158977 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
4bd495c2a4fc742dde435115f66c722217975bd2 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Add \brief summaries;
* Escaped # characters in Doxygen comments;
* Added some \see cross-references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158975 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
07d94305d3bcc5b654fb2c52d33c003bf193410e 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: rephrase, and so avoid a Doxygen warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158973 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
36be6c43533194ed5c7613f33851c7bc390f1c8e 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape # characters in Doxygen comments as needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158972 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
dc3d8c9c7094f89438407b97795b3c993bb3d6fe 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape # characters in Doxygen comments as needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158969 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
5f0cf083692ddc05a8c4bcf1e2e91b57272f4e97 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: Fixed the format of the file header (that I broke in
a recent commit), and eliminated a Doxygen error by changing a comment inside
a function to not be a Doxygen comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158967 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MultipleIncludeOpt.h
58bf98725b6d4588338e191d2ab981b104471dab 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped # and < characters in Doxygen comments as needed;
* Fixed up some \brief summaries;
* Marked up some parameter references with \p;
* Added \code...\endcode around code examples;
* Used \returns a little more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158966 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
697c7a8af6d090bff2b572553da0957de1724e1e 22-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Made \brief documentation be brief, mostly by adding a blank line to make
the rest of the text be part of the detailed description only;
* Removed "FunctionOrClassName - " and other redundant text from the start
of Doxygen comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
4e294eea2c8a8965e24682ed9da8944969830813 22-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Revert r158887. This fixes pr13168.

Revert "If an object (such as a std::string) with an appropriate c_str() member function"

This reverts commit 7d96f6106bfbd85b1af06f34fdbf2834aad0e47e.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158949 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
9530a8bf275f91f95147e1fb205dc85bea1ae45c 21-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> VC9 does not like heterogenous compare function objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RawCommentList.h
24388333364be0ce9d04a07fa9895baeeff78bda 21-Jun-2012 Anna Zaks <ganna@apple.com> [analyzer] Do not step into statements while collecting function decls.

CallGraph's recursive visitor only needs to collect declarations; their
bodies will be processed later on. RecursiveASTVisitor will recurse on
the bodies if the definition is provided along with declaration.
Optimize, by not recursing on any of the statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158934 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
56242baaae6c45b24fbdd5bc56fe4ee516fa9e6b 21-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: deprecated C-like parameters in Objective-C
method declarations.
// rdar://11578353.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158929 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
1071ba9c324d831b437870a1fe63bf2ecdc4e9e4 21-Jun-2012 Daniel Jasper <djasper@google.com> Make the RecursiveASTVisitor visit the body of a range-based for loop
again. This was broken in r158395.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7f3260764a3614e22dcf24d71c1155f14a9b4e6e 21-Jun-2012 Alexey Samsonov <samsonov@google.com> Improve support for -g options accepted by Clang:
1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to simple -g (except -g0/-ggdb0).
2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) and options (-gtoggle).
3. Recognize and ignore flags -g[no-]strict-dwarf, -g[no-]record-gcc-switches.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158906 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7d96f6106bfbd85b1af06f34fdbf2834aad0e47e 21-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> If an object (such as a std::string) with an appropriate c_str() member function
is passed to a variadic function in a position where a format string indicates
that c_str()'s return type is desired, provide a note suggesting that the user
may have intended to call the c_str() member.

Factor the non-POD-vararg checking out of DefaultVariadicArgumentPromotion and
move it to SemaChecking in order to facilitate this. Factor the call checking
out of function call checking and block call checking, and extend it to cover
constructor calls too.

Patch by Sam Panzer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a114d828a0e0123a2f2661e914a5212da0f684f5 21-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: place quotes around named items in a diagnostic.
// rdar://11671080


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158874 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cea06d26b8f3a2599bba79f7e072b7550de949a7 21-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Normally, a property cannot be both 'readonly' and having a
"write" attribute (copy/retain/etc.). But, property declaration in
primary class and protcols are tentative as they may be overridden
into a 'readwrite' property in class extensions. Postpone diagnosing
such warnings until the class implementation is seen.
// rdar://11656982


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158869 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
198129e24b56ffcc85f66e798d52a8614e3a07a4 21-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape a < character in a Doxygen comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158861 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
0b92fcb1353d2d8b31b6c485e6caa14568aca43b 20-Jun-2012 John McCall <rjmccall@apple.com> Introduce ObjCRuntime::hasWeakClassImport() and use it in the appropriate
places. I've turned this off for the GNU runtimes --- I don't know if
they support weak class import, but it's easy enough for them to opt in.

Also tweak a comment per review by Jordan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ObjCRuntime.h
a6366f5c7e92466ebad0042afa55c2e5952ebe61 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escape < characters in Doxygen comments as needed;
* Add \code...\endcode around code examples;
* Remove an incorrect use of Doxygen's \arg command.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158859 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticConsumer.h
07c877de7bbd1e0f04c34414dff0dcd7a124f2c7 20-Jun-2012 Jordan Rose <jordan_rose@apple.com> Reword -Winternal-linkage-in-inline, and rename it to -Wstatic-in-inline.

Now that this is a C-only warning, we can use "static" instead of "internal
linkage", which is a term developers are probably more familiar with.
This makes for a better warning message. The warning name was changed to match,
since "internal linkage" is not mentioned in the warning text anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158853 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
12a4ced3dc30adcf2e1532c6323d517e9949a61e 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Many fixes for \brief summaries (adding some, and making others shorter);
* Don't try to explicit tell Doxygen a namespace name (and particularly
don't get it wrong);
* Typo fix: instantitions -> instantiations;
* Slightly more use of \pre for documenting preconditions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158852 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e2c9238d7b53fdfd99e724ce50de9197a23727fa 20-Jun-2012 Anna Zaks <ganna@apple.com> [analyzer] Do not walk the types for call graph construction.

Similar to r156661. This should be beneficial performance wise and
hopefully, resolve a RecursiveASTVisitor crash that we are seeing in the
wild, but are incapable of reproducing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
2df3a7a58b37d87ebf9e5e9251d56d1f8506f8b6 20-Jun-2012 Anna Zaks <ganna@apple.com> [analyzer] Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158849 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
1070e324c79b772a722b815d48dda999eea52bf8 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escaping # characters in Doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158847 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
59c30cd804c162dcc1c156bd3bab5c8f1dfd4749 20-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove unused ASTContext& arg in RawCommentList::addComment, as pointed out by Chandler in commit message for r158807.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158845 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RawCommentList.h
33c0f3703de3ab6d8f3a41d7fb9d2b3489617b21 20-Jun-2012 Jordan Rose <jordan_rose@apple.com> Remove -Winternal-linkage-in-inline in C++.

It's very easy for anonymous external linkage to propagate in C++ through
return types and parameter types. Likewise, it's possible that a template
containing an inline function is only used with parameters that have internal
linkage. Actually diagnosing where the internal linkage comes from is fairly
difficult (both to locate and then to print nicely). Finally, since we only
have one translation unit available, we can't even prove that any of this
violates the ODR.

This warning needs better-defined behavior in C++ before it can really go in.

Rewording of the C warning (which /is/ specified by C99) coming shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158836 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
52e4ed949ba52958db1e938860e3b49944ce8680 20-Jun-2012 Chad Rosier <mcrosier@apple.com> [ms-style asm] Change the fatal error to an extension warning. Apparently, this
error was asserting on anything that included Windows.h. MS-style inline asm is
still dropped, but at least now we're not completely silent about it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e95f8ef6563bdf26de5294873733a3425c09db42 20-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objc: improved diagnostic when property autosynthesis may cause
change in behavior. // rdar://11671080


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158828 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8571897a792fcbc26d86c70d6c3ef835e75af984 20-Jun-2012 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fix a thinko and a stray debugging hunk in my attributes patch. Thanks to Jordan
Rose and Richard Smith for catching these.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
f95d4125c01fa7b98722ae8cfbceac4a87d037b4 20-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Fix a big layering violation introduced by r158771.

That commit added a new library just to hold the RawCommentList. I've
started a discussion on the commit thread about whether that is really
meritted -- it certainly doesn't seem necessary at this stage.

However, the immediate problem is that the AST library has a hard
dependency on the Comment library, but the dependencies were set up
completely backward. In addition to the layering violation, this had an
unfortunate effect if scattering the Comments library dependency
throughout the build system, but inconsistently so -- several parts of
the CMake dependencies were missing and only showed up due to transitive
deps or the fact that the target wasn't being built by tho bots.

It turns out that the Comments library can't (currently) be a well
formed layer *below* the AST library either, as it has an API that
accepts an ASTContext. That parameter is currently unused, so maybe that
was a mistake?

Anyways, it really seems like this is logically part of the AST --
that's the whole point of the ASTContext providing access to it as far
as I can tell -- so I've merged it into the AST library to solve the
immediate layering violation problems and remove some of the churn from
our library dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158807 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RawCommentList.h
omments/RawCommentList.h
10663399b1d4663e8b140eb12d9aa351be147c55 20-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Remove a 'static' specifier from an 'inline' function in a header file.

This issue was caught by the new '-Winternal-linkage-in-inline' warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158801 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Linkage.h
8ab6c24076444fc6bda9a28c1100ba106ddffaa6 20-Jun-2012 Ted Kremenek <kremenek@apple.com> Revert "Provide a -no-pedantic to cancel out -pedantic." This needs to be designed
a bit further. We may wish to just have -Wno flags to silence warnings, and not have a -no-pedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158796 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
260611a32535c851237926bfcf78869b13c07d5b 20-Jun-2012 John McCall <rjmccall@apple.com> Restructure how the driver communicates information about the
target Objective-C runtime down to the frontend: break this
down into a single target runtime kind and version, and compute
all the relevant information from that. This makes it
relatively painless to add support for new runtimes to the
compiler. Make the new -cc1 flag, -fobjc-runtime=blah-x.y.z,
available at the driver level as a better and more general
alternative to -fgnu-runtime and -fnext-runtime. This new
concept of an Objective-C runtime also encompasses what we
were previously separating out as the "Objective-C ABI", so
fragile vs. non-fragile runtimes are now really modelled as
different kinds of runtime, paving the way for better overall
differentiation.

As a sort of special case, continue to accept the -cc1 flag
-fobjc-runtime-has-weak, as a sop to PLCompatibilityWeak.

I won't go so far as to say "no functionality change", even
ignoring the new driver flag, but subtle changes in driver
semantics are almost certainly not intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/LangOptions.def
asic/LangOptions.h
asic/ObjCRuntime.h
asic/VersionTuple.h
river/CC1Options.td
river/ObjCRuntime.h
river/Options.td
river/ToolChain.h
rontend/CodeGenOptions.h
erialization/ASTReader.h
056e2c30050a94141150ba561268d90b4d18e378 20-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Unbreak GCC build: GCC doesn't like clang::Parser::CommentHandler and class clang::CommentHandler to have same name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158780 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d5e26b8933a377893c8043ff6a23aaf6b601d18f 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: adding/fixing Doxygen markup, particularly \brief,
\code...\endcode, \file commands and escaing for angle brackets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
206d7db051d509e836e646377d1ecaffb35ca646 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape # character in a Doxygen comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158775 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
222bc3c25b12fc0cf55175975dc4c25d7e1fac78 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escape < characters in Doxygen comments as needed;
* Demote one Doxygen comment to a regular comment to fix a Doxygen warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158774 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
80b5a2fea27561dce90c7588181185130d61e55e 20-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped # characters in Doxygen comments as needed;
* Added/fixed \file and \brief markup to add summaries to Doxygen output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158773 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
da01f62cdfb0995db355c61d96d45b0f1d790b3d 20-Jun-2012 Kaelyn Uhrain <rikka@google.com> Add the PCH file name to the message about not being able to read the PCH.

Also add a couple of unit tests to check the invalid-PCH error messages
to satisfy PR4568 and for the assertion (introduced in r149918 and fixed
in r158769) that would cause clang to crash when given an empty PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158772 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
aa0cd85838f2a024e589ea4e8c2094130065af21 20-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Structured comment parsing, first step.

* Retain comments in the AST
* Serialize/deserialize comments
* Find comments attached to a certain Decl
* Expose raw comment text and SourceRange via libclang


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
asic/SourceManager.h
omments/RawCommentList.h
ex/Preprocessor.h
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
8e083e71d48f7f4d6ef40c00531c2e14df745486 20-Jun-2012 Sean Hunt <scshunt@csclub.uwaterloo.ca> Reapply r158700 and fixup patches, minus one hunk that slipped through and
caused a crash in an obscure case. On the plus side, it caused me to catch
another bug by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
0aa52aa11e04d957f1c93c7d911e4c3dd7d5d54f 20-Jun-2012 DeLesley Hutchins <delesley@google.com> Thread Safety Analysis: Move some warnings on thread safety
attributes into the ThreadSafetyAttributes group, where the other
warnings currently live.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158761 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5e94d6fa2e1d5ca606e060406adee13b96849f2a 20-Jun-2012 Tanya Lattner <tonic@nondot.org> Extend the support for cl-std to include 1.2.
Add error checking for the static qualifier which is now allowed in certain situations for OpenCL 1.2. Use the CL version to turn on this feature.
Added test case for 1.2 static storage class feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dd3284b17829adfd542ecf4a7b4423dce1d7502b 20-Jun-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: warn when autosynthesizing a property which has same
name as an existing ivar since this is common source of error
when people remove @synthesize to take advantage of autosynthesis.
// rdar://11671080


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fc685ace387734599c475426b1a8efdb491054b8 20-Jun-2012 Aaron Ballman <aaron@aaronballman.com> Reapplying the changes from r158717 as they were rolled back to avoid merge conflicts from a separate problematic patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/AttributeList.h
ema/Sema.h
3532936f4f50c15fcec4d00f4cbb81a7a9dd9b7e 19-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r158700 and dependent patches r158716, r158717, and r158731.

The original r158700 caused crashes in the gcc test suite,
g++.abi/vtable3a.C among others. It also caused failures in the libc++
test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/AttributeList.h
ema/Sema.h
9416d42468eacaae0ea85ab8ed134f5df1a1d142 19-Jun-2012 Meador Inge <meadori@codesourcery.com> Revert predefined decl tracking.

r158085 added some logic to track predefined declarations. The main reason we
had predefined declarations in the input was because the __builtin_va_list
declarations were injected into the preprocessor input. As of r158592 we
explicitly build the __builtin_va_list declarations. Therefore the predefined
decl tracking is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158732 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ed35fd1c6db1680b4526ba64c94e5da6ec203be7 19-Jun-2012 Aaron Ballman <aaron@aaronballman.com> Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the align (which fixes PR12631).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/AttributeList.h
ema/Sema.h
bfcb037a3479de4a453a8275c64ae441c22d43f9 19-Jun-2012 Sean Hunt <scshunt@csclub.uwaterloo.ca> Improve the specification of spellings in Attr.td.

Note that this is mostly a structural patch that handles the change from the old
spelling style to the new one. One consequence of this is that all AT_foo_bar
enum values have changed to not be based off of the first spelling, but rather
off of the class name, so they are now AT_FooBar and the like (a straw poll on
IRC showed support for this). Apologies for code churn.

Most attributes have GNU spellings as a temporary solution until everything else
is sorted out (such as a Keyword spelling, which I intend to add if someone else
doesn't beat me to it). This is definitely a WIP.

I've also killed BaseCheckAttr since it was unused, and I had to go through
every attribute anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
8af669f2f1d92436fe6dc43144bb084a620e7516 19-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Add a -fuse-init-array option to cc1 and map to the UseInitArray target
option. On the driver, check if we are using libraries from gcc 4.7 or newer
and if so pass -fuse-init-array to the frontend.
The crtbegin*.o files in gcc 4.7 no longer call the constructors listed in
.ctors, so we have to use .init_array.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158694 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/ToolChain.h
rontend/CodeGenOptions.h
0d3317e0a2e0adb57ce8d075ebdcb41a3f939805 19-Jun-2012 Kaelyn Uhrain <rikka@google.com> Improve the error message when a function overload candidate is rejected
because it expects a reference and receives a non-l-value.

For example, given:

int foo(int &);
template<int x> void b() { foo(x); }

clang will now print "expects an l-value for 1st argument" instead of
"no known conversion from 'int' to 'int &' for 1st argument". The change
in wording (and associated code to detect the case) was prompted by
comment #5 in PR3104, and should be the last bit of work needed for the
bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158691 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c4429b9ee5045525f532d00e820a81b7eeac28f8 19-Jun-2012 Jordan Rose <jordan_rose@apple.com> Change -Winternal-linkage-in-inline from ExtWarn to Warning in C++.

Per post-commit review, it's not appropriate to use ExtWarn in C++, because
we can't prove that the inline function will actually be defined in more than
one place (and thus we can't prove that this violates the ODR).

This removes the warning entirely from uses in the main source file in C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f4205e12cede5db17f47b31471852bb4a1f27533 19-Jun-2012 Tanya Lattner <tonic@nondot.org> Add language std for OpenCL 1.1 and 1.2.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
rontend/LangStandards.def
0eb3f45a92f706d50de55aefb19d66febfba78aa 19-Jun-2012 Jordan Rose <jordan_rose@apple.com> Support -Winternal-linkage-in-inline in C++ code.

This includes treating anonymous namespaces like internal linkage, and allowing
const variables to be used even if internal. The whole thing's been broken out
into a separate function to avoid nested ifs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158683 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
29271fbcef645117df05d5b60e593acb6562422c 18-Jun-2012 Matt Beaumont-Gay <matthewbg@google.com> Move a few static functions from DiagnosticRenderer.cpp into SourceManager.

This simplifies the code a little bit, since these functions all took a
SourceManager parameter and called a bunch of methods on it, and makes
the functions available to other users.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158676 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9c849b03a62fd1864d62c382c916cf9dc17be335 18-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped "::" where needed to prevent Doxygen trying to make links;
* Updated one mention of C++0x to refer to C++11;
* Fixed a \brief summary to make it somewhat concise.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
11b46a0a49075f338eb4849c2b7d680945be9250 18-Jun-2012 Jordan Rose <jordan_rose@apple.com> Allow internal decls in inline functions if the function is in the main file.

This handles the very common case of people writing inline functions in their
main source files and not tagging them as inline. These cases should still
behave as the user intended. (The diagnostic is still emitted as an extension.)

I'm reworking this code anyway to account for C++'s equivalent restriction in
[basic.def.odr]p6, but this should get some bots back to green.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
96c67d1c2aff532729c9edb297617094d1e77cc1 18-Jun-2012 Nuno Lopes <nunoplopes@sapo.pt> alloc_size attribute: there's nothing wrong with alloc_size(1,1). It just means the function allocates x^2 bytes. GCC also accepts this syntax

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158662 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
93f95f2a2cbb6bb3d17bfb5fc74ce1cccea751b6 18-Jun-2012 Sean Hunt <scshunt@csclub.uwaterloo.ca> Handle C++11 attribute namespaces automatically.

Now, as long as the 'Namespaces' variable is correct inside Attr.td, the
generated code will correctly admit a C++11 attribute only when it has the
appropriate namespace(s).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158661 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
adc6cbf5b502f1b58078455ab4fca66c7daac239 18-Jun-2012 Michael J. Spencer <bigcheesegs@gmail.com> [MSExtensions] Add support for __forceinline.

__forceinline is a combination of the inline keyword and __attribute__((always_inline))

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158653 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
19a2702042b7e3ee838cca458b35f607111a3897 18-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Extend the error recovery for a template-argument-list terminated by '>>' to
also deal with '>>>' (in CUDA), '>=', and '>>='. Fix the FixItHints logic to
deal with cases where the token is followed by an adjacent '=', '==', '>=',
'>>=', or '>>>' token, where a naive fix-it would result in a differing token
stream on a re-lex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158652 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
7553ad2b7513fce1acd85658279da204fa99426f 17-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Switch users of SmallMap to use SmallDenseMap instead.

The most important change here is that the destructor and copy
constructor for StoredDeclsList will now reliably be run. Previously,
the destructors at least were missed in some cases. See the LLVM commits
discussions for why SmallMap is broken and going away.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclContextInternals.h
a24bd5d9ad79be50cec0e25364d8267e7623c33f 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped # characters in Doxygen comments as needed;
* Exposed summaries using the \brief command.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158636 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
071662d971e51ac64e0fe16d3baf9d85894b09a5 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped # characters in Doxygen comments as needed;
* Added/reformatted \brief docs;
* Used a \file comment to document the file (MultipleIncludeOpt.h).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158635 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MultipleIncludeOpt.h
f977848850a2f8785dc2b37c735afe0cd223b8bb 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* For Doxygen, escaped "::std" as "\::std";
* For humans, fixed "namespaecs" to "namespaces".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
3d7e24e1887fade254cf8b304834f30de2f8d662 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: add parameter name to \param

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158633 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
a1e92ace653fb15742dc6d35198a9da433d90e15 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped # characters in Doxygen comments;
* Added \brief markup to provide summaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158632 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
86290333420dea36e41afb664884fc45ac7677a8 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escaped a < character in a Doxygen comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7e6f1a23fe26748a4eafc5c64ff6c319f6d932f3 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escaping #define in Doxygen comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158629 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
11db92c2721da09e8ffc2f58994ed3bb5d23d8b9 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escaping # characters and adding \brief markup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158627 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
940a273768b4c13f27e9582987604701deb6e495 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escaping # characters and adding \brief markup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManagerInternals.h
01005984f77d8a9c256da2f1f38a04c2edf0337a 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape #undef in Doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/MacroBuilder.h
7f6da851a0448ccebabc6b30f10c2e9b42c2a243 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: delete an erroneous use of \link

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Visibility.h
c9e4b4b091e9bec50d8918a02ea155220b513d47 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: typo fix, \briaf -> \brief

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
7c0d2a366d2810e711f9c6ced8cbd923b9fc823a 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: Add missing parameter name to a \param command

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158621 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
75996d2bf191bd5d1e981b93b99f5b77add1266e 17-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape "::" to eliminate a Doxygen warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158620 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c4033f318260b21408c9925537fb748ef1f3b179 17-Jun-2012 Hal Finkel <hfinkel@anl.gov> For compatibility with gcc, accept -maltivec as an alias of -faltivec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158613 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d3cb28bef1e1d397b35126029465f2b7e8e8dc1f 16-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Guard private fields that are unused in Release builds with #ifndef NDEBUG.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158609 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
c5613b26a24a33d7450e3d0bf315c6ccc920ce7b 16-Jun-2012 Meador Inge <meadori@codesourcery.com> Explicitly build __builtin_va_list.

The target specific __builtin_va_list types are now explicitly built instead
of injecting strings into the preprocessor input.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/TargetInfo.h
erialization/ASTBitCodes.h
a0cff720d40f239fee0e5ecc8378122b456c1991 16-Jun-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [AST/libclang] Fix the selector locations that are reported for a
method definition that has its '{' attached to the method name without
a space.

With a method like:

-(id)meth{
.....
}

the logic in ObjCMethodDecl that determined the selector locations got
confused because it was initialized based on an end location for '{' but
that end location changed to '}' after the method was finished.

Fix this by having an immutable end location for the declarator and
for getLocEnd() get the end location from the body itself.

Fixes rdar://11659739.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158583 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
50dc12ad05d4a3a57e83852756498afce4307a77 16-Jun-2012 Kaelyn Uhrain <rikka@google.com> Recover when correcting an unknown type name to a keyword like "struct".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158573 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7bf33401acf506b0039222834d7259acb80f6311 16-Jun-2012 Kaelyn Uhrain <rikka@google.com> Move isCXXSimpleTypeSpecifier from Parser to Sema and tweak it for wider use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158572 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
63734d2349783662bf4b7fc24eed4cb31383b00d 16-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: escape < characters in Doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158569 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
2edbc98b046de22f3aba3c5142e85e7f3437fd03 16-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: Escaped # characters in Doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158568 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
94c2bf14765c33ad50a3ef50727677337b71ee8d 16-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Add a missing initializer in ASTBitCodes.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158558 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
c351d9837ea1d0b04842497e76c76125426a982c 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped # characters in Doxygen comments;
* Added Doxygen markup (\brief, \code, \file, \namespace).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158557 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
40cc104d392635f5f594d495c2f878a7d4c003f9 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: fixed/created some /brief function summaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
63333619fa68c8d1d8219f6d7f2d3c36f4356346 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped the # of #define in Doxygen comments;
* Formatting: Annotated __VA_ARGS__ with \c;
* Converted docs to use \brief to provide summaries;
* Fixed a typo: disbles -> disables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158553 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
fe865f1f35d1b91f42f58f08a1399b961b71b3bc 15-Jun-2012 James Dennett <jdennett@google.com> Documentation fix (cleaning up my own breakage): close <tt> with </tt>,
not with another <tt>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
c2f51cfefd77e9b25f201ecf879343d6d9a45158 15-Jun-2012 Sean Hunt <scshunt@csclub.uwaterloo.ca> Stop referring to functions as methods in per-function fallthrough-checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
106af9e86adbbb3a05f2c339d509fcd3b4274504 15-Jun-2012 Jordan Rose <jordan_rose@apple.com> Warn when a static variable is referenced in a non-static inline function.

This is explicitly forbidden in C99 6.7.4p3. This is /not/ forbidden in C++,
probably because by default file-scope const/constexpr variables have internal
linkage, while functions have external linkage. There's also the issue of
anonymous namespaces to consider. Nevertheless, there should probably be a
similar warning, since the semantics of inlining a function that references
a variable with internal linkage do not seem well-defined.

<rdar://problem/11577619>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
03f1eb031b84e93415b792c4b45d8da71c88e92d 15-Jun-2012 Douglas Gregor <dgregor@apple.com> Check the parameter lists and return type of both blocks and lambdas
for unexpanded parameter packs. Fixes the crash-on-invalid in
PR13117.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158525 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
260328c27ddbad6e6d81a84e68a9a4aedccbfbf3 15-Jun-2012 James Dennett <jdennett@google.com> Documentation fix: Add a missing parameter name for a \param command

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158512 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
86123c6ca98e602e48515ec74df940c597c88506 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Converted comments to use \brief to provide summaries;
* Fixed uses of \arg that should be \p;
* Fixed \param [in] [out] to \param [in,out];
* Made minor formatting fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158510 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
c1a88f27bea81b270c63329a87811f91c8e467fe 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: use \p ParameterName when referring to a parameter,
not \arg ParameterName (which should be used only when documenting that
parameter, not when referring to it from elsewhere).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158509 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
18483f583333f8d940393e64ce111c6979639665 15-Jun-2012 James Dennett <jdennett@google.com> Fix a documentation typo: \\brief -> \brief


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
edd6d40770c9010883307b195acea6e9d732263a 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: fix \params to match the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158506 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
0899e9787799abdb93887e5e3d180fa77a83ee3d 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Escaped @ symbols that shouldn't be interpreted by Doxygen;
* Deleted \param documentation for function parameters that no longer exist;
* Fixed parameter names in \param Doxygen commands;
* Fixed some broken formatting.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158505 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a7b7d1a7394394d33c18f7dda400a9a12cae2c78 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: fix erroneous uses of \arg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158494 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
cda8df0bb55203a07f824668220aba48ed4e5cdf 15-Jun-2012 Craig Topper <craig.topper@gmail.com> Add XOP frcz instrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
55bf69900afbd5dfb971c346b3712361e27e7b7f 15-Jun-2012 James Dennett <jdennett@google.com> Ongoing documentation cleanup:
* Added/tidied \brief summaries;
* Escaped # as needed for Doxygen;
* Drive-by: Fixed a rogue line > 80 columns.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158491 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
0982205bade2fb4fc984c27b2ab401e683963b10 15-Jun-2012 James Dennett <jdennett@google.com> Ongoing documentation cleanup: fixed Doxygen markup errors, added \brief
annotations in many places where it involved little change, fixed some
examples and marked code examples with \code...\endcode, and changed a few
nearby mentions of C++0x to refer to C++11.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158486 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/EvaluatedExprVisitor.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/StmtObjC.h
0557d08ce20c3568b1d8bda298fa47b5488f0d26 15-Jun-2012 Stephen Hines <srhines@google.com> Add support for LangOptions.Renderscript + "kernel" attribute.

Change-Id: I75596363b8519ad0a1372a316826050c6be4e922
asic/Attr.td
asic/LangOptions.def
940152f726353e08e3bdcef6f85bc8aa73173597 14-Jun-2012 David Blaikie <dblaikie@gmail.com> Support -f[no-]rewrite-includes from the driver.

Review by Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158463 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
f1492f970c7c6eb85dc18f13fb864b185bed1d23 14-Jun-2012 David Blaikie <dblaikie@gmail.com> Support -frewrite-includes as an option while preprocessing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158460 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
rontend/PreprocessorOutputOptions.h
60ad16b7e24cdb88c577c107b69da85458000858 14-Jun-2012 David Blaikie <dblaikie@gmail.com> Rename -rewrite-includes to -frewrite-includes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158458 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ewrite/Rewriters.h
809d1be9820039b4cf6efa48246a0d70ffa13394 14-Jun-2012 James Dennett <jdennett@google.com> More doxygen/documentation cleanups.

This reduces the number of warnings generated by Doxygen by about 100
(roughly 10%). Issues addressed:
(1) Primarily, backslash-escaped "@foo" and "#bah" in Doxygen comments
when they're not supposed to be Doxygen commands or links, and
similarly for "<baz>" when it's not intended as as HTML tag;
(2) Changed some \t commands (which don't exist) to \c ("to refer to a
word of code", as the Doxygen manual says);
(3) \precondition becomes \pre;
(4) When touching comments, deleted a couple of spurious spaces in them;
(5) Changed some \n and \r to \\n and \\r;
(6) Fixed one tiny typo: #pragms -> #pragma.

This patch touches documentation/comments only.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/StmtObjC.h
ST/Type.h
asic/MacroBuilder.h
asic/SourceManager.h
asic/SourceManagerInternals.h
rontend/FrontendOptions.h
rontend/HeaderSearchOptions.h
rontend/PreprocessorOutputOptions.h
ex/CodeCompletionHandler.h
ex/HeaderSearch.h
ex/PPCallbacks.h
ex/Pragma.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ema/CodeCompleteConsumer.h
ema/Scope.h
ema/ScopeInfo.h
ema/Sema.h
ema/Weak.h
erialization/ASTBitCodes.h
f122a138e39dbb29162abfa9a3d44091d8efa7af 13-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -isystem-prefix and -ino-system-prefix arguments, which can be used to
override whether headers are system headers by checking for prefixes of the
header name specified in the #include directive.

This allows warnings to be disabled for third-party code which is found in
specific subdirectories of include paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158418 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
ex/HeaderSearch.h
8ab09da1faaa33b9fa78de59cc4e191bfe9907b5 13-Jun-2012 Richard Trieu <rtrieu@google.com> Moved the StringLiteral printing code from StmtPrinter into the StringLiteral
class and have StmtPrinter and StmtDumper refer to it. This fixes an
assertion failure when dumping wchar string literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dc9327a8da640ecf7b15c5d5b726cd67a0e63284 13-Jun-2012 John McCall <rjmccall@apple.com> Provide a -no-pedantic to cancel out -pedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158416 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
52ec0c0357ce970ca52a27c1086626450f0967e7 13-Jun-2012 Daniel Jasper <djasper@google.com> Rename shouldVisitImplicitDeclarations to shouldVisitImplicitCode.
Fix RecursiveASTVisitor to visit CXXForRangeStmts accordingly to visit
implicit or explicit code.

The key bug that inspired this was the Visitor not visiting the range
initializer of such a loop, which is explicit code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
5daa4deddbfc27516e89bbd6d8035cecc52ce03f 12-Jun-2012 Craig Topper <craig.topper@gmail.com> Add XOP permute intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158351 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
54655be65585ed6618fdd7a19fa6c70efc321d3a 12-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> If parsing a trailing-return-type fails, don't pretend we didn't have one at
all. Suppresses follow-on errors mentioned in PR13074.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158348 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
c7d2e339f9a71a40db7b199082b42fe91e6fa2cb 12-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Correct comment. The return type was changed to const Type* in r123814. Patch by David Röthlisberger.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158347 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8cd64b4c5553fa6284d248336cb7c82dc960a394 11-Jun-2012 Chad Rosier <mcrosier@apple.com> Etch out the code path for MS-style inline assembly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158325 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
ema/Sema.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
f5485125ae70644c76b64ed3ff8a1c5fda937a82 11-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Enable -Wunused-private-field with -Wunused.

It found a lot of cruft in LLVM that I removed last week and I couldn't find any
false positives. Time to give it more testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
ecbc00929cde5db985b38682b1f62fcc62b3a2fe 11-Jun-2012 Craig Topper <craig.topper@gmail.com> Add XOP shift and compare intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
17d26a6c1f2cb921d0000c337b4967699dc928fd 11-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup, fixing Doxygen markup. Mostly this avoids common terms
such as "protocol" and "expression" being implicitly turned into links to
mistakenly-generated Doxygen pages:
- Escaping @ symbols when Doxygen would otherwise incorrectly interpret them;
- Escaping # symbols when they're not intended as explicit Doxygen link
requests, such as when discussing preprocessor directives;
- In one odd case, unescaping @ in @__experimental_modules_import, because
Doxygen wrote '\@' to the output in that case, causing the example in the
description of ImportDecl to be wrong; and
- Fixing a typo: @breif -> @brief.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
erialization/ASTBitCodes.h
7ed25df166c68a3d67f0f05b0b7dd802c57adfb8 11-Jun-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Const'ify CompilerInvocation::toArgs().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158298 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
3335eb7f7c5b82f109c585fb4009ff8240b11a84 10-Jun-2012 Craig Topper <craig.topper@gmail.com> Add XOP vprot* instruction intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158292 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
d3861ce75a308c65b58c0159e2cee58aea2dff1c 10-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove CXXRecordDecl flags which are unused after r158289.

We need an efficient mechanism to determine whether a defaulted default
constructor is constexpr, in order to determine whether a class is a literal
type, so keep the incrementally-built form on CXXRecordDecl. Remove the
on-demand computation of same, so that we only have one method for determining
whether a default constructor is constexpr. This doesn't affect correctness,
since default constructor lookup is much simpler than selecting a constructor
for copying or moving.

We don't need a corresponding mechanism for defaulted copy or move constructors,
since they can't affect whether a type is a literal type. Conversely, checking
whether such functions are constexpr can require non-trivial effort, so we defer
such checks until the copy or move constructor is required.

Thus we now only compute whether a copy or move constructor is constexpr on
demand, and only compute whether a default constructor is constexpr in advance.
This is unfortunate, but seems like the best solution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158290 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ca5233044ef679840d1ad1c46a36b16e2ee8a6e1 10-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13064: Store whether an in-class initializer uses direct or copy
initialization, and use that information to produce the right kind of
initialization during template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158288 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/Specifiers.h
ema/Sema.h
18b73eacc21c8a7c03168aa30c401d072cc6ffc9 10-Jun-2012 Craig Topper <craig.topper@gmail.com> More XOP intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
239c030aa4bde597f45c80c50f653620bdd72922 10-Jun-2012 Craig Topper <craig.topper@gmail.com> Begin adding XOP intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
801e60946bc879afeb37bcd3372e441e8f631c79 10-Jun-2012 James Dennett <jdennett@google.com> Fix the top-of-file comment in Attr.h to say that it's about attributes, not
expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158285 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
db3d68f188eb0883407a25ef09c1d85e217b97ef 09-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Reorder ParsedTemplateArg's members to reduce padding on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158275 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParsedTemplate.h
681ab8998793899076bae9cd6383a5d78b8ee1ac 09-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Replace constant-sized BitVector with std::bitset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158270 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
135bf8ee69e2ae2daea4f713381995028c41e264 09-Jun-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When doing the cursor visitation make sure declarations
in the same line do not override getting a cursor for the previous declaration.

e.g:

int x, y;
@synthesize prop1, prop2;

pointing at 'x'/'prop1' would give 'y'/'prop2' because their source ranges overlap.

rdar://11361113

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
092bf67e5ca560d2fc6aa70be1f172b8b3a5ff96 09-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Correct method name in comment: from LexRawToken to LexFromRawLexer, according
to a change done long ago in r57393.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158243 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
49fdccb4595862828aa5cadc1497d466a8031dda 09-Jun-2012 Dmitri Gribenko <gribozavr@gmail.com> Convert comments to proper Doxygen comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158241 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticIDs.h
asic/FileSystemStatCache.h
asic/OperatorKinds.h
ema/CodeCompleteConsumer.h
0abbdfe561377b7af8eba6fc87757a46342f7a10 09-Jun-2012 Jordan Rose <jordan_rose@apple.com> Warn in ObjC++ when an 'auto' variable deduces type 'id'.

This could happen for cases like this:

- (NSArray *)getAllNames:(NSArray *)images {
NSMutableArray *results = [NSMutableArray array];
for (auto img in images) {
[results addObject:img.name];
}
return results;
}

Here the property access will fail because 'img' has type 'id', rather than,
say, NSImage.

This warning will not fire in templated code, since the 'id' could have
come from a template parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9f63a451b1b3e36c0c82fcfe78828182bb9a6fa0 08-Jun-2012 Jordan Rose <jordan_rose@apple.com> Disallow using ObjC literals in direct comparisons (== and friends).

Objective-C literals conceptually always create new objects, but may be
optimized by the compiler or runtime (constant folding, singletons, etc).
Comparing addresses of these objects is relying on this optimization
behavior, which is really an implementation detail.

In the case of == and !=, offer a fixit to a call to -isEqual:, if the
method is available. This fixit is directly on the error so that it is
automatically applied.

Most of the time, this is really a newbie mistake, hence the fixit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158230 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NSAPI.h
asic/DiagnosticSemaKinds.td
3f5f558a4ca08fe952cbbdf69b87487163c9a719 08-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR13051: If a constructor is explicitly defaulted, it isn't marked as being
constexpr until we get to the end of the class definition. When that happens,
be sure to remember that the class actually does have a constexpr constructor.

This is a stopgap solution, which still doesn't cover the case of a class with
multiple copy constructors (only some of which are constexpr). We should be
performing constructor lookup when implicitly defining a constructor in order
to determine whether all constructors it invokes are constexpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158228 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
6fe6a49c4058211ff4489023c78615ec0266c5ff 08-Jun-2012 Jordan Rose <jordan_rose@apple.com> Disable _Pragma during HTML macro rewriting to keep from crashing.

The preprocessor's handling of diagnostic push/pops is stateful, so
encountering pragmas during a re-parse causes problems. HTMLRewrite
already filters out normal # directives including #pragma, so it's
clear it's not expected to be interpreting pragmas in this mode.

This fix adds a flag to Preprocessor to explicitly disable pragmas.
The "right" fix might be to separate pragma lexing from pragma
parsing so that we can throw away pragmas like we do preprocessor
directives, but right now it's important to get the fix in.

Note that this has nothing to do with the "hack" of re-using the
input preprocessor in HTMLRewrite. Even if we someday copy the
preprocessor instead of re-using it, the copy would (and should) include
the diagnostic level tables and have the same problems.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158214 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
47d9de678162202786aa5f8aa153a7c58a4cebd4 08-Jun-2012 Douglas Gregor <dgregor@apple.com> Switch LineTableInfo to use FileID instead of int for file references,
from Tom Honermann!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManagerInternals.h
374a00bcc6e26b4fc3cd1d378a5d056c4c7d618e 08-Jun-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Don't crash when saving a PCH from a prefix header
that does not exist.

rdar://11607033

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158193 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
b4bc99ba5540a618c86c136c9112ead8fb1d9866 07-Jun-2012 Douglas Gregor <dgregor@apple.com> Add ext_vector type code for builtins, from John Garvin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
41c2bcff88a23a046ee8d71451bc03717a4248f6 07-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Fix many doxygen formatting errors.

This patch affects docs only, and includes formatting changes only
(though those include some fixes for broken Doxygen markup that caused
some content to be missing from generated pages). It avoids generating
many spurious pages such as
http://clang.llvm.org/doxygen/classRepresents.html, but likely not all
yet.

Patch by James Dennett.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Type.h
nalysis/CallGraph.h
nalysis/ProgramPoint.h
b8e54cd26cc71075456a74be054a95fa1f2e28ad 07-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Reuse APInt's getNumWords, which gets rounding right (my ad-hoc solution missed it).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
855243789cb44799c03f4c7216d3d6308805f549 07-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Plug a long standing memory leak in TemplateArgument.

The integral APSInt value is now stored in a decomposed form and the backing
store for large values is allocated via the ASTContext. This way its not
leaked as TemplateArguments are never destructed when they are allocated in
the ASTContext. Since the integral data is immutable it is now shared between
instances, making copying TemplateArguments a trivial operation.

Currently getting the integral data out of a TemplateArgument requires creating
a new APSInt object. This is cheap when the value is small but can be expensive
if it's not. If this turns out to be an issue a more efficient accessor could
be added.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ema/Template.h
e17fdb2d5dbf0ffefd417587003eebbe5baf5984 07-Jun-2012 Anna Zaks <ganna@apple.com> [analyzer] Anti-aliasing: different heap allocations do not alias

Add a concept of symbolic memory region belonging to heap memory space.
When comparing symbolic regions allocated on the heap, assume that they
do not alias.

Use symbolic heap region to suppress a common false positive pattern in
the malloc checker, in code that relies on malloc not returning the
memory aliased to other malloc allocations, stack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158136 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
d880b3aa6d594d1a7f2d307c29378c6f59b216ff 07-Jun-2012 Jordan Rose <jordan_rose@apple.com> Insert a space if necessary when suggesting CFBridgingRetain/Release.

This was a problem for people who write 'return(result);'

Also fix ARCMT's corresponding code, though there's no test case for this
because implicit casts like this are rejected by the migrator for being
ambiguous, and explicit casts have no problem.

<rdar://problem/11577346>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158130 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
c86c40b912e53fb11ff8f745ed616035b8b7259c 06-Jun-2012 Douglas Gregor <dgregor@apple.com> Whenever we have a BalancedDelimiterTracker, we have a 'nested' scope
where '>' is going to behave as an operator (and not as a '>' closing
a template argument list).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158111 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
36397dc6c1bf1513a3bac4eabe9209e5b2295a55 06-Jun-2012 Jordan Rose <jordan_rose@apple.com> [analyzer] Provide debug descriptions for all memory space regions.

Patch by Guillem Marpons!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158106 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
b8c5e6b9387393072301e973b166607957300785 06-Jun-2012 Jordan Rose <jordan_rose@apple.com> Fix Makefile: Options.td depends on CC1Options.td.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158105 91177308-0d34-0410-b5e6-96231b3b80d8
river/Makefile
581deb3da481053c4993c7600f97acf7768caac5 06-Jun-2012 David Blaikie <dblaikie@gmail.com> Revert Decl's iterators back to pointer value_type rather than reference value_type

In addition, I've made the pointer and reference typedef 'void' rather than T*
just so they can't get misused. I would've omitted them entirely but
std::distance likes them to be there even if it doesn't use them.

This rolls back r155808 and r155869.

Review by Doug Gregor incorporating feedback from Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
8c0b3787e7ccc7978b42dfbb84da2b802c743a5d 06-Jun-2012 David Blaikie <dblaikie@gmail.com> Add a -rewrite-includes option, which is similar to -rewrite-macros, but only expands #include directives.

Patch contributed by Lubos Lunak (l.lunax@suse.cz).
Review by Matt Beaumont-Gay (matthewbg@google.com).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158093 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
ex/Preprocessor.h
ewrite/FrontendActions.h
ewrite/Rewriters.h
facde171ae4b8926622a1bffa833732a06f1875b 06-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused private member variables found by clang's new -Wunused-private-field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158086 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Designator.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
d73ef135ba029db59c0b5649e6117845d9e39600 06-Jun-2012 Jordan Rose <jordan_rose@apple.com> Add pedantic warning -Wempty-translation-unit (C11 6.9p1).

In standard C since C89, a 'translation-unit' is syntactically defined to have
at least one "external-declaration", which is either a decl or a function
definition. In Clang the latter gives us a declaration as well.

The tricky bit about this warning is that our predefines can contain external
declarations (__builtin_va_list and the 128-bit integer types). Therefore our
AST parser now makes sure we have at least one declaration that doesn't come
from the predefines buffer.

Also, remove bogus warning about empty source files. This doesn't catch source
files that only contain comments, and never fired anyway because of our
predefines.

PR12665 and <rdar://problem/9165548>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158085 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/SourceManager.h
arse/Parser.h
f8cc02e50553b5c3bc6570bff0c47ac7db85fe8d 06-Jun-2012 Daniel Jasper <djasper@google.com> Introduce -Wunused-private-field. If enabled, this warning detects
unused private fields of classes that are fully defined in the current
translation unit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
c28a335184207a47f34eb9d1707dc8d7c6c7b8b6 05-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> RecursiveASTVisitor: add ability to visit implicit declarations. Patch by
James Dennett!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
36d02af300a207242f0486b4255420d8be796b21 05-Jun-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add a warning for when an array-to-pointer decay is performed on an array
temporary or an array subobject of a class temporary, and the resulting value
is used to initialize a pointer which outlives the temporary. Such a pointer
is always left dangling after the initialization completes and the array's
lifetime ends.

In order to detect this situation, this change also adds an
LValueClassification of LV_ArrayTemporary for temporaries of array type which
aren't subobjects of class temporaries. These occur in C++11 T{...} and GNU C++
(T){...} expressions, when T is an array type. Previously we treated the former
as a generic prvalue and the latter as a class temporary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
cacf718381dda1b23efedf3deb02170186095cc0 04-Jun-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [objcmt] Don't migrate to subscripting syntax if the required methods have not
been declared on NSArray/NSDictionary.

rdar://11581975

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NSAPI.h
30c009b5fa4d22ddabfe6ad6ba4158a664a4bd83 04-Jun-2012 Alexander Kornienko <alexfh@google.com> Fixed a problem related to resolution of built-in headers in case a path of tool's binary contains sym-links.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157944 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
44f5b1d95a3e4edf12c9b395d9f47767e75037b6 04-Jun-2012 Aaron Ballman <aaron@aaronballman.com> Removing the lambda extension warning concerning single return statements, as it no longer applies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
837386287f1527c3a1e7ac2ea330c714519ae33a 04-Jun-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Require -pie when linking with ASan on Android.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
3af16fdfddc63cf6c611cc1eb2c7822d901bd470 04-Jun-2012 Hans Wennborg <hans@hanshq.net> Test the '__thread' before 'static' warning.

Also fix the '__thread' before 'extern' case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
48d798ce32447607144db70a484cdb99c1180663 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
river/Driver.h
rontend/TextDiagnostic.h
ema/Sema.h
1973634e445d4f1abdeedc2809f2d281929253b6 02-Jun-2012 Alexander Kornienko <alexfh@google.com> Implementation of a "soft opt-in" option for -Wimplicit-fallthrough diagnostics: -Wimplicit-fallthrough-per-method


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c0e71a15bce9bb8c0d4ec1c42fab70c03140f9e0 02-Jun-2012 Anna Zaks <ganna@apple.com> [analyzer] Rely on canBeInlined utility instead of checking CallExpr
explicitly.

This will make it easier to add inlining support to more expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157870 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
7fa9b4f258636d89342eda28f21a986c8ac353b1 01-Jun-2012 Ted Kremenek <kremenek@apple.com> static analyzer: add inlining support for directly called blocks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157833 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
684190b8dbe5258f4708ffbd816b8c5ee5b3502d 01-Jun-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Use CFBridgingRetain/CFBridgingRelease instead of __bridge_retained/__bridge_transfer
when migrating.

rdar://11569198

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157785 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
14a192435425af39e7f32b6e71613f9357e995f7 31-May-2012 Alexander Kornienko <alexfh@google.com> Fix an object lifetime issue in clang/Tooling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157759 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
ed7948b55fa4b2505f240cc5287137f451172b4c 31-May-2012 Ted Kremenek <kremenek@apple.com> Allow some BugReports to opt-out of PathDiagnostic callstack pruning until we have significantly
improved the pruning heuristics. The current heuristics are pretty good, but they make diagnostics
for uninitialized variables warnings particularly useless in some cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157734 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
3c0bc15afbcbbf6942a64798ba8a23bb8d9a77d9 31-May-2012 Craig Topper <craig.topper@gmail.com> Add builtin for pclmulqdq instruction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157733 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
6fada8e820f2fd1b4cd38e48c8986110e87c5915 31-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Only visit default arguments for template declarations when visiting the template declaration which introduced them. Patch by Yang Chen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157723 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
90c78328e70cb376754edf87708505a84c044271 31-May-2012 Anna Zaks <ganna@apple.com> Change wording of 'memcpy' type mismatch warning and remove fixit.

As per comments following r157659.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157722 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
abe21e36d789cfe800562a1e889738addfd2ac5b 30-May-2012 David Blaikie <dblaikie@gmail.com> Disable -Wunique-enum for anonymous enums.

This is a large class of false positives where anonymous enums are used to
declare constants (see Clang's Diagnostics.h for example). A small number of
true positives could probably be found in this bucket by still warning if the
anonymous enum is used in a declarator (enum { ... } x;) but so far we don't
believe this to be a source of significant benefit so I haven't bothered to
preserve those cases.

General offline review/acknowledgment by rtrieu.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5d51e8894624d5a12ed2c4fd80c31112d3d70f80 30-May-2012 Manuel Klimek <klimek@google.com> Adds a toString method to Replacement, which helps debugging.
Adds missing header guards to Refactoring.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157694 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
3783eff3c372903033dacfc4954965a91e48897f 30-May-2012 Craig Topper <craig.topper@gmail.com> Mark extrqi and insertqi immediate arguments as being ICE.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157675 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
7af7de7d6b121132dfe8c3b9b5febe2b37aafd62 30-May-2012 Richard Trieu <rtrieu@google.com> Add new -Wunique-enum which will warn on enums which all elements have the
same value and were initialized with literals. Clang will warn on code like
this:

enum A {
FIRST = 1,
SECOND = 1
};



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6fcb3727e31280ba816dc86d024586b8c5933c13 30-May-2012 Anna Zaks <ganna@apple.com> Add fixits for memory access warnings.
Also, do not display the builtin name and macro expansion when the
function is a builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6b97877cc34facbd5b0e033b37a771421d794486 29-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Add an ammintrin.h header for SSE4a intrinsics.

This is a clean-room implementation based on public documentation and
I tried to validate it as much as possible against gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
003ab6682376a0e4544df295bddcf0d991275c40 29-May-2012 Simon Atanasyan <satanasyan@mips.com> Factor out the code retrieves the last PIC related argument from
the Clang::ConstructJob() to the new ArgList::getLastArg() routine
with eight argument. That simplifies reusing of this code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157633 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
32dcb1b45d7428611903b6106bd12b7fbc33d391 29-May-2012 Chad Rosier <mcrosier@apple.com> Revert r155737, restoring the MaxDepth in the BalancedDelimiterTracker to 256.
r155737 turned out to be a temporary work around. The correct fix was in r155823.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157627 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
009072fd2223c823032b804c64ca7b4c7c3badc4 28-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix suspicous isIntegerType() check, found by PVS Studio (PR12357).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157593 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
dec17760923a23c5a185944d14d7455df6b09d86 28-May-2012 David Blaikie <dblaikie@gmail.com> Address minor FIXME in RedeclLink to contain a PointerIntPair instead of derive from it.

Use actual factory functions rather than derived classes acting as named constructors/factories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
1831bd29572b6a7243da73d9606209190c0217de 27-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Pass ProgramStateRef by reference.

Retain + Release on a ref counted pointer is cheap, but not free (it adds a function call in this case).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157534 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
811bfcd823d51db6a06b3fd5a5943ff910b79d68 27-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Use the SelectorSet typedef more widely throughout Sema.

While there make it a SmallPtrSet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157532 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
28b230723d5daf3c48c2e134f4b5626bd69392c8 27-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Replace some custom hash combines with the standard stuff from DenseMapInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/BaseSubobject.h
cba0ebce65667f76e291346d377f402579743cea 26-May-2012 Fariborz Jahanian <fjahanian@apple.com> Change warning to error when property setter names conflict.
// rdar://11528439


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157517 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bdb97ff687ce85e45cc728b87612ed546f48c1e7 26-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> In response to some discussions on IRC, tweak the wording of the new
-Wsometimes-uninitialized diagnostics to make it clearer that the cause
of the issue may be a condition which must always evaluate to true or
false, rather than an uninitialized variable.

To emphasize this, add a new note with a fixit which removes the
impossible condition or replaces it with a constant.

Also, downgrade the diagnostic from -Wsometimes-uninitialized to
-Wconditional-uninitialized when it applies to a range-based for loop,
since the condition is not written explicitly in the code in that case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157511 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2815e1a075c74143a0b60a632090ece1dffa5c7c 25-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Split a chunk of -Wconditional-uninitialized warnings out into a separate flag,
-Wsometimes-uninitialized. This detects cases where an explicitly-written branch
inevitably leads to an uninitialized variable use (so either the branch is dead
code or there is an uninitialized use bug).

This chunk of warnings tentatively lives within -Wuninitialized, in order to
give it more visibility to existing Clang users.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157458 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b5b155cb8bd2460693572bab5ce14dabf1a27d2f 25-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: warn on use of property setters
backing two propeties because proprty names
match except for first letter being of different
case. // rdar://11528439, [PR12936].


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c585b991596859f39860b6094247ba027a03530 24-May-2012 Justin Holewinski <jholewinski@nvidia.com> Replace PTX back-end with NVPTX back-end in all places where Clang cares

NV_CONTRIB

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsNVPTX.def
asic/BuiltinsPTX.def
asic/TargetBuiltins.h
8e0317eb6847c0039760b2bb81a3e17c8218bc30 24-May-2012 Fariborz Jahanian <fjahanian@apple.com> objc: change option to be -Wobjc-interface-ivars



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b53bf007307908ad1750956009d1f0b313ac985d 24-May-2012 Manuel Klimek <klimek@google.com> Apply review comment from Jordan Rose.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157387 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
a6115068cde719142eb394db88612c185cabd05b 24-May-2012 Eli Friedman <eli.friedman@gmail.com> Add a warning to diagnose statements in C++ like "*(volatile int*)x;". Conceptually, this is part of -Wunused-value, but I added a separate flag -Wunused-volatile-lvalue so it doesn't get turned off by accident with -Wno-unused-value. I also made a few minor improvements to existing unused value warnings in the process. <rdar://problem/11516811>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157362 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
587de5be6bc8b9d046015b20079d45ac4b98bc14 24-May-2012 Nuno Lopes <nunoplopes@sapo.pt> implement Sema support for the alloc_size attribute
Portions of this patch by Xi Wang. Reviewed by Jordy Rose. Thank you both.

Codegen support will follow soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157360 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
f9d4cbd3dd1eb4cf3ec3c5ec7acc310415beeefd 23-May-2012 Manuel Klimek <klimek@google.com> Adds the Refactoring library, which is a layer on top of the Tooling library
that allows easy refactoring across translation units.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157331 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Refactoring.h
c052dbb2d8fe0e23e90d81236aab0f864f712b45 22-May-2012 John McCall <rjmccall@apple.com> Recognize the MS inheritance attributes and turn them into attributes
on the RecordDecl. Persist the MS portability type attributes and
ignore them in Sema rather than the parser.

Patch by João Matos!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
asic/TokenKinds.def
arse/Parser.h
def18494b97f554ea0d95db75627c3e77b74307f 22-May-2012 Nuno Lopes <nunoplopes@sapo.pt> wire -fbounds-checking to the new LLVM bounds checking pass

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157262 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
rontend/CodeGenOptions.h
bfbfee51ec8f20f3f1b9f8329705d816b67438e7 22-May-2012 Manuel Klimek <klimek@google.com> Adds a method overwriteChangedFiles to the Rewriter. This is implemented by
first writing the changed files to a temporary location and then overwriting
the original files atomically.

Also adds a RewriterTestContext to aid unit testing rewrting logic in general.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157260 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
0e5e092228495c9524ba6fa9b49f116a0c1bbe55 22-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Truthify a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
18df0eba838c7609d10edcb845ca6f35698e822c 22-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: provide a useful 'fixit' suggestion when
errornously using commas to separate ObjC message arguments.
// rdar://11376372


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157216 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
d6277fb9e0353edffc0d6c8655a65542c08cf6f1 21-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [driver] When creating the compiler invocation out of command-line
arguments, force use of clang frontend for the driver.

Fixes rdar://11356765.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157205 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
11ed43dabf272fe80cc3820bb1a043ca7c1d53ac 21-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Unpack enums in CodeCompletetionResult.

In theory they should be wide enough even when the enum type is signed, but it
looks like MSVC9 still has problems with it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157182 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
a77b75950ab14552748f1653b7449486c38e0a36 21-May-2012 Peter Collingbourne <peter@pcc.me.uk> CUDA: the device and host attributes must be inheritable, in order
to deal with NVIDIA's headers. We'll need to think of another way
to handle multiple host/device definitions within the same TU.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157171 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
4dc34ebf2a0716bf77ba110dab6777a3fc4397dd 20-May-2012 Peter Collingbourne <peter@pcc.me.uk> CUDA: add CodeGen support for global variable address spaces.
Because in CUDA types do not have associated address spaces,
globals are declared in their "native" address space, and accessed
by bitcasting the pointer to address space 0. This relies on address
space 0 being a unified address space.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157167 91177308-0d34-0410-b5e6-96231b3b80d8
asic/AddressSpaces.h
e5f8372b5dccf5894f0263d018599c14d8f31273 20-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Bitpack CodeCompletionResults.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157158 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
11d1a697dcf677c42394dfa9506ace4935f3b00d 20-May-2012 Nico Weber <nicolasweber@gmx.de> Error when using typeid() with -fno-rtti. PR 12888.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157139 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b309fb125906b1fb10efb1890860cd042fbfab3 19-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Warn if default synthesizing readonly IBOutlet properties
and provide a 'fixit' to change 'readonly' to 'readwrite'. 'fixit'
part needs little more work. // rdar://11448209


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157121 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c94a26f1846ade5cc442b64c3718699d8e4041ab 19-May-2012 Dmitri Gribenko <gribozavr@gmail.com> Missing line break.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157120 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
c470442fe144b93c2877134559d0067b3215289d 19-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify some users of DeclarationName::getNameKind. Fold getFETokenInfoAsVoid into its only caller.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
e2010ee042f3a370b15fda7872b86c914ffad4d2 19-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Inline a trivial clear() method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157114 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
93a8534090a6de23d655679205b974032d092a89 19-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify code, add an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
671e3bc1a16562902c0e6efc157b519977c299a8 19-May-2012 Anna Zaks <ganna@apple.com> [analyzer] c++11: do not crash on namespace alias

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157089 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
591b5f53c0e11d87401b4804bb1be1a53f95c619 19-May-2012 Anna Zaks <ganna@apple.com> [analyzer] For locations, use isGLValue() instead of isLValue().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157088 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
ab7ad72f432810011041c5628b377f77cb1c81e6 19-May-2012 Kaelyn Uhrain <rikka@google.com> Suggest adding 'typename' when it would make the compiler
accept the template argument expression as a type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157085 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1be17ab17019de6a254ed2d9d2b1546786476ca7 18-May-2012 Fariborz Jahanian <fjahanian@apple.com> objc: use "class extension" instead of "continuation class"
to match documentation. // rdar://11309706



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3093b20d824a953d8bc7a786dd952414898f8d6d 18-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Lexer::ReadToEndOfLine: Only build the string if it's actually used and do so in a less malloc-intensive way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157064 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
6e629882ea67dbcd4dd2b0ccf636d2f758b86284 18-May-2012 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
593b91f628bcb7d308867730784c87af0f9db601 18-May-2012 Matt Beaumont-Gay <matthewbg@google.com> Remove trailing periods which snuck into a few diagnostic strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157022 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticSemaKinds.td
01428ab7e6358afbd46693d7c8b1b08b0eda4978 17-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Drop the question mark when complaining about a non-existing -Wno- flag.

We're certain that it doesn't exist.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
a39238bda44ab45d53785eb23006a65483a4e139 17-May-2012 Chad Rosier <mcrosier@apple.com> Add -mno-implicit-float to the M group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157014 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
eecb22b916b6bd19655515d59a01ebd0dad37ab6 17-May-2012 Chad Rosier <mcrosier@apple.com> [driver] Reword the warning message for missing value to a joined argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
ad9689f3531c49e4bff467d9469993606800068c 17-May-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Added two missing const qualifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
25582fc0aeac053cdc115ee95cbed53f28bf592e 17-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Recover better from a missing 'typename' in a function template definition.
Disambiguate past such a potential problem, and use the absence of 'typename'
to break ties in favor of a parenthesized thingy being an initializer, if
nothing else in the declaration disambiguates it as declaring a function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156963 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
005af27c607536038864ff36d480b5ecd066a267 16-May-2012 Chad Rosier <mcrosier@apple.com> Rename the driver option to -mno-implicit-float, per Eli's suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156950 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
832a2aac5766dd78f113e0f03a0c62fd0eacbc97 16-May-2012 Manuel Klimek <klimek@google.com> Pulls diagnostics for temp file handling into the common diagnostic kinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
ee9ad5ce4840b3c95024948c89d00945ffdda9bb 16-May-2012 Chad Rosier <mcrosier@apple.com> [driver] Allow the driver to directly accept the -no-implicit-float option, so that the
generation of implicit floating point instructions can be disable for ARM.
rdar://11409142


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156942 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
da8d8c2b5e56ba9c49de70c18d11933d67458a34 16-May-2012 Douglas Gregor <dgregor@apple.com> Add _alignof and __builtin_alignof as aliases for __alignof in
Microsoft mode, from Will Wilson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ff1affef282d7146e14c8aa894eb5466a659398c 16-May-2012 Chad Rosier <mcrosier@apple.com> Warn about -Wno-foo where foo is an unknown warning option. This is helpful
for subtle misspellings such as -Wno-unused-command-line-arguments instead of
-Wno-unused-command-line-argument.

Also fix the diagnostic messages to properly handle -Wno- options. Previously,
the positive version was always emitted (i.e., -Wfoo was emitted for -Wno-foo).
rdar://11461500

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
87014f33f123461a012995b2f7eb5e6ecf6dc461 16-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Properly handle @encode() in RecursiveASTVisitor and traverse
its type source info. Fixes indexing references inside @encode().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
4b0e6f1da341510c1ad83eaf4c836f3134d0156a 16-May-2012 Richard Trieu <rtrieu@google.com> Move the warnings for extra semi-colons under -Wextra-semi. Also, added
a warning for an extra semi-colon after function definitions. Added logic
so that a block of semi-colons on a line will only get one warning instead
of a warning for each semi-colon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
3940ce83438e2332ba541f4e65e700fbefe0c7a8 16-May-2012 Douglas Gregor <dgregor@apple.com> Produce more useful 'duplicate case' diagnostics. Fixes PR9243, from Terry Long!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156904 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
def07624ecc535431e0c814b4b5b842de8a06997 16-May-2012 David Blaikie <dblaikie@gmail.com> Include the correct conversion context locations for condition expressions.

This improves the conversion diagnostics (by correctly pointing to the loop
construct for conversions that may've been caused by the contextual conversion
to bool caused by a condition expression) and also causes the NULL conversion
warnings to be correctly suppressed when crossing a macro boundary in such a
context. (previously, since the conversion context location was incorrect, the
suppression could not be performed)

Reported by Nico Weber as feedback to r156826.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156901 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7d24e289bea2accaaed79c6ca3e5cdd0c204ddc1 16-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang/AST] Index references of protocols in "@protocol(...)" syntax.

To do that, keep track of the location of the protocol id in the ObjCProtocolExpr
AST node.

rdar://11190837

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ema/Sema.h
9abf88c9286d7465ce18285f87bb302f588b59fc 16-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: perform strict type checking on property
type and its accessor type and issue error if types
are incompatible, instead of crashing in IRgen.
// rdar://1105153


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7fe103cdcc00a675aac04a11975dc078aba47db5 16-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [objcmt] Rewrite messages to NSString's stringWithUTF8String:/stringWithCString:
to use the @() boxing syntax.

It will also rewrite uses of stringWithCString:encoding: where the encoding that is
used is NSASCIIStringEncoding or NSUTF8StringEncoding.

rdar://11438360

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NSAPI.h
f5343ff93a9549c49469dee366733e1e31ab836e 15-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow objc @() syntax for enum types.

Previously we would reject it as illegal using a value of
enum type and on ObjC++ it was illegal to use an enumerator
as well.

rdar://11454917

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dc3eb6abb0f5d4c97a2bc141231cd759b701ab8a 15-May-2012 Fariborz Jahanian <fjahanian@apple.com> Remove word 'block' from option and diagnostic I added
in r156825.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
be0ee875d8a91c031a085cbbd73ad9e8dc1aa8ff 15-May-2012 David Blaikie <dblaikie@gmail.com> Improve some of the conversion warnings to fire on conversion to bool.

Moves the bool bail-out down a little in SemaChecking - so now
-Wnull-conversion and -Wliteral-conversion can fire when the target type is
bool.

Also improve the wording/details in the -Wliteral-conversion warning to match
the -Wconstant-conversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8f674a80529b327a88be665defcc0163089916e4 15-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c nonfragile abi: discourage ivar declarations
in @interface by issuing warning (off by default) under
opt'ed in flag -Winterface-block-ivar. // rdar://10763173


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156825 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
31c195ac0f3869e742d42f9d02b6cd33442fb630 15-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix our handling of visibility in explicit template instantiations.

* Don't copy the visibility attribute during instantiations. We have to be able
to distinguish

struct HIDDEN foo {};
template<class T>
DEFAULT void bar() {}
template DEFAULT void bar<foo>();

from

struct HIDDEN foo {};
template<class T>
DEFAULT void bar() {}
template void bar<foo>();

* If an instantiation has an attribute, it takes precedence over an attribute
in the template.

* With instantiation attributes handled with the above logic, we can now
select the minimum visibility when looking at template arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
c608c3c0781e15b74fbbda03f8708cc85a3dd488 15-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Further improvement to wording of overload resolution diagnostics, and including
the sole parameter name in the diagnostic in more cases. Patch by Terry Long!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156807 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3003e1d6626d07e8fc4af95fad95b3a5d4c4af98 15-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fold the six functions checking explicitly-defaulted special member functions
into one. These were all performing almost identical checks, with different bugs
in each of them.

This fixes PR12806 (we weren't setting the exception specification for an
explicitly-defaulted, non-user-provided default constructor) and enforces
8.4.2/2's rule that an in-class defaulted member must exactly match the implicit
parameter type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
45246a7fc00f07bba9a34a3f13c0af72a05f95be 15-May-2012 Anna Zaks <ganna@apple.com> [analyzer] Fix a crash in templated code which uses blocks.

We should investigate why signature info is not set in this case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
599f1b7100745efacb7ded6c176cb7feade114a5 13-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Refactor all the

if (Inherited)
Attr->setInherited(true);

To a central location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156728 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
420efd83934ee78f04d73880e2ed1b7fdef3328c 13-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Produce a warning for mismatched section attributes. Completest pr9356.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156727 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
ee409a916e9b97ed6bc2f48d8d6aac6b8b773d7b 12-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Add support for __attribute__((hot)) and __attribute__((cold)).

Currently cold functions are marked with the "optsize" attribute in CodeGen
so they are always optimized for size. The hot attribute is just ignored,
LLVM doesn't have a way to express hotness at the moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
99446d934c85e8b705cc6b8624e65b8eb8c22985 12-May-2012 Jordy Rose <jediknil@belkadan.com> Don't crash on boxed strings when +stringWithUTF8String: is missing.

Also, unify some diagnostics for boxed expressions that have the same form.

Fixes PR12804.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
703d412d192397b6fa17c5d99a4c1389aa2be2f3 12-May-2012 Douglas Gregor <dgregor@apple.com> Teach the parser to deal with multiple spellings for the same
attribute, rather than requiring multiple cases in consumers of this
information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
6ea175b086638cc813d7cd577ece517b0dc48547 11-May-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5 intrinsics support in clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
f7b8056f1ff0c0409a9523a34f78b69ab8314bec 11-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR11857: When the wrong number of arguments are provided for a function
which expects exactly one argument, include the name of the argument in
the diagnostic text. Patch by Terry Long!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bf9da1f8292bb66720ada94a050ede9dca17f60a 11-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix a recent regression with the merging of format attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156597 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2df1a5819fd98708ff3b4772f3477f6c1a8da59a 11-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [objc] When boxing a BOOL/NSInteger/NSUInteger type, use the corresponding
numberWithBool:/numberWithInteger:/numberWithUnsignedInteger: NSNumber selectors.

rdar://11428703

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156583 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NSAPI.h
ST/Type.h
5f9688b7c7fdeafdf530056d49f82d2ec6ca457f 10-May-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5 FP support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156567 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
66c44e700fb3f244b2c443bfbd6a05b5f1843ec0 10-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Make sure that MacroExpands callbacks are always in source order.

Fixes assertion hit in the preprocessing record. rdar://11426523

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156557 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
16afdf76b6f12e41ff6f6e6828bfb1d4732523ba 10-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix an assertion hit when the serialized diagnostics writer receive a diagnostic
from the frontend when the location is invalid and the SourceManager null.

Instead of keeping the SourceManager object in DiagnosticRenderer, propagate it
to the calls accordingly (as reference when it is expected to not be null, or pointer
when it may be null).
This effectively makes DiagnosticRenderer not tied to a specific SourceManager,
removing a hack from TextDiagnosticPrinter.

rdar://11386874

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156536 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticRenderer.h
rontend/TextDiagnostic.h
rontend/TextDiagnosticPrinter.h
98ae834a3e289f84f0765d0d0ca7ff22ccaba458 10-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix an old (2009) FIXME:

// FIXME: This needs to happen before we merge declarations. Then,
// let attribute merging cope with attribute conflicts.

This was already being done for variables, but for functions we were merging
then first and then applying the attributes. To avoid duplicating merging
logic, some of the helpers in SemaDeclAttr.cpp become methods that can
handle merging two attributes in one decl or inheriting attributes from one
decl to another.

With this change we are now able to produce errors for variables with
incompatible visibility attributes or warn about unused dllimports in
variables.

This changes the attribute list iteration back to being in reverse source
code order, as that matches what decl merging does and avoids differentiating
the two cases is the merge*Attr methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156531 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
06cd51a83577019ea26661b7d570ae9aef06f674 10-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> RecursiveASTVisitor:

We don't create any declaration to mark the explicit instantiation of function
templates other than the instantiation itself, so visit that when traversing
the function template decl.

This is a temporary fix, pending the creation of a Decl node to represent the
explicit instantiation.

Patch by Daniel Jasper!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156522 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
1de6a6cb485fb58b4fb100282bb3cf298eedacd9 09-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c. Fixes a 'fixit' where location of
'*' on objective-c class name was misplaced.
// rdar://11311333


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
a971d2410fabb093954c4119d2287ac24208ea8d 09-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Push the knowledge that we are parsing a type-id/type-name further into the
parser, and use it to emit better diagnostics in cases where an identifer
can't be looked up as a type name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156508 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
025983a8dd27fd5ff1defa11ebcd88ecd7248773 09-May-2012 David Blaikie <dblaikie@gmail.com> Fix -Wdelete-non-virtual-dtor in Tooling code.

Also, add an anchor as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156495 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ArgumentsAdjusters.h
667381b21f75d6964bbdf6af143308a02b9198a8 09-May-2012 Jim Grosbach <grosbach@apple.com> ARM: Support marking intrinsic definitions as 'unavailable'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
a01ddc787b5c8b1cf11e975d3586908d3629954c 09-May-2012 Simon Atanasyan <satanasyan@mips.com> Declare abstract class ArgumentsAdjuster. This abstract interface describes
a command line argument adjuster, which is responsible for command line
arguments modification before the arguments are used to run a frontend action.

Define class ClangSyntaxOnlyAdjuster implements ArgumentsAdjuster interface.
This class converts input command line arguments to the "syntax check only"
variant.

Reviewed by Manuel Klimek.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156478 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ArgumentsAdjusters.h
ooling/Tooling.h
e15db6f0d226a3bc88d244512d1004c7c1c07391 09-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [AST/libclang] Speed up clang_getOverriddenCursors() considerably by reserving a bit
in ObjCMethodDecl to indicate whether the method does not override any other method,
which is the majority of cases.

That way we can avoid unnecessary work doing lookups, especially when PCH is involved.

rdar://11360082

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
4493c0aa8add05b2fc534b0d8970c4b5480fad3b 09-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> A little tweak to the SFINAE condition reporting. Don't say:

candidate template ignored: substitution failed [with T = int]: no type named 'type' in 'std::enable_if<false, void>'

Instead, just say:

candidate template ignored: disabled by 'enable_if' [with T = int]

... and point at the enable_if condition which (we assume) failed.

This is applied to all cases where the user writes 'typename enable_if<...>::type' (optionally prefixed with a nested name specifier), and 'enable_if<...>' names a complete class type which does not have a member named 'type', and this results in a candidate function being ignored in a SFINAE context. Thus it catches 'std::enable_if', 'std::__1::enable_if', 'boost::enable_if' and 'llvm::enable_if'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156463 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b3198a841e7f356f171f1e11faff014b2deb1eb8 09-May-2012 Nuno Lopes <nunoplopes@sapo.pt> add -fbounds-checking option.
When enabled, clang generates bounds checks for array and pointers dereferences. Work to follow in LLVM's backend.

OK'ed by Chad; thanks for the review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/Options.td
5f164afca376b05b6fcbc5ab85ea108b6d6ee2b9 08-May-2012 Douglas Gregor <dgregor@apple.com> Fix fmin*/fmax* library builtin signatures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156396 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5ea66619a3108e2985e952b9a60a84316d464b25 08-May-2012 Fariborz Jahanian <fjahanian@apple.com> Fixes a typo. note_xxx not not_xxx.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1d8db493f86761df9470254a2ad572fc6abf1bf6 08-May-2012 Jordy Rose <jediknil@belkadan.com> [analyzer] Rework both constraint managers to handle mixed-type comparisons.

This involves keeping track of three separate types: the symbol type, the
adjustment type, and the comparison type. For example, in "$x + 5 > 0ULL",
if the type of $x is 'signed char', the adjustment type is 'int' and the
comparison type is 'unsigned long long'. Most of the time these three types
will be the same, but we should still do the right thing when the
comparison value is out of range, and wraparound should be calculated in
the adjustment type.

This also re-disables an out-of-bounds test; we were extracting the symbol
from non-additive SymIntExprs, but then throwing away the integer.

Sorry for the large patch; both the basic and range constraint managers needed
to be updated together, since they share code in SimpleConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156361 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/APSIntType.h
d3b6d99cd57522b15dcec0eb771a97d9599d4db2 08-May-2012 Jordy Rose <jediknil@belkadan.com> [analyzer] Add an abstraction for the bit width and signedness of an APSInt. No functionality change.

There are more parts of the analyzer that could use the convenience of APSIntType, particularly the constraint engine, but that needs a fair amount of rewriting to handle mixed-type constraints anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156360 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/APSIntType.h
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
258796e3c7311a23528b45ca601439ebd7746ea4 08-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Add missing 'y'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51a31ca9a9903ecba1b25bc0989f62e1e2bebb4c 07-May-2012 Anna Zaks <ganna@apple.com> [analyzer] Fixup for r155244: PurgeDeadSymbols should subclass StmtPoint

To solve the inconsistency pointed out in Erik's review, refactor class
hierarchy of ProgramPoints so that PreStmtPurgeDeadSymbols and
PostStmtPurgeDeadSymbols both subclass from StmtPoint instead of
PostStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156315 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
00f3c4f499cc27c88005176226bb424f6db4a31b 07-May-2012 Manuel Klimek <klimek@google.com> Fixes resolution of relative paths when running clang tools.

The chdir is not the perfect fix, as it is thread hostile. The
real fix will be to make -working-dir work correctly, which will
take time to implement. Before that, the tooling library cannot
be used concurrently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156299 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
0265555a0fec81102bfb3757cfc7f3d90dbbe409 07-May-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed UserDefinedLiteral source locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
b8590f3572158bde97f14037c4cc8f4a57c8d810 07-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> When we suppress an error due to SFINAE, stash the diagnostic away with the
overload candidate, and include its message in any subsequent 'candidate not
viable due to substitution failure' note we may produce.

To keep the note small (since the 'overload resolution failed' diagnostics are
often already very verbose), the text of the SFINAE diagnostic is included as
part of the text of the note, and any notes which were attached to it are
discarded.

There happened to be spare space in OverloadCandidate into which a
PartialDiagnosticAt could be squeezed, and this patch goes to lengths to avoid
unnecessary PartialDiagnostic copies, resulting in no slowdown that I could
measure. (Removal in passing of some PartialDiagnostic copies has resulted in a
slightly smaller clang binary overall.) Even on a torture test, I was unable to
measure a memory increase of above 0.2%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
ema/Overload.h
ema/TemplateDeduction.h
13489673b84fafaaf49cf5ae4e3bb9a945524dcb 07-May-2012 John McCall <rjmccall@apple.com> Change how we suppress access control in explicit instantiations
so that we actually accumulate all the delayed diagnostics. Do
this so that we can restore those diagnostics to good standing
if it turns out that we were wrong to suppress, e.g. if the
tag specifier is actually an elaborated type specifier and not
a declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156291 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3f152e65074b70e8c13c876ed8b552cb1e6194d7 07-May-2012 John McCall <rjmccall@apple.com> There is no reason for these methods to be out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156290 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9257664568bf375b7790131a84d9a4fa30a5b7e3 07-May-2012 John McCall <rjmccall@apple.com> Refactor DelayedDiagnostics so that it keeps diagnostics in
separate pools owned by the RAII objects that keep pushing
decl state. This gives us quite a bit more flexibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156289 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DelayedDiagnostic.h
ema/Sema.h
d079abfb5eefaf7da232e39a6564f561402cf4fe 07-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> A union can have a constexpr defaulted default constructor, if it has an
in-class initializer for one of its fields. Value-initialization of such
a type should use the in-class initializer!

The former was just a bug, the latter is a (reported) standard defect.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156274 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3b294360febd89e3383143af086efe2014571afa 06-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Split mergeAvailabilityAttr out of handleAvailabilityAttr. This is important
for having a uniform logic for adding attributes to a decl. This in turn
is needed to fix the FIXME:

// FIXME: This needs to happen before we merge declarations. Then,
// let attribute merging cope with attribute conflicts.
ProcessDeclAttributes(S, NewFD, D,
/*NonInheritable=*/false, /*Inheritable=*/true);

The idea is that mergeAvailabilityAttr will become a method. Once attributes
are processed before merging, it will be called from handleAvailabilityAttr to
handle multiple attributes in one decl:

void f(int) __attribute__((availability(ios,deprecated=3.0),
availability(ios,introduced=2.0)));

and from SemaDecl.cpp to handle multiple decls:

void f(int) __attribute__((availability(ios,deprecated=3.0)));
void f(int) __attribute__((availability(ios,introduced=2.0)));

As a bonus, use the new structure to diagnose incompatible availability
attributes added to different decls (see included testcases).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cab42cd24ff7335fa54fbec4520a5159a9326873 06-May-2012 Rafael Espindola <rafael.espindola@gmail.com> Put the availability warnings in a group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156261 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
86b32fd702d794bb655c59a1238bf7422869f506 05-May-2012 Ted Kremenek <kremenek@apple.com> Revert r156141 (making RecursiveASTVisitor data recursive). It is causing clang to blow up in memory usage on -O2 when compiling itself,
which is leading to swapping in some cases when it didn't before. We need to see if we can make this change
without leading to a massive compile-time bloat.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7ad5c996e9519ed4e9afd1f0166be1cd2be8415a 05-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use raw_ostream in TypePrinter and eliminate uses of temporary std::strings.

Part of rdar://10796159

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156228 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/IdentifierTable.h
27a00970bf4ababdc115e54383e6252cc3276dfa 05-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make BuiltinType::getName return a StringRef and introduce BuiltinType::getNameAsCString
to get a const char* if necessary.

This avoids unnecessary conversions when we want to use the result of getName as
a StringRef.

Part of rdar://10796159

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ab41fe914f63bb470dfa7e400876ada72f57a931 05-May-2012 Douglas Gregor <dgregor@apple.com> Move Sema::VerifyIntegerConstantExpression() and
Sema::ConvertToIntegralOrEnumerationType() from PartialDiagnostics to
abstract "diagnoser" classes. Not much of a win here, but we're
-several PartialDiagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156217 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
85d87df66a50a15a1957f7213802000b451a8ec9 04-May-2012 Ted Kremenek <kremenek@apple.com> Explicitly model capturing variables for blocks in the static analyzer. Fixes <rdar://problem/11125868>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156211 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
46484770fe264fba24f7a9f608a3b7c3342690aa 04-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove DiagGroups from notes, and add a TableGen assertion to catch them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
95da18142abeec5099dedc50d6f418917bd6167d 04-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add more comments for Lexer::makeFileCharRange.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156188 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
51603be62ba78adeb64246b222583dcde4b20b2a 04-May-2012 Douglas Gregor <dgregor@apple.com> Synchronize the representations of DeclarationName and Selector so
that bridging between the two is free. Saves ~4k of code size,
although I don't see any measurable performance difference
(unfortunately).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156187 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/IdentifierTable.h
12dcc64eebf7aaffb71392fba74fcb69f35d3b2e 04-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Use DenseMap instead of std::map to keep track of SwitchCases.

Part of rdar://11353109.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156185 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
6a26e2e54aa2a8cc6c977081befd8e80e7573ca4 04-May-2012 Douglas Gregor <dgregor@apple.com> Move Sema::RequireNonAbstractType() off of PartialDiagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156180 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f502d8ec9b43b259db9e37e9622279df46070fed 04-May-2012 Douglas Gregor <dgregor@apple.com> Switch RequireLiteralType() off of PartialDiagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156178 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d10099e5c8238fa0327f03921cf2e3c8975c881e 04-May-2012 Douglas Gregor <dgregor@apple.com> Move Sema::RequireCompleteType() and Sema::RequireCompleteExprType()
off PartialDiagnostic. PartialDiagnostic is rather heavyweight for
something that is in the critical path and is rarely used. So, switch
over to an abstract-class-based callback mechanism that delays most of
the work until a diagnostic is actually produced. Good for ~11k code
size reduction in the compiler and 1% speedup in -fsyntax-only on the
code in <rdar://problem/11004361>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156176 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
392da48160bd92ceb486792780467cbfdb2d0e8c 04-May-2012 James Molloy <james.molloy@arm.com> Fix handling of wint_t - we can't assume wint_t is purely an integer promotion of wchar_t - they may differ in signedness.

Teach ASTContext about WIntType, and have it taken from TargetInfo like WCharType. Should fix test/Sema/format-strings.c for ARM, with the exception of one subtest which will fail if wint_t and wchar_t are the same size and wint_t is signed, wchar_t is unsigned.

There'll be a followup commit to fix that.

Reviewed by Chandler and Hans at http://llvm.org/reviews/r/8



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fd00eecad6fa5400cf37269d84361a0551d0e6d3 04-May-2012 Alexey Samsonov <samsonov@google.com> This patch adds a new Clang compiler flag "-gline-tables-only".
It reduces the amount of emitted debug information:
1) DIEs in .debug_info have types DW_TAG_compile_unit, DW_TAG_subprogram,
DW_TAG_inlined_subroutine (for opt builds) and DW_TAG_lexical_block only.
2) .debug_str contains only function names.
3) No debug data for types/namespaces/variables is emitted.
4) The data in .debug_line is enough to produce valid stack traces with
function names and line numbers.

Reviewed by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156160 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.h
b88acb018a0d5e897ce291da2664edfd7bd58f5c 04-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Really, pinky swear, fix for PR12689

rdar://11353109

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156145 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
4ed57820a2b14a979537ace3f03bde68baf386ee 04-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make RecursiveASTVisitor fully data recursive on Stmts, with
minimal disruption on its clients.

Unlike the previous data-recursive scheme, Traverse*Stmt methods are
always getting called. The base methods of RecursiveASTVisitor will enqueue
the sub-statements instead of calling TraverseStmt on them.

Clients that override a Traverse*Stmt method and call TraverseStmt will
still function as function-recursive traversal; if a client wants to
enqueue a sub-statement in its override method it can do it like this:

[inside the override method]
StmtQueueAction StmtQueue(*this);
StmtQueue.queue(Stmt->getSubStmt());

Should address rdar://11179167.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
aca0ac58d2ae80d764e3832456667d7322445e0c 04-May-2012 Anna Zaks <ganna@apple.com> [analyzer] Allow pointers escape through calls containing callback args.

(Since we don't have a generic pointer escape callback, modify
ExprEngineCallAndReturn as well as the malloc checker.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156134 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
d964d6380945e0505b623050fe6a3f428008fc2a 04-May-2012 Chandler Carruth <chandlerc@gmail.com> Fix non-deterministic iteration order when walking the specializations
of templates by using the newly introduce FoldingSetVector. This
preserves insertion order for all iteration of specializations.

I've also included a somewhat terrifying testcase that rapidly builds up
a large number of functions. This is enough that any system with ASLR
will have non-deterministic debug information generated for the test
case without the fix here as the debug information is generated in part
by walking these specializations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
82047c16486a28537746cfcc0d63745292b9fc54 04-May-2012 Douglas Gregor <dgregor@apple.com> Inline DenseMapInfo<clang::DeclarationName>::getHashValue() for a 0.4% speedup on <rdar://problem/11004361>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
514d3b6b93c83c0841d2f9dd7af8ecc2877fe921 04-May-2012 Douglas Gregor <dgregor@apple.com> Split DeclarationName::getFETokenInfoAsVoid() into hot/cold paths and
(trivially) make DeclContext::lookup()'s const version inlinable. Good
for 0.3% on <rdar://problem/11004361>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclarationName.h
d54dff026b02303a35147224de72bb44cbb53c79 03-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When validating that the files coming from PCH did not change, also
validate that we didn't override the contents of any of such files.

If this is detected, emit a diagnostic error and recover gracefully
by using the contents of the original file that the PCH was built from.

Part of rdar://11305263

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156107 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
asic/FileManager.h
asic/SourceManager.h
487eed6117a373e6df14b5375927fa89c1abe740 03-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove diagnostic groups and DefaultIgnore from notes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156087 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e0d3b4cd2b66f1cef26cacbed5820ab7c22ad5b3 03-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wimplicit-fallthrough warning flag, which warns on fallthrough between
cases in switch statements. Also add a [[clang::fallthrough]] attribute, which
can be used to suppress the warning in the case of intentional fallthrough.

Patch by Alexander Kornienko!

The handling of C++11 attribute namespaces in this patch is temporary, and will
be replaced with a cleaner mechanism in a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156086 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
d39d23e610c2a7815515d60c5a538d65d05e8bdc 03-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a couple of cases of (innocuous) unmarked fallthrough. At least one of these
was unintentional. Found by -Wimplicit-fallthrough, patch by Alexander Kornienko!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
nalysis/Analyses/FormatString.h
3144749f8bf9bbf7c027f2161a930bff80ad6f72 03-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> In StringLiteralParser::init, make sure we emit an error when
failing to lex the string, as suggested by Eli.

Part of rdar://11305263.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/LiteralSupport.h
975eef64182a78d1afc0f3da8cba4cb961cda5e4 03-May-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: warn for properties being default synthesized
under -Wobjc-missing-property-synthesis which must be
opted-in. // rdar://11295716


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156078 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0cf3c0eecbff007cea2750c113894b47d9e09f33 03-May-2012 David Blaikie <dblaikie@gmail.com> Correctly constify clang::CXXMemberCallExpr::getRecordDecl()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
baeaa9ad120f60b1c5b6f1a84286b507dbe2b55d 03-May-2012 Anna Zaks <ganna@apple.com> [analyzer] Add a complexity bound on history tracking.

(Currently, this is only relevant for tainted data.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156050 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
82129e25c8d26d933771bc37aa0e0ed2edd131b4 03-May-2012 Richard Trieu <rtrieu@google.com> Add commas to for loop warning to separate variable names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a058fd4f0a944174295f77169b438510dad389f8 03-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Revert most of r154844, which was disabled in r155975. Keep around the
refactorings in that revision, and some of the subsequent bugfixes, which
seem to be relevant even without delayed exception specification parsing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
914edfbb07c34d8cad8d0451193b4f9dd02a2d5a 02-May-2012 David Blaikie <dblaikie@gmail.com> Fix some doxycomments using \class instead of \brief.

Patches by Csaba Raduly (rcsaba@gmail.com)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156027 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
331d2ec7cd4c6b5e29cc61fcdc617bf708223cd4 02-May-2012 Douglas Gregor <dgregor@apple.com> Introduce the notion of 'ignored' attributes, so that all attributes
we accept are not modeled somehow via Attr.td.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155998 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
3e7d31aa6050a2fb6cb35912793eb3f1b3a22030 02-May-2012 Douglas Gregor <dgregor@apple.com> Introduce the notion of an attribute that has no direct representation
as an AST node, and fold a number of such attributes into Attr.td.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155995 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
0639c8b31fdde248170fdd151a12566d0fbe7bf8 02-May-2012 David Blaikie <dblaikie@gmail.com> Fix same line doxycomments so they comment the adjacent field.

Without the '<' prefix in the doxycomment these comments were incorrectly
attached to the proceeding comment on the next line, rather than the
preceeding one.

Fixes PR12722

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155993 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
184be849fc5d9da9f353fed4b0d5202b003d16d6 02-May-2012 Douglas Gregor <dgregor@apple.com> Implement the alternate spellings of attributes aligned (as "align")
and const (as "__const") using tblgen, rather than explicitly hacking
them in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155991 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
769aa2d46fa5dc0bee5285c95a80ad8749cb79cf 02-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Driver: Turn the default value for -fmath-errno into a proper target hook and disable it by default on more platforms.

For now -fno-math-errno is the default on BSD-derived platforms (Darwin,
DragonFlyBSD, FreeBSD, NetBSD, OpenBSD). If the default is not right for
your platform, please yell. I only verified the result with the default
compilers on Darwin and FreeBSD.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155990 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
3ecafe4d7d8f45da616be2ffef998c851dfb7b6b 02-May-2012 John McCall <rjmccall@apple.com> Don't try to instantiate std::list at an incomplete type; it's not
allowed, and it'll blow up in unfortunate ways when using a proper
C++11 library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155980 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/TokenRewriter.h
c8c222830a1d8df8ed05bedfcac868fe6838fba8 02-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Unrevert r155951, reverted in r155962, with two changes:
* Work around build failures due to gcc 4.2 bugs.
* Remove BodyIndexer::TraverseCXXOperatorCallExpr, which was not being called
prior to this change, and whose presence disables a RecursiveASTVisitor
stack space optimization after this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b51c7f3fe619de753146ffd167f1c6b1df8bf443 02-May-2012 Andrew Trick <atrick@apple.com> Revert "Fix RecursiveASTVisitor's data recursion to call the Traverse* functions if they"

FAIL: Clang :: Index/index-many-call-ops.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ff310c763eeb41a7aaa3b928cd0bc0a6e493d5dd 02-May-2012 Douglas Gregor <dgregor@apple.com> Eliminate Sema::CompareMethodParamsInBaseAndSuper() entirely, by
folding its one check into the normal path for checking overridden
Objective-C methods. Good for another 3.6% speedup on the test case in
<rdar://problem/11004361>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155961 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8722ae8f6083cc27bef430e2815ceea77ffa0b28 02-May-2012 Douglas Gregor <dgregor@apple.com> The semantic checking that verifies whether an Objective-C method
declared in a subclass has consistent parameter types with a method
having the same selector in a superclass performs a significant number
of lookups into the class hierarchy. In the example in
<rdar://problem/11004361>, we spend 4.7% of -fsyntax-only time in
these lookups.

Optimize away most of the calls to this routine
(Sema::CompareMethodParamsInBaseAndSuper) by first checking whether we
have ever seen *any* method with that selector (using the global
selector table). Since most selectors are unique, we can avoid the
cost of this name lookup in many cases, for a 3.3% speedup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155958 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e4c043d3fdd0f98ab724aa4f1419cec9985ea2c4 02-May-2012 Eli Friedman <eli.friedman@gmail.com> Add a missing RequireCompleteType call when synthesizing properties. <rdar://problem/11333367>.

While I'm here, fix source locations for other diagnostics related to property synthesis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e3ba2987b9d55fdc976362ddccdb8c5a73d19fc9 01-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix RecursiveASTVisitor's data recursion to call the Traverse* functions if they
have been overridden in the derived class. Also, remove a non-functional
implementation of an incorrect optimization for ParenExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
e2241cbb0455a60ba27d6c4b9d601ffef3ed103f 01-May-2012 Anna Zaks <ganna@apple.com> [analyzer] Construct a SymExpr even when the constraint solver cannot
reason about the expression.

This essentially keeps more history about how symbolic values were
constructed. As an optimization, previous to this commit, we only kept
the history if one of the symbols was tainted, but it's valuable keep
the history around for other purposes as well: it allows us to avoid
constructing conjured symbols.

Specifically, we need to identify the value of ptr as
ElementRegion (result of pointer arithmetic) in the following code.
However, before this commit '(2-x)' evaluated to Unknown value, and as
the result, 'p + (2-x)' evaluated to Unknown value as well.

int *p = malloc(sizeof(int));
ptr = p + (2-x);

This change brings 2% slowdown on sqlite. Fixes radar://11329382.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155944 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
10601a36d1cb28d40ff8ef4febe07a01a156dfa8 01-May-2012 Douglas Gregor <dgregor@apple.com> Revert r155933

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155939 91177308-0d34-0410-b5e6-96231b3b80d8
river/CMakeLists.txt
edb45f092ec474d03e8f42ce5a416b3f43ab78c9 01-May-2012 Patrick Beard <pcbeard@mac.com> Diagnostics should start with a lower-case letter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155936 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d53f6971a7c97c9a564c9a7b3b1dd773d120aac8 01-May-2012 Douglas Gregor <dgregor@apple.com> Fix CMake build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155933 91177308-0d34-0410-b5e6-96231b3b80d8
river/CMakeLists.txt
8165605dfb926561bcbc64310bec4106a70dd1e1 01-May-2012 David Blaikie <dblaikie@gmail.com> Implement simplify_type traits for redecl_iterator.

Based on Chandler Carruth's feedback on r155869.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c5713cfd87b028d3fcf2e11d8baa67fbc4e18916 01-May-2012 Chad Rosier <mcrosier@apple.com> Get rid of storelv4si builtin as it can be expressed directly. This is general
goodness because it provides opportunites to cleanup things. For example,

uint64_t t1(__m128i vA)
{
uint64_t Alo;
_mm_storel_epi64((__m128i*)&Alo, vA);
return Alo;
}

was generating

movq %xmm0, -8(%rbp)
movq -8(%rbp), %rax

and now generates

movd %xmm0, %rax

rdar://11282581

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155924 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
bfd7a525bcf372004787cb641b8c1566b9e8aba5 01-May-2012 James Molloy <james.molloy@arm.com> Unify Options.td and CC1Options.td, in a first step towards unifying the serialization logic in Frontend and Driver.

Reviewed by Eric, Doug and Chandler, and here: http://llvm.org/reviews/r/7/



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155916 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.h
river/CC1Options.td
river/CMakeLists.txt
river/Makefile
river/OptParser.td
river/OptTable.h
river/Option.h
river/Options.td
441c6239c6df8c759bacf6510efbfd434b647066 01-May-2012 John McCall <rjmccall@apple.com> Add support for laying out vtordisps according to our current
working knowledge of the Microsoft ABI. Based on a patch by
Dmitry Sokolov.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
a12f84d9ec127854e8948e7aa2003e9a9e2f975d 01-May-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Fix compilation with mingw-w64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155904 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
08c88db935adf005e42c1f513242eec960644b63 01-May-2012 Ted Kremenek <kremenek@apple.com> Place several uncovered warnings under warning flags, and tweak diagnostic output including the term "gc" (in lowercase).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155892 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9222cadd8dcc17d0a18b1b8e0e1b10bda8513993 01-May-2012 Douglas Gregor <dgregor@apple.com> Remove the unused DestroyAttrs, noticed by Michael Han.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
b46d30f6c9409140348eefad1d2a60e3bae2e956 01-May-2012 Douglas Gregor <dgregor@apple.com> Move warn_cxx0x_right_shift_in_template_arg to CXX11Compat group, from
Dmitri Gribenko!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
bd4fa45e7cf6a2f0adcb0ab66d5b3d338ec56c3c 01-May-2012 David Blaikie <dblaikie@gmail.com> Remove ref/value inconsistency in redecl_iterator.

Similar to r155808 - this mistake has been made in a few iterators.

Based on Chandler Carruth's feedback to r155808 I added an implicit conversion
to Decl* to ease adoption/usage. Useful for the pointer comparison, but not the
dyn_cast (due to template argument deduction causing the conversion not to be
used) - there for future convenience, though. This idiom (op T* for iterators)
seems to be fairly idiomatic within the LLVM codebase & I'll likely add it as I
fix up the other iterators here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
aa5498649c7ad1b61e5da2497e8c60c924ac5e55 01-May-2012 Richard Smith <richard-llvm@metafoo.co.uk> Remove -Wc++98-compat warning for an outrageously-rare circumstance of 'this'
being used in an exception specification in a way which isn't otherwise
ill-formed in C++98: this warning also incorrectly triggered on uses of 'this'
inside thread-safety attributes, and the mechanism required to tell these cases
apart is more complex than can be justified by the (minimal) value of this part
of -Wc++98-compat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155857 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0e22a9fd3a892985cd6277c174fd2157354476db 01-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> For RecursiveASTVisitor, do data recursion for CXXOperatorCallExpr.

rdar://11289247

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
4548ca2912e5f2b78a20e50c58d8a1a9c5e9e67c 01-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Store the source range of a CXXOperatorCallExpr in the Expr object instead of
calculating it recursively.

boost::assign::tuple_list_of uses the trick of chaining call operator expressions in order to declare a "list of tuples", e.g:
std::vector<tuple> v = boost::assign::tuple_list_of(1, "foo")(2, "bar")(3, "qqq");

Due to CXXOperatorCallExpr calculating its source range recursively we would get
significant slowdowns with a large number of chained call operator expressions and the
potential for stack overflow.

rdar://11350116

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
2c0abf4ae33ab2ba690ccae724b8d6f196e7cfda 30-Apr-2012 David Blaikie <dblaikie@gmail.com> Add FixItHint for -Wnull-conversion to initialize with an appropriate literal.

Reviewed by Doug Gregor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155839 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
694e796f462748ab4dc7ecdf4be5da44dd2c8c94 30-Apr-2012 Richard Trieu <rtrieu@google.com> Add -Wloop-analysis. This warning will fire on for loops which the variables
in the loop conditional do not change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
de88246a7bc57bc4995ad4e6fde8f245d70b130e 30-Apr-2012 Douglas Gregor <dgregor@apple.com> Restore paren, bracket and brace counts in parser when
TentativeParsingAction is reverted, from Pasi Parviainen! Fixes
PR12480 / <rdar://problem/11341251>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155823 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
262bc18e32500558af7cb0afa205b34bd37bafed 30-Apr-2012 David Blaikie <dblaikie@gmail.com> Remove the ref/value inconsistency in filter_decl_iterator.

filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.

This change errs on the side of value, making op-> return T* and op* return
T&.

(reviewed by Richard Smith)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155808 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
298038352b34c5503db418201f3ddea6e56fd0e1 30-Apr-2012 David Blaikie <dblaikie@gmail.com> Correct CFGBlock's front() and back() to return by const ref rather than value.

This ought to fix PR11926, a crash when when running Clang built with GCC 4.7

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155805 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
a2e76f56c60dbd4de3dc0fed02bb01bea4dcff81 29-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> [class.copy]p23: Fix an assertion caused by incorrect argument numbering in a
diagnostic, add a test for this paragraph, and tighten up the diagnostic wording
a little.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155784 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e59392176c2369df2bdd11b7786cb38abac00198 28-Apr-2012 Julien Lerouge <jlerouge@apple.com> Currently __builtin_annotation() only annotates an i32.

i32 __builtin_annotation(i32, string);

Applying it to i64 (e.g., long long) generates the following IR.

trunc i64 {{.*}} to i32
call i32 @llvm.annotation.i32
zext i32 {{.*}} to i64

The redundant truncation and extension make the result difficult to use.

This patch makes __builtin_annotation() generic.

type __builtin_annotation(type, string);

For the i64 example, it simplifies the generated IR to:

call i64 @llvm.annotation.i64

Patch by Xi Wang!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155764 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/DiagnosticSemaKinds.td
bddc7e5ed3982b5845e4fbb5d9bc7b7431c35a4f 28-Apr-2012 Chris Lattner <sabre@nondot.org> improve error recovery for extra ')'s after a if/switch/while condition. Before:

t.c:3:9: error: expected expression
if (x)) {
^

.. which isn't even true - a statement or expression is fine. After:

t.c:3:9: error: extraneous ')' after condition, expected a statement
if (x)) {
^

This is the second part of PR12595



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
98f71aae339e00bfc7b556a78e2538931198ec9c 28-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> C++11 weakens the requirement for types used with offsetof from POD to standard layout type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
152f6b7be508fbc61543f3736ebd390d7ac84bd1 28-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Rename isPODType (using the C++98 rules) into isCXX98PODType and make isPODType decide which one to use based on LangOptions.

- -Wc++98-compat depends on the c++98 definition
- Now __is_pod returns the right thing in c++11 and c++98 mode
- All changes to the type traits test are validated against g++ 4.7

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d200187bd27f9ad68699693a6e57f9ee3ff260fa 28-Apr-2012 Jordy Rose <jediknil@belkadan.com> [analyzer] Remove references to idx::TranslationUnit. Index is dead, cross-TU inlining never panned out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155751 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
d92fe8f8951fc028fe83a2d9824b4e3c1a9aed82 28-Apr-2012 Nico Weber <nicolasweber@gmx.de> Make the diagnostic for "unexpected ':' in nested name specifier" a bit easier on the eyes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155741 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
0eed2cbba09af1ab089f5b1dd9dd34be87fe0d9a 28-Apr-2012 Chad Rosier <mcrosier@apple.com> Bump up the MaxDepth in the BalancedDelimiterTracker.

The Avida Project (http://avida.devosoft.org) exceeds the 256 limit.
rdar://11289131


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155737 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a1366cbab89ec6d4f630dca91e85d03d9e5d1d7d 27-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12224 (sort of): Diagnose inheriting constructor declarations in C++11 mode.
We do not support IRGen for these, and get some parts of the semantic analysis
wrong.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155728 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
392b3f5798a62fe038082df0a5e2244b08b917d8 27-Apr-2012 Kaelyn Uhrain <rikka@google.com> Imrpove the note text for when a non-type decl hides a tag type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
3a70cd6e1cc414856e41ce5509aa61c89bf472dc 27-Apr-2012 Alexey Samsonov <samsonov@google.com> Use enum to set debug info size generated by Clang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155697 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
577f14a34457032523e59dbbbacb88ca2cd4db57 27-Apr-2012 Ted Kremenek <kremenek@apple.com> Use a deque instead of an ImmutableList in AnalysisConsumer to preserve the file order that functions are visited. Should fix the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155693 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
cb0a5039c243f5b0c178e70f424adac334e5789b 27-Apr-2012 Ted Kremenek <kremenek@apple.com> Change FunctionSummary.h's definition of SetOfDecls to be an ImmutableList instead
of a mutable SmallPtrSet. While iterating over LocalTUDecls, there were cases
where we could modify LocalTUDecls, which could result in invalidating an iterator
and an analyzer crash. Along the way, switch some uses of std::queue to std::dequeue,
which should be slightly more efficient.

Unfortunately, this is a difficult case to create a test case for.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155680 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
aec2ac67e7190bdb88abb1d427b82ae3284ea756 27-Apr-2012 Kaelyn Uhrain <rikka@google.com> Add note to help explain why a tag such as 'struct' is needed to refer
to a given type, when the reason is that there is a non-type decl with
the same name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155677 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
e855b884799e3f651f59ef64911269eaf3df6e12 26-Apr-2012 Chad Rosier <mcrosier@apple.com> Remove the group from -fhonor_infinites/-fno_honor_infinites aliases. Aliases
with groups are unsupported.
rdar://11324283


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155637 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6e4a0af697eec5b0c47ccf96dff170af56df826d 26-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12660: Don't crash when initializing a const reference from a braced init list
which creates a temporary by calling a constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155608 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
86e6fdcf1a04edc4c24f53f9dbacf7e1b52f306d 26-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Two missing -Wc++98-compat warnings, for null pointers as non-type template
arguments, and 'this' in exception-specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
45a0b264512ee0e9ba874bb3bfeb7f5b96789117 26-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Reject cases like

struct __attribute__((visibility("hidden"))) a;
struct __attribute__((visibility("default"))) b;

which gcc already rejects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c799a6a5c884831c3c3ea57d30fbe4ab35709d49 26-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> If a type is non-literal by virtue of being incomplete produce notes
explaining that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a313b2fbba86c901e58dc58df036e731f24fdaee 26-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> RecursiveASTVisitor: When in 'shouldVisitTemplateInstantiations' mode, visit
all instantiations of a template when we visit the canonical declaration of the
primary template, rather than trying to match them up to the partial
specialization from which they are instantiated. This fixes a bug where we
failed to visit instantiations of partial specializations of member templates of
class templates, and naturally extends to allow us to visit instantiations where
we have instantiated only a declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
2b90f7637e846ea555dedac14e7f5065d85c5d3b 25-Apr-2012 Kaelyn Uhrain <rikka@google.com> Add an error message with fixit hint for changing '.' to '->'.

This is mainly for attempting to recover in cases where a class provides
a custom operator-> and a '.' was accidentally used instead of '->' when
accessing a member of the object returned by the current object's
operator->.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
0d62709c6e9b33dce788e0c0fa3cd5c7f4d637d0 25-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Use a SmallMap for StoredDeclsMap, it's usually sparsely populated so we can avoid initializing memory for 64 buckets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
383fdf9b8359cf8192026e584da7143bb72301c1 25-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Convert a std::map that usually has between 0 and 10 elements to SmallMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
e7255c1b2cb56c900859175c6e5712e98e6c39c5 25-Apr-2012 Chad Rosier <mcrosier@apple.com> Add acos, asin, ceil, fabs, floor, fmax, fmin, round, and tan to the builtin
math library functions.
rdar://11251464


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155502 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
454393e3e6dc909806ce24d0af0d7c12381037ce 25-Apr-2012 Chad Rosier <mcrosier@apple.com> Add atan, atan2, exp, and log to the builtin math library functions.

With -fno-math-errno (the default for Darwin) or -ffast-math these library
function can be marked readnone enabling more opportunities for CSE and other
optimizations.
rdar://11251464


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
fae0f48cdeafc454e7e69b6828c06a296f70e673 24-Apr-2012 Chad Rosier <mcrosier@apple.com> Alphabetize the builtin math library functions. No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5482dc3a88fce51307b5e1e19bdf72dea1562040 24-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> RecursiveASTVisitor: Visit instantiations of member templates of class
templates. In an implicit instantiation of a member class, any member
templates don't get instantiated, so the existing check which only visited
the instantiations of a defined template skipped these templates'
instantiations.

Since there is only a single declaration of a member template of a class
template specialization, just use that to determine whether to visit the
instantiations. This introduces a slight inconsistency in that we will
visit the instantiations of such templates whether or not they are
defined, but we never visit a declared-but-not-defined instantiation, so
this turns out to not matter.

Patch by Daniel Jasper!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155487 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
28c9e5720dea5f7b9a4d154ee49886c69de8ae29 24-Apr-2012 Shih-wei Liao <sliao@google.com> Migrate external/clang to CLANG-155088-20120419.

Change-Id: I7e31d8b22ef405f54838a8582c78291fa45ca344
onfig/config.h
fa784da5b9039ead42323bfe9ae6d33ab3c5c6b3 24-Apr-2012 Shih-wei Liao <sliao@google.com> Merge with CLANG upstream r155088.

Conflicts:
lib/Basic/Targets.cpp

Change-Id: Id80f069ae25e623967b705e9fa11cfd94dd2461c
6603ff85d415c2aa72579f1a247012b75bfc2a19 23-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Revert r155363, due to the underlying patches in LLVM causing regression
test suite failures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
river/Options.td
ac28eca18a9f0a343c78ba90b02dfe52302c1f19 23-Apr-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5 (floating point) support in cfe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
river/Options.td
9f99d06e0d22380b9d1f0609a083dbfbd8b37c10 23-Apr-2012 Manuel Klimek <klimek@google.com> Fix PR12608. Patch contributed by Yang Chen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
38c47674399daac540083a71703d61f66158cbf0 23-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Inline helper function into only caller.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155352 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
295413422d0c8d70e8861b71f7b622871ba1ba44 23-Apr-2012 Manuel Klimek <klimek@google.com> Fixes comment referencing old name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155340 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
51183374a54448c54f1b53035cea5b8d885c1c82 22-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Revert 155102 but add a fixme while I debug what is wrong with chrome's
components build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6e21b16ab226959341b85e16060fd81f71cee628 22-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12585: When processing a friend template inside a class template, don't
pretend there was no previous declaration -- that can lead us to injecting
a class template (with no access specifier) into a class scope. Instead,
just avoid the problematic checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a4156b8574666aa69a2b0ad35dc9e9603433e4ae 21-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix regression in r154844. If necessary, defer computing adjusted destructor
exception specifications in C++11 until after we've parsed the exception
specifications for nested classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155293 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0b3ade86a1c60cf0c7b56aa238aff458eb7f5974 20-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] Run remove dead bindings right before leaving a function.

This is needed to ensure that we always report issues in the correct
function. For example, leaks are identified when we call remove dead
bindings. In order to make sure we report a callee's leak in the callee,
we have to run the operation in the callee's context.

This change required quite a bit of infrastructure work since:
- We used to only run remove dead bindings before a given statement;
here we need to run it after the last statement in the function. For
this, we added additional Program Point and special mode in the
SymbolReaper to remove all symbols in context lower than the current
one.
- The call exit operation turned into a sequence of nodes, which are
now guarded by CallExitBegin and CallExitEnd nodes for clarity and
convenience.

(Sorry for the long diff.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155244 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
39b73411313b1204601755e8c4813853f30b9a33 20-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] Remove unused method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155243 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
5a878b2cabb940bf3c1ac420a52cac305765e3e2 20-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] Constify

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155242 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
05b3385f78939b3c6f328153b0011d974a407064 20-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Update doxygen comment to match changes in r155218.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155232 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
704c8f76bbe2de68375f7f146e75bd74de6dd518 20-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix bug where a class's (deleted) copy constructor would be implicitly given a
non-const reference parameter type if the class had any subobjects with deleted
copy constructors. This causes a rejects-valid if the class's copy constructor
is explicitly defaulted (as happens for some implementations of std::pair etc).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155218 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9879556f250c7b692228e834d7fca8f1cb118bf6 20-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-arc: Retune my previous patch so warning
is issued on weak property as receiver and not on
any other use of a weak property. // rdar://10225276


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155169 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
289677da2d3ef2f015af8b7e41150053891589f7 19-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c arc: Issue warning under -Wreceiver-is-weak
if receiver is a 'weak' property, by type or by attribute.
// rdar://10225276


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155159 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
ae519c42a1e0a023be6c07ba1dc10f28e29d6bc3 19-Apr-2012 DeLesley Hutchins <delesley@google.com> Thread safety analysis: split warnings into two groups: attribute warnings
which are checked in the parser, and analysis warnings that require the
full analysis. This allows attribute syntax to be checked independently
of the full thread safety analysis. Also introduces a new warning for the
case where a string is used as a lock expression; this allows the analysis
to gracefully handle expressions that would otherwise cause a parse error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
03544fccd1782418c1bf2528111683e18f43b913 19-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add missing -Wc++98-compat warnings for initializer list initializations which
initialize references, create std::initializer_list objects, or call constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155105 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c7e606086a8d44c4e84ac3d47289288534c79bc6 19-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> In mergeVisibility, if we already have an explicit visibility, keep it.
This fixes the included testcase and lets us simplify the code a bit. It
does require using mergeWithMin when merging class information to its
members. Expand the comments to explain why that works.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1c7eed7e6ea2b357aa94581a90018ddbdcb41cbf 19-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> In mergeVisibilityWithMin, let an implicit hidden symbol take precedence over
an explicit default one. This means that with -fvisibility hidden we
now produce a hidden symbol for

template <typename T>
class DEFAULT foo {
void bar() {}
};
class zed {};
template class foo<zed>;

This matches the behaviour of gcc 4.7.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d70d20a361b877d7156291acd1a83b5b1ac2655a 19-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Now that we check visibility attributes in an appropriate order,
there is no need for mergeVisibily to ever increase the visibility. Not
doing so lets us replace an incorrect use of mergeVisibilityWithMin. The
testcase

struct HIDDEN RECT {
int top;
};
DEFAULT RECT foo = {0};

shows that we should give preference to one of the attributes instead of
keeping the minimum. We still get this testcase wrong because mergeVisibily
handles two explicit visibilities incorrectly, but this is a step in the
right direction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5727cf50bfb8dda767585acb75f26ccfc7f61a4f 19-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Make setVisibility private and change users to mergeVisibility. This is
currently a nop as those users are the first merge or are a merge
of a hidden explicit visibility, which always wins in the current
implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155095 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
eb382ec1507cf2c8c12d7443d0b67c076223aec6 19-Apr-2012 Patrick Beard <pcbeard@mac.com> Implements boxed expressions for Objective-C. <rdar://problem/10194391>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
13bffc532bafd45d4a77867993c1afb83c7661be 19-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR 12586: Fix assert while running libc++ testsuite: deal with exception
specifications on member function templates of class templates and other such
nested beasties. Store the function template from which we are to instantiate
an exception specification rather than trying to deduce it. Plus some
additional test cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155076 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
103f41d0e72a9e52a07e19cbde58c3afc8735098 18-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Revert some Hexagon builtin commits to match reverts done to LLVM in
r155047. See the LLVM log for the primary motivation:
http://llvm.org/viewvc/llvm-project?rev=155047&view=rev

Primary commit r154828:
- Several issues were raised in review, and fixed in subsequent
commits.
- Follow-up commits also reverted, and which should be folded into the
original before reposting:
- r154837: Re-add the 'undef BUILTIN' thing to fix the build.
- r154928: Fix build warnings, re-add (and correct) header and
license
- r154937: Typo fix.

Please resubmit this patch with the relevant LLVM resubmission.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
river/Options.td
d448ce0932708038adb93456b817722a314b647f 18-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> VerifyICE: Pass PartialDiagnostics by reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155005 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
30318e6df9c8c24d080211dfb92ef8065fa7381c 18-Apr-2012 Manuel Klimek <klimek@google.com> Adds a FixedCompilationDatabase to be able to specify tool parameters
at the command line.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154989 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
6403683411dac55afbe3435ceb19033e27cd9f96 18-Apr-2012 Ted Kremenek <kremenek@apple.com> Fix bad typo reported by I-Jui Sung.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154986 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
6749dd50869281f9b49ad5960e25288c15a71cac 18-Apr-2012 Seth Cantrell <seth.cantrell@gmail.com> Nicer display of unprintable source, and fix caret display for non-ascii text

Unprintable source in diagnostics is transformed to a printable form and then
displayed with reversed colors if possible. Unprintable characters are
displayed as <U+NNNN> while bytes that do not represent valid characters are
shown as <XX>.

Column adjustments to diagnostic carets, highlighted ranges, and fixups are
made both for characters escaped as above and for characters which are
printable but take up more than a single column.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
rontend/TextDiagnostic.h
074c1919167a272860a65f861c81d7d3ff37cd72 18-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Calling setVisibility directly only makes (some) sense when the visibility is
explicit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9591697707c69af99bb196d70895f4e7e28be333 17-Apr-2012 Seth Cantrell <seth.cantrell@gmail.com> Revert "Nicer display of unprintable source, and fix caret display for non-ascii text"

This reverts commit e9a3b76ba589a8a884e978273beaed0d97cf9861.

Revert "fix display of source lines with null characters"

This reverts commit 70712b276e40bbe11e5063dfc7e82ce3209929cd.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
rontend/TextDiagnostic.h
e1a6eacdc01db5015f6add2b0155273d174ddc6b 17-Apr-2012 Matt Beaumont-Gay <matthewbg@google.com> add missing parameter index to diag

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154949 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e9a3b76ba589a8a884e978273beaed0d97cf9861 17-Apr-2012 Seth Cantrell <seth.cantrell@gmail.com> Nicer display of unprintable source, and fix caret display for non-ascii text

Unprintable source in diagnostics is transformed to a printable form and then
displayed with reversed colors if possible. Unprintable characters are
displayed as <U+NNNN> while bytes that do not represent valid characters are
shown as <XX>.

Column adjustments to diagnostic carets, highlighted ranges, and fixups are
made both for characters escaped as above and for characters which are
printable but take up more than a single column.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
rontend/TextDiagnostic.h
e1430e9f7a15e76db481dac104bb05d9cbada9d8 17-Apr-2012 Sirish Pande <spande@codeaurora.org> Typo fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
c661f1467a84a0a3a83a396b067188b647844ee9 17-Apr-2012 Manuel Klimek <klimek@google.com> Switches the JSONCompilationDatabase to use the YAML parser.
This will allow us to delete the JSON parser from llvm.

The biggest change is a general change of strategy - instead
of storing StringRef's to the values for the command line and
directory in the input buffer, we store ScalarNode*'s. The
reason is that the YAML parser's getRawValue on ScalarNodes
returns a string that includes the quotes in case of double
quoted strings.

For the same reason we're removing the JSON parsing part of
the command line parsing - this means an extra copy for a
command line when it is requested (and only when it is requested).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154929 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
82a9478fcb06ac0d4d2241c05efee91d0eeda580 17-Apr-2012 Sirish Pande <spande@codeaurora.org> Fix to avoid warning. Also add header, and lincense information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
49a110db4c43835681bb89671f8f73c8d8c7c28c 17-Apr-2012 Craig Topper <craig.topper@gmail.com> Convert vperm2f128 and vperm2i128 intrinsics back to using llvm intrinsics. Unfortunately, these instructions have behavior that can't be modeled with shuffle vector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154906 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
e6975e9b0985ad7f7ff9187e38d95bfe9ac4181b 17-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement DR1330 in C++11 mode, to support libstdc++4.7 which uses it.

We have a new flavor of exception specification, EST_Uninstantiated. A function
type with this exception specification carries a pointer to a FunctionDecl, and
the exception specification for that FunctionDecl is instantiated (if needed)
and used in the place of the function type's exception specification.

When a function template declaration with a non-trivial exception specification
is instantiated, the specialization's exception specification is set to this
new 'uninstantiated' kind rather than being instantiated immediately.

Expr::CanThrow has migrated onto Sema, so it can instantiate exception specs
on-demand. Also, any odr-use of a function triggers the instantiation of its
exception specification (the exception specification could be needed by IRGen).
In passing, fix two places where a DeclRefExpr was created but the corresponding
function was not actually marked odr-used. We used to get away with this, but
don't any more.

Also fix a bug where instantiating an exception specification which refers to
function parameters resulted in a crash. We still have the same bug in default
arguments, which I'll be looking into next.

This, plus a tiny patch to fix libstdc++'s common_type, is enough for clang to
parse (and, in very limited testing, support) all of libstdc++4.7's standard
headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/ExceptionSpecificationType.h
ema/Sema.h
ffce11b95aad43cae18ac8700c026f0d6f62dfa2 16-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] +comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154865 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
93a49944e0e68e32bc22d45d44ee136b34beffb3 16-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c modern translator: buildit objc bool
type for rewriter project will be BoolTy.
// rdar://11231426.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154861 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
74e2fc332e07c76d4e69ccbd0e9e47a0bafd3908 16-Apr-2012 Douglas Gregor <dgregor@apple.com> Implement the last part of C++ [class.mem]p2, delaying the parsing of
exception specifications on member functions until after the closing
'}' for the containing class. This allows, for example, a member
function to throw an instance of its own class. Fixes PR12564 and a
fairly embarassing oversight in our C++98/03 support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154844 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
2b5949e0e66934f6e234818eb04209f4f3cb15ef 16-Apr-2012 David Blaikie <dblaikie@gmail.com> Readd lost "undef BUILTIN" to fix the build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154837 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
7ac715fd3118362f14574c312b044d22e3afeee9 16-Apr-2012 Sirish Pande <spande@codeaurora.org> Hexagon V5(Floating Point) support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154828 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
river/Options.td
48c2407861526291ea8aeb2083537fc0576b7a8e 16-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove unused method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cefc3afac14d29de5aba7810cc8fe6c858949e9d 16-Apr-2012 Douglas Gregor <dgregor@apple.com> Implement C++11 [expr.prim.general]p3, which permits the use of 'this'
in the declaration of a non-static member function after the
(optional) cv-qualifier-seq, which in practice means in the exception
specification and late-specified return type.

The new scheme here used to manage 'this' outside of a member function
scope is more general than the Scope-based mechanism previously used
for non-static data member initializers and late-parsesd attributes,
because it can also handle the cv-qualifiers on the member
function. Note, however, that a separate pass is required for static
member functions to determine whether 'this' was used, because we
might not know that we have a static function until after declaration
matching.

Finally, this introduces name mangling for 'this' and for the implicit
'this', which is intended to match GCC's mangling. Independent
verification for the new mangling test case would be appreciated.

Fixes PR10036 and PR12450.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154799 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Scope.h
ema/Sema.h
4762a2da74875d2ae94e0d77d38ed964816cce36 16-Apr-2012 Sebastian Pop <spop@codeaurora.org> use DEFAULT_SYSROOT

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154792 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
onfig/config.h.in
river/Compilation.h
b346d2f419ec7d7ce6b20780d518490338efa7de 16-Apr-2012 Nick Lewycky <nicholas@mxc.ca> Implement the all_lookups_iterator for PCH as a follow-up to r153970. This
includes a patch from Matthias Kleine with a regression testcase!

Adds a new iterator 'data_iterator' to OnDiskHashTable which doesn't try to
reconstruct the external_key from the internal_key, which is useful for traits
that don't store enough information to do that mapping in their key. Also
deletes the 'item_iterator' from OnDiskHashTable as dead code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclLookups.h
ST/ExternalASTSource.h
asic/OnDiskHashTable.h
erialization/ASTReader.h
b5491f3d7b688b37745397fafd6c1f10548fd5c2 16-Apr-2012 Craig Topper <craig.topper@gmail.com> Change _mm256_permute4x64_epi64 and _mm256_permute4x64_pd to use builtin_shufflevector instead of specific builtins. Old builtins will be removed from llvm now that vpermq/vpermpd are supported by shuffle lowering code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154777 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
b1758c662524e18d65d260188fdcbbdee6a9316b 15-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Use forward declarations for ASTDeclContextNameLookupTable and add a missing delete.

It would be nice to use OwningPtr here, but DeclContextInfo is stored in a DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154763 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
fe587201feaebc69e6d18858bea85c77926b6ecf 15-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12226: don't generate wrong code if a braced string literal is used to
initialize an array of unsigned char. Outside C++11 mode, this bug was benign,
and just resulted in us emitting a constant which was double the required
length, padded with 0s. In C++11, it resulted in us generating an array whose
first element was something like i8 ptrtoint ([n x i8]* @str to i8).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8fb9fb66d415ee40447277f649ecdb12b4964385 14-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Replace manual delete[] with OwningArrayPtr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
13bb701f2f876356400a34b0917a417c66b5d70d 14-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Parser: Don't manage TemplateAnnotationIds in a delayed cleanup pool.

Instead, make it the allocation function's responsibility to add them
to a list and clear it when a top-level decl is finished.

This plugs leakage of TemplateAnnotationIds. DelayedCleanupPool is
ugly and unused, remove it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DelayedCleanupPool.h
arse/Parser.h
ema/ParsedTemplate.h
534986f2b21e6050bf00163cd6423fd92155a6ed 14-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add an AttributedStmt type to represent a statement with C++11 attributes
attached. Since we do not support any attributes which appertain to a statement
(yet), testing of this is necessarily quite minimal.

Patch by Alexander Kornienko!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154723 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
erialization/ASTWriter.h
87e154c09bbb060a0620bc988d7723bee64fb79c 13-Apr-2012 Douglas Gregor <dgregor@apple.com> Remove the unused, unmaintained, incomplete 'Index' library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154672 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ndex/ASTLocation.h
ndex/Analyzer.h
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/GlobalCallGraph.h
ndex/GlobalSelector.h
ndex/Handlers.h
ndex/IndexProvider.h
ndex/Indexer.h
ndex/Program.h
ndex/STLExtras.h
ndex/SelectorMap.h
ndex/TranslationUnit.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
105047124ca8ccc27e4fa48ae8af8bb472c57648 13-Apr-2012 Douglas Gregor <dgregor@apple.com> Remove the -cc1-level option "-pubnames-dump". Such things should stay
out of the tree and use the tooling infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154668 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
51b92401c9f95023a2ef27064fd5a60fd99175f5 13-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement __atomic_fetch_nand and __atomic_nand_fetch to complete our set of
GNU __atomic builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
a1c4f7c833093f87d5187c4449a3d4534cfa40a4 13-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR12500: Improve the wording of the diagnostic for a redefinition of a name
in the wrong namespace scope. Patch by Jonathan Sauer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5e6c3f0397254e2a1a9ef85cf13232f89e653640 13-Apr-2012 Seth Cantrell <seth.cantrell@gmail.com> Support -Wc++98-compat-pedantic as requested:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120409/056126.html

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154655 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
2c39d71bb7cefdfe6116fa52454f3b3dc5abd517 13-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement the missing pieces needed to support libstdc++4.7's <atomic>:
__atomic_test_and_set, __atomic_clear, plus a pile of undocumented __GCC_*
predefined macros.

Implement library fallback for __atomic_is_lock_free and
__c11_atomic_is_lock_free, and implement __atomic_always_lock_free.

Contrary to their documentation, GCC's __atomic_fetch_add family don't
multiply the operand by sizeof(T) when operating on a pointer type.
libstdc++ relies on this quirk. Remove this handling for all but the
__c11_atomic_fetch_add and __c11_atomic_fetch_sub builtins.

Contrary to their documentation, __atomic_test_and_set and __atomic_clear
take a first argument of type 'volatile void *', not 'void *' or 'bool *',
and __atomic_is_lock_free and __atomic_always_lock_free have an argument
of type 'const volatile void *', not 'void *'.

With this change, libstdc++4.7's <atomic> passes libc++'s atomic test suite,
except for a couple of libstdc++ bugs and some cases where libc++'s test
suite tests for properties which implementations have latitude to vary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154640 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
f7728dc1d4899b51a6767cafacfcd4d0d7d351a3 13-Apr-2012 Daniel Dunbar <daniel@zuster.org> Config.h: Add another definition which the Darwin build (sometimes) uses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154630 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.in
6a86082f3a06a2dcceaaf63f78a0e52d64bcbaa3 13-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] PCH deserialization optimization.

We should not deserialize unused declarations from the PCH file. Achieve
this by storing the top level declarations during parsing
(HandleTopLevelDecl ASTConsumer callback) and analyzing/building a call
graph only for those.

Tested the patch on a sample ObjC file that uses PCH. With the patch,
the analyzes is 17.5% faster and clang consumes 40% less memory.
Got about 10% overall build/analyzes time decrease on a large Objective
C project.

A bit of CallGraph refactoring/cleanup as well..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154625 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
262acdab8ba128857a6e5323f767f5e154ce75e6 12-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c literals: Issue warning and ignore
when BOOL is not of an intergal type when
boolean literals are used. // rdar://11231426


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6a91d385618ea4d28236c496f540a26877c95525 12-Apr-2012 Erik Verbruggen <erikjv@me.com> Added a flag to the parser to skip method bodies.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154584 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/FrontendOptions.h
arse/ParseAST.h
arse/Parser.h
ff34d401ff385ef7173ca612432b4ea717fff690 12-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement support for 18 of the GNU-compatible __atomic builtins.

This is not quite sufficient for libstdc++'s <atomic>: we still need
__atomic_test_and_set and __atomic_clear, and may need a more complete
__atomic_is_lock_free implementation.

We are also missing an implementation of __atomic_always_lock_free,
__atomic_nand_fetch, and __atomic_fetch_nand, but those aren't needed
for libstdc++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154579 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/Builtins.def
asic/DiagnosticSemaKinds.td
994d73f8473cb2cd3ce2f69c9575c95015be788a 11-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Part of PR10101: after a parse error in a declaration, try harder to find the
right place to pick up parsing. In C++, this had a tendency to skip everything
declared within headers if the TU starts with garbage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154530 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
fafbf06732746f3ceca21d452d77b144ba8652ae 11-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Provide, and document, a set of __c11_atomic_* intrinsics to implement C11's
<stdatomic.h> header.

In passing, fix LanguageExtensions to note that C11 and C++11 are no longer
"upcoming standards" but are now actually standardized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
e722ed6f5464232e23be52f4976312ef526fae99 11-Apr-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] If displayDiagnostics is set (when calling clang_createIndex), make sure to
output the errors that occurred even if we did not get an AST (e.g. because the
PCH failed to load).

Also honor displayDiagnostics in clang_indexSourceFile().

rdar://11203489

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154472 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
e1b2abc2ed3f2c98985b06b4ad01c977bd584020 11-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> AtomicExpr: make ASTStmtReader a friend and remove setters. Also fix saving
of an uninitialized Stmt* in serialization of __atomic_init and add a test of
atomics serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154448 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e19f86edab8fb3c2c1e99e0e9815b6058504df9b 10-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] Add support for C++ dynamic_cast.

Simulate the C++ dynamic_cast in the analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154434 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
4335a48214dcbb258e08c8867c45648e25edb2ec 10-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] + comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154433 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
69a30b838c723cb1850de55cfa48a402cfeeb6e0 10-Apr-2012 Douglas Gregor <dgregor@apple.com> When we determine that an initialization sequence failed due to an
incomplete type, keep track of the actual type that was
incomplete. Otherwise, we might fail to produce a diagnostic. Fixes
PR12498.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154432 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
50fadd19497f5fa6d8737786ba74af8354d28349 10-Apr-2012 Douglas Gregor <dgregor@apple.com> Improve diagnostics in C++11 when a non-type template argument for a
non-type template parameter of pointer type is not a constant expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154424 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
28a83f57003469fb615ad27dd34bcf5b0a10da8c 10-Apr-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [code-complete] Introduce CodeCompletionTUInfo which will be used for caching
code-completion related strings specific to a translation unit (ASTContext and related data)

CodeCompletionAllocator does such limited caching, by caching the name assigned
to a DeclContext*, but that is not the appropriate place since that object has
a lifetime that can extend beyond that of an ASTContext.

Introduce CodeCompletionTUInfo which will be always tied to a translation unit
to do this kind of caching and move the caching of CodeCompletionAllocator into this
object, and propagate it to all the places where it will be needed.

The plan is to extend the caching where appropriate, using CodeCompletionTUInfo,
to avoid re-calculating code-completion strings.

Part of rdar://10796159.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154408 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
42963612a4187b55685b7f75489c11abd3fa100e 10-Apr-2012 Douglas Gregor <dgregor@apple.com> Rework implementation of null non-type template arguments based on
Richard's feedback, to properly catch non-constant expressions and
type mismatches. Finishes <rdar://problem/11193097>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
c56298d87a9df507805a548d7d515e8b511df2c0 10-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Parsing of C++11 attributes:
* Alternative tokens (such as 'compl') are treated as identifiers in
attribute names.
* An attribute-list can start with a comma.
* An ellipsis may not be used with either of our currently-supported
C++11 attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
6ee326af4e77e6f05973486097884d7431f2108d 10-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Disambiguation of '[[':
* In C++11, '[[' is ill-formed unless it starts an attribute-specifier. Reject
array sizes and array indexes which begin with a lambda-expression. Recover by
parsing the lambda as a lambda.
* In Objective-C++11, either '[' could be the start of a message-send.
Fully disambiguate this case: it turns out that the grammars of message-sends,
lambdas and attributes do not actually overlap. Accept any occurrence of '[['
where either '[' starts a message send, but reject a lambda in an array index
just like in C++11 mode.

Implement a couple of changes to the attribute wording which occurred after our
attributes implementation landed:
* In a function-declaration, the attributes go after the exception specification,
not after the right paren.
* A reference type can have attributes applied.
* An 'identifier' in an attribute can also be a keyword. Support for alternative
tokens (iso646 keywords) in attributes to follow.

And some bug fixes:
* Parse attributes after declarator-ids, even if they are not simple identifiers.
* Do not accept attributes after a parenthesized declarator.
* Accept attributes after an array size in a new-type-id.
* Partially disamiguate 'delete' followed by a lambda. More work is required
here for the case where the lambda-introducer is '[]'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
12d8d80fb0f8d9cddecb34da0f37b0dc9fcaf5e6 09-Apr-2012 John McCall <rjmccall@apple.com> Fix the access check performed as part of the determination of whether
to define a special member function as deleted so that it properly
establishes an object context for the accesses to the base subobject
members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154343 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e51fe0972a781e79abae550786ebed7d1da54252 09-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: remove -fobjc-default-synthesize-properties from the driver.
cc1 option remains though to invoke default property synthesis.
// rdar://11209719


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154334 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e52e2e6f4840c2fa8f7e6289cab976e2c8d2fdc0 09-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Remove -fno-objc-default-synthesize-properties
as the driver option.
// rdar://11209719


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154331 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
561d62280aecff3168097086425a7da0442d0de4 09-Apr-2012 David Chisnall <csdavec@swan.ac.uk> Revert r154321, pending more discussion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154327 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
eb52f86a62db523e3c993686b3ed92c55d59d53c 09-Apr-2012 David Blaikie <dblaikie@gmail.com> Fix bugs found by -Wconstant-conversion improvements currently under review.

Specifically, using a an integer outside [0, 1] as a boolean constant seems to
be an easy mistake to make with things like "x == a || b" where the author
intended "x == a || x == b".

The bug caused by calling SkipUntil with three token kinds was also identified
by a VC diagnostic & reported by Francois Pichet as review feedback for my
commit r154163. I've included test cases to verify the error recovery that was
broken/poorly implemented due to this bug.

The other fix (lib/Sema/SemaExpr.cpp) seems like that code was never actually
reached in any of Clang's tests & is related to Objective C features I'm not
familiar with, so I've not been able to construct a test case for it. Perhaps
someone else can.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154325 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Initialization.h
649ee3fec12dcf7167630ff88087ad116e9eefa6 09-Apr-2012 David Chisnall <csdavec@swan.ac.uk> Add -fobjc-trace to emit a call before and after each Objective-C message send
for hooking in code flow visualisation applications.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154321 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
5e219cf7f896873c1c1e64b9e87a7dade99debba 08-Apr-2012 Chandler Carruth <chandlerc@gmail.com> Teach Clang about PIE compilations. This is the first step of PR12380.

First, this patch cleans up the parsing of the PIC and PIE family of
options in the driver. The existing logic failed to claim arguments all
over the place resulting in kludges that marked the options as unused.
Instead actually walk all of the arguments and claim them properly.

We now treat -f{,no-}{pic,PIC,pie,PIE} as a single set, accepting the
last one on the commandline. Previously there were lots of ordering bugs
that could creep in due to the nature of the parsing. Let me know if
folks would like weird things such as "-fPIE -fno-pic" to turn on PIE,
but disable full PIC. This doesn't make any sense to me, but we could in
theory support it.

Options that seem to have intentional "trump" status (-static, -mkernel,
etc) continue to do so and are commented as such.

Next, a -pie-level flag is threaded into the frontend, rigged to
a language option, and handled preprocessor, setting up the appropriate
defines. We'll now have the correct defines when compiling with -fpie.

The one place outside of the preprocessor that was inspecting the PIC
level (as opposed to the relocation model, which is set and handled
separately, yay!) is in the GNU ObjC runtime. I changed it to exactly
preserve existing behavior. If folks want to change its behavior in the
face of PIE, they can do that in a separate patch.

Essentially the only functionality changed here is the preprocessor
defines and bug-fixes to the argument management.

Tests have been updated and extended to test all of this a bit more
thoroughly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154291 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
b0afd5df3c427c329f6c5e00fe264c5bada3bf36 08-Apr-2012 Francois Pichet <pichet2000@gmail.com> ext_reserved_user_defined_literal must not default to Error in MicrosoftMode. Hence create ext_ms_reserved_user_defined_literal that doesn't default to Error; otherwise MSVC headers won't parse.

Fixes PR12383.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
b9abd87283ac6e929b7e12a577663bc99e61d020 07-Apr-2012 John McCall <rjmccall@apple.com> Fix several problems with protected access control:
- The [class.protected] restriction is non-trivial for any instance
member, even if the access lacks an object (for example, if it's
a pointer-to-member constant). In this case, it is equivalent to
requiring the naming class to equal the context class.
- The [class.protected] restriction applies to accesses to constructors
and destructors. A protected constructor or destructor can only be
used to create or destroy a base subobject, as a direct result.
- Several places were dropping or misapplying object information.

The standard could really be much clearer about what the object type is
supposed to be in some of these accesses. Usually it's easy enough to
find a reasonable answer, but still, the standard makes a very confident
statement about accesses to instance members only being possible in
either pointer-to-member literals or member access expressions, which
just completely ignores concepts like constructor and destructor
calls, using declarations, unevaluated field references, etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b031eab1c07fa2c5bd74c7e92f7c938bf3304729 07-Apr-2012 David Blaikie <dblaikie@gmail.com> Remove "parse error" in favor of more descriptive diagnostics.

In a few cases clang emitted a rather content-free diagnostic: 'parse error'.
This change replaces two actual cases (template parameter parsing and K&R
parameter declaration parsing) with more specific diagnostics and removes a
third dead case of this in the BalancedDelimiterTracker (the ctor already
checked the invariant necessary to ensure that the diag::parse_error was never
actually used).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
d2008e2c80d6c9282044ec873a937a17a0f33579 07-Apr-2012 Douglas Gregor <dgregor@apple.com> Implement support for null non-type template arguments for non-type
template parameters of pointer, pointer-to-member, or nullptr_t
type in C++11. Fixes PR9700 / <rdar://problem/11193097>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
bd613137499b1d4c3b63dccd0aa21f6add243f4f 07-Apr-2012 Ted Kremenek <kremenek@apple.com> Rework ExprEngine::evalLoad and clients (e.g. VisitBinaryOperator) so that when we generate a new ExplodedNode
we use the same Expr* as the one being currently visited. This is preparation for transitioning to having
ProgramPoints refer to CFGStmts.

This required a bit of trickery. We wish to keep the old Expr* bindings in the Environment intact,
as plenty of logic relies on it and there is no reason to change it, but we sometimes want the Stmt* for
the ProgramPoint to be different than the Expr* being used for bindings. This requires adding an extra
argument for some functions (e.g., evalLocation). This looks a bit strange for some clients, but
it will look a lot cleaner when were start using CFGStmt* in the appropriate places.

As some fallout, the diagnostics arrows are a bit difference, since some of the node locations have changed.
I have audited these, and they look reasonable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154214 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
83cad4544f8a89fb6a611f330d71d027c238375e 06-Apr-2012 DeLesley Hutchins <delesley@google.com> Thread safety analysis: downgraded requirement that mutex expressions refer to a lockable type from error to warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b2f6820773aabff3c5c9e0dbb1cbbbda0d80c41f 06-Apr-2012 Patrick Beard <pcbeard@mac.com> Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared.
The warning this inhibits, -Wobjc-root-class, is opt-in for now. However, all clang unit tests that would trigger
the warning have been updated to use -Wno-objc-root-class. <rdar://problem/7446698>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154187 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NSAPI.h
asic/Attr.td
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cf2fa2f0c9d67adb98b282ec0eaa88f08df29804 06-Apr-2012 DeLesley Hutchins <delesley@google.com> Fixed scoping error for late parsed attributes in nested classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154173 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9df1b963a69dc85a271b3791267e994485e0bfe1 06-Apr-2012 David Blaikie <dblaikie@gmail.com> Restrict fixit for missing 'class' in template template parameters.

Based on Doug's feedback to r153887 this omits the FixIt if the following token
isn't syntactically valid for the context. (not a comma, '...', identifier,
'>', or '>>')

There's a bunch of work to handle the '>>' case, but it makes for a much more
pleasant diagnostic in this case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
7947bb127629faff4897f04e579d80fd0d7f97f0 06-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer]Fix false positive: pointer might escape through CG*WithData.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154156 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
bf393be8a0b8b573ceb23ed19ac953832a2a69e4 06-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Don't warn when a category does not implement a method
declared in its adopted protocol when another category declares it
because that category will implement it. // rdar://11186449


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6fd4505ad67a186da8cc26fdb493c93fe4937555 05-Apr-2012 Ted Kremenek <kremenek@apple.com> Require that all static analyzer issues have a category. As part of this change,
consolidate some commonly used category strings into global references (more of this can be done, I just did a few).

Fixes <rdar://problem/11191537>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154121 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/CommonBugCategories.h
taticAnalyzer/Core/BugReporter/BugReporter.h
e47029aead7afc823d4e2eaba00bce39f929a858 05-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Temporary workaround for bug#12457: turn the 'constexpr function never produces
a constant expression' error into a DefaultError ExtWarn, so that it can be
disabled and is suppressed in system headers. libstdc++4.7 contains some such
functions which we currently can't evaluate as constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154115 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
85ff9693b178658f9d8af7be30a086fb1ab81fdd 05-Apr-2012 Daniel Dunbar <daniel@zuster.org> [Lex] Add support for 'user specified system frameworks' (see test case).
- Developers of system frameworks need a way for their framework to be treated as a "system framework" during development. Otherwise, they are unable to properly test how their framework behaves when installed because of the semantic changes (in warning behavior) applied to system frameworks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154105 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderSearch.h
9ee35f9f35452dec05c81fd1bbdd2f700872ea7f 05-Apr-2012 Daniel Dunbar <daniel@zuster.org> [Lex] HeaderSearch: Introduce a FrameworkCacheEntry structure to hold the FrameworkMap items.
- No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154104 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
a82354563ebf9ed03b32ff5405e312425e6c1cad 05-Apr-2012 David Blaikie <dblaikie@gmail.com> Improve & simplify diagnostic for missing 'class' in template template parameter.

Change suggested by Sebastian Redl on review feedback from r153887.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154102 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
cd863466b97cee866370bc6ff75370628ab01d37 05-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] Add a coverage calculation to FunctionSummaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154076 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
a85cf39786fffd6860a940523be01eb02a4935c0 05-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Improve diagnostics for invalid use of non-static members / this:

* s/nonstatic/non-static/ in the diagnostics, since the latter form outvoted
the former by 28-2 in our diagnostics.
* Fix the "use of member in static member function" diagnostic to correctly
detect this situation inside a block or lambda.
* Produce a more specific "invalid use of non-static member" diagnostic for
the case where a nested class member refers to a member of a
lexically-surrounding class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e31b8fb25b458f00e31dcd657c0840e5238e0f05 05-Apr-2012 David Blaikie <dblaikie@gmail.com> Enable warn_impcast_literal_float_to_integer by default.

This diagnostic seems to be production ready, it's just an oversight that it
wasn't turned on by default.

The test changes are a bit of a mixed bag. Some tests that seemed like they
clearly didn't need to use this behavior have been modified not to use it.
Others that I couldn't be sure about, I added the necessary expected-warnings
to.

It's possible the diagnostic message could be improved to make it clearer that
this warning can be suppressed by using a value that won't lose precision when
converted to the target type (but can still be a floating point literal, such
as "bool b = 1.0;").

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3953911de1e81aec780c00102b39a2bfac8f4734 05-Apr-2012 Nico Weber <nicolasweber@gmx.de> Honor -fno-pic, -fno-PIC, -fno-pie, -fno-PIE.

Review at http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120402/055759.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154064 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
30fe6baf95662ea82a794a8fe3b76998713c183d 05-Apr-2012 Chad Rosier <mcrosier@apple.com> [driver] When using the -mfpmath= option, add an error message when trying to
enable neonfp on a CPU that doesn't support NEON.
rdar://11108618


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
b4051e7047a0085f0679257386ff183aed3e5162 04-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 [temp.arg.nontype]'s permission to use the address of an object
or function with internal linkage as a non-type template argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7a938fa66be42710b034a79106de337a275fd265 04-Apr-2012 Chad Rosier <mcrosier@apple.com> [driver] Create a new -mfpmath= option, which is used to control whether clang
uses Neon instructions for single-precision FP.

-mfpmath=neon is analogous to passing llc -mattr=+neonfp.
-mfpmath=[vfp|vfp2|vfp3|vfp4] is analogous to passing llc -mattr=-neonfp.

rdar://11108618


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154046 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
878f8502ebea491b818b48e342f9ad9de2feaff6 04-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> objc-arc: provide a warning when 'receiver' of a message is 'weak'
in arc mode and opted-in with -Wreceiver-is-weak flag.
// rdar://10225276


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
07189521a15d9c088216b943649cb9fe231cbb57 04-Apr-2012 Ted Kremenek <kremenek@apple.com> Include the "issue context" (e.g. function or method) where a static analyzer issue occurred in the plist output.

Fixes <rdar://problem/11004527>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154030 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
f54486acc1cadf2791c3916ece66fded1e57ba0b 04-Apr-2012 Douglas Gregor <dgregor@apple.com> Move the computation of the lambda mangling information (mangling
number + context) to the point where we initially start defining the
lambda, so that the linkage won't change when that information is made
available. Fixes the assertion in <rdar://problem/11182962>.

Plus, actually mangle the context of lambdas properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154029 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ema/Sema.h
cb971c6726d16e12ecd2a340941d7f5c06698332 04-Apr-2012 Manuel Klimek <klimek@google.com> Adds a tooling library.

Provides an API to run clang tools (FrontendActions) as standalone tools,
or repeatedly in-memory in a process. This is useful for unit-testing,
map-reduce style applications, source transformation daemons or command line
tools.

The ability to run over multiple translation units with different command
line arguments enables building up refactoring tools that need to apply
transformations across translation unit boundaries.

See tools/clang-check/ClangCheck.cpp for an example.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154008 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/CompilationDatabase.h
ooling/Tooling.h
9033092415117a67305052d4ac4d94a9e9bfc70d 04-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix diagnostic typos: "non-template arguments" vs "non-type template arguments".
No test updates: we don't appear to have any test coverage for these diagnostics!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154000 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5a5a971908a1fd064454db44c42333a3aecf3d5b 04-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> For PR11916: Add support for g++'s __int128 keyword. Unlike __int128_t, this is
a type specifier and can be combined with unsigned. This allows libstdc++4.7 to
be used with clang in c++98 mode.

Several other changes are still required for libstdc++4.7 to work with clang in
c++11 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Specifiers.h
asic/TokenKinds.def
ema/DeclSpec.h
73f428cf2c5a0847014a3125b7bb8d271aaa7c65 04-Apr-2012 John McCall <rjmccall@apple.com> Enter an expression evaluation context when parsing
statement-expressions. Prevents cleanups and such from being
claimed by the first full-expression in the block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153989 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
173a37a57b79bd8f94b85c2273039e760b159922 03-Apr-2012 Nick Lewycky <nicholas@mxc.ca> Remove more redundant lookups. Add a new "all_lookups_iterator" which provides
a view over the contents of a DeclContext without exposing the implementation
details of the StoredDeclsMap. Use this in LookupVisibleDecls to find the
visible declarations. Fixes PR12339!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclLookups.h
6d858d96ea294baecdf3e7ad3f3c5395c00dec8e 03-Apr-2012 Kaelyn Uhrain <rikka@google.com> Replace the workaround from r153445 with a proper fix.

Infinite recursion was happening when DiagnoseInvalidRedeclaration
called ActOnFunctionDeclarator to check if a typo correction works when
the correction was just to the nested-name-specifier because the wrong
DeclContext was being passed in. Unlike a number of functions
surrounding typo correction, the DeclContext passed in for a function is
the context of the function name after applying any nested name
specifiers, not the lexical DeclContext where the
function+nested-name-specifier appears.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153962 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
14e645557ae91c6770d62beb00a1c522e0bfd5d6 03-Apr-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Correct handling of _Pragma macro inside a macro argument.

If we are pre-expanding a macro argument don't actually "activate"
the pragma at that point, activate the pragma whenever we encounter
it again in the token stream.
This ensures that we will activate it in the correct location
or that we will ignore it if it never enters the token stream, e.g:

\#define EMPTY(x)
\#define INACTIVE(x) EMPTY(x)
INACTIVE(_Pragma("clang diagnostic ignored \"-Wconversion\""))

This also fixes the crash in rdar://11168596.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153959 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c8443e592dbab65cd06ddea9fad6c6f049a08942 03-Apr-2012 Ted Kremenek <kremenek@apple.com> Rework ProgramPoint to bit-mangle the 'Kind' into both Data pointers and the LocationContext. After switching to PointerIntPair, it didn't look like a safe assumption to use the lower 3 bits of the LocationContext* field. Thanks to Jordy Rose and Benjamin Kramer for their feedback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153933 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
e62f048960645b79363408fdead53fec2a063c52 03-Apr-2012 Anna Zaks <ganna@apple.com> [analyzer] Record the basic blocks covered by the analyzes run.

Store this info inside the function summary generated for all analyzed
functions. This is useful for coverage stats and can be helpful for
analyzer state space search strategies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153923 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/FunctionSummary.h
f30c0a97d9addc72a4928b8bb2039b2b464e1f94 02-Apr-2012 Ted Kremenek <kremenek@apple.com> Reduce static analyzer memory usage by about 4% by packing the ProgramPoing 'Kind' field into the spare bits of other fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
5bdaac5454d93d1dcdc2319818497b685be56fcf 02-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Finish PR10217: Ensure we say that a special member was implicitly, not
explicitly, deleted in all relevant cases, and explain why.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
460ef136eb96b879f149c8703938a13c35b4bc68 02-Apr-2012 David Blaikie <dblaikie@gmail.com> Correct error recovery when missing 'class' in a template template parameter.

The diagnostic message correctly informs the user that they have omitted the
'class' keyword, but neither suggests this insertion as a fixit, nor attempts
to recover as if they had provided the keyword.

This fixes the recovery, adds the fixit, and adds a separate diagnostic and
corresponding replacement fixit for cases where the user wrote 'struct' or
'typename' instead of 'class' (suggested by Richard Smith as a possible common
mistake).

I'm not sure the diagnostic message for either the original or new cases feel
very Clang-esque, so I'm open to suggestions there. The fixit hints make it
fairly easy to see what's required, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
1c931be1873f8c20cdcb5060c84570cd3359aa02 02-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement DR1402: if a field or base class is not movable, the derived class's
move constructor/move assignment operator are not declared, rather than being
defined as deleted, so move operations on the derived class fall back to
copying rather than moving.

If a move operation on the derived class is explicitly defaulted, the
unmovable subobject will be copied instead of being moved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
582b395ea4d5dfe353e2132a470d39efe2f84a54 02-Apr-2012 Fariborz Jahanian <fjahanian@apple.com> Use -rewrite-legacy-objc as clang argument for translating
objective-c's fragile abi, Use -rewrite-objc for translating
objective-c's modern abi. // rdar://11143173


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153877 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
river/Types.def
c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5 02-Apr-2012 Richard Smith <richard-llvm@metafoo.co.uk> Basic semantic analysis support for inheriting constructor declarations in
dependent contexts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153858 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
70e24fccc8ef4aa8be03a778e9655bfcfa79dd14 01-Apr-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Properly handle explicit constructors in list-initialization. Fixes PR12120.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153849 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
4a5f724538cbc275370c9504e8169ce92503256c 01-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Analyzer: Store BugReports directly in a ilist instead of adding another layer of inderection with std::list

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153847 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
e2e8768c290ceceb3ac2e369b5243f40d6c0e3e2 31-Mar-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed MacroInfo definition range for function like macros with empty body.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153819 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6c4c36c4ed1007143f5b8655eb68b313a7e12e76 30-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR10217: Provide diagnostics explaining why an implicitly-deleted special
member function is deleted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
40afb7d4f3840e5b9dcdf77086d9e4843fd5463a 30-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Create a new L_Group for language options and add the -std= option to
said group. Also classify the group as a CompileOnly_Group so that this option
does not cause an unused argument warning when used with a link command.
rdar://11153013


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153763 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
3bbd8cd831788c506f2980293eb3c7e1b3ca2501 30-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Do not inline functions which previously reached max block
count.

This is an optimization for "retry without inlining" option. Here, if we
failed to inline a function due to reaching the basic block max count,
we are going to store this information and not try to inline it
again in the translation unit. This can be viewed as a function summary.

On sqlite, with this optimization, we are 30% faster then before and
cover 10% more basic blocks (partially because the number of times we
reach timeout is decreased by 20%).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153730 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
5228982f07d3420672060b2429a797b0cd3e00d5 30-Mar-2012 Craig Topper <craig.topper@gmail.com> Add _mm_minpos_epu16 to smmintrin.h. Fixes PR12399.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153726 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
100c6491c99e92f6b6e9551d0b0cfe3d65eb306b 30-Mar-2012 John McCall <rjmccall@apple.com> Forbid the block and lambda copy-capture of __autoreleasing variables
in ARC, under the usual reasoning limiting the use of __autoreleasing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b085d898bdfe35097eba45f4072b0f6865f561dc 30-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add info to ObjCPropertyRefExpr to indicate whether the dot syntax property
reference is going to message the setter, the getter, or both.

Having this info on the ObjCPropertyRefExpr node makes it easier for AST
clients (like libclang) to reason about the meaning of the property reference.

[AST/Sema]
-Use 2 bits (with a PointerIntPair) in ObjCPropertyRefExpr to record the above info
-Have ObjCPropertyOpBuilder set the info appropriately.

[libclang]
-When there is an implicit property reference (property syntax using methods)
have clang_getCursorReferenced return a cursor for the method. If the property
reference is going to result in messaging both the getter and the setter choose
to return a cursor for the setter because it is less obvious from source inspection
that the setter is getting called.

The general idea has the seal of approval by John.

rdar://11151621

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
1ef28dbcf1a8b72f590f2d73bc204e85605ab605 30-Mar-2012 Eli Friedman <eli.friedman@gmail.com> Extend -Wc++11-narrowing to cover converted constant expressions as well as braced-initializers. <rdar://problem/11121178>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153703 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
52f10d5f474741d2226630f576d44f1bf946d40a 29-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Don't try to parse a malformed parameter list after a constructor or operator
name as a direct initializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153628 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
9988f28fe7a6c19239a7426fea1ab23f9a8aac9c 29-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Reject 'template<typename...Ts> void f(Ts ...(x));'. Add a special-case
diagnostic and a fix-it to explain to the user where the ellipsis is
supposed to go.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b684a42154a555206a33ac47a52ad2a306cfa2b4 28-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> Fix typo in my last patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153602 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b47dbcbc12430fdf3e5a5b9f59cdec5480e89e75 28-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Enable retry exhausted without inlining by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153591 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
a78eca20429e55b041bffcea1938cd0df07a6ebd 28-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Improve diagnostics and
provide 'fixit' hint when dictionary index
is not of proper type. // rdar://11062080


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
253955ca25c7e7049963b5db613c0cd15d66e4f8 28-Mar-2012 Anna Zaks <ganna@apple.com> [analyser] Stats checker: do not mark a node as exhausted if we will
retry without inlining.

(+ other minor cleanups)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153581 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
6960587df0bd1b421c11715807a4d2302a3aae3c 28-Mar-2012 Douglas Gregor <dgregor@apple.com> Unify and fix our checking of C++ [dcl.meaning]p1's requirements
concerning qualified declarator-ids. We now diagnose extraneous
qualification at namespace scope (which we had previously missed) and
diagnose these qualification errors for all kinds of declarations; it
was rather uneven before. Fixes <rdar://problem/11135644>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153577 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
82fe6aea407a5a09a6131452ce622087ba83880d 28-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Move the emission of strict enum range metadata behind a flag (the same
flag as GCC uses: -fstrict-enums). There is a *lot* of code making
unwarranted assumptions about the underlying type of enums, and it
doesn't seem entirely reasonable to eagerly break all of it.

Much more importantly, the current state of affairs is *very* good at
optimizing based upon this information, which causes failures that are
very distant from the actual enum. Before we push for enabling this by
default, I think we need to implement -fcatch-undefined-behavior support
for instrumenting and trapping whenever we store or load a value outside
of the range. That way we can track down the misbehaving code very
quickly.

I discussed this with Rafael, and currently the only important cases he
is aware of are the bool range-based optimizations which are staying
hard enabled. We've not seen any issue with those either, and they are
much more important for performance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153550 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
ba1030698dbc276db86b11c5329a1edee8a1805e 28-Mar-2012 Douglas Gregor <dgregor@apple.com> Introduce a new libclang API to determine the parent context of a code
completion item. For example, if the code completion itself represents
a declaration in a namespace (say, std::vector), then this API
retrieves the cursor kind and name of the namespace (std). Implements
<rdar://problem/11121951>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153545 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
5903a373db3d27794c90b25687e0dd6adb0e497d 27-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Add an option to re-analyze a dead-end path without inlining.

The analyzer gives up path exploration under certain conditions. For
example, when the same basic block has been visited more than 4 times.
With inlining turned on, this could lead to decrease in code coverage.
Specifically, if we give up inside the inlined function, the rest of
parent's basic blocks will not get analyzed.

This commit introduces an option to enable re-run along the failed path,
in which we do not inline the last inlined call site. This is done by
enqueueing the node before the processing of the inlined call site
with a special policy encoded in the state. The policy tells us not to
inline the call site along the path.

This lead to ~10% increase in the number of paths analyzed. Even though
we expected a much greater coverage improvement.

The option is turned off by default for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153534 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
14d83810b14a558b4d3671c75b6d0f5608898d9e 27-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153533 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/TaintManager.h
db81d38d9cd468a9eeffe8ab092be4d48e43888e 27-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Handle correctly inclusion directives that have macro expansions, e.g
"#include MACRO(STUFF)".

-As an inclusion position for the included file, use the file location of the file where it
was included but *after* the macro expansions. We want the macro expansions to be considered
as before-in-translation-unit for everything in the included file.

-In the preprocessing record take into account that only inclusion directives can be encountered
as "out-of-order" (by comparing the start of the range which for inclusions is the hash location)
and use binary search if there is an extreme number of macro expansions in the include directive.

Fixes rdar://11111779

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153527 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
978fc9c485d21ee89b4f0bc77ce1ea55c65c7f12 27-Mar-2012 Douglas Gregor <dgregor@apple.com> Introduce a -cc1-level option -pubnames-dump, which simply dumps the
list of identifiers that that 'public' names at the end of the
translation unit, e.g., defined macros or identifiers with top-level
names, in sorted order. Meant to support <rdar://problem/10921596>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153522 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
3f718609f41921180f09ccc6e73fe8742667608e 27-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Put -cpp-precomp and -no-cpp-precomp under the clang_ignored_f_group.
We don't currently support these options.
rdar://11120518


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153485 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0724b7c43007d978c46f890dcd2ab3c8d3c22920 26-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add a special-case diagnostic for one of the more obnoxious special cases of
unscoped enumeration members: an enumerator name which is visible in the
out-of-class definition of a member of a templated class might not actually
exist in the instantiation of that class, if the enumeration is also lexically
defined outside the class definition and is explicitly specialized.

Depending on the result of a CWG discussion, we may have a different resolution
for a class of problems in this area, but this fixes the immediate issue of a
crash-on-invalid / accepts-invalid (depending on +Asserts). Thanks to Johannes
Schaub for digging into the standard wording to find how this case is currently
specified to behave.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
165ce3c8a16542182adedae6475ed08ae4972e31 26-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify code, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153459 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
1eb18afd931f626713c066ede0707ceb522fa061 26-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Move CodeCompletionBuilder's chunk adding methods out of line.

This makes sense because chunk's ctor is also out of line and simplifies considerably
when inlined with a constant parameter. Shrinks clang on i386-linux-Release+Asserts by 65k.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153446 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0179868cce096101236261ff64eca30224b1f233 26-Mar-2012 Douglas Gregor <dgregor@apple.com> When diagnosing an invalid out-of-line redeclaration, don't permit
typo correction to introduce a nested-name-specifier; we aren't
prepared to handle it here. Fixes PR12297 / <rdar://problem/11075219>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153445 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
d961ea91e14fdf4047db3e891def9951ee7afde1 24-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Don't cast away constness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153381 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
d316862f4fb281ec08a2e45cd3e5580574adb889 24-Mar-2012 Shih-wei Liao <sliao@google.com> Merge branch 'upstream' into sliao_d
3bc75ca0a636efdc93471c9b6bad43085a22bf3a 24-Mar-2012 Jordy Rose <jediknil@belkadan.com> [analyzer] Restart path diagnostic generation if any of the visitors change the report configuration while walking the path.

This required adding a change count token to BugReport, but also allowed us to ditch ImmutableList as the BugReporterVisitor data type.

Also, remove the hack from MallocChecker, now that visitors appear in the opposite order. This is not exactly a fix, but the common case -- custom diagnostics after generic ones -- is now the default behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153369 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
011534973e83db51f49098871186238fc64d5f54 24-Mar-2012 Jordy Rose <jediknil@belkadan.com> [analyzer] Add a clone() method to BugReporterVisitor, so that we'll be able to reset diagnostic generation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153368 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
f602806965531ee06fd8664b9d7a8912c4af2870 24-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Teach APValue printer to print boolean 0 and 1 as 'false' and 'true'. Fix up
some calling code to actually pass in a non-null type, to avoid a crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153358 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ec5a306dd4e8911f22997d84ce029affbb582132 24-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Revert accidentally-committed www changes (and an unused diagnostic);
forward-declared enums aren't /quite/ done yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3343fad1f1ec81af43674b76eddbe9ab10e344eb 24-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> When defining a forward-declared enum, don't try to attach the definition to
a previous declaration if the redeclaration is invalid. That way lies madness.
Fixes a crash-on-invalid reported by Abramo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153349 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
514f2c9dcb9e04b52929c5b141a6fe88bd68b33f 23-Mar-2012 Ted Kremenek <kremenek@apple.com> Avoid applying retain/release effects twice in RetainCountChecker when a function call was inlined (i.e., we do not need to apply summaries in such cases).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153309 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
1af83c444e5a2f6f50a6e1c15e6ebc618ae18a5f 23-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Support for definitions of member enumerations of class templates outside the
class template's definition, and for explicit specializations of such enum
members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
7608a8080bad7ee87a9a50015e9ca63fb214aba2 23-Mar-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove unused bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5aac0b6ae95f137b1783f3e6227241fb457b8f8b 22-Mar-2012 Ted Kremenek <kremenek@apple.com> Fix static analyzer crash on code taking the address of a field. Fixes PR 11146.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153283 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
643586fe4fcd42b0978efd3566832ab4dce50367 22-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When we are replacing a decl in a chained PCH that is also a DeclContext,
make sure to fully load its external lexical and visible declarations before
re-writing it.

rdar://10914192

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
erialization/ASTReader.h
3d7c44e01d568e5d5c0fac9c6ccb3f080157ba19 21-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Malloc: Utter the name of the leaked variable.
Specifically, we use the last store of the leaked symbol in the leak diagnostic.
(No support for struct fields since the malloc checker doesn't track those
yet.)

+ Infrastructure to track the regions used in store evaluations.
This approach is more precise than iterating the store to
obtain the region bound to the symbol, which is used in RetainCount
checker. The region corresponds to what is uttered in the code in the
last store and we do not rely on the store implementation to support
this functionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153212 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
27b867ea1c9cb4b40f9b817c303d6df3ee753da9 21-Mar-2012 Anna Zaks <ganna@apple.com> [analyser] Factor out FindUniqueBinding from RetainCount checker.

So that others could use it as well. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153211 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
4e648e4770d85febaf15ad8b7bad458bd7338ae2 21-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> Allow void blocks to return witn a void expression in
c-mode to match behavior with void functions in c. Issue
warning with -pedantic. // rdar://11069896


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153200 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3ef963bab9916ff4d2def248db1ce38a55bfce18 21-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> Undo previous patch as I checked more than I intended.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153193 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7e725bc7a099fefa5e0f03e2208838d3cdf064e3 21-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> modern objective-c rewriter: remove 'const' from
pointer field declarations in several meta-data.
// rdar://11079898


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3739b32a01b9778176757425e62252c288b85383 20-Mar-2012 Ted Kremenek <kremenek@apple.com> Don't include FixIts with a null replacement range. Fixes <rdar://problem/11040133>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153122 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3538f7488051abc7fcf93ad6fba48d052384d34d 19-Mar-2012 Matt Beaumont-Gay <matthewbg@google.com> Use a simpler pluralization construct

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153044 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
359487b68633a65c3e87a2146e0706fa5ae27d19 18-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> An error can't be in a warning group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153012 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
4207edaf03da28fa917a94b31c5c1eef0e6417dc 18-Mar-2012 Aaron Ballman <aaron@aaronballman.com> Turns #import in MS Mode into an error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153009 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
42aceadbc3806868cee8ac576347d258ac99e1f6 18-Mar-2012 Douglas Gregor <dgregor@apple.com> Diagnose tag and class template declarations with qualified
declarator-ids that occur at class scope. Fixes PR8019.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153002 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
44b8e4652d8e20c1e6611b35803e47b4a013b6c2 17-Mar-2012 Jordy Rose <jediknil@belkadan.com> Kill cocoa::deriveNamingConvention and cocoa::followsFundamentalRule. They are now just simple wrappers around method families, and method decls can cache method family lookups. Also, no one is using them right now.

The one difference between ObjCMethodDecl::getMethodFamily and Selector::getMethodFamily is that the former will do some additional sanity checking, and since CoreFoundation types don't look like Objective-C objects, an otherwise interesting method will get a method family of OMF_None. Future clients that use method families should consider how they want to handle CF types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153000 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
8fe4525680ce72e90cee3e58b5654e3ae955447f 17-Mar-2012 NAKAMURA Takumi <geek4civic@gmail.com> StaticAnalyzer: Fix abuse of StringRef in r152962.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152982 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
fbd58743fa6c793b84ed60a0e2325335a53da6c4 17-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Shorten the stack hint diagnostic.

Do not display the standard "Returning from 'foo'", when a stack hint is
available.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152964 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
56a938ff85a444eb3d30d2634d92ce5b1f6fae56 17-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Create symbol-aware stack hints (building upon r152837).

The symbol-aware stack hint combines the checker-provided message
with the information about how the symbol was passed to the callee: as
a parameter or a return value.

For malloc, the generated messages look like this :
"Returning from 'foo'; released memory via 1st parameter"
"Returning from 'foo'; allocated memory via 1st parameter"
"Returning from 'foo'; allocated memory returned"
"Returning from 'foo'; reallocation of 1st parameter failed"


(We are yet to handle cases when the symbol is a field in a struct or
an array element.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152962 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
e052bda1f3f8b857fa02abeef7b97f66308225fd 16-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> After r150615, which tablegens the group of a diagnostic as an index into the *.inc file, all diagnostic *.inc
files depend on all other diagnostic *.td files, because a diagnostic group can be introduced at any of the diagnostic
*.td files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
0961a01ebec0e31664bfe464bf4a0ac7b0891a1f 16-Mar-2012 David Chisnall <csdavec@swan.ac.uk> Warn on flexible array members when in C89 mode, with -pedantic.
This fixes PR 4307.

Patch by Eitan Adler!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e55329d6834647ba0e06f8a319e5d84c77310035 16-Mar-2012 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev:
Enable incremental parsing by the Preprocessor,
where more code can be provided after an EOF.
It mainly prevents the tearing down of the topmost lexer.
To be used like this:
PP.enableIncrementalProcessing();
while (getMoreSource()) {
while (Parser.ParseTopLevelDecl(ADecl)) {...}
}
PP.enableIncrementalProcessing(false);


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152914 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c5d3e80c64af9604ad798282cc6861f9cd2afc52 16-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix Objective-C compilation-time performance regression introduced in r152608.

Reintroduce lazy name lookup table building, ensuring that the lazy building step
produces the same lookup table that would be built by the eager step.

Avoid building a lookup table for the translation unit outside C++, even in cases
where we can't recover the contents of the table from the declaration chain on
the translation unit, since we're not going to perform qualified lookup into it
anyway. Continue to support lazily building such lookup tables for now, though,
since ASTMerge uses them.

In my tests, this performs very similarly to ToT with r152608 backed out, for C,
Obj-C and C++, and does not suffer from PR10447.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DependentDiagnostic.h
1425226b66d0b5e46bd78a44cc5c5053cf274a12 16-Mar-2012 Ted Kremenek <kremenek@apple.com> Based on sage feedback, chang -W#import-pedantic to -Wimport-preprocessor-directive-pedantic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
9ace587fe52a955cf575d8662d8b86b3b084d44b 16-Mar-2012 Ted Kremenek <kremenek@apple.com> Add warning flag for '#import is a language extension', -W#import-pedantic.

Don't know if it is an anathema to include '#' in the warning name. I'm fine
with changing it, but this was the most obvious name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
64f678eab13b5de9dcebf13d973fbc4731eb1bfd 16-Mar-2012 Chad Rosier <mcrosier@apple.com> Fix help text.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152872 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
fc055f943d154c9b7463f43a3b59e093723362c9 15-Mar-2012 Chad Rosier <mcrosier@apple.com> [frontend] Fix how the frontend handles -fno-inline. AFAIK clang now matches
the behavior of gcc with respect to the -fno-inline and -fno-inline-functions
flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152861 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
d7b83148ac0a537f5ec9be9d87bbec62b75435f4 15-Mar-2012 Jordy Rose <jediknil@belkadan.com> [analyzer] Remove AggExprVisitor, a dead class that assisted in visiting C++ expressions with a "base object", because the CFG is now linearized.

The only use of AggExprVisitor was in #if 0 code (the analyzer's incomplete C++ support), so there is no actual behavioral change anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152856 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
aea3ece6d2ef7810d3c6296d7f46dc453caf40e3 15-Mar-2012 Bill Wendling <isanbard@gmail.com> It was pointed out that a checking version of strdup isn't needed. So much for late-night hacking. :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
368a0d565f078666ca5bfb7fe08d04648688e4bc 15-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Allow checkers to supply call stack diagnostic hints for the
BugVisitor DiagnosticPieces.

When checkers create a DiagnosticPieceEvent, they can supply an extra
string, which will be concatenated with the call exit message for every
call on the stack between the diagnostic event and the final bug report.
(This is a simple version, which could be/will be further enhanced.)

For example, this is used in Malloc checker to produce the ",
which allocated memory" in the following example:

static char *malloc_wrapper() { // 2. Entered call from 'use'
return malloc(12); // 3. Memory is allocated
}

void use() {
char *v;
v = malloc_wrapper(); // 1. Calling 'malloc_wrappers'
// 4. Returning from 'malloc_wrapper', which allocated memory
} // 5. Memory is never released; potential
memory leak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152837 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
2b2bbee3071cee1b03520d9bf0c80c4f0bbe60eb 15-Mar-2012 David Blaikie <dblaikie@gmail.com> Provide the specific target type in the -Wnull-conversion warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f5897bf5f919df28c76013d1efa17441f7241ff 15-Mar-2012 Douglas Gregor <dgregor@apple.com> Document RedeclarableTemplateDecl::getInstantiatedFromMemberTemplate().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
90226acd0b9be2964343cd63ae604bf0a656d33b 15-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make RecursiveASTVisitor to traverse certain statements using data recursion
to avoid a stack overflow with extreme cases.

Part of rdar://10941790.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
649dfbc389671d0c852ead5953da630d675a5d43 15-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove hacky temporary fix of r151585.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152818 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
1ee9b0f72736f6cb8d2ad0b4ed270df762d27248 15-Mar-2012 Bill Wendling <isanbard@gmail.com> Add the object size checking support for a few other builtins.

The functions memccpy, strdup, strndup, strlcat, and strlcpy should also have
object size checking support. Of course, this is only good if the C library also
supports these functions.
<rdar://problem/10528974>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
1d23c4219527d9a2bc75f5cdb1ffcaefb8bcc61b 15-Mar-2012 David Blaikie <dblaikie@gmail.com> Unpluralize -Wfoo-conversions warnings for consistency.

Err on the side of brevity and rename (while providing aliases for the original
name) -Wbool-conversions, -Wint-conversions, and -Wvector-conversions for
consistency with constant, literal, string, and sign conversion warnings. And
name the diagnostic groups explicitly while I'm here rather than rewriting the
string in the groups and sema td files.

Curiously, vector-conversion is not under -Wconversion. Perhaps it should be.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152776 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
95187bdd5c955c8edf3527eae41f1e4f80377f27 15-Mar-2012 David Blaikie <dblaikie@gmail.com> Reapply r152745 (reverted in 152765) now that compiler-rt is fixed.

Original commit message:

Provide -Wnull-conversion separately from -Wconversion.

Like GCC, provide a NULL conversion to non-pointer conversion as a separate
flag, on by default. GCC's flag is "conversion-null" which we provide for
cross compatibility, but in the interests of consistency (with
-Wint-conversion, -Wbool-conversion, etc) the canonical Clang flag is called
-Wnull-conversion.

Patch by Lubos Lunak.
Review feedback by myself, Chandler Carruth, and Chad Rosier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152774 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9ca33fd56720112bcc4bccb8aa6107abbb68cae3 15-Mar-2012 Chad Rosier <mcrosier@apple.com> Revert r152745 as it's breaking the internal buildbots.

Abbreviated commit message:
Provide -Wnull-conversion separately from -Wconversion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8fbe3855db0c341964bb550e13659505efe06c43 15-Mar-2012 Chad Rosier <mcrosier@apple.com> [frontend] Add support for disabling the "inline" keyword using
-fno-inline-functions.

This behaves much like -fno-inline in gcc, but based on a discussion with
Daniel it was decided that -fno-inline-functions should subsume -fno-inline.
Please speak up if you object. The -fno-inline flag remains ignored.
Final part of rdar://10972766



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152754 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
f1c66b40213784a1c4612f04c14cafa2b0e89988 15-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Instantiating a class template should not instantiate the definition of any
scoped enumeration members. Later uses of an enumeration temploid as a nested
name specifier should cause its instantiation. Plus some groundwork for
explicit specialization of member enumerations of class templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152750 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/Template.h
47bfaf19ddc980a9eb48f2978f4da9b7861b9cda 14-Mar-2012 David Blaikie <dblaikie@gmail.com> Provide -Wnull-conversion separately from -Wconversion.

Like GCC, provide a NULL conversion to non-pointer conversion as a separate
flag, on by default. GCC's flag is "conversion-null" which we provide for
cross compatibility, but in the interests of consistency (with
-Wint-conversion, -Wbool-conversion, etc) the canonical Clang flag is called
-Wnull-conversion.

Patch by Lubos Lunak.
Review feedback by myself, Chandler Carruth, and Chad Rosier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3183075ff18449594090aacb1793d66f58a95429 14-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] A fixup to r152734. Always initialize the flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152742 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
9373937945e1e075dfa08169eaccc1ad0b31f699 14-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Diagnostics: Supply Caller information even if the bug occurs
in the callee.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152734 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
f6b8b585596f6cf7924fecc5b7a741d4b45809dc 14-Mar-2012 Douglas Gregor <dgregor@apple.com> Minor cleanup in attribute-related diagnostics, from Alexander Kornienko!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e5049d29f74183d88a332ce4868e84a9c12893f0 14-Mar-2012 Erik Verbruggen <erikjv@me.com> [Analyser] Removes more recursive visitations in ExprEngine that are no
longer needed as the CFG is fully linearized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152720 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
7059a1cbc29444bec19380059a62db085eb92964 14-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Change DiagnosticBuilder to use a separate status variable to track whether the builder is active.
- This may seem superflous, but actually this allows the optimizer to more
easily eliminate the isActive() checks needed by the SemaDiagnosticBuilder
and DiagnosticBuilder dtors. And by more easily, I mean the current LLVM is
actually able to do one and not the other. :)

This is good for another 20k code size reduction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152709 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
393eed7fb901e49085c8583ff0439d1273b6f2fe 14-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Sema] Fix SemaDiagnosticBuilder to be inline.
- As with DiagnosticBuilder, it is very important that SemaDiagnosticBuilder be
completely inline to ensure that the compiler can rip it apart and sink it to
registers.

This is good for another 30k reduction in code size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ema/Sema.h
3054f097f813d19090bdb23645dcd48df71d1a89 13-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Fix up DiagnosticBuilder::{FlushCounts,Emit} to be inline.

- This is much more important than it appears at first glance...

The intended design of DiagnosticBuilder was that it never escape and that all
its members would get lowered to registers by the compiler. By fixing Emit here,
the compiler can completely eliminate the DiagnosticBuilder object and never
need to push those registers back into it.

Unfortunately, Sema has broken DiagnosticBuilder in other ways (by introducing
SemaDiagnosticBuilder), so we don't get the fill impact of this, but it is still
good for 30k reduction in code size. I'll work on fixing the
SemaDiagnosticBuilder problems next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2dec85b21822f950bf6035640c496ad835e11728 13-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Parse diagnostic args in the driver.

Previously, only diagnostics thrown by the cc1 process were
actually honoring the diagnostic options given on the command line,
like -Werror.

Reuse the existing code in Frontend currently used for cc1,
adjusting it to not interpret -Wl, linker flags as warnings.

Also fix a faulty test exposed by this change.
It wasn't actually testing anything, and was giving this warning:

clang-3: warning: argument unused during compilation: '-verify'

Which -Werror didn't turn into an error because it was output
by the driver, not the cc1 process, and diagnostic options
weren't parsed by the driver. And you couldn't see the warning
when running the test suite.

Fixes PR12181.
Patch by Dylan Noblesmith <nobled@dreamwidth.org>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152660 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
rontend/CompilerInvocation.h
a2e589e60d147f4f04cee5682b8389b55c410244 13-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Refactor CallGraph to use Recursive AST visitor when
collecting function Decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152651 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
cefcbef6f3b1e34f31ce0e47214c8b90fedfb9ac 13-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Make DiagnosticBuilder::{Clear,Emit} protected.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
243d7abb0f09c616781627b864ebde6ee8d0cdc1 13-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Eliminate DiagnosticBuilder::Suppress and matching ctor, this stuff is
not used anymore (good thing we are still paying for it!).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152642 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ema/Sema.h
06265bd82073c06294a02a0bd891951fafb484a5 13-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Make DiagnosticBuilder::{isActive,getLocation,getDiagID} protected.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
53c83b32550b3f29db2419160fa2e3684e420556 13-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Fix ~Diagnostic() to not call Emit() when there is no diag obj (most
commonly when the diag has been copied).
- This eliminates a completely spurious call to Emit() which was in
Sema::Diag(). Sob.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152640 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
981e279b95f3a71e2268124b1abaae050ec200dc 13-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Stop using a SmallVector<> for Diagnostic. This drops Clang binary size
by ~%.3/~100k in my build -- simply by eliminating the horrible code bloat coming
from the .clear() of the SmallVector<FixItHint>, which does a std::~string, etc.
- My understanding is we don't ever emit arbitrary numbers of fixits, so I just
moved us to using a statically sized array like we do for arguments and
ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9cda03ff7fc40b727d0cc44b1702dbae09d63f42 13-Mar-2012 James Molloy <james.molloy@arm.com> Ensure that default arguments are handled correctly in sub scopes. For example:

void f () {
int g (int a, int b=4);
{
int g(int a, int b=5);
}
}

should compile.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152621 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1b7f9cbed1b96b58a6e5f7808ebc9345a76a0936 13-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix PR10447: lazily building name lookup tables for DeclContexts was broken.
The deferred lookup table building step couldn't accurately tell which Decls
should be included in the lookup table, and consequently built different tables
in some cases.

Fix this by removing lazy building of DeclContext name lookup tables. In
practice, the laziness was frequently not worthwhile in C++, because we
performed lookup into most DeclContexts. In C, it had a bit more value,
since there is no qualified lookup.

In the place of lazy lookup table building, we simply don't build lookup tables
for function DeclContexts at all. Such name lookup tables are not useful, since
they don't capture the scoping information required to correctly perform name
lookup in a function scope.

The resulting performance delta is within the noise on my testing, but appears
to be a very slight win for C++ and a very slight loss for C. The C performance
can probably be recovered (if it is a measurable problem) by avoiding building
the lookup table for the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152608 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
23dde82d9043d404ee506880796b761bfec93d0d 13-Mar-2012 John McCall <rjmccall@apple.com> Make the error about assigning to lambda-captured variables
clearer, and mention the existence of mutable lambdas.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a5f4441de7890953460d95f4e88b9fa432b48dc2 13-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Sema] Prefer to use ObjCInterfaceDecl's protocol_begin()/protocol_end() iterators instead of
ObjCInterfaceDecl::getReferencedProtocols(), because the iterators are safe to use
even if the caller did not check that the interface is a definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
78dae24600a877f52dbb6e58bfd5778754a00974 13-Mar-2012 John McCall <rjmccall@apple.com> Alternate fix to PR12248: put Sema in charge of special-casing
the diagnostic for assigning to a copied block capture. This has
the pleasant side-effect of letting us special-case the diagnostic
for assigning to a copied lambda capture as well, without introducing
a new non-modifiable enumerator for it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
29af3c7425b791daf5c9ec0a820d6b5baab2ddcc 13-Mar-2012 Ted Kremenek <kremenek@apple.com> Add new analyzer diagnostic mode where plists can have bugs that span multiple files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152586 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
taticAnalyzer/Core/PathDiagnosticConsumers.h
7796eb5643244f3134834253ce5ea89107ac21c1 12-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix parsing of trailing-return-type. Types are syntactically prohibited from
being defined here: [] () -> struct S {} does not define struct S.

In passing, implement DR1318 (syntactic disambiguation of 'final').


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152551 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
69730c115c2d0fec2f20609d905d920a5a41b29b 12-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix parsing of type-specifier-seq's. Types are syntactically allowed to be
defined here, but not semantically, so

new struct S {};

is always ill-formed, even if there is a struct S in scope.

We also had a couple of bugs in ParseOptionalTypeSpecifier caused by it being
under-loved (due to it only being used in a few places) so merge it into
ParseDeclarationSpecifiers with a new DeclSpecContext. To avoid regressing, this
required improving ParseDeclarationSpecifiers' diagnostics in some cases. This
also required teaching ParseSpecifierQualifierList about constexpr... which
incidentally fixes an issue where we'd allow the constexpr specifier in other
bad places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152549 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/DeclSpec.h
0be8fb5bdfe7e07a57f07a740649ec8bfb690284 12-Mar-2012 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment, 'langauge' -> 'language'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152547 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Linkage.h
4e4d08403ca5cfd4d558fa2936215d3a4e5a528d 11-Mar-2012 David Blaikie <dblaikie@gmail.com> Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).

The member variable is always "LangOpts" and the member function is always "getLangOpts".

Reviewed by Chris Lattner

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
dit/EditedSource.h
ex/Lexer.h
ex/Preprocessor.h
arse/Parser.h
ema/Initialization.h
ema/Lookup.h
ema/Sema.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
5a7a5bb20904a1d34255b772c87b930e798f59a8 11-Mar-2012 Douglas Gregor <dgregor@apple.com> When determining whether an identifier followed by a '<' in a member
access expression is the start of a template-id, ignore function
templates found in the context of the entire postfix-expression. Fixes
PR11856.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152520 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f4b88a45902af1802a1cb42ba48b1c474474f228 10-Mar-2012 John McCall <rjmccall@apple.com> Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to
track whether the referenced declaration comes from an enclosing
local context. I'm amenable to suggestions about the exact meaning
of this bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152491 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
a346efaaad5cd779cdfd5be73c2b258748ad1f06 10-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [Sema] A tag decl that is marked as invalid and is used in a decl-spec,
should not impede creating a proper TypeLoc info for the decl-spec.

This improves our semantic error recovery.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152481 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
337e4dbc6859589b8878146a88bebf754e916702 10-Mar-2012 Ted Kremenek <kremenek@apple.com> [analyzer] fix regression in analyzer of NOT actually aborting on Stmts it doesn't understand. We registered
as aborted, but didn't treat such cases as sinks in the ExplodedGraph.

Along the way, add basic support for CXXCatchStmt, expanding the set of code we actually analyze (hopefully correctly).

Fixes: <rdar://problem/10892489>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152468 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
0069b84c2aa7cc39263e85997b7cb1ed0b132ccd 10-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Assign APValues by swapping from a temporary. Removes a bunch of unnecessary
copy-construction, which Daniel Dunbar reports as giving a 0.75% speedup on
403.gcc/combine.c. The performance differences on my constexpr torture tests
are below the noise floor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
26b75c07317a3b50a8a00a1623e3ef38af1d8349 09-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Improve diagnostics for UCNs referring to control characters and members of the
basic source character set in C++98. Add -Wc++98-compat diagnostics for same in
literals in C++11. Extend such support to cover string literals as well as
character literals, and mark N2170 as done.

This seems too minor to warrant a release note to me. Let me know if you disagree.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152444 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
3fd5f370a28552976c52e76c3035d79012d78dda 09-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Add support for NoRedundancy inlining mode.

We do not reanalyze a function, which has already been analyzed as an
inlined callee. As per PRELIMINARY testing, this gives over
50% run time reduction on some benchmarks without decreasing of the
number of bugs found.

Turning the mode on by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152440 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
a5d531f67de0cfeb56b843da15146f3b4cd75bd9 09-Mar-2012 Anna Zaks <ganna@apple.com> CallGraph: Add getNode() method, constify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
8788b224aaa46ccb777e6a24550449dfbb9d195f 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> Revert r152430 "[AST] Mark ASTContext::getTypeInfo and some friends as
LLVM_READONLY.", getTypeInfo() is totally not READONLY, which I should have
probably noticed given that I made it so mere hours ago. Oops.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
feb1f4a0a71868a271fa284dadfda7a2beeaccff 09-Mar-2012 Matt Beaumont-Gay <matthewbg@google.com> Add a helper to get a CXXConstructExpr from a CXXNewExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f9ff5876289d5228c299b57416a62c8c3b848287 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Mark Expr::Ignore*() functions as LLVM_READONLY.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152431 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
29c6c6ef2459195ed2031b97e65a0787e43c1585 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Mark ASTContext::getTypeInfo and some friends as LLVM_READONLY.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152430 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4f311183be3d923da9fbe8702c453688b4c426a9 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Mark Expr::getExprLoc() as LLVM_READONLY.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
aa49a7d70e58dac2aeb40664ba16d2ea571b8c95 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST/etc] Mark {getSourceRange(),getStartLoc(),getEndLoc()} as LLVM_READONLY.
- The theory here is that we have these functions sprinkled in all over the
place. This should allow the optimizer to at least realize it can still do
load CSE across these calls.
- I blindly marked all instances as such, even though the optimizer can infer
this attribute in some instances (some of the inline ones) as that was easier
and also, when given the choice between thinking and not thinking, I prefer
the latter.

You might think this is mere frivolity, but actually this is good for a .7 -
1.1% speedup on 403.gcc/combine.c, JSC/Interpreter.cpp,
OGF/NSBezierPath-OAExtensions.m.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/NestedNameSpecifier.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
ST/TemplateBase.h
ST/TypeLoc.h
ndex/ASTLocation.h
ex/PreprocessingRecord.h
arse/Parser.h
ema/DeclSpec.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
3d4144f32ea4c24aaf48cbff4f476c1446ba2641 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST/Sema] Add {CXXBaseSpecifier,Declarator,DeclSpec,TypeLoc,UnqualifiedId}::getLoc{Start,End}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/TypeLoc.h
ema/DeclSpec.h
8fbc6d23d61213750ba1fdcb0b4b9d3d54bbc32f 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Define a few more key getLocStart() implementations.
- This cuts the # of getSourceRange calls by 60% on
OGF/NSBezierPath-OAExtensions.m.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
90e25a8b2cc5d006e4ced052bcdb40c8af999456 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Reimplement Stmt::getLoc{Start,End} to dispatch to subclass overloads.
- getSourceRange() can be very expensive, we should try to avoid it if at all possible.

In conjunction with the previous commit I measured a ~2% speedup on 403.gcc/combine.c and a 3% speedup on OmniGroupFrameworks/NSBezierPath-OAExtensions.m.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152411 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
396ec676b7a39665fa3a3f86f8e0520f8d7e93a8 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Add {DeclRefExpr,MemberExpr,ImplicitCastExpr}::{getLocStart,getLocEnd} methods.
- There are probably a lot more of these worth adding, but these are a start at hitting some of the exprs for which getSourceRange().getBegin() is a poor substitute for getLocStart().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
406dac0027de79d809366bcb070dc69c560903c3 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Add DeclaratioName::getLoc{Start,End} for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152409 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
7b14026640d76145c4a9a9ac3b2e647bb49651f8 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] Rename LangOptions::NoInline to NoInlineDefine, to make things a bit
more obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152408 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
f85626453123f9691bcef13cff963f556e209c27 09-Mar-2012 Hans Wennborg <hans@hanshq.net> -Wformat-non-iso: warn about positional arguments (pr12017)

This renames the -Wformat-non-standard flag to -Wformat-non-iso,
rewords the current warnings a bit (pointing out that a format string
is not supported by ISO C rather than being "non standard"),
and adds a warning about positional arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152403 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a9e88b2549add9766382c70d270dfd89fa33f7cf 09-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Literal operators can't have default arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
36f5cfe4df32af6c5fe01228102512996f566f9d 09-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Support for raw and template forms of numeric user-defined literals,
and lots of tidying up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
ema/Lookup.h
ema/Sema.h
bc5419a2edc4030d1a623576fe339fbd3eed17a6 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Memoize ASTContext::getTypeInfo().
- On -emit-llvm-only of 403.gcc/combine.c, for example, we make 160k calls to
getTypeInfo but only ever deal with 680 some distinct types.

I saw these speedups (user time):
403.gcc/combine.c -- 3.1%
OmniGroupFrameworks/NSBezierPath-OAExtensions.m -- 3.6%
JavaScriptCore/Interpreter.cpp -- 1.4%
which seems pretty sweet.

I ran some histograms on those compiles and we end up doing a ton of
getTypeInfo() on 'char' and 'int'. I tried splitting out a fast path for builtin
types, but this wasn't a win. Still kinda seems like we could be doing better
here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
42f42c8c58fd1b70ed1e84b426312581e656620b 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] NestedNameSpecifier's ctor/dtor are trivial and should be inlined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
cd485926f1ffda2eaa9adeea34e1e15c35ab5fba 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Type::isVoidType() is trivial and should be inlined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3d13c5a1e72ed8f8be9c083791d30643d1b1ec43 09-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Reduce Decl::getASTContext() calls.
- This function is not at all free; pass it around along some hot paths instead
of recomputing it deep inside various VarDecl methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152363 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
76aadc346c3a4c363238a1e1232f324c3355d9e0 09-Mar-2012 Ted Kremenek <kremenek@apple.com> [analyzer] Implement basic path diagnostic pruning based on "interesting" symbols and regions.
Essentially, a bug centers around a story for various symbols and regions. We should only include
the path diagnostic events that relate to those symbols and regions.

The pruning is done by associating a set of interesting symbols and regions with a BugReporter, which
can be modified at BugReport creation or by BugReporterVisitors.

This patch reduces the diagnostics emitted in several of our test cases. I've vetted these as
having desired behavior. The only regression is a missing null check diagnostic for the return
value of realloc() in test/Analysis/malloc-plist.c. This will require some investigation to fix,
and I have added a FIXME to the test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152361 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
66253352131e3e7a22b3bfd0e180607aa2bfb988 09-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Rework inlining related command line options.
- Remove -analyzer-inline-call.
- Add -analyzer-ipa=[none|inlining]
- Add -analyzer-inlining-mode to allow experimentation for
different performance tuning methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152351 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
33762775706e81c17ca774102ceda36049ecc593 09-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a couple of issues with literal-operator-id parsing, and provide recovery
for a few kinds of error. Specifically:

Since we're after translation phase 6, the "" token might be formed by multiple
source-level string literals. Checking the token width is not a correct way of
detecting empty string literals, due to escaped newlines. Diagnose and recover
from a missing space between "" and suffix, and from string literals other than
"", which are followed by a suffix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
49d517467c3dcd2c67e8a6c740ba5160e37625f7 08-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> When checking the encoding of an 8-bit string literal, don't just check the
first codepoint! Also, don't reject empty raw string literals for spurious
"encoding" issues. Also, don't rely on undefined behavior in ConvertUTF.c.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152344 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
e13edcb296522ab96c384c962c9eb1954962084c 08-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Clean up NamedDecl::getUnderlyingDecl() change a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7a8c758868f00b7fbe105ad2b469a289cfc92b6d 08-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] APValue: Split the fast path of MakeUninit to be inline.
- This change seems to be a tiny loss on 403.gcc/combine.c (.2%), but I think
it is the right thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
54e1c41b31c0bc5acad4473f802215bcd6a3206b 08-Mar-2012 Daniel Dunbar <daniel@zuster.org> [Basic] PartialDiagnostic: Manual split out the cold part of freeStorage(), the
hot path will typically profitably get inlined (based on what I see from the
users of PartialDiagnostic).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
6daffa5d6031eee8b25fc2c745dd6b58b039a6eb 08-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Change NamedDecl::getUnderlyingDecl() to inline the fast (and incredibly common) path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
025039377d7247620750205dbd61ca1ba336f7e0 08-Mar-2012 Rafael Espindola <rafael.espindola@gmail.com> Replace MarkVarRequired with a more generic
HandleCXXStaticMemberVarInstantiation. Suggested by Argyrios.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152320 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
rontend/MultiplexConsumer.h
b453ad3214d00acc51c9aa702c76c58354d84b84 08-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add support for cooked forms of user-defined-integer-literal and
user-defined-floating-literal. Support for raw forms of these literals
to follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/LiteralSupport.h
76e035a529775dc8fd31124f819745a33a085796 08-Mar-2012 Daniel Dunbar <daniel@zuster.org> [AST] Change Type::isIntegerType to be inlined(). It is very popular.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
2fb4ae36825ca3a0cbe7e845c5747062870066be 08-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 [lex.ext]p10 for string and character literals: a ud-suffix not
starting with an underscore is ill-formed.

Since this rule rejects programs that were using <inttypes.h>'s macros, recover
from this error by treating the ud-suffix as a separate preprocessing-token,
with a DefaultError ExtWarn. The approach of treating such cases as two tokens
is under discussion for standardization, but is in any case a conforming
extension and allows existing codebases to keep building while the committee
makes up its mind.

Reword the warning on the definition of literal operators not starting with
underscores (which are, strangely, legal) to more explicitly state that such
operators can't be called by literals. Remove the special-case diagnostic for
hexfloats, since it was both triggering in the wrong cases and incorrect.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
5bc37f6e0c932e7a8e0af92b6266372dc7b94cd9 08-Mar-2012 Douglas Gregor <dgregor@apple.com> Loosen the precondition of isCXXInstanceMember() to simply return
"false" for declarations that aren't members of classes. Fixes PR12106.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c2bd73bba5316aa294187995e8c37b4f0f224179 08-Mar-2012 Daniel Dunbar <daniel@zuster.org> Sema: Don't emit a gajillion calls to sanity() -- an empty function -- in NDEBUG
builds. Sheesh.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152279 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
dd66be718f23c8149d74ae8b011b002e11e8d5ba 08-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> User-defined literal support for character literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152277 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
d78ef5b941ce2937228b010e8443f92025f9d683 08-Mar-2012 Douglas Gregor <dgregor@apple.com> Streamline BalancedDelimiterTracker, by eliminating the duplicate
paren/brace/bracket tracking (the Consume* functions already did it),
removing the use of ConsumeAnyToken(), and moving the hot paths inline
with the error paths out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152274 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9ae3a3647388c42b91505b175c1c8d0055b637dd 08-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> improve on diagnostic when block captures uninitialized
block variable. // rdar://10817031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
196b8cfe9cfcc452eb2f83aa4ad330c2324f8c7d 08-Mar-2012 Anna Zaks <ganna@apple.com> Add a basic CallGraph to Analysis.

The final graph contains a single root node, which is a parent of all externally available functions(and 'main'). As well as a list of Parentless/Unreachable functions, which are either truly unreachable or are unreachable due to our analyses imprecision.

The analyzer checkers debug.DumpCallGraph or debug.ViewGraph can be used to look at the produced graph.

Currently, the graph is not very precise, for example, it entirely skips edges resulted from ObjC method calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
a34194f035096dd8dce10574e3a186da968aa211 08-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> improve on diagnostic and provide a fixit hint when
an uninitialized block variable is being called inside the
block literal. // rdar://10817031


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152271 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9ea396a886d46a9329817ad0a8c423510634d889 07-Mar-2012 Richard Trieu <rtrieu@google.com> Remove unnecessary include in ExprObjC.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152239 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
9fcce65e7e1307b5b8da9be13e4092d6bb94dc1d 07-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> AST representation for user-defined literals, plus just enough of semantic
analysis to make the AST representation testable. They are represented by a
new UserDefinedLiteral AST node, which is a sugared CallExpr. All semantic
properties, including full CodeGen support, are achieved for free by this
representation.

UserDefinedLiterals can never be dependent, so no custom instantiation
behavior is required. They are mangled as if they were direct calls to the
underlying literal operator. This matches g++'s apparent behavior (but not its
actual mangling, which is broken for literal-operator-ids).

User-defined *string* literals are now fully-operational, but the semantic
analysis is quite hacky and needs more work. No other forms of user-defined
literal are created yet, but the AST support for them is present.

This patch committed after midnight because we had already hit the quota for
new kinds of literal yesterday.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
e816c717d4de1de6c67f1fd5ef4a927fe2bf2ea7 07-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++11-compat warning for string and character literals followed by
identifiers, in cases where those identifiers would be treated as
user-defined literal suffixes in C++11.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
bef35c91b594f66216f4aab303b71a6c5ab7abcf 07-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Mark a PCH file with a flag to indicate if the serialized AST had
compiler errors or not.

-Control whether ASTReader should reject such a PCH by a boolean flag at ASTReader's creation time.
By default, such a PCH file will be rejected with an error when trying to load it.

[libclang] Allow clang_saveTranslationUnit to create a PCH file even if compiler errors
occurred.
-Have libclang API calls accept a PCH that had compiler errors.

The general idea is that we want libclang to stay functional even if a PCH had a compiler error.
rdar://10976363.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSerializationKinds.td
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/PreprocessorOptions.h
erialization/ASTReader.h
erialization/ASTWriter.h
8ba9a6244c56b19bc2a24de5d0c32ff37d50177b 07-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Don't try to generate diagnostic information for linker crashes.
rdar://10993648



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152180 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
e53ac8aea2d9e8bbb11191398ea3cc2edb2d171a 07-Mar-2012 Michael Han <Michael.Han@autodesk.com> Refactor Clang sema attribute handling.

This submission improves Clang sema handling by using Clang tablegen
to generate common boilerplate code. As a start, it implements AttributeList
enumerator generation and case statements for AttributeList::getKind.

A new field "SemaHandler" is introduced in Attr.td and by default set to 1
as most of attributes in Attr.td have semantic checking in Sema. For a small
number of attributes that don't appear in Sema, the value is set to 0.

Also there are a small number of attributes that only appear in Sema but not
in Attr.td. Currently these attributes are still hardcoded in Sema AttributeList.

Reviewed by Delesley Hutchins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152169 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
ema/CMakeLists.txt
ema/Makefile
29293cddc682091a16a71f513e605995473f7f45 07-Mar-2012 Dylan Noblesmith <nobled@dreamwidth.org> AST: fix build since r152060

The declarations of the operators no longer matched.
The definitions in ASTContext.h had 'throw()' removed,
but it was still present in Attr.h.

Somehow the buildbots missed this. clang merely warns about
a missing 'throw()' specification and suggested a Fix-It adding
it back, but gcc 4.5 is not so forgiving and gives an error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152167 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
e5de3767186e2a31659c91c55a9665eff077eae6 07-Mar-2012 Chad Rosier <mcrosier@apple.com> Missing period.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152160 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
634a4b1b045b13e7ddfa57934cf2b85d4348f77f 06-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] What was implemented in r152130 was actually -fno-inline-functions, not
-fno-inline.
Part of rdar://10972766


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152145 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
7ba87f38462dde08e4962936a7612b7869e06c0f 06-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Just use memcpy directly, uninitialized_copy requires an <algorithm> include.

Newer libstdc++s don't include it transitively everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152142 91177308-0d34-0410-b5e6-96231b3b80d8
dit/EditedSource.h
30660a898545416f0fea2d717f16f75640001e38 06-Mar-2012 Ted Kremenek <kremenek@apple.com> Add new code migrator support for migrating existing Objective-C code to use
the new Objective-C NSArray/NSDictionary/NSNumber literal syntax.

This introduces a new library, libEdit, which provides a new way to support
migration of code that improves on the original ARC migrator. We now believe
that most of its functionality can be refactored into the existing libraries,
and thus this new library may shortly disappear.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152141 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/ARCMTActions.h
RCMigrate/FileRemapper.h
asic/Diagnostic.h
river/Action.h
river/CC1Options.td
river/Options.td
river/Types.def
dit/Commit.h
dit/EditedSource.h
dit/EditsReceiver.h
dit/FileOffset.h
dit/Rewriters.h
rontend/FrontendOptions.h
ewrite/FixItRewriter.h
1a45a5ff5d495cb6cd9a3d4d06317af79c0f634d 06-Mar-2012 Ted Kremenek <kremenek@apple.com> Add static analyzer support for new NSArray/NSDictionary/NSNumber literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152139 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
ebcb57a8d298862c65043e88b2429591ab3c58d3 06-Mar-2012 Ted Kremenek <kremenek@apple.com> Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,
NSNumber, and boolean literals. This includes both Sema and Codegen support.
Included is also support for new Objective-C container subscripting.

My apologies for the large patch. It was very difficult to break apart.
The patch introduces changes to the driver as well to cause clang to link
in additional runtime support when needed to support the new language features.

Docs are forthcoming to document the implementation and behavior of these features.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprObjC.h
ST/NSAPI.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DiagnosticGroups.td
asic/DiagnosticIDs.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.def
asic/Specifiers.h
asic/StmtNodes.td
asic/TokenKinds.def
river/CC1Options.td
river/ObjCRuntime.h
river/Options.td
rontend/PreprocessorOptions.h
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
6e2cdfd1c1e1522b5e9e0518ab5540a73e9d05cc 06-Mar-2012 Chad Rosier <mcrosier@apple.com> Minor fix for r152130. Put -fno-inline in f_Group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152132 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
250008b4678b19ef80866702e300bb4e53d9ff2d 06-Mar-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for -fno-inline.
rdar://10972766


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152130 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
27949f65b089fec7902b2a15d718b3d1b0ccf988 06-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> Undo patch for // rdar://10735698



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f9aa3635fccb3dc0925ef4d27dfa2b692a8e6a90 06-Mar-2012 Daniel Dunbar <daniel@zuster.org> AST: Move several Type::is...Type() functions to be inline.
- These functions are both (a) very commonly called and (b) excellent
candidates for CSE in the callers in which they are commonly used.
- That isHalfType() is hot makes me sad, but it is trivially when inlined (and
a huge waste of time when not!!!).
- The extra IsEnumDeclComplete() function is a hack to break the cycle between
Type.h and Decl.h, I'm not sure of how to do this more cleanly, but am open
to ideas.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
81e722e2c1195a90825ceaaa90f4a14b7df09b41 06-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> NamespaceDecl: Call non-virtual method inside virtual method, not the other way round.

Moves the virtual call out of a hot path during lookup, no other functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152124 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
faa7fac3f8627f53f2c5aa06f0ad8832098872f5 06-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use newly introduced const-goodness of TinyPtrVector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152108 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
99831e4677a7e2e051af636221694d60ba31fcdb 06-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> User-defined literals: reject string and character UDLs in all places where the
grammar requires a string-literal and not a user-defined-string-literal. The
two constructs are still represented by the same TokenKind, in order to prevent
a combinatorial explosion of different kinds of token. A flag on Token tracks
whether a ud-suffix is present, in order to prevent clients from needing to look
at the token's spelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
ex/Token.h
arse/Parser.h
c1b0f7fa9b755ab59129ae85187d0d4f91379995 06-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use TinyPtrVector instead of UsuallyTinyPtrVector.

The latter is just a worse version of the former.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152096 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
c112b9ce0aa54607c3bbad6db1c21da6bb786b58 06-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move clang/Basic/UsuallyTinyPtrVector.h to llvm/ADT/UsuallyTinyPtrVector.h.

Depends on llvm commit r152090.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152091 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
asic/UsuallyTinyPtrVector.h
097ebb3d8ce55d1f78a3f1e7a0978dbde5ee2898 06-Mar-2012 Ted Kremenek <kremenek@apple.com> [analyzer] add a diagnostic event when entering a call via inlining, within the callee, and add an edge.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152086 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
792777c9028e5fc583a83fb3620c2f9e4f7ed1f9 06-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move include/clang/AST/UsuallyTinyPtrVector.h -> include/clang/Basic/UsuallyTinyPtrVector.h
and add an erase method to it.

Patch by Andrew Craik!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/UsuallyTinyPtrVector.h
asic/UsuallyTinyPtrVector.h
3ebdd8548f97dc5b77172122ab7d6b65de8d4609 06-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add some doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152075 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
8fbb4e665dda8227f369877c11828e4402c48eba 06-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Bump up the size of the functions that should be
considered for inlining to 200 BBs.

Setting the max to 10 BBs introduced several false negatives, we'll
reevaluate the setting later on along with other inlining heuristics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152072 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
6a5d30e8fda56936347e47a98cbb21f89e67d5ae 06-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> Minor refactoring for previous patch for // rdar://10735698



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
0cc323c6bed7206f9743a9775ec8d9cb90655f9c 06-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> static_assert: Allow any string-literal as the message, not just a character
string literal, and adjust the diagnostic code to match. This also causes us
to escape any control characters in the message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152069 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
361035524dc26094825134f30c07311f38f4f8b1 06-Mar-2012 Stephen Hines <srhines@google.com> Merge with upstream Clang @152062.

Added include/clang/Config/config.h
(note the ANDROID_CONFIG_H header guard because CONFIG_H is already taken)

Added support for AttrTemplateInstantiate TableGen rules.

Added libLLVMVectorize dependency.

Build
-HostInfo.cpp
-CallGraph.cpp
+GlobalCallGraph.cpp
-MultiInitializer.cpp
+PPCallbacks.cpp
+SemaConsumer.cpp
+ChainedDiagnosticConsumer.cpp
+DependencyGraph.cpp
+DiagnosticRenderer.cpp
+LayoutOverrideSource.cpp
+WindowsToolChain.cpp
+SemaLambda.cpp
+BoolAssignmentChecker.cpp
+LambdaMangleContext.cpp
+CStringSyntaxChecker.cpp
+ObjCContainersASTChecker.cpp
+ObjCContainersChecker.cpp
+VirtualCallChecker.cpp
+Dominators.cpp
+SubEngine.cpp
+RewriteModernObjC.cpp

Change-Id: Ifda805ce87ae132f055131f4f83692b5c3d63d17
onfig/config.h
91932089c31e1233f0c478b03412e90a65e07ad2 05-Mar-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge-20120305

Conflicts:
lib/Basic/Targets.cpp

Change-Id: Ib76c138030a701355ce39a6eda1a89a79f401667
02892a65b18875a04c7ed5eadb3a13be801ab477 05-Mar-2012 Daniel Dunbar <daniel@zuster.org> AST/stats: Don't effectively use an out-of-line function to return a static
bool. Ugh.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152062 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Stmt.h
7034fb6c7be710883a970f82cb2da97bf1cf5cda 05-Mar-2012 Daniel Dunbar <daniel@zuster.org> ASTContext: Don't use nothrow specifications on the new operators for allocating
from the ASTContext.
- Doing so requires the compiler to generate null checks against the returned
result, but the BumpPtrAllocator never returns null pointers.
- The optimizer can usually eliminate such checks, but not always, so this
gives us tighter codegen in some places.
- It would be really nice if we could just use __builtin_unreachable or
something to tell the optimizer that the allocator never returns null, but
LLVM isn't currently that smart.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152060 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
abf9d908cce6ffe2ee7b739d98fc7344a4f9fe3b 05-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> patch to optionally warn for block implementations without explicit
return types that return non-void values. // rdar://10735698


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
713575afdac1f31de39b4a730143b8d96eeadb6d 05-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> TargetInfo: create less temporary strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152029 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
234fe654a3dd2888be42ae5db34db96c5c2c4ba3 05-Mar-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix a small difference in sema and codegen views of what needs to be output.

In the included testcase, soma thinks that we already have a definition after we
see the out of line decl. Codegen puts it in a deferred list, to be output if
a use is seen. This would break when we saw an explicit template instantiation
definition, since codegen would not be notified.

This patch adds a method to the consumer interface so that soma can notify
codegen that this decl is now required.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152024 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
rontend/MultiplexConsumer.h
c6c54521f95760a5eaf29b668d4bf41fe2af49d7 05-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Enhance PreprocessingRecord to keep track of locations of conditional directives.

Introduce PreprocessingRecord::rangeIntersectsConditionalDirective() which returns
true if a given range intersects with a conditional directive block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152018 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
bb660666883de8b32999c1e5fbe3c32e2cafbdf6 05-Mar-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [preprocessor] Enhance the preprocessor callbacks:

-Add location parameter for the directives callbacks
-Skip callbacks if the directive is inside a skipped range.
-Make sure the directive callbacks are invoked in source order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152017 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
5cc2c6eb67b6e5361bbe96f79b519fd62ec666d6 05-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Lexing support for user-defined literals. Currently these lex as the same token
kinds as the underlying string literals, and we silently drop the ud-suffix;
those issues will be fixed by subsequent patches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152012 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Lexer.h
ex/LiteralSupport.h
a81d3d434e6581ff354eaf5b2a3c25c75771a792 04-Mar-2012 Erik Verbruggen <erikjv@me.com> Remove a recursive visitation in ExprEngine that is no longer needed because the CFG is fully linearized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152007 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
b4a7b1e587a232c95d02a8ca10eeba60164fbba1 04-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Add tests for [over.literal]. Fix a few bugs which were exposed by the tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1f73ae227b18073a5d1792b41094e61329179acf 03-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Factor bitfields of LangOptions out into a base class in order to make them
trivially-copyable. 50KiB reduction in clang binary size.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151963 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e21dd284d8209a89137a03a0d63f2bd57be9e660 03-Mar-2012 Daniel Dunbar <daniel@zuster.org> Frontend: Default to creating output files using temporary files + rename.
- This is a more reliable default, as it behaves better on failure and also
ensures that we create *new* files (instead of reusing existing inodes). This
is useful for other applications (like lldb) which want to cache inode's to
know when a file has been rewritten.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151961 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
12f28ab8a53d7743081d607617309891fa8156f3 03-Mar-2012 Daniel Dunbar <daniel@zuster.org> Frontend: Don't automatically create missing directories when using temporary files with createOutputFile()
- This would otherwise happen as a side effect of llvm::sys::fs::unique_file creating parent directories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151960 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
190f6003cbc3b156a2c071ed1f89c31c72a3605b 02-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Rename clang::CallGraph into clang::idx::CallGraph + rename
the corresponding files to avoid confusion.

This is a preparation to adding an AST-based call graph to Analysis. The
existing call graph works with indexer entries. We might be able to
refactor it to use the AST based graph in the future.

(Minimal testing here as the only example that uses the API has been
completely broken, does not compile.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151950 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/CallGraph.h
ndex/GlobalCallGraph.h
4c55c54db8e676aa3e042188773d9d82d59fff91 02-Mar-2012 Aaron Ballman <aaron@aaronballman.com> Adding support for #pragma include_alias in MS compatibility mode. This implements PR 10705.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151949 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/HeaderSearch.h
ex/Preprocessor.h
7ec419aa8f4ff83bc8ff707b45b9bec47fef3a1a 02-Mar-2012 DeLesley Hutchins <delesley@google.com> Issue warning when late-parsed attributes have no declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2287c5e2352fc51cd74e8a9a7725cbf87e41c007 02-Mar-2012 DeLesley Hutchins <delesley@google.com> Make late-parsed attributes follow the conventions of ordinary
GNU attributes to a better extent, by allowing them in more
places on a declator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151945 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1cb2d742eb6635aeab6132ee5f0b5781d39487d7 02-Mar-2012 Nico Weber <nicolasweber@gmx.de> Add -Wstring-plus-int, which warns on "str" + int and int + "str".

It doesn't warn if the integer is known at compile time and within
the bounds of the string.

Discussion: http://comments.gmane.org/gmane.comp.compilers.clang.scm/47203



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
b0a6615cb9f5e881b81b117017b484fe91112967 02-Mar-2012 Fariborz Jahanian <fjahanian@apple.com> objc: When issue diagnostic about deprecated method, also
issue the note if it is because message is sent to a forward class
declaration in delayed diagnostic. // rdar://10290322


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151942 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
7d613bf78325695b16aa82c139dcc1d598c0f7aa 02-Mar-2012 Nico Weber <nicolasweber@gmx.de> Move int<->pointer conversion warnings behind -Wint-conversions.

This is consistent with -Wbool-conversion. Let me know if you prefer
a different flag name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8235f9c9c8b3d1737d1c6bd57f7ba3f616b92392 02-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Bound the size of the functions being inlined + provide
command line options for inlining tuning.

This adds the option for stack depth bound as well as function size
bound.

+ minor doxygenification

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151930 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
f8e5d4cf39220e9b7c7ee744f634fce6dec28a76 02-Mar-2012 Jia Liu <proljc@gmail.com> clang -v support for separate clang.git and llvm.git, patch by Andrew Trick.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
f15e1143dcb39396a1b62e509e59cacaabbc4880 01-Mar-2012 Ted Kremenek <kremenek@apple.com> Moving tagging of '__experimental_modules_import' IdentifierInfo out of
IndentifierTable::get() and into IdentifierTable's constructor.

This gets a 0.7% reducing on lexing time for Cocoa.h, and
about the same for PCH generation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151854 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
278f1f8d9557babb22b966379dd89039f3f8a440 01-Mar-2012 Anna Zaks <ganna@apple.com> [analyzer] Turn inlining on by default for better testing exposure.

Fix a test, which was most likely an unintended recursive call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151848 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalyzerOptions.h
3c93122d31924d6d4a6265f36a0c98a164002da6 01-Mar-2012 Kostya Serebryany <kcc@google.com> Add a flag -fthread-sanitizer.
This flag enables ThreadSanitizer instrumentation committed to llvm as r150423.
The patch includes one test for -fthread-sanitizer and one similar test for -faddress-sanitizer.
This patch does not modify the linker flags (as we do it for -faddress-sanitizer) because the run-time library is not yet
committed and it's structure in compiler-rt is not 100% clear.
The users manual wil be changed in a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151846 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
32ad2ee2618745ce3da51c2ae066ed5f21157c07 01-Mar-2012 Ted Kremenek <kremenek@apple.com> Change @import to @__experimental_modules_import. We are not ready to commit to a particular syntax for modules,
and don't have time to push it forward in the near future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/IdentifierTable.h
asic/TokenKinds.def
10285d9113c14d1e523f86a55b193eb752638ea5 01-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Revert r151800, which was committed without review and has correctness issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151804 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/HeaderSearch.h
ex/Preprocessor.h
701e3366828adf740734ae5bf4424ecac059bc9a 01-Mar-2012 Aaron Ballman <aaron@aaronballman.com> Fixing a buildbot complaint about nested templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151803 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
7abe1666f225b6d1a11aa7ed19d9a0dcc49391cb 01-Mar-2012 Aaron Ballman <aaron@aaronballman.com> Implements support for #pragma include_alias in ms compatibility mode. Fixes PR10705.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151800 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/HeaderSearch.h
ex/Preprocessor.h
23f0267e2d56c0407f12e62df3561ecf75d74e6e 01-Mar-2012 Eli Friedman <eli.friedman@gmail.com> Implement "optimization" for lambda-to-block conversion which inlines the generated block literal for lambdas which are immediately converted to block pointer type. This simplifies the AST, avoids an unnecessary copy of the lambda and makes it much easier to avoid copying the result onto the heap.

Note that this transformation has a substantial semantic effect outside of ARC: it gives the converted lambda lifetime semantics similar to a block literal. With ARC, the effect is much less obvious because the lifetime of blocks is already managed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
5e4e58b805e0e03a669aa517d1d20d4735a3192e 01-Mar-2012 Richard Smith <richard-llvm@metafoo.co.uk> Reject 'a = {0} = {0}' rather than parsing it as '(a = {0}) = {0}'. Also
improve the diagnostics for some attempts to use initializer lists in
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151794 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
3f01c8a58b7b2d78303675182a8de6b7fbe45ae1 01-Mar-2012 Eli Friedman <eli.friedman@gmail.com> Tighten type-checking a bit to make it clearer how BuildCXXMemberCallExpr is used.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151783 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f4fb07ed4dfd144a39d904fc77b3b0bab580eb2e 29-Feb-2012 Nico Weber <nicolasweber@gmx.de> Allow operator keywords to be #defined in ms-ext mode.

Fixes PR10606.

I'm not sure if this is the best way to go about it, but
I locally enabled this code path without the msext conditional,
and all tests pass, except for test/Preprocessor/cxx_oper_keyword.cpp
which explicitly checks that operator keywords can't be redefined.

I also parsed chromium/win with a clang with and without this patch.
It introduced no new errors, but removes 43 existing errors.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151768 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
77bfb8b43ec3f7dee3a71f6e854b03ad29dab84f 29-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: provide fixit hint when atomic property does not
have matching user defined setter/getter and a warning is issued.
In this case, a fixit note is displayed. // rdar://10267155


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
8d6ff02cb78c67c615125782967b44d1b37e5815 29-Feb-2012 Daniel Dunbar <daniel@zuster.org> Serialization: Switch over to using the native SmallVector based BitstreamWriter
ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151752 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
ca23eb212c78ac5bc62d0881635579dbe7095639 29-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Malloc: A pointer might escape through CFContainers APIs,
funopen, setvbuf.

Teach the checker and the engine about these APIs to resolve malloc
false positives. As I am adding more of these APIs, it is clear that all
this should be factored out into a separate callback (for example,
region escapes). Malloc, KeyChainAPI and RetainRelease checkers could
all use it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151737 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
16f1f717af196b1448258857b2e6dcfe144b39d0 29-Feb-2012 James Molloy <james.molloy@arm.com> Reapply r151638 and r151641.

The bug that was caught by Apple's internal buildbots was valid and also showed another bug in my implementation.

These are now fixed, with regression tests added to catch them both (not Darwin-specific).

Original log:
====================

Revert r151638 because it causes assertion hit on PCH creation for Cocoa.h

Original log:
---------------------
Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped.

This fixes code such as:

enum e {x, y};
int f(enum {y, x} n) {
return 0;
}

This finally fixes PR5464 and PR5477.
---------------------

I also reverted r151641 which was enhancement on top of r151638.

====================




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151712 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Scope.h
ema/Sema.h
5840dd9a09c458ef894e7d47caab1d90dc4c1112 29-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [driver] Emit an error when trying to use ARC on macosx earlier than 10.6

rdar://10459258

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ToolChain.h
441b3bb6eb3b43f5ad740d5cc6ad5c27823b6681 29-Feb-2012 Eric Christopher <echristo@apple.com> Add some iterators for grabbing lambda expression contexts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151701 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ac6260187b6b2f26faa9264d170d649a501f58a9 29-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Make the odr-use logic work correctly for constant-expressions. PR12006.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151699 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c52d9057241b7857c8400ab6cfee0a1c554e0982 29-Feb-2012 Daniel Dunbar <daniel@zuster.org> ASTWriter: Cache some DenseMaps we use repeatedly.
- This reduces our total # of allocations building a PCH for Cocoa.h by almost
a whopping 50%.
- A SmallPtrMap would be cleaner, but since we don't have one yet...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151697 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
32a9a7543f0296b0ae141899005f788bbe4262ca 29-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r151638 because it causes assertion hit on PCH creation for Cocoa.h

Original log:
---------------------
Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped.

This fixes code such as:

enum e {x, y};
int f(enum {y, x} n) {
return 0;
}

This finally fixes PR5464 and PR5477.
---------------------

I also reverted r151641 which was enhancement on top of r151638.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Scope.h
ema/Sema.h
56d8fd0b8a65a7ccae3669cd650ca443cf24b73e 29-Feb-2012 Ted Kremenek <kremenek@apple.com> [analyzer diagnostics] Refactor filtration for PathDiagnosticConsumers that don't support cross-file diagnostics
into a common place. Currently enable this filtration for Plist diagnostics as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151664 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
c89f4b05721f53cfbaf32fc0c4919a4616e68440 29-Feb-2012 Ted Kremenek <kremenek@apple.com> [analyzer diagnostics] start prototyping stripping PathDiagnostics of unnecessary cruft caused by path inlining.

This introduces a concept of a "prunable" PathDiagnosticEvent. Currently this is a flag, but
we may evolve the concept to make this more dynamically inferred.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151663 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
670326f414ca3f8f2cb1ad2f8bd42d5804b563c8 28-Feb-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for -g2 and -ggdb debug flags.
rdar://10947759



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151654 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
fbcf0405b7da1c8606e4223b4f91835643ecd5b4 28-Feb-2012 James Molloy <james.molloy@arm.com> Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped.

This fixes code such as:

enum e {x, y};
int f(enum {y, x} n) {
return 0;
}

This finally fixes PR5464 and PR5477.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151638 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Scope.h
ema/Sema.h
4c62b557e269a27515dfca1f754ae936c8fdb824 28-Feb-2012 Ted Kremenek <kremenek@apple.com> [analyzer] teach analyzer about ObjC literals, thus trimming out a false positive with the malloc() checker involving
comparing literal addresses to nil.

Fixes <rdar://problem/10579586>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151602 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
e739a29c62c67eaec0af5c4d5c75f9e8f11228bd 28-Feb-2012 Ted Kremenek <kremenek@apple.com> [analyzer] Don't generate an explicit ExplodedNode for StringLiterals; have the SVal lazily generated from Environment::getSVal().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151589 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
c1b66e6003262b284937b542aa159a0c79619ff4 28-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> When evaluating integer expressions include a check for sub-expressions
depth and error if we exceed a max value, to make sure we avoid a stack overflow.

This is a hacky temporary fix. rdar://10913206.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
3306ec1923973d7b5767b23ba95915af2fec87d7 27-Feb-2012 Ted Kremenek <kremenek@apple.com> After numerous requests, have Objective-C 'method declared here' notes mention the actual method. This looks better within an IDE, where text isn't always regurgitated in the presentation of a warning. Fixes radar 10914035.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
adfb535905a7ca4226d06a29ebc665085503afd5 27-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Implement a FIXME for conversion sequence distinction. Should fix PR12092.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151577 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
81fb169f42769e02c7425b23885a261c025fd5e6 27-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Add -analyzer-stats, which hooks up LLVM stats tracking.

As in http://llvm.org/docs/ProgrammersManual.html#Statistic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151570 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
d45d361f2ce5c37824052357e2218e8a5509eba5 27-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move "clang/Analysis/Support/SaveAndRestore.h" to "llvm/ADT/SaveAndRestore.h"
to make it more widely available.

Depends on llvm commit r151564

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151566 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
asic/LLVM.h
361ae9a83e1e3098adabaaad34d0925b30358f38 27-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Just drop the bitfield from ExtProtoInfo, this struct isn't even heap allocated so it doesn't hurt.

MSVC < 10 still has the signed enum bitfield bug, making the top bit unusable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1ebae62697cd634c4134e61bac3823584f8c403a 27-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Speculatively attempt to work around a hypothetical but unreproduced MSVC issue
in r151494.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d162cf102449d817a35ae6755b102edcf9d4583b 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Reorder members to save padding.

There's more potential here, but these Exprs aren't used that often so I don't feel like doing heroic bit packing right now.

-8 bytes on every class changed (x86_64).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/ExprObjC.h
bb8a897f350f46475f36140480e82289f6baa020 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Move CharacterLiteral, FloatingLiteral and UnaryExprOrTypeTraitExpr flags over into Stmt.

Apply the inheritance-padding trick to FloatingLiteral.
Shrinks CharacterLiteral from 32 to 24 bytes and the other two from 40 to 32 bytes (x86_64).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
91219326471798c7d3b02dc48691581580338969 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Make clever use of padding to shrink IntegerLiterals.

Inheritance allows us to use padding across classes.
40 -> 32 bytes on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151499 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0840f2378e9b5764755c5dffd27d7878c7606a0c 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Bit pack StringLiteral.

48 -> 40 bytes on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bbf4b22b3166e5065f4475006d83678e3e1d00a3 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Reduce padding in MemberExpr.

56 -> 48 bytes on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3654c6993697a30af0c5a472963fe8c03e622b98 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> CompoundLiteralExpr: Pair a bool with a pointer.

48 -> 40 bytes on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151496 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a72c352e4950cb487942427550777378b68dc078 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Shuffle members of DesignatedInitExpr to avoid padding.

40 -> 32 bytes on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151495 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0e2e13f4daa71edac982633120531333b45e77b5 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Bit pack ExtProtoInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151494 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a6c10681e57c292e16a18bdb9891c8db6ebe5c83 26-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Move FullSourceLoc::dump into the .cpp file, the used attribute made us emit this into every TU that includes SourceLocation.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
13a140caba448a66ffcc5ff0d32a87d6e4f4ad3f 25-Feb-2012 Ahmed Charles <ace2001ac@gmail.com> ArrayRef'ize various functions in the AST/Parser/Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Parser.h
ema/Overload.h
ema/Sema.h
d390de9c6312684c5e5b333f434199e193c7467a 25-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix r151443 to only apply C++11's exception for non-static data member access
in cases where we would otherwise disallow the access, and add a -Wc++98-compat
diagnostic for this C++11 feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151444 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dfefb840e36f069286ef6cf178ef339c90f4603d 25-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Teach CXXRecordDecl::hasIrrelevantDestructor to check the base classes and
data members for deleted or user-provided destructors.

Now it's computed in advance, serialize it, and in passing fix all the other
record DefinitionData flags whose serialization was missing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151441 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f5cd5cc9a7ec114ef1a4c08491a37d2327697c4a 25-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a regression from r151117: ADL requires that we attempt to complete any
associated classes, since it can find friend functions declared within them,
but overload resolution does not otherwise require argument types to be
complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151434 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e1d4330adaaa7faf093e725c9c993207eb2d778a 25-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't record nested macro expansions in the preprocessing record,
it can only bring pain when dealing with preprocessor abuse (see: boost).

rdar://10898986

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151427 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
a66eccbf1f26a2a48c59b6e733dde9c79c19f0df 25-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Improve the diagnostic in ARC mode when a conditional with an Objective-C type and void* is used. <rdar://problem/10486347>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151416 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed878af7914df535b32d64f555fa118413186672 25-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement C++11 [over.match.copy]p1b2, which allows the use of
explicit conversion functions to initialize the argument to a
copy/move constructor that itself is the subject of direct
initialization. Since we don't have that much context in overload
resolution, we end up threading more flags :(.

Fixes <rdar://problem/10903741> / PR10456.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151409 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
ema/Sema.h
c7b5543ad32a5c265c02e71b2a6f9856440ed13f 24-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Back out __decltype warning from r151377: we should either warn on all the GNU
__keywords or none of them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151401 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
39304fad1c8a7b7e64121e9ae544b18e460b682c 24-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> __decltype is a GNU extension, not a C++11 extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ec79d877c1998366480d97a7a6c94e15c053edd8 24-Feb-2012 Douglas Gregor <dgregor@apple.com> Two minor, related fixes for template instantiation with blocks:
- Make sure that the block expression is instantiation-dependent if the
block is in a dependent context
- Make sure that the C++ 'this' expression gets captured even if we
don't rebuild the AST node during template instantiation. This would
also have manifested as a bug for lambdas.

Fixes <rdar://problem/10832617>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151372 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4ca8ac2e61c37ddadf37024af86f3e1019af8532 24-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement a new type trait __is_trivially_constructible(T, Args...)
that provides the behavior of the C++11 library trait
std::is_trivially_constructible<T, Args...>, which can't be
implemented purely as a library.

Since __is_trivially_constructible can have zero or more arguments, I
needed to add Yet Another Type Trait Expression Class, this one
handling arbitrary arguments. The next step will be to migrate
UnaryTypeTrait and BinaryTypeTrait over to this new, more general
TypeTrait class.

Fixes the Clang side of <rdar://problem/10895483> / PR12038.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151352 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
asic/TokenKinds.def
asic/TypeTraits.h
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
2042fc1f36d471f437023e8899f0c4fadded2341 24-Feb-2012 Ted Kremenek <kremenek@apple.com> Reapply r151317, but when computing the PathDiagnostic profile and size keep into account the nested structure. Also fix a problem with how
inlining impacted Plist diagnostics, and adjust some ranges in the Plist output due to richer information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151346 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
68fbb3ee8ae374b6505885e907af92b30eef707f 24-Feb-2012 Chad Rosier <mcrosier@apple.com> Revert r151317 - Rework PathDiagnostics creation.. - to appease buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151338 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
4970ef8e3527ac356c3e9fde0710561fcb63e424 24-Feb-2012 Ted Kremenek <kremenek@apple.com> Rework PathDiagnostic creation so that call stacks are captured by a nested PathDiagnosticCallPiece.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151317 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
aa5ab26ed93382b812147f532dcbf4afb5494040 24-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Handle "#pragma GCC visibility" in a few more places. Switch over "#pragma pack" to use the same handling that gcc does. Fixes <rdar://problem/10871094> and <rdar://problem/10893316>.

(Hopefully, common usage of these pragmas isn't irregular enough to break our current handling. Doug has ideas for a more crazy approach if necessary.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151307 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
f64bc202a2bcdf7b10f418ad52aaa7366c8ffef9 23-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c++: Type of an objc string literal is NSString, not 'id'.
// rdar://10907410


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
97df54e0c075bc8d6a869597e771dad0c11a2180 23-Feb-2012 Douglas Gregor <dgregor@apple.com> Pull the OpaqueValueExpr's source expression into its constructor, so
that we can correctly compute value-dependence of the OVE.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ca8e36eb637e232475ef31c3f22d5da907390917 23-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Malloc: unique leak reports by allocation site.

When we find two leak reports with the same allocation site, report only
one of them.

Provide a helper method to BugReporter to facilitate this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151287 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
644af7b50bd0541468b45c197f5b637e934d48a0 23-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Make sure that all top-level decls in a @implementation are
marked as such.

Previously we missed tag declarations; fixes rdar://10902015

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151283 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
25d0a0f67d9e949ffbfc57bf487012f5cbfd886e 23-Feb-2012 Douglas Gregor <dgregor@apple.com> Provide the __is_trivially_assignable type trait, which provides
compiler support for the std::is_trivially_assignable library type
trait.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151240 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/TokenKinds.def
asic/TypeTraits.h
860097c4ee7a365b6d462436659082c8355e03fd 23-Feb-2012 Rafael Espindola <rafael.espindola@gmail.com> Two fixes to how we compute visibility:

* Handle some situations where we should never make a decl more visible,
even when merging in an explicit visibility.

* Handle attributes in members of classes that are explicitly specialized.

Thanks Nico for the report and testing, Eric for the initial review, and dgregor
for the awesome test27 :-)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d81e961f905e3ea57f6808e5a5686a8324270984 23-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Update parser's disambiguation to cope with braced function-style casts in
C++11, and with braced-init-list initializers in conditions. This exposed an
ambiguity with enum underlying types versus bitfields, which we resolve by
treating 'enum E : T {' as always defining an enumeration (even if it would
only successfully parse as a bitfield). This appears to be g++ compatible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151227 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
61b83c0eae82f06dc5b6f45425607bb261c1b97a 22-Feb-2012 Chad Rosier <mcrosier@apple.com> Add new driver warning from r151174 to a warning group. Please let me know if this isn't the appropriate grouping.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
2dd17a15ddc0184790d790b6128d79ffddae4964 22-Feb-2012 Chad Rosier <mcrosier@apple.com> [driver] Add a warning for when -mcpu= is specified without an argument. There
are likely many other OPT_xxxx_EQ options that could/should be added here.
rdar://10704648



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151174 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
33deb35535aebe81bed0eaf5c14f3032276a086e 22-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Fix parsing and processing initializer lists in return statements and as direct member initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151155 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
76517426dc8bf7734c07eefc35171a6bfdba1a2b 22-Feb-2012 Hans Wennborg <hans@hanshq.net> Warn about non-standard format strings (pr12017)

This adds the -Wformat-non-standard flag (off by default,
enabled by -pedantic), which warns about non-standard
things in format strings (such as the 'q' length modifier,
the 'S' conversion specifier, etc.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151154 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
341785ec52f87c0803ba52dc88faac4e136f8593 22-Feb-2012 Bill Wendling <isanbard@gmail.com> More ArrayRef-ification of methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
ST/DeclBase.h
asic/Diagnostic.h
4fe5be028b723fedc28bb33be96cde1ab2574ee6 22-Feb-2012 Bill Wendling <isanbard@gmail.com> ArrayRef-icize the function arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151151 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0635aa75ab48c9c3b4269d266305aba77b6ec58e 22-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Accept braced-init-lists in conditions, and, in passing, dramatically improve
the diagnostic for using a parenthesized direct-initializer in a condition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151137 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ema/DeclSpec.h
ac1303eca6cbe3e623fb5ec6fe7ec184ef4b0dfa 22-Feb-2012 Douglas Gregor <dgregor@apple.com> Generate an AST for the conversion from a lambda closure type to a
block pointer that returns a block literal which captures (by copy)
the lambda closure itself. Some aspects of the block literal are left
unspecified, namely the capture variable (which doesn't actually
exist) and the body (which will be filled in by IRgen because it can't
be written as an AST).

Because we're switching to this model, this patch also eliminates
tracking the copy-initialization expression for the block capture of
the conversion function, since that information is now embedded in the
synthesized block literal. -1 side tables FTW.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151131 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/OperationKinds.h
76f3f69db1416425070177243e9f390122c553e0 22-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 [expr.call]p11: If the operand to a decltype-specifier is a
function call (or a comma expression with a function call on its right-hand
side), possibly parenthesized, then the return type is not required to be
complete and a temporary is not bound. Other subexpressions inside a decltype
expression do not get this treatment.

This is implemented by deferring the relevant checks for all calls immediately
within a decltype expression, then, when the expression is fully-parsed,
checking the relevant constraints and stripping off any top-level temporary
binding.

Deferring the completion of the return type exposed a bug in overload
resolution where completion of the argument types was not attempted, which
is also fixed by this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
e43fe993a079795ac3d2ba7c9ec5e2a0c8069918 22-Feb-2012 Kaelyn Uhrain <rikka@google.com> Fix typo correction of template arguments to once again allow type names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151112 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2639ac628cff5dedb4fa60169082b2a1a9dd8694 22-Feb-2012 Chad Rosier <mcrosier@apple.com> Provide a way to disable auto-generation of preprocessed files during clang
crash. This can speedup the process of generating a delta reduced test case.
rdar://10905465


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151109 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f775c7b0575446920d03366abd1f5b5188a7eade 22-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure Stmt::dump() is included in libclang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f4b7de1cef3007cc0479775638198287384d9af1 21-Feb-2012 Douglas Gregor <dgregor@apple.com> Improve our handling of lambda expressions that occur within default
arguments. There are two aspects to this:

- Make sure that when marking the declarations referenced in a
default argument, we don't try to mark local variables, both because
it's a waste of time and because the semantics are wrong: we're not
in a place where we could capture these variables again even if it
did make sense.
- When a lambda expression occurs in a default argument of a
function template, make sure that the corresponding closure type is
considered dependent, so that it will get properly instantiated. The
second bit is a bit of a hack; to fix it properly, we may have to
rearchitect our handling of default arguments, parsing them only
after creating the function definition. However, I'd like to
separate that work from the lambdas work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151076 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
b5f2c419842d016892b9c976d4d6e91880e0e43a 21-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Also mark Type's dump() as 'used' to make it available in libclang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0ee7d94ece918f22e67d0f09fcbc631c91091adc 21-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Mark a few 'dump' methods as 'used' to make sure they are included in libclang
and useable while debugging.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/SourceLocation.h
552e29985a710f4ced62b39d70557501bd31ca9b 21-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement name mangling for lambda expressions that occur within the
initializers of data members (both static and non-static).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151017 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ccc1b5eebc6ca8a904c58c0468b9a71483b7c7cf 21-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement name mangling for lambda expressions that occur within the
default arguments of function parameters. This simple-sounding task is
complicated greatly by two issues:

(1) Default arguments aren't actually a real context, so we need to
maintain extra state within lambda expressions to track when a
lambda was actually in a default argument.
(2) At the time that we parse a default argument, the FunctionDecl
doesn't exist yet, so lambda closure types end up in the enclosing
context. It's not clear that we ever want to change that, so instead
we introduce the notion of the "effective" context of a declaration
for the purposes of name mangling.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151011 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/ExprCXX.h
ema/Sema.h
a4c29b6e55c9d4ef44a51c45c6785e8b4fe9deed 21-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Recover gracefully if the ASTReader detects that a file is different
from the one stored in the PCH/AST, while trying to load a SLocEntry.

We verify that all files of the PCH did not change before loading it but this is not enough because:

- The AST may have been 1) kept around, 2) to do queries on it.
- We may have 1) verified the PCH and 2) started parsing.

Between 1) and 2) files may change and we are going to have crashes because the rest of clang
cannot deal with the ASTReader failing to read a SLocEntry.

Handle this by recovering gracefully in such a case, by initializing the SLocEntry
with the info from the PCH/AST as well as reporting failure by the ASTReader.

rdar://10888929

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
50933e5bdbbc1bacc4574e5f4d54381969742426 20-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make PreprocessorOptions::DetailedRecordIncludesNestedMacroExpansions false by default.

Recording nested macro expansions is not useful, plus it fixes rdar://10893630

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150995 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
af300298ab86752fa64e339ba34195888a830756 20-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> modern objc translator. Finish off first cut of the
modern meta-data translation by commenting out private ivar
declarations in user source. Also, added several tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9e8c92a9c9b949bbb0408fbbd9a58e34894b6efc 20-Feb-2012 Douglas Gregor <dgregor@apple.com> Basic support for name mangling of C++11 lambda expressions. Because
name mangling in the Itanium C++ ABI for lambda expressions is so
dependent on context, we encode the number used to encode each lambda
as part of the lambda closure type, and maintain this value within
Sema.

Note that there are a several pieces still missing:
- We still get the linkage of lambda expressions wrong
- We aren't properly numbering or mangling lambda expressions that
occur in default function arguments or in data member initializers.
- We aren't (de-)serializing the lambda numbering tables




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150982 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/ExprCXX.h
ST/LambdaMangleContext.h
ema/Sema.h
c93dc7889644293e318e19d82830ea2acc45b678 20-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Basic: import IntrusiveRefCntPtr<> into clang namespace

The class name is long enough without the llvm:: added.
Also bring in RefCountedBase and RefCountedBaseVPTR.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/FileManager.h
asic/LLVM.h
asic/LangOptions.h
asic/SourceManager.h
asic/TargetInfo.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/Utils.h
ex/ModuleMap.h
ex/Preprocessor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
0e65959196b45d8afc89e9102c4fc4ec0d642066 19-Feb-2012 Rafael Espindola <rafael.espindola@gmail.com> Implement a -gcc-toolchain command line option that does the same as
configure's --with-gcc-toolchain. The configure option is now just a default
value for the command line one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150898 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
86024013d4c3728122c58fa07a2a67e6c15837ef 18-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement constant expression support for __real__ and __imag__ on lvalue
complex numbers. Treat complex numbers as arrays of the corresponding component
type, in order to make std::complex behave properly if implemented in terms of
_Complex T.

Apparently libstdc++'s std::complex is implemented this way, and we were
rejecting a member like this:

constexpr double real() { return __real__ val; }

because it was marked constexpr but unable to produce a constant expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150895 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
b673a41c92aa276f2e37164d0747be1cfb0c402b 18-Feb-2012 Ted Kremenek <kremenek@apple.com> Adopt ExprEngine and checkers to ObjC property refactoring. Everything was working, but now diagnostics are aware of message expressions implied by uses of properties. Fixes <rdar://problem/9241180>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150888 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
5f3c163b7b19a0c7e02509a0984ee1256bca890d 18-Feb-2012 David Chisnall <csdavec@swan.ac.uk> Implement #pragma redefine_extname.

This fixes PR5172 and allows clang to compile C++ programs on Solaris using the system headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150881 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
999713eea940f4e087cc3ac878689c5c5c7a7225 18-Feb-2012 Douglas Gregor <dgregor@apple.com> Rewrite variable capture within lambda expressions and blocks,
eliminating a bunch of redundant code and properly modeling how the
captures of outside blocks/lambdas affect the types seen by inner
captures.

This new scheme makes two passes over the capturing scope stack. The
first pass goes up the stack (from innermost to outermost), assessing
whether the capture looks feasible and stopping when it either hits
the scope where the variable is declared or when it finds an existing
capture. The second pass then walks down the stack (from outermost to
innermost), capturing the variable at each step and updating the
captured type and the type that an expression referring to that
captured variable would see. It also checks type-specific
restrictions, such as the inability to capture an array within a
block. Note that only the first odr-use of each
variable needs to do the full walk; subsequent uses will find the
capture immediately, so multiple walks need not occur.

The same routine that builds the captures can also compute the type of
the captures without signaling errors and without actually performing
the capture. This functionality is used to determine the type of
declaration references as well as implementing the weird decltype((x))
rule within lambda expressions.

The capture code now explicitly takes sides in the debate over C++
core issue 1249, which concerns the type of captures within nested
lambdas. We opt to use the more permissive, more useful definition
implemented by GCC rather than the one implemented by EDG.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150875 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
68932845a432d2a1dbbc57a84fd85bbb37c90487 18-Feb-2012 Douglas Gregor <dgregor@apple.com> Unify our computation of the type of a captured reference to a
variable; it was previously duplicated, and one of the copies failed
to account for outer non-mutable lambda captures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150872 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e698a5cc13b5d04b3170551896bdfcea8b61b146 18-Feb-2012 Ted Kremenek <kremenek@apple.com> Change wording of warning about using __bridge casts in non-ARC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
213d70b58b4f48050c3e545ce1bd4b0ec3af74be 18-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Diagnose uses of deleted destructors and inaccessible defaulted destructors.

We had two separate issues here: firstly, varions functions were assuming that
they did not need to perform semantic checks on trivial destructors (this is
not true in C++11, where a trivial destructor can nonetheless be private or
deleted), and a bunch of DiagnoseUseOfDecl calls were missing for uses of
destructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7d5088aa52d6e32b309ad0af32ea520ddbc5f953 18-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Initial refactoring of 'ShouldDeleteSpecialMember', in preparation for providing
decent diagnostics. Finish the work of combining all the 'ShouldDelete'
functions into one. In unifying the code, fix a minor bug where an anonymous
union with a deleted default constructor as a member of a union wasn't being
considered as making the outer union's default constructor deleted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150862 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3133f79cf451e6302dd05262b4bb53a3e4fd6300 18-Feb-2012 Ted Kremenek <kremenek@apple.com> Have conjured symbols depend on LocationContext, to add context sensitivity for functions called more than once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150849 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
32cf1f27ae8620e7b79bb4e81a067187c0aab7ae 17-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Basic code generation support for std::initializer_list.

We now generate temporary arrays to back std::initializer_list objects
initialized with braces. The initializer_list is then made to point at
the array. We support both ptr+size and start+end forms, although
the latter is untested.

Array lifetime is correct for temporary std::initializer_lists (e.g.
call arguments) and local variables. It is untested for new expressions
and member initializers.

Things left to do:
Massively increase the amount of testing. I need to write tests for
start+end init lists, temporary objects created as a side effect of
initializing init list objects, new expressions, member initialization,
creation of temporary objects (e.g. std::vector) for initializer lists,
and probably more.
Get lifetime "right" for member initializers and new expressions. Not
that either are very useful.
Implement list-initialization of array new expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
b3f323d6c41cb614a249dbc4af7493762786521a 17-Feb-2012 Douglas Gregor <dgregor@apple.com> Disambiguate between C++11 lambda expressions and C99 array
designators in the parser. In the worst case, this disambiguation
requires tentative parsing just past the closing ']', but for most
cases we'll be able to tell by looking ahead just one token (without
going into the heavyweight tentative parsing machinery).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150790 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a345edb668380691fc92d4e4aa0a5ffec366ca6a 17-Feb-2012 John McCall <rjmccall@apple.com> Block expressions always have a prototyped function type; expose this
in the AST accessor and micro-optimize it very slightly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
84fa9cd13c2b260937625b6ad7445af7f7648565 17-Feb-2012 John McCall <rjmccall@apple.com> Add a castAs<U> accessor to CanQual<T>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150786 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
27dd7d962bbf774988bc5e59d04a7743ed503514 17-Feb-2012 Douglas Gregor <dgregor@apple.com> Rework the Sema/AST/IRgen dance for the lambda closure type's
conversion to function pointer. Rather than having IRgen synthesize
the body of this function, we instead introduce a static member
function "__invoke" with the same signature as the lambda's
operator() in the AST. Sema then generates a body for the conversion
to function pointer which simply returns the address of __invoke. This
approach makes it easier to evaluate a call to the conversion function
as a constant, makes the linkage of the __invoke function follow the
normal rules for member functions, and may make life easier down the
road if we ever want to constexpr'ify some of lambdas.

Note that IR generation is responsible for filling in the body of
__invoke (Sema just adds a dummy body), because the body can't
generally be expressed in C++.

Eli, please review!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
85b29a4c862bb9f41d9739e5dab6436fe6d44ff8 17-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Reject continue/break statements within members of local functions nested within
loop and switch statements, by teaching Scope that a function scope never has
a continue/break parent for the purposes of control flow. Remove the hack in
block and lambda expressions which worked around this by pretending that such
expressions were continue/break scopes.

Remove Scope::ControlParent, since it's unused.

In passing, teach default statements to recover properly from a missing ';', and
add a fixit for same to both default and case labels (the latter already
recovered correctly).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150776 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Scope.h
c9ecec404fe28d53aa49b3c830d8353e97bea5f2 16-Feb-2012 Douglas Gregor <dgregor@apple.com> Improve recovery for lambda expressions that have 'mutable' or a
trailing return type but not a '()'. Recover by inserting the
parentheses. Thanks to Xeo on IRC for the example.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150727 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2ac58b7c09938bb28c51c7cd2deada609b75f94c 16-Feb-2012 Ted Kremenek <kremenek@apple.com> Revert "Move ExplodedNode reclaimation out of ExprEngine and into CoreEngine. Also have it based on adding predecessors/successors, not node allocation. No measurable performance change."

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150722 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
b9c64d84ea3edd5e2fffb0a2e85ca1308be4f429 16-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> C++11 allows unions to have static data members. Remove the corresponding
restriction and add some tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150721 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
437ee81e54f39c2363d5fe0ea155604c28adc615 16-Feb-2012 Ted Kremenek <kremenek@apple.com> Move ExplodedNode reclaimation out of ExprEngine and into CoreEngine. Also have it based on adding predecessors/successors, not node allocation. No measurable performance change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150720 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
626719bd2c09e27fe7c182724a812d27f59e3819 16-Feb-2012 Ted Kremenek <kremenek@apple.com> Minor cleanup to node data structures in ExplodedGraph. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150719 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
a76879eb4c75dbd9ec671558f0b8b79a28d4d747 16-Feb-2012 Hans Wennborg <hans@hanshq.net> Tweak the comment on the 'q' length modifier again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150716 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
3c15c439f4f86189915f7f985db4d172b3d843db 16-Feb-2012 Hans Wennborg <hans@hanshq.net> Update comment as per Joerg's comment on r150697.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150711 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
c24a2335677f3d1bd2cab1019ac445d650f52123 16-Feb-2012 DeLesley Hutchins <delesley@google.com> Allow thread safety attributes on function definitions.
For compatibility with gcc, clang will now parse gcc attributes on
function definitions, but issue a warning if the attribute is not a
thread safety attribute. Warning controlled by -Wgcc-compat.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150698 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
arse/Parser.h
32addd519c6699000ff79c387a1c87f0ab7c3698 16-Feb-2012 Hans Wennborg <hans@hanshq.net> Format string analysis: give 'q' its own enumerator.

This is in preparation for being able to warn about 'q' and other
non-standard format string features.

It also allows us to print its name correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150697 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
2aed8b88613863f3c439cdfb205bdf8b608fb205 16-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Revert "Revert "Make CXXNewExpr contain only a single initialier, and not hold the used constructor itself.""

This reintroduces commit r150682 with a fix for the Bullet benchmark crash.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
1548d14f4092a817f7d90ad3e7a65266dc85fbc5 16-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Revert "Make CXXNewExpr contain only a single initialier, and not hold the used constructor itself."
It leads to a compiler crash in the Bullet benchmark.

This reverts commit r12014.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150684 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
5f688f4b15d02aa7ad159c46b1f78fe59d412f12 16-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Make CXXNewExpr contain only a single initialier, and not hold the used constructor itself.

Holding the constructor directly makes no sense when list-initialized arrays come into play. The constructor is now held in a CXXConstructExpr, if construction is what is done. The new design can also distinguish properly between list-initialization and direct-initialization, as well as implicit default-initialization constructors and explicit value-initialization constructors. Finally, doing it this way removes redundance from the AST because CXXNewExpr doesn't try to handle both the allocation and the initialization responsibilities.

This breaks the static analysis of new expressions. I've filed PR12014 to track this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150682 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
74e1ad93fa8d6347549bcb10279fdf1fbc775321 16-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr tidyups:
* Fix bug when determining whether && / || are potential constant expressions
* Try harder when determining whether ?: is a potential constant expression
* Produce a diagnostic on sizeof(VLA) to provide a better source location


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150657 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
c874ca1c7378d62aff008d74cf744636730f2db4 16-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the RecursiveASTVisitor to not traverse C++ default parameters twice.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
f6e2e0291b8964ed41b4325e21dd90b86e791f10 16-Feb-2012 Douglas Gregor <dgregor@apple.com> Implicitly define a lambda's conversion functions (to function
pointers and block pointers). We use dummy definitions to keep the
invariant that an implicit, used definition has a body; IR generation
will substitute the actual contents, since they can't be represented
as C++.

For the block pointer case, compute the copy-initialization needed to
capture the lambda object in the block, which IR generation will need
later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150645 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
9f02d6d2b7d62971ea619b4d0a6e68508e50ec24 16-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Mark the parenthesized array member initialization diagnostic as DefaultError,
and move it out of -Wgnu so that -Wno-gnu leaves it enabled. As requested by
Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f163e964289bc18e9bc1ec37a6a01018ba62640 15-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Support GCC's bug^Wextension allowing class array members to be initalized by a
parenthesized braced-init-list in the base/member initialization list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
6c44886ed05d7804bfd7b80857b81fd3477079f6 15-Feb-2012 David Blaikie <dblaikie@gmail.com> Provide common include for all diagnostic headers.

Reviewed by Ted Kremenek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/AllDiagnostics.h
ceb15656fbab9ee1da319afa4934b8f6a5964758 15-Feb-2012 David Blaikie <dblaikie@gmail.com> Remove the unuseful -fdiagnostics-show-name

This option was added in r129614 and doesn't have any use case that I'm aware
of. It's possible that external tools are using these names - and if that's
the case we can certainly reassess the functionality, but for now it lets us
shave out a few unneeded bits from clang.

Move the "StaticDiagNameIndex" table into the only remaining consumer, diagtool.
This removes the actual diagnostic name strings from clang entirely.

Reviewed by Chris Lattner & Ted Kremenek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150612 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
e4e68d45f89ff4899d30cbd196603d09b7fbc150 15-Feb-2012 Douglas Gregor <dgregor@apple.com> When overload resolution picks an implicitly-deleted special member
function, provide a specialized diagnostic that indicates the kind of
special member function (default constructor, copy assignment
operator, etc.) and that it was implicitly deleted. Add a hook where
we can provide more detailed information later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150611 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
d226e5cbbf0e5285bda065741655e0e976ed91b9 15-Feb-2012 Nico Weber <nicolasweber@gmx.de> Tweak comment above DiagGroup<"all">.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
87c5150752baafab380e5f7837a32410fa83c7dc 15-Feb-2012 Douglas Gregor <dgregor@apple.com> A little more lambda capture initialization diagnostics cleanup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150589 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4773654f2700d6fbb20612fbb6763b35860fa74d 15-Feb-2012 Douglas Gregor <dgregor@apple.com> Introduce a new initialization entity for lambda captures, and
specialize location information and diagnostics for this entity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
793cd1c4cdfaafc52e2c2ad9dae959befe4bb166 15-Feb-2012 Douglas Gregor <dgregor@apple.com> Specialize noreturn diagnostics for lambda expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e88df72e690498aeba2dc3d5089388b27be66fa 15-Feb-2012 Douglas Gregor <dgregor@apple.com> Specialize the diagnostic complaining about conflicting types of
return statements within a lambda; this diagnostic previously referred
to blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
81f3bff7c202d688c9298bc049fdb5b6f77057b1 15-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement code completion support for lambda capture lists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150583 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
be6126a2a784e1446460b8d15c2b26f880c871fc 15-Feb-2012 Hans Wennborg <hans@hanshq.net> Make -Wformat fix-its preserve original conversion specifiers.

This commit makes PrintfSpecifier::fixType() and ScanfSpecifier::fixType()
only fix a conversion specification enough that Clang wouldn't warn about it,
as opposed to always changing it to use the "canonical" conversion specifier.
(PR11975)

This preserves the user's choice of conversion specifier in cases like:

printf("%a", (long double)1);
where we previously suggested "%Lf", we now suggest "%La"

printf("%x", (long)1);
where we previously suggested "%ld", we now suggest "%lx".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150578 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
83587db1bda97f45d2b5a4189e584e2a18be511a 15-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement DR1454. This allows all intermediate results in constant expressions
to be core constant expressions (including pointers and references to
temporaries), and makes constexpr calculations Turing-complete. A Turing machine
simulator is included as a testcase.

This opens up the possibilty of removing CCValue entirely, and removing some
copies from the constant evaluator in the process, but that cleanup is not part
of this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150557 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
asic/DiagnosticASTKinds.td
4d4e5c1ae83f4510caa486b3ad19de13048f9f04 15-Feb-2012 John McCall <rjmccall@apple.com> Split reinterpret_casts of member pointers out from CK_BitCast; this
is general goodness because representations of member pointers are
not always equivalent across member pointer types on all ABIs
(even though this isn't really standard-endorsed).

Take advantage of the new information to teach IR-generation how
to do these reinterprets in constant initializers. Make sure this
works when intermingled with hierarchy conversions (although
this is not part of our motivating use case). Doing this in the
constant-evaluator would probably have been better, but that would
require a *lot* of extra structure in the representation of
constant member pointers: you'd really have to track an arbitrary
chain of hierarchy conversions and reinterpretations in order to
get this right. Ultimately, this seems less complex. I also
wasn't quite sure how to extend the constant evaluator to handle
foldings that we don't actually want to treat as extended
constant expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
011d8b93b7cfa8492b8a9c909a850d6577e08dca 15-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement indexing support for lambdas in libclang (both kinds), as
well as improving the RecursiveASTVisitor's walk of lambda
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
c6889e7ed16604c51994e1f11becf213fdc64eb3 14-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement C++ core issue 974, which permits default arguments for
lambda expressions. Because these issue was pulled back from Ready
status at the Kona meeting, we still emit an ExtWarn when using
default arguments for lambda expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150519 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
625bb569df0c34feec0d52c0ec5215f21ef2e054 14-Feb-2012 Dmitri Gribenko <gribozavr@gmail.com> Generalize -Wempty-body: warn when statement body is empty (closes: PR11329)

* if, switch, range-based for: warn if semicolon is on the same line.
* for, while: warn if semicolon is on the same line and either next
statement is compound statement or next statement has more
indentation.

Replacing the semicolon with {} or moving the semicolon to the next
line will always silence the warning.

Tests from SemaCXX/if-empty-body.cpp merged into SemaCXX/warn-empty-body.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
ema/Sema.h
66c40400e7d6272b0cd675ada18dd62c1f0362c7 14-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Make Malloc Checker optimistic in presence of inlining.
(In response of Ted's review of r150112.)

This moves the logic which checked if a symbol escapes through a
parameter to invalidateRegionCallback (instead of post CallExpr visit.)

To accommodate the change, added a CallOrObjCMessage parameter to
checkRegionChanges callback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150513 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
70488e201ccd94d4bb1ef0868cc13cca2b7d4ff6 14-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Pending clear answer from WG21 on whether core issue 903 is intended to apply to
C++11 or just C++17, restrict the set of null pointer constants in C++11 mode
back to those which were considered null in C++98.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
53393f23d8b767f976427a6d45b310bf37dd91c4 14-Feb-2012 Douglas Gregor <dgregor@apple.com> Check the return type of lambda expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
75d8ba38965998a07a057c6d1d72359d2cc62c09 14-Feb-2012 John McCall <rjmccall@apple.com> Warn about non-int main() results in GNU C mode instead of erroring.

Based on a patch by Vasiliy Korchagin!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a73652465bcc4c0f6cb7d933ad84e002b527a643 14-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement support for lambda capture pack expansions, e.g.,

[&values...] { print(values...); }




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
ema/ScopeInfo.h
ema/Sema.h
63aae82bb12bbbe9028e597fb77e40fa8d348c12 14-Feb-2012 Kaelyn Uhrain <rikka@google.com> Use several weighted factors to determine typo candidate viablity.

Replace the simple Levenshtein edit distance for typo correction
candidates--and the hacky way adding namespace qualifiers would affect
the edit distance--with a synthetic "edit distance" comprised of several
factors and their relative weights. This also allows the typo correction
callback object to convey more information about the viability of a
correction candidate than simply viable or not viable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150495 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
9d36f5dc4121f0f931211ea2d0a74d299eb82b23 14-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement AST (de-)serialization for lambda expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150491 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
erialization/ASTBitCodes.h
8be51eab5ad34515d2a40dcdc8558128ca1800ad 14-Feb-2012 Ted Kremenek <kremenek@apple.com> Refactor DiagnosticRenderer and SDiagsRenderer to have some functionality
pulled into DiagnosticNoteRenderer, and common DiagnosticRenderer that
assumes that all custom diagnostic messages are notes. Also extend
DiagnosticRenderer to work with StoredDiagnostics in preparation for
subsequent changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150455 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticRenderer.h
rontend/TextDiagnostic.h
6700d67925abd674ecddfc56948967f49b25bf39 14-Feb-2012 Ted Kremenek <kremenek@apple.com> Add helper methods to StoredDiagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150454 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
0bdb5aa1a3384d194b0e14a9ecbe3309ff33daa3 14-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Refactor out new function EmitInitializerForField from EmitMemberInitializer. The new function will be used to initialize the fields of lambda expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5ad3af90dd09b482c61dca565be4b50efcd8021d 13-Feb-2012 Matt Beaumont-Gay <matthewbg@google.com> Add a subgroup of -Wreturn-type, -Wreturn-type-c-linkage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150418 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
dfca6f53ab97d28d43e3fa2564209df08f3d282c 13-Feb-2012 Douglas Gregor <dgregor@apple.com> Introduce support for template instantiation of lambda
expressions. This is mostly a simple refact, splitting the main "start
a lambda expression" function into smaller chunks that are driven
either from the parser (Sema::ActOnLambdaExpr) or during AST
transformation (TreeTransform::TransformLambdaExpr). A few minor
interesting points:

- Added new entry points for TreeTransform, so that we can
explicitly establish the link between the lambda closure type in the
template and the lambda closure type in the instantiation.
- Added a bit into LambdaExpr specifying whether it had an explicit
result type or not. We should have had this anyway.

This code is 'lightly' tested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
684a8e471b4499c373f7660b319cfc167cb36a66 13-Feb-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove unused diagnostics from include/clang/Basic/Diagnostic*.td files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150409 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
c8bb3befcad8cd8fc9556bc265289b07dc3c94c8 13-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Malloc checker: rework realloc handling:

1) Support the case when realloc fails to reduce False Positives. (We
essentially need to restore the state of the pointer being reallocated.)

2) Realloc behaves differently under special conditions (from pointer is
null, size is 0). When detecting these cases, we should consider
under-constrained states (size might or might not be 0). The
old version handled this in a very hacky way. The code did not
differentiate between definite and possible (no consideration for
under-constrained states). Further, after processing each special case,
the realloc processing function did not return but chained to the next
special case processing. So you could end up in an execution in which
you first see the states in which size is 0 and realloc ~ free(),
followed by the states corresponding to size is not 0 followed by the
evaluation of the regular realloc behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150402 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
7ae282fde0a12635893931ebf31b35b0d5d5cab3 13-Feb-2012 Douglas Gregor <dgregor@apple.com> Split the storage of lambda information between the LambdaExpr and the
CXXRecordDecl in a way that actually makes some sense:
- LambdaExpr contains all of the information for initializing the
lambda object, including the capture initializers and associated
array index variables.
- CXXRecordDecl's LambdaDefinitionData contains the captures, which
are needed to understand the captured variable references in the
body of the lambda.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
9daa7bfdff7256cef693d7bf10084881bcb9253c 13-Feb-2012 Douglas Gregor <dgregor@apple.com> Keep track of the set of array index variables we use when we
synthesize a by-copy captured array in a lambda. This information will
be needed by IR generation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ema/ScopeInfo.h
da8962a6198bc4bf09a38209db99551b2b0a41a0 13-Feb-2012 Douglas Gregor <dgregor@apple.com> Move the storage of lambda captures and capture initializers from
LambdaExpr over to the CXXRecordDecl. This allows us to eliminate the
back-link from the closure type to the LambdaExpr, which will simplify
and lazify AST deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/ExprCXX.h
63d7ed8470e528da56ac4b2deae6a31ec3bd44fc 13-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> StaticAnalyzer/Core: fix MSVC build

Fix build breakage from r150378: MSVC only allows taking the
address of a member function using the &ClassName::Function
syntax.# It was giving

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150387 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerRegistry.h
4ee01ef7bd170b6f3f3f71882b407cd6408c5b1e 13-Feb-2012 Hans Wennborg <hans@hanshq.net> Fix typo in PrintfConversionSpecifier::isDoubleArg()

This makes the printf diagnostics issue warnigns for %a, %A, %e, etc.
when used with the wrong argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150370 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
86c3ae46250cdcc57778c27826060779a92f3815 13-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Update constexpr implementation to match CWG's chosen approach for core issues
1358, 1360, 1452 and 1453.
- Instantiations of constexpr functions are always constexpr. This removes the
need for separate declaration/definition checking, which is now gone.
- This makes it possible for a constexpr function to be virtual, if they are
only dependently virtual. Virtual calls to such functions are not constant
expressions.
- Likewise, it's now possible for a literal type to have virtual base classes.
A constexpr constructor for such a type cannot actually produce a constant
expression, though, so add a special-case diagnostic for a constructor call
to such a type rather than trying to evaluate it.
- Classes with trivial default constructors (for which value initialization can
produce a fully-initialized value) are considered literal types.
- Classes with volatile members are not literal types.
- constexpr constructors can be members of non-literal types. We do not yet use
static initialization for global objects constructed in this way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150359 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticASTKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
9ecb72a84ecc28c3046f76f95503143cf3892fcc 12-Feb-2012 David Blaikie <dblaikie@gmail.com> Move -Wdangling-else under -Wparentheses to be backwards compatibile with GCC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150349 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f8af98286022f72157d84951b48fde5fb369ab29 12-Feb-2012 Douglas Gregor <dgregor@apple.com> Within the body of a lambda expression, decltype((x)) for an
id-expression 'x' will compute the type based on the assumption that
'x' will be captured, even if it isn't captured, per C++11
[expr.prim.lambda]p18. There are two related refactors that go into
implementing this:

1) Split out the check that determines whether we should capture a
particular variable reference, along with the computation of the
type of the field, from the actual act of capturing the
variable.
2) Always compute the result of decltype() within Sema, rather than
AST, because the decltype() computation is now context-sensitive.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150347 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ema/ScopeInfo.h
ema/Sema.h
6dc00f6e98a00bd1c332927c3e04918d7e8b0d4f 12-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Proper initializer list support for new expressions and type construct expressions. Array new still missing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3a45c0e61dfc19f27b8ebcb15dd70159a36f1f9a 12-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Change the way we store initialization kinds so that all direct inits can distinguish between list and parens form. This allows us to correctly diagnose the last test cases from litb.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150343 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
168319c81b8f4e7addf36ad15ef24919faf23504 12-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Employ DirectList initialized entities to properly sort through some initialization edge cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150342 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
5b9cc5df25c2198f270dd1d5c438fdce70d4051d 12-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Represent C++ direct initializers as ParenListExprs before semantic analysis
instead of having a special-purpose function.

- ActOnCXXDirectInitializer, which was mostly duplication of
AddInitializerToDecl (leading e.g. to PR10620, which Eli fixed a few days
ago), is dropped completely.
- MultiInitializer, which was an ugly hack I added, is dropped again.
- We now have the infrastructure in place to distinguish between
int x = {1};
int x({1});
int x{1};
-- VarDecl now has getInitStyle(), which indicates which of the above was used.
-- CXXConstructExpr now has a flag to indicate that it represents list-
initialization, although this is not yet used.
- InstantiateInitializer was renamed to SubstInitializer and simplified.
- ActOnParenOrParenListExpr has been replaced by ActOnParenListExpr, which
always produces a ParenListExpr. Placed that so far failed to convert that
back to a ParenExpr containing comma operators have been fixed. I'm pretty
sure I could have made a crashing test case before this.

The end result is a (I hope) considerably cleaner design of initializers.
More importantly, the fact that I can now distinguish between the various
initialization kinds means that I can get the tricky generalized initializer
test cases Johannes Schaub supplied to work. (This is not yet done.)

This commit passed self-host, with the resulting compiler passing the tests. I
hope it doesn't break more complicated code. It's a pretty big change, but one
that I feel is necessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/ExprCXX.h
ema/Initialization.h
ema/MultiInitializer.h
ema/Sema.h
ecfcd5655758955d8958dc2a7a7b2c8eff2395b7 12-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Drive-by fix of incorrect diagnostic, and a test case for said diagnostic. The double error is unfortunate, but I really don't see an alternative whose effort is worth it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150317 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
91359302b822d829afa93c0dadf5f7ce6e19fbc6 11-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Implement warning for non-wide string literals with an unexpected encoding. Downgrade error for non-wide character literals with an unexpected encoding to a warning for compatibility with gcc and older versions of clang. <rdar://problem/10837678>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150295 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/LiteralSupport.h
668165ab1e604b063c0aa0df8ff91c80879670bf 11-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Make sure Sema creates a field for 'this' captures. (Doug, please double-check that this is correct.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150292 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
41105ad37a2de9bccfcd8137ccfa869cc8345275 11-Feb-2012 Eli Friedman <eli.friedman@gmail.com> const-qualify CXXRecordDecl::getCaptureFields.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f0459f87aaf05e76ce0d8c8c1e4c68e3c22195b7 11-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement C++11 [expr.lambda.prim]p13, which prohibits lambdas in
default arguments if in fact those lambdas capture any entity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fc30829694e62040c14f329f5491724fe7476241 10-Feb-2012 Jim Grosbach <grosbach@apple.com> Have the driver pass CPU and target feature information to cc1as.

When creating the MCSubtargetInfo, the assembler driver uses the CPU and
feature string to construct a more accurate model of what instructions
are and are not legal.

rdar://10840476


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150273 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
6d968363877388f0a0268711d59367907b465ae1 10-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Indexing API: Fully index implict template instantiations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
rontend/MultiplexConsumer.h
1da95dbf2a341faec43439802b23a4f847baa6ad 10-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Update MultiplexASTMutationListener with the missing methods from ASTMutationListener.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
3ac109cd17151bb8ad3a40b0cbb0e1923cd6c4a0 10-Feb-2012 Douglas Gregor <dgregor@apple.com> Allow implicit capture of 'this' in a lambda even when the capture
default is '=', and reword the warning about explicitly capturing
'this' in such lambdas to indicate that only explicit capture is
banned.

Introduce Fix-Its for this and other "save the programmer from
themself" rules regarding what can be explicitly captured and what
must be implicitly captured.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
d37b360bf9f954af119c9805fdc79ab9d30e06c6 10-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR11684, core issue 1417:

o Correct the handling of the restrictions on usage of cv-qualified and
ref-qualified function types.
o Fix a bug where such types were rejected in template type parameter default
arguments, due to such arguments not being treated as a template type arg
context.
o Remove the ExtWarn for usage of such types as template arguments; that was
a standard defect, not a GCC extension.
o Improve the wording and unify the code for diagnosing cv-qualifiers with the
code for diagnosing ref-qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150244 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eefb3d5b49c844347f212073a7e975b8118fe8e9 10-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Track whether a function type has a trailing return type as type sugar. Use this
to pretty-print such function types better, and to fix a case where we were not
instantiating templates in lexical order. In passing, move the Variadic bit from
Type's bitfields to FunctionProtoType to get the Type bitfields down to 32 bits.
Also ensure that we always substitute the return type of a function when
substituting explicitly-specified arguments, since that can cause us to bail
out with a SFINAE error before we hit a hard error in parameter substitution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150241 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
4d8d22bfaed6e5d7da6b5556415b18c43b44e36c 10-Feb-2012 Douglas Gregor <dgregor@apple.com> Extend CXXRecordDecl with a function that determines the mapping from
the variables captured by a lambda to the fields that store the
captured values. To be used in IRgen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
864b1cf13b288c5099911e1265431ffdcac060a4 10-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Update to new resolution for DR1458. When taking the address of an object of
incomplete class type which has an overloaded operator&, it's now just
unspecified whether the overloaded operator or the builtin is used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
0337241e054a8d580ade13edf039e6561878f8dc 10-Feb-2012 David Blaikie <dblaikie@gmail.com> Move -Wswitch from -Wmost to -Wall, consitent with GCC.

This is a relatively noisy warning for a codebase not explicitly designed for
it (effectively enforcing a stylistic constraint about the use of defaults
in switches over enums) & there's nothing Clang does to clean up the noise
when compared to GCC's implementation so the same decision seems suitable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150230 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
d6cf912e1e33167452f328d15b98a790c58c03c0 10-Feb-2012 Ted Kremenek <kremenek@apple.com> Revert r145999. This turned out to be a bad idea. Unfortunately, 'id' is used so profusely
in many APIs and large codebases that this made the deprecated warning trigger happy to
the point of not being useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150223 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
bb3d14e55d267bf5228699c7bf0c8ccdb71c8f46 09-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objc: If a method is not implemented in the category implementation but
has been declared in its primary class, superclass,
or in one of their protocols, no need to issue unimplemented method.
// rdar://10823023


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150206 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
f94d392847fb183b3012dbcb2e372b586c80b9fb 09-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Kill the brief and full explanation fields from StaticDiagInfoRec. They were unused and wasted space for nothing.

- per PR11952.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.td
asic/DiagnosticIDs.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
erialization/SerializationDiagnostic.h
a0c2b21e0d84ad289781e08e14148da6b8b8b76d 09-Feb-2012 Douglas Gregor <dgregor@apple.com> Don't allow deduction of a lambda result type from an initializer
list; it is not an expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150194 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
54042f1bd78f1f1ea86be7d4af541462e127d2ed 09-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement return type deduction for lambdas per C++11
[expr.prim.lambda]p4, including the current suggested resolution of
core isue 975, which allows multiple return statements so long as the
types match. ExtWarn when user code is actually making use of this
extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b326ca8ffbea96f9cc8a457b0f57be880304a6f5 09-Feb-2012 Douglas Gregor <dgregor@apple.com> Remove the "unsupported" error for lambda expressions. It's annoying,
and rapidly becoming untrue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2c5913c48f66bfec9e58a8ad1d90e5eeffad586 09-Feb-2012 Douglas Gregor <dgregor@apple.com> Implement C++ [expr.prim.lambda]p2, which bans lambda expressions in
unevaluated operands. Be certain that we're marking everything
referenced within a capture initializer as odr-used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
44d2dbdce49d1fca3826d543ba875bb82f759091 09-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix ASTReader::FinishedDeserializing().

We were passing a decl to the consumer after all pending deserializations were finished
but this was not enough; due to processing by the consumer we may end up into yet another
deserialization process but the way FinishedDeserializing() was setup we would not ensure
that everything was fully deserialized before returning to the consumer.

Separate ASTReader::FinishedDeserializing() into two semantic actions.
The first is ensuring that a deserialization process ends up will fully deserialized decls/types even
if the process is started by the consumer.
The second is pushing "interesting" decls to the consumer; we make sure that we don't re-enter this
section recursively be checking a variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150160 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
b4e5e286a5cd156247720b1eb204abaa8e09568d 09-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> CWG issue 1405: mutable members are allowed in literal types, but can't undergo
lvalue-to-rvalue conversions in constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150145 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
asic/DiagnosticSemaKinds.td
cdd1c2ec981a13cf9cfde7f5bc1f7c05af222bbf 09-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Fix a typo in the LambdaExpr class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4bbb8501d9db2ae72b1e39afaafa5795d67ffe03 09-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Avoid using Decl::setAttrs() and Decl::setLexicalDeclContext() from the ASTReaderDecl
directly; they internally call Decl::getASTContext() which may crash if a declaration context
parent is still deserializing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
2c0bf2437089f9a297cf18530361a185e76f2150 09-Feb-2012 Aaron Ballman <aaron@aaronballman.com> Adding support for warning when a non-C compatible user-defined type is returned from an extern "C" function.

Fixes bug 6143

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
503384f731b5abcbf870b0a5224eb920e631db0a 09-Feb-2012 Douglas Gregor <dgregor@apple.com> Various interrelated cleanups for lambdas:
- Complete the lambda class when we finish the lambda expression
(previously, it was left in the "being completed" state)
- Actually return the LambdaExpr object and bind to the resulting
temporary when needed.
- Detect when cleanups are needed while capturing a variable into a
lambda (e.g., due to default arguments in the copy constructor), and
make sure those cleanups apply for the whole of the lambda
expression.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150123 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
76e3da57b0e8cf72d221f44d54566ef206341668 08-Feb-2012 Douglas Gregor <dgregor@apple.com> When completing a lambda expression, make sure to check and attach the
body of the lambda to the function call operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/ScopeInfo.h
ema/Sema.h
2fd5983e0da447291a651a347c206aee37a1de5f 08-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement DR1458: Taking the address of an object of incomplete class type is
not a constant expression, because we can't tell whether the complete class type
will have an overloaded operator&.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
cfa8e6530dbc5ed6147281be78bc319dea928d76 08-Feb-2012 Craig Topper <craig.topper@gmail.com> Remove vperm2f* and vperm2i builtins. Same effect can be achieved with builtin_shufflevector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150064 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
925d8e7c0f18e03dc4bc634b3c6c1ec09373d993 08-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Implement the agreed resolution to DR1457: a signed left shift of a 1 bit into
the sign bit doesn't have undefined behavior, but a signed left shift of a 1 bit
out of the sign bit still does. As promised to Howard :)

The suppression of the potential constant expression checking in system headers
is also removed, since the problem it was working around is gone.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
10c57a87d97adb0390c1dd0a69feb7862d5db4a3 08-Feb-2012 Craig Topper <craig.topper@gmail.com> Remove vpermilp* builtins. Same effect can be achieved with builtin_shufflevector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
1a2b8e27135ec72f183dd4510612f6d5d7ee088a 08-Feb-2012 Ted Kremenek <kremenek@apple.com> Move -Wcovered-switch-default out of -Wswitch (and -Wall), and make it an opt-in warning.

This is a great warning, but it was observed that a ton of real world code violates
it all the time for (semi-)legitimate reasons. This warnings is fairly pedantic, which is good,
but not for everyone. For example, there is a fair amount of idiomatic code out there
that does "default: abort()", and similar idioms.

Addresses <rdar://problem/10814651>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
802e02463b880f53a6e645bde78cc412481ce9e0 08-Feb-2012 Ted Kremenek <kremenek@apple.com> Change PathDiagnosticPieces to be reference counted (simplifying their management), and introduce 'PathPieces' as a common container for PathDiagnosticPieces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150054 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
eb2303c76971f3cc89bbb367ce77564ccb7042c1 08-Feb-2012 Ted Kremenek <kremenek@apple.com> Refactor pieces of PathDiagnostic into its own data structure. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150053 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
46e75477bd24a703da11d354587c9bea69d6888f 08-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] For CXXOperatorCallExprs, give a valid source location to the DeclRefExpr
that is referencing the member function, so we can index the referenced function.

Fixes rdar://10762375&10324915 & http://llvm.org/PR11192

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
200fa53fd420aa8369586f569dbece04930ad6a3 08-Feb-2012 John McCall <rjmccall@apple.com> Revise the SplitQualType interface to make it its own thing instead of
a typedef of std::pair. This slightly improves type-safety, but mostly
makes code using it clearer to read as well as making it possible to add
methods to the type.

Add such a method for efficiently single-step desugaring a split type.
Add a method to single-step desugaring a locally-unqualified type.
Implement both the SplitQualType and QualType methods in terms of that.

Also, fix a typo ("ObjCGLifetime").

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150028 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
d7a3e2c5f61cd4893f95b69a424fe4def3aa0f69 07-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Revert my patches which removed Diagnostic.h includes by moving some operator overloads out of line.

This seems to negatively affect compile time onsome ObjC tests
(which use a lot of partial diagnostics I assume). I have to come
up with a way to keep them inline without including Diagnostic.h
everywhere. Now adding a new diagnostic requires a full rebuild
of e.g. the static analyzer which doesn't even use those diagnostics.

This reverts commit 6496bd10dc3a6d5e3266348f08b6e35f8184bc99.
This reverts commit 7af19b817ba964ac560b50c1ed6183235f699789.
This reverts commit fdd15602a42bbe26185978ef1e17019f6d969aa7.
This reverts commit 00bd44d5677783527d7517c1ffe45e4d75a0f56f.
This reverts commit ef9b60ffed980864a8db26ad30344be429e58ff5.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150006 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Decl.h
ST/DeclarationName.h
ST/Mangle.h
ST/NestedNameSpecifier.h
ST/Type.h
asic/Diagnostic.h
asic/PartialDiagnostic.h
ex/PPCallbacks.h
ex/PTHManager.h
ex/Preprocessor.h
ema/CodeCompleteConsumer.h
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaFixItUtils.h
erialization/ASTWriter.h
3f22509ebf91aa96658ca6e5c5c0b926d8d62e34 07-Feb-2012 Chad Rosier <mcrosier@apple.com> In r149662, setDiagnosticMapping was modified to not allow warnings mapped to
MAP_ERROR to be remapped to MAP_WARNING. These new APIs are being added to
allow the diagnostic mapping's "no Werror" bit to be set, and potentially
downgrade anything already mapped to be a warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150001 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
64cb63a0cfa76b278e0791141c7b5a1b424ab434 07-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objc rewriter: start supporting modern objective-c abi
in objective-c rewriter. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149989 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/ASTConsumers.h
849639d8b548519cc5a00c0c9253f0c0d525060d 07-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make parsing of objc @implementations more robust.

Parsing of @implementations was based on modifying global state from
the parser; the logic for late parsing of methods was spread in multiple places
making it difficult to have a robust error recovery.

-it was difficult to ensure that we don't neglect parsing the lexed methods.
-it was difficult to setup the original objc container context for parsing the lexed methods
after completing ParseObjCAtImplementationDeclaration and returning to top level context.

Enhance parsing of @implementations by centralizing it in Parser::ParseObjCAtImplementationDeclaration().
ParseObjCAtImplementationDeclaration now returns only after an @implementation is fully parsed;
all the data and logic for late parsing of methods is now in one place.

This allows us to provide code-completion for late parsed methods with mis-matched braces.
rdar://10775381

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149987 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b534a9ed04b343534e5f277b81d1170de3204164 07-Feb-2012 Aaron Ballman <aaron@aaronballman.com> Hex literals without a significand no longer crash the lexer. Fixes bug 7910

Patch by Eitan Adler

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149984 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
f978059b82db8c0d849c5f992036210b5ca53200 07-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Switch the ObjC*Decl raw_stream overloads to take a reference, for consistency with NamedDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149981 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
01d08018b7cf5ce1601707cfd7a84d22015fc04e 07-Feb-2012 Douglas Gregor <dgregor@apple.com> Introduce basic ASTs for lambda expressions. This covers:
- Capturing variables by-reference and by-copy within a lambda
- The representation of lambda captures
- The creation of the non-static data members in the lambda class
that store the captured variables
- The initialization of the non-static data members from the
captured variables
- Pretty-printing lambda expressions

There are a number of FIXMEs, both explicit and implied, including:
- Creating a field for a capture of 'this'
- Improved diagnostics for initialization failures when capturing
variables by copy
- Dealing with temporaries created during said initialization
- Template instantiation
- AST (de-)serialization
- Binding and returning the lambda expression; turning it into a
proper temporary
- Lots and lots of semantic constraints
- Parameter pack captures


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ST/Type.h
asic/Lambda.h
asic/StmtNodes.td
ema/DeclSpec.h
ema/ScopeInfo.h
a6215b93c45ee5931536b57d10b987747143313b 07-Feb-2012 Ted Kremenek <kremenek@apple.com> Create PathDiagnosticCallEnter and PathDiagnosticCallExit, to remark calls in PathDiagnostics from other events. This will
have potential uses later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149960 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
57300760964904cc022a175643342f29f46b7e6b 07-Feb-2012 Anna Zaks <ganna@apple.com> [analyzer] Allow each CString check to be enabled/disabled
separately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149947 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
e91e0ae772004912285ccc3848b27208da8c045b 07-Feb-2012 Chris Lattner <sabre@nondot.org> tidy up code, make the common case (1-byte strings) come first


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0cf3d471546251b12bdceff360f66c079c40526c 07-Feb-2012 Ted Kremenek <kremenek@apple.com> Add basic BugReporter support for CallEnter/CallExit. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149939 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
0a29422eb722c0ffbb98b98d8636042b19069f1a 07-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Misc improvements to the diagnostic when a variable is odr-used in a context that is not allowed to capture variables.

Fixes PR11883.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e97c58d1f64fca38055deb6669b55f90ae8890ca 07-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Minor comment clarification.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
66581d41527628d4b37f7b05c288f77be7415d7d 06-Feb-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Added source location for the template keyword in DependentTemplateSpecializationTypeLoc nodes (DTSTLoc).

The new info is propagated to TSTLoc on template instantiation, getting rid of 3 FIXMEs in TreeTransform.h and another one Parser.cpp.

Simplified code in TypeSpecLocFiller visitor methods for DTSTLoc and DependentNameTypeLoc by removing what now seems to be dead code (adding corresponding assertions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149923 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
38a42916cb07fd368d9e2ae1e7915fa896f9ec06 06-Feb-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Removed redundant location info from ElaboratedTypeLoc / DependentNameLoc / DependentTSTLoc. Uniformed names referencing elaborated keyword. No intended functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
55d23c925b058be29b792008ddb7d68f6c4fa9a0 06-Feb-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Added location for template keyword in TemplateSpecializationTypeLoc. In the process removed some naming ambiguities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ema/Sema.h
9d9922af13edf3ddf8804a41a98d997324fdd58e 06-Feb-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed instantiation of DependentScopeDeclRefExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
6496bd10dc3a6d5e3266348f08b6e35f8184bc99 05-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Move operator overload out of line. Calling operator<< on a forward declared type doesn't seem to work on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149819 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
b11a7fd2f2204c7aadd74f870c98667d461997f5 05-Feb-2012 Aaron Ballman <aaron@aaronballman.com> Fixing a warning in MSVC (this is also a test commit)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149806 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
d79093af384ac0ea78f4237a001eae7467e06a61 05-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: Implement DR1358: An instantiation of a constexpr function which
can't produce a constant expression is not ill-formed (so long as some
instantiation of that function can produce a constant expression).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149802 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f7ccbad5d9949e7ddd1cbef43d482553b811e026 05-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Basic: import SmallString<> into clang namespace

(I was going to fix the TODO about DenseMap too, but
that would break self-host right now. See PR11922.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149799 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
asic/LLVM.h
ex/LiteralSupport.h
ex/Preprocessor.h
6f42b62b6194f53bcbc349f5d17388e1936535d7 05-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Basic: import OwningPtr<> into clang namespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149798 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/FileRemapper.h
ST/ASTContext.h
nalysis/AnalysisContext.h
asic/FileManager.h
asic/FileSystemStatCache.h
asic/LLVM.h
odeGen/CodeGenAction.h
rontend/ASTUnit.h
rontend/ChainedDiagnosticConsumer.h
rontend/ChainedIncludesSource.h
rontend/CompilerInstance.h
rontend/FrontendAction.h
rontend/MultiplexConsumer.h
rontend/TextDiagnosticPrinter.h
rontend/VerifyDiagnosticConsumer.h
ex/Preprocessor.h
arse/Parser.h
ewrite/FrontendActions.h
ewrite/TokenRewriter.h
ema/Sema.h
erialization/ASTReader.h
erialization/Module.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
7af19b817ba964ac560b50c1ed6183235f699789 05-Feb-2012 NAKAMURA Takumi <geek4civic@gmail.com> Try to fix Benjamin's r149781 on MSVC.

MSVC has complained the definition of "inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, CanQualType T)" in clang/AST/CanonicalType.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
6cd03dbb310f472b14b8d6d69d8c9b5b7f1200e2 04-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> A useful approximation of initializer list constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149792 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
a4e6453d42ab0c0d74c9b6e586bceaea25107662 04-Feb-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Remove an unused and unimplemented function prototype.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149789 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
90feede34bf8edb9ee417109c6b72bf96c3c8fb8 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Some compilers do require Diagnostic.h to be present here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149785 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
2e033a7cc58f92c5351a66efc62e9e9253201c12 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Don't include Diagnostics.h twice when it's required zero times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149784 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
8fe83e1df954d72c0f4ffc15d20a5222ec151c21 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Move a method from IdentifierTable.h out of line and remove the SmallString include.

Fix all the transitive include users.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149783 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/Preprocessor.h
ema/IdentifierResolver.h
fdd15602a42bbe26185978ef1e17019f6d969aa7 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove Diagnostic.h include from Preprocessor.h.

- Move the offending methods out of line and fix transitive includers.
- This required changing an enum in the PPCallback API into an unsigned.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149782 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PTHManager.h
ex/Preprocessor.h
00bd44d5677783527d7517c1ffe45e4d75a0f56f 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Move various diagnostic operator<< overloads out of line and remove includes of Diagnostic.h.

Fix all the files that depended on transitive includes of Diagnostic.h.
With this patch in place changing a diagnostic no longer requires a full rebuild of the StaticAnalyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclarationName.h
ST/Mangle.h
ST/NestedNameSpecifier.h
ST/Type.h
ema/CodeCompleteConsumer.h
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaFixItUtils.h
erialization/ASTWriter.h
ef9b60ffed980864a8db26ad30344be429e58ff5 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Move Storage and StorageAllocator out of the PartialDiagnostic class so we can forward declare them.

Let ASTContext allocate the storage in its BumpPtrAllocator.
This will help us remove ASTContext's depedency on PartialDiagnostic.h soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
asic/PartialDiagnostic.h
c6c090d2722dbae27c7623184bed668f7f29fa4b 04-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> StaticAnalyzer: Remove FixIts from PathDiagnosticPieces.

They were unused and pulled in Diagnostic.h for no reason.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149779 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
282e7e66748cc6dd14d6f7f2cb52e5373c531e61 04-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> In C++11 mode, when an integral constant expression is desired and we have a
value of class type, look for a unique conversion operator converting to
integral or unscoped enumeration type and use that. Implements [expr.const]p5.

Sema::VerifyIntegerConstantExpression now performs the conversion and returns
the converted result. Some important callers of Expr::isIntegralConstantExpr
have been switched over to using it (including all of those required for C++11
conformance); this switch brings a side-benefit of improved diagnostics and, in
several cases, simpler code. However, some language extensions and attributes
have not been moved across and will not perform implicit conversions on
constant expressions of literal class type where an ICE is required.

In passing, fix static_assert to perform a contextual conversion to bool on its
argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
f39aec17b89f8f0dd78e78c50ad2fa08f12272e3 04-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Don't allow a value of a scoped enumeration to be used as the first bound for an
array new expression. This lays some groundwork for the implicit conversion to
integral or unscoped enumeration which C++11 ICEs undergo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149772 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a506586ad3cb0f3635b0e77b86e5e9e5fb2ccc17 04-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Disallow constexpr main.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149770 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0b458fd8b6321c11e8b22727e0e9b9960e93ff4d 04-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a rejects-valid in C++11: array new of a negative size, or overflowing array
new, is well-formed with defined semantics of throwing (a type which can be
caught by a handler for) std::bad_array_new_length, unlike in C++98 where it is
somewhere nebulous between undefined behavior and ill-formed.

If the array size is an integral constant expression and satisfies one of these
criteria, we would previous the array new expression, but now in C++11 mode, we
merely issue a warning (the code is still rejected in C++98 mode, naturally).

We don't yet implement new C++11 semantics correctly (see PR11644), but we do
implement the overflow checking, and (for the default operator new) convert such
expressions to an exception, so accepting such code now does not seem especially
unsafe.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9ec9ce17652819f6d291606fcf295abde2725894 04-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> ArrayRef goodness in MultiplexConsumer, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149764 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/MultiplexConsumer.h
272afe4a6f28a3abdac8a90516bd8a60592195ab 04-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove unused field from FixItRecompile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149762 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/FrontendActions.h
893242f37c1d37644b66e932227adfb1c48885c0 04-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> autoconf: update config header

Sync with the change in r149652.

Also fix the comment to sync with LLVM's config.h header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149748 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
onfig/config.h.in
b3ca2637a9a3aeac5c7103eb4d612528680e7e20 04-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use variable in place of multiple CI.getFrontendOpts() calls and use a bit
of ArrayRef goodness. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149739 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
50a9a12d4f7387bcff3213d4b56e74bab9f4f5d2 04-Feb-2012 Sean Callanan <scallanan@apple.com> Clang has existing support for debuggers that
want to provide "po"-like functionality which
treats the result of an expression implicitly as
"id" (if it is not otherwise known) and prints
it as an Objective-C object.

This has in the past been gated by the
"DebuggerSupport" language option, but that is
too general. Debuggers also provide other commands
like "print" that do not make any assumptions
about whether the object is an Objective-C object.

This patch makes the assumption conditional on a
new language option: DebuggerCastResultToId. I
have also made corresponding modifications to the
testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149735 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
cefc7b20fdb97b989163199e0849b4325e9b7804 04-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Make explicit captures which cause implicit captures work correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149719 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b942cb24a060435b18fef5b43eb33d77afc0d03a 03-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Implement implicit capture for lambda expressions.

Still left: explicit captures in lambdas need to cause implicit capture, and I need to take a look at the diagnostics for some cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
ema/Sema.h
b70126a328f89937f46db42f9e3cba1592887c91 03-Feb-2012 Douglas Gregor <dgregor@apple.com> When a pack expansion occurs in the template argument list of an alias
template without a corresponding parameter pack, don't immediately
substitute the alias template. This is under discussion in the C++
committee, and may become ill-formed, but for now we match GCC.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149697 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
acbabf177079ed41c055b1484465082f9f1d3d06 03-Feb-2012 Hans Wennborg <hans@hanshq.net> Don't warn about anonymous struct/union in C11.

Also, in C, call this a C11 extension rather than a GNU extension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149695 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
71fd6cc843719cab528a5df0899ad3d15cb9297f 03-Feb-2012 Bob Wilson <bob.wilson@apple.com> Fix -ftrap-function fallout from llvm r145714. <rdar://problem/10799325>

That llvm change removed the -trap-func backend option, so that using
-ftrap-function with clang would cause the backend to complain. Fix it
by adding the trap function name to the CodeGenOptions and passing it through
to the TargetOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149679 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
a83f4d2315dbeb3914868f1ccb8e74fb2ccdbb0c 03-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change Lexer::makeFileCharRange() to have it accept a CharSourceRange
instead of a SourceRange, and handle the case where the range is
a char (not token) range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149677 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ex/Lexer.h
cbf46a0b2bb2b47d6e13437e0d52cc583c5ce539 03-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change the fixed array of FixitHints to a SmallVector to lift off
the limit on the number of fixits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149676 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
8deabc133c121f6c5561d0b2171a41cb2c29b2ce 03-Feb-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move isSentinelNullExpr() from Sema to ASTContext to make it more widely
available.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149675 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ema/Sema.h
d603bd12680c832d81f98568223ce0171e16a967 03-Feb-2012 Ted Kremenek <kremenek@apple.com> Further downgrade -Warc-bridge-casts-disallowed-in-nonarc to a warning (not mapped to an error). We can consider mapping it back to an error later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149670 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2e5156274b8051217565b557bfa14c80f7990e9c 03-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> Thread safety analysis:
* When we detect that a CFG block has inconsistent lock sets, point the
diagnostic at the location where we found the inconsistency, and point a note
at somewhere the inconsistently-locked mutex was locked.
* Fix the wording of the normal (non-loop, non-end-of-function) case of this
diagnostic to not suggest that the mutex is going out of scope.
* Fix the diagnostic emission code to keep a warning and its note together when
sorting the diagnostics into source location order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149669 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
asic/DiagnosticSemaKinds.td
d67d0cc40f31956b40b44b6ee3619d17a0f73294 03-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Note whether a lambda is mutable in the LambdaScopeInfo; this information will be necessary to handle references to captured variables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149660 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
05072804cfba9f5635d126b14c136e3887e0a0c0 03-Feb-2012 Ted Kremenek <kremenek@apple.com> Make error about using bridge casts in non-ARC mode a warning that is default mapped to an error. This is to ease the transition of large apps moving from non-ARC to ARC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
4cc9b10523b61ed260767aeb62cc36fd7734a942 03-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objc: Issue diagnostic when receiver type is a forward class declaration and
it is treated as of 'id' type resulting in multiple method lookup.
// rdar://10686120


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149653 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
353300c4af020ce5d8368d1c336cbf7583c33a7d 03-Feb-2012 Rafael Espindola <rafael.espindola@gmail.com> Replace the old --with-cxx-* configure options with a single --with-gcc-toolchain
that just uses the new toolchain probing logic. This fixes linking with -m32 on
64 bit systems (the /32 dir was not being added to the search).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149652 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
773303a505c23d73da624f1e6abcf41a393dad2b 03-Feb-2012 Douglas Gregor <dgregor@apple.com> Rename -dependency-graphviz to -dependencncy-dot

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149645 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/DependencyOutputOptions.h
d2cce136878badcee6694b216479d7f1b72a1e68 03-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Add some code to accurately perform odr-used marking for variables per the C++11 rules.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149641 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2f04f1843ca0ffca13b8b0d4dadd1f50dffb38b8 02-Feb-2012 Douglas Gregor <dgregor@apple.com> Back out my heinous hack that tricked the module generation mechanism
into using non-absolute system includes (<foo>)...

... and introduce another hack that is simultaneously more heineous
and more effective. We whitelist Clang-supplied headers that augment
or override system headers (such as float.h, stdarg.h, and
tgmath.h). For these headers, Clang does not provide a module
mapping. Instead, a system-supplied module map can refer to these
headers in a system module, and Clang will look both in its own
include directory and wherever the system-supplied module map
suggests, then adds either or both headers. The end result is that
Clang-supplied headers get merged into the system-supplied module for
the C standard library.

As a drive-by, fix up a few dependencies in the _Builtin_instrinsics
module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149611 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
5f2987c11491edb186401d4e8eced275f0ea7c5e 02-Feb-2012 Eli Friedman <eli.friedman@gmail.com> Split Sema::MarkDeclarationReferenced into multiple functions; the additional entry points are needed to implement C++11 odr-use marking correctly. No functional change in this patch; I'll actually make the change which fixes the odr-use marking in a followup patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149586 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f15fda02e9c8c82b4a716618f4010b9af8bff796 02-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr:
* support the gcc __builtin_constant_p() ? ... : ... folding hack in C++11
* check for unspecified values in pointer comparisons and pointer subtractions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticASTKinds.td
c69a181049ab52da29f8f69316a34c90c3ea3b8e 02-Feb-2012 Douglas Gregor <dgregor@apple.com> Introduce a -cc1 option "-dependency-graphviz" that determines header
dependencies and outputs them in GraphViz format.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149575 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/DependencyOutputOptions.h
rontend/Utils.h
34a2c42ba8cc58a404238a3c1cbc4a7442e57832 02-Feb-2012 Ted Kremenek <kremenek@apple.com> Per discussion on cfe-dev, remove '#error' and '#warning' from diagnostic text.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
20039ae1d9f520d8395899d807473b638fb48688 02-Feb-2012 Rafael Espindola <rafael.espindola@gmail.com> Reject mismatched "#pragma GCC visibility push" and "#pragma GCC visibility pop".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149559 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
52b6236427e7b608eadaac2bf8f5a24dd16a1130 01-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> Look for declaration of CFBridgingRetain/CFBridgingRetain before
changing the diagnostic. Also use correct spelling for both.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149554 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
873488a9d5ab7774bdcccada7ef0f90e5e5eda14 01-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> make: fix installation of generated header files

The PROJ_SRC_DIR != PROJ_OBJ_DIR path was missing the directory
creation logic that was in the path for non-generated headers.
PR11903.

(The oversight was copied and pasted from LLVM's Makefile.rules,
where it apparently existed since time immemorial til it was
corrected in r127325.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149551 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
ac32ff9812e7d6bc31573b5499bfd005fc8b8f39 01-Feb-2012 Douglas Gregor <dgregor@apple.com> Make sure that imported definitions get completed before we add
anything into the corresponding DeclContext. Co-hacked with Sean;
fixes <rdar://problem/10768928>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
c36bedc90c687caa71748480c60707ea4608b092 01-Feb-2012 Anna Zaks <ganna@apple.com> Add a new compiler warning, which flags anti-patterns used as the size
argument in strncat.

The warning is ignored by default since it needs more qualification.

TODO: The warning message and the note are messy when
strncat is a builtin due to the macro expansion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
a1f2114d9e81923c750f6b439302ac03552c37db 01-Feb-2012 Douglas Gregor <dgregor@apple.com> Introduce the lambda scope before determining explicit captures, which
cleans up and improves a few things:
- We get rid of the ugly dance of computing all of the captures in
data structures that clone those of CapturingScopeInfo, centralizing
the logic for accessing/updating these data structures
- We re-use the existing capture logic for 'this', which actually
works now.

Cleaned up some diagnostic wording in minor ways as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149516 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
ema/Sema.h
04f7a889b29f832d7bf66dcefdd7adbf0bddc4da 01-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> autoconf: add private config.h to clang

This already exists in the CMake build, which is part of what makes
building clang separately from llvm via cmake possible. This cleans up
that discrepancy between the build systems (and sets the groundwork
for configuring clang separately, too).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149497 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.in
36579d4f5510e8eb823171f532d6b19ce4250a92 01-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Frontend: fix comment typos

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149495 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
7b48a2986345480241f3b8209f71bb21b0530b4f 01-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: overflow checking for integral and floating-point arithmetic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
b04035a7b1a3c9b93cea72ae56dd2ea6e787bae9 01-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: require 'this' to point to an object in a constexpr method call.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149467 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
b02e4629f78a0c0c0adf9d66b644e5932a781c7e 01-Feb-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: add support for comparisons of pointer-to-members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149463 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
93962e5360a43200faa70939571afc4fb9326cf7 01-Feb-2012 Douglas Gregor <dgregor@apple.com> Improve checking of explicit captures in a C++11 lambda expression:
- Actually building the var -> capture mapping properly (there was an off-by-one error)
- Keeping track of the source location of each capture
- Minor QoI improvements, e.g, highlighing the prior capture if
there are multiple captures, pointing at the variable declaration we
found if we reject it.

As part of this, add standard citations for the various semantic
checks we perform, and note where we're not performing those checks as
we should.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149462 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
fe9b559f81535ade84d24c42569378f80df47847 01-Feb-2012 Douglas Gregor <dgregor@apple.com> Diagnose attempts to explicitly capture a __block variable in a lambda.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149458 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16e46dd0c284296cea819dfbf67942ecef02894d 01-Feb-2012 Kaelyn Uhrain <rikka@google.com> Make the callback object to Sema::CorrectTypo mandatory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149451 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7eb82f0d094d7180e7dee4fdea6a276c5febf81b 01-Feb-2012 Fariborz Jahanian <fjahanian@apple.com> objc-arc: In various diagnostics mention
CFBridgingRetain/CFBridgingRelease calls instead
of __bridge_retained/__bridge_transfer casts as preferred
way of moving cf objects to arc land. // rdar://10207950


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149449 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e00575f12cf280621ef0ed4d69e909bdfc9fef62 31-Jan-2012 Anna Zaks <ganna@apple.com> [analyzer] Add checks for common anti-patterns in strncat.
(Since this is syntax only, might be a good candidate for turning into a
compiler warning.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149407 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
82f28583b8e81ae9b61635a0652f6a45623df16d 31-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: the result of a relational operator between pointers to void is
unspecified unless the pointers are equal; therefore, such a comparison is not
a constant expression unless the pointers are equal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149366 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
789f9b6be5df6e5151ac35e68416cdf550db1196 31-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: catch a collection of integral undefined behaviors:
-INT_MIN and INT_MIN / -1
Shift by a negative or too large quantity
Left shift of negative value
Overflow in left shift



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149344 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
a5888f61be9f8d76e9b48a453dbced50523bd2e0 31-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Reapply r149311 which I reverted by mistake.

Original log:

Convert ProgramStateRef to a smart pointer for managing the reference counts of ProgramStates. This leads to a slight memory
improvement, and a simplification of the logic for managing ProgramState objects.
# Please enter the commit message for your changes. Lines starting

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149339 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
1d16f0f805c2a3e2198a87154990347b2759f6bd 31-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Revert r149083 which is not the direction we're going in the Clang
driver based on discussions with Doug Gregor. There are several issues:
1) The patch was not reviewed prior to commit and there were review comments.
2) The design of the functionality (triple-prefixed tool invocation)
isn't the design we want for Clang going forward: it focuses on the
"user triple" rather than on the "toolchain triple", and forces that
bit of state into the API of every single toolchain instead of
handling it automatically in the common base classes.
3) The tests provided are not stable. They fail on a few Linux variants
(Gentoo among them) and on mingw32 and some other environments.

I *am* interested in the Clang driver being able to invoke
triple-prefixed tools, but we need to design that feature the right way.
This patch just extends the previous hack without fixing the underlying
problems with it. I'm working on a new design for this that I will mail
for review by tomorrow.

I am aware that this removes functionality that NetBSD relies on, but
this is ToT, not a release. This functionality hasn't been properly
designed, implemented, and tested yet. We can't "regress" until we get
something that really works, both with the immediate use cases and with
long term maintenance of the Clang driver.

For reference, the original commit log:
Keep track of the original target the user specified before
normalization. This used to be captured in DefaultTargetTriple and is
used for the (optional) $triple-$tool lookup for cross-compilation.
Do this properly by making it an attribute of the toolchain and use it
in combination with the computed triple as index for the toolchain
lookup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149337 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
b9b0f6fb6e113b5e6be3ed9754c4bf01186a17bf 31-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r149311 which failed to compile.

Original log:

Convert ProgramStateRef to a smart pointer for managing the reference counts of ProgramStates. This leads to a slight memory
improvement, and a simplification of the logic for managing ProgramState objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149336 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
339b9072e26a2a0fe796dc69c4d28d964d0ec86d 31-Jan-2012 Nico Weber <nicolasweber@gmx.de> Let %S, %ls, %C match 16bit types in NSStrings.

As discussed at http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120130/052200.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149325 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
841c96a885789afea9d32d1d842033768c6d2b19 31-Jan-2012 Ted Kremenek <kremenek@apple.com> Minor refactor within ExplodedGraph::reclaimRecentlyAllocatedNodes(). No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149320 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
72e93068c9f2a2f05f5932cdd917c0d2961f11d9 31-Jan-2012 Ted Kremenek <kremenek@apple.com> Convert ProgramStateRef to a smart pointer for managing the reference counts of ProgramStates. This leads to a slight memory
improvement, and a simplification of the logic for managing ProgramState objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149311 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
23111dcd66ee242bb5caf1ecab01bd930ee42c4c 31-Jan-2012 Ted Kremenek <kremenek@apple.com> Convert more uses of 'const ProgramState *' to 'ProgramStateRef' (and related cleanups).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149310 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
013b3668b67c8cb3ad2ee516c5607a3eba11829f 30-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> SmallBitVectorize the deduced parameter set.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149253 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e29cdebb4b9bb435d58aec5da844f46cf78cfbe2 30-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Fix yet another issue introduced when renaming '-ccc-host-triple' to
'-target'. The original flag was part of a flag group that marked it as
driver-only. The new flag didn't ever get equivalent treatment. This
caused the '-target' flag to get passed down to any raw GCC invocation.
Marking it as a driver option fixes this and PR11875.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149244 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
34269df5db40b7c4b4f52aed579d9b3108ff79e4 30-Jan-2012 Jean-Daniel Dupas <devlists@shadowlab.org> Update on format attribute handling.
- Remove the printf0 special handling as we treat it as printf anyway.
- Perform basic checks (non-literal, empty) for all formats and not only printf/scanf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149236 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f8495d67ca4dd2ea15a4dc59e9a2fa32a9bfa475 30-Jan-2012 Craig Topper <craig.topper@gmail.com> Cleanup 3dnow builtin handling. Most of them were already handled by LLVM connecting intrinsics and builtins in IntrinsicsX86.td.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149233 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
af5f550de34525b27f0ff31dafce792caf8158b6 30-Jan-2012 Anna Zaks <ganna@apple.com> [analyzer] Add index out of bounds check for CFArrayGetArrayAtIndex.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149228 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
e727d21d3fd5f6f68d9e7a260bbf84dc2fc8ae3a 30-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce TargetInfo::hasFeature() to query various feature names in
each of the targets. Use this for module requirements, so that we can
pin the availability of certain modules to certain target features,
e.g., provide a module for xmmintrin.h only when SSE support is
available.

Use these feature names to provide a nearly-complete module map for
Clang's built-in headers. Only mm_alloc.h and unwind.h are missing,
and those two are fairly specialized at the moment. Finishes
<rdar://problem/10710060>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149227 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
dc58aa71026cce539ca9b5c2c52cc4efc7bd77fe 30-Jan-2012 Douglas Gregor <dgregor@apple.com> Thread a TargetInfo through to the module map; we'll need it for
target-specific module requirements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
ex/HeaderSearch.h
ex/ModuleMap.h
c5b2e58840748145d1706c1d1481369d1863fabf 29-Jan-2012 Douglas Gregor <dgregor@apple.com> Implement code completion support for module import declarations, e.g.,

@import <complete with module names here>

or

@import std.<complete with submodule names here>

Addresses <rdar://problem/10710117>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149199 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ex/ModuleLoader.h
ex/ModuleMap.h
ema/Sema.h
e434ec71fccfe078906403affd641f709702d598 29-Jan-2012 Douglas Gregor <dgregor@apple.com> Rework HeaderSearch's interface for getting a module from a name and
for getting the name of the module file, unifying the code for
searching for a module with a given name (into lookupModule()) and
separating out the mapping to a module file (into
getModuleFileName()). No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149197 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
4188760f6bb20f91c6883dffd89204419f852dee 29-Jan-2012 John McCall <rjmccall@apple.com> Complain about attempts to use 'protected' visibility on targets
like Darwin that don't support it. We should also complain about
invalid -fvisibility=protected, but that information doesn't seem
to exist at the most appropriate time, so I've left a FIXME behind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149186 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
a49a2839266f0bac2b6286e9f49fdc0c292938fe 28-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Make the __builtin_c[lt]zs builtins target independent.

There is really no reason to have these only available on x86. It's
just __builtin_c[tl]z for shorts.

Modernize the test while at it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/BuiltinsX86.def
c35fb7d67d515659ad2325b4f6ec97c9fe64fb63 28-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> StaticAnalyzer: Move ObjC- and CXX-specific methods out of line so checkers that don't care about the language don't have to pull in all the headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149178 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/Store.h
82e6411d004064a29f03a3ea8b8919f297bfa843 28-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> DiagnosticsEngine::setMappingToAllDiagnostics() does not need to return bool,
caught by Chad.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149173 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
5faf5d31fa634e1fdb576c4d9708cd4efa5ea310 28-Jan-2012 Jean-Daniel Dupas <devlists@shadowlab.org> Remove the "C" in "implicitly declaring C library function" diagnostic
because all functions are not C functions (i.e. NSLog).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149150 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a1f1fad8b60e1cb9d21a40a37f2e03150bcbeb6f 27-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce module attributes into the module map grammar, along with a
single attribute ("system") that allows us to mark a module as being a
"system" module. Each of the headers that makes up a system module is
considered to be a system header, so that we (for example) suppress
warnings there.

If a module is being inferred for a framework, and that framework
directory is within a system frameworks directory, infer it as a
system framework.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/Module.h
asic/SourceManager.h
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ex/HeaderSearch.h
ex/ModuleMap.h
e4b92761b43ced611c417ae478568610f1ad7b1e 27-Jan-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Added source location for the template keyword in AST template-id expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/TemplateBase.h
arse/Parser.h
ema/ParsedTemplate.h
ema/Sema.h
fad03b75e0297546c5d12ec420b5b79d5b7baa2a 27-Jan-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Avoid redundant NNS qualification in constructor/destructor names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149124 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
11583c757bac6ce5c342f2eb572055dd2619a657 27-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Due to a bug, -Wno-everything works like -Weverything. Fix the bug by having
-Wno-everything remap all warnings to ignored.

We can now use "-Wno-everything -W<warning>" to ignore all warnings except
specific ones.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149121 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
cff9f26ce0ed76d555cd33b3dca84dd5cdf376af 27-Jan-2012 Douglas Gregor <dgregor@apple.com> Reimplement (de-)serialization of Objective-C categories to eliminate
the direct serialization of the linked-list structure. Instead, use a
scheme similar to how we handle redeclarations, with redeclaration
lists on the side. This addresses several issues:
- In cases involving mixing and matching of many categories across
many modules, the linked-list structure would not be consistent
across different modules, and categories would get lost.
- If a module is loaded after the class definition and its other
categories have already been loaded, we wouldn't see any categories
in the newly-loaded module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149112 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
745f5147e065900267c85a5568785a1991d4838f 27-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: Implement the [dcl.constexpr]p5 check for whether a constexpr
function definition can produce a constant expression. This also provides the
last few checks for [dcl.constexpr]p3 and [dcl.constexpr]p4.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149108 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
8b30a9379f730875ba8fb2d0fe2d43611e0c20ff 26-Jan-2012 Bob Wilson <bob.wilson@apple.com> Make clz/ctz builtins defined for zero on ARM targets. rdar://10732455

ARM supports clz and ctz directly and both operations have well-defined
results for zero. There is no disadvantage in performance to using the
defined-at-zero versions of llvm.ctlz/cttz intrinsics. We're running into
ARM-specific code written with the assumption that __builtin_clz(0) == 32,
even though that value is technically undefined. The code is failing now
because of llvm optimizations that are taking advantage of the undef
behavior (specifically svn r147255). There's nothing wrong with that
optimization on x86 where any incorrect assumptions about __builtin_clz(0)
will quickly be exposed. For ARM, though, optimizations based on that undef
behavior are likely to cause subtle bugs. Other targets with defined-at-zero
clz/ctz support may want to override the default behavior as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149086 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
34144f67610be0ac6cb0d85d77bd57662b9232b9 26-Jan-2012 Joerg Sonnenberger <joerg@bec.de> Keep track of the original target the user specified before
normalization. This used to be captured in DefaultTargetTriple and is
used for the (optional) $triple-$tool lookup for cross-compilation.
Do this properly by making it an attribute of the toolchain and use it
in combination with the computed triple as index for the toolchain
lookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149083 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
8bef8238181a30e52dea380789a7e2d760eac532 26-Jan-2012 Ted Kremenek <kremenek@apple.com> Change references to 'const ProgramState *' to typedef 'ProgramStateRef'.

At this point this is largely cosmetic, but it opens the door to replace
ProgramStateRef with a smart pointer that more eagerly acts in the role
of reclaiming unused ProgramState objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149081 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
bbdfad581fa300fa0d162d968ec14de3c95fc760 26-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc-arc: introduce -no-finalize-removal which in gc mode,
leaves "finalize' behind and in arc mode, does not
include it. This allows the migrated source to be compiled
in both gc and arc mode. // rdar://10532441


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149079 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
4fe19b5bf0db0cbe6afa280ed9f52ed4cb631e53 26-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change HasMutableFields to HasOnlyCMembers and consider that a tag inside
another tag does not break C-like-ness. rdar://10756831

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
453dbcbe30093fbf947a0bec2fbd46e9694eafe9 26-Jan-2012 Douglas Gregor <dgregor@apple.com> Extend the ExternalASTSource interface to allow the AST source to
provide the layout of records, rather than letting Clang compute
the layout itself. LLDB provides the motivation for this feature:
because various layout-altering attributes (packed, aligned, etc.)
don't get reliably get placed into DWARF, the record layouts computed
by LLDB from the reconstructed records differ from the actual layouts,
and badness occurs. This interface lets the DWARF data drive layout,
so we don't need the attributes preserved to get the answer write.

The testing methodology for this change is fun. I've introduced a
variant of -fdump-record-layouts called -fdump-record-layouts-simple
that always has the simple C format and provides size/alignment/field
offsets. There is also a -cc1 option -foverride-record-layout=<file>
to take the output of -fdump-record-layouts-simple and parse it to
produce a set of overridden layouts, which is introduced into the AST
via a testing-only ExternalASTSource (called
LayoutOverrideSource). Each test contains a number of records to lay
out, which use various layout-changing attributes, and then dumps the
layouts. We then run the test again, using the preprocessor to
eliminate the layout-changing attributes entirely (which would give us
different layouts for the records), but supplying the
previously-computed record layouts. Finally, we diff the layouts
produced from the two runs to be sure that they are identical.

Note that this code makes the assumption that we don't *have* to
provide the offsets of bases or virtual bases to get the layout right,
because the alignment attributes don't affect it. I believe this
assumption holds, but if it does not, we can extend
LayoutOverrideSource to also provide base offset information.

Fixes the Clang side of <rdar://problem/10169539>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
asic/LangOptions.def
river/CC1Options.td
rontend/FrontendOptions.h
rontend/LayoutOverrideSource.h
f8de042335b7f4c037478ee0149ecf1f5c6d4a52 26-Jan-2012 Bob Wilson <bob.wilson@apple.com> Fix a minor bug in r148582, which made -ccc-host-triple into an alias option.
I'm not adding a testcase because -ccc-host-triple is slated to be removed,
but clang crashes if you try to use -ccc-host-triple without this fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149048 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c8af9107fd1eb014d9124b753c38c4d06fa219f4 26-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> In FixItRewriteToTemp::RewriteFilename don't try to close the file descriptor
with close(); return it instead.

Fixes mingw build and eliminates possible racing issues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149043 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/FixItRewriter.h
95b68f94d28a4b94f4c3fb029b9f1690e1bb728b 26-Jan-2012 Peter Collingbourne <peter@pcc.me.uk> Simplify {Record,Enum}Type::classof.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
84b007fae6c0cd30fa07074d34fbe2bf61fa44f9 26-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Refactor to share code for handling return statements between lambda expressions and block literals. As it turns out, almost all the logic can be shared.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149031 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
61d679ab2831b161c857cf3f974312fbd4ef1efd 26-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce 3 new fixit options:

-fixit-recompile
applies fixits and recompiles the result
-fixit-to-temporary
applies fixits to temporary files
-fix-only-warnings">,
applies fixits for warnings only, not errors

Combining "-fixit-recompile -fixit-to-temporary" allows testing the result of fixits
without touching the original sources.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/CC1Options.td
rontend/FrontendOptions.h
ewrite/FixItRewriter.h
ewrite/FrontendActions.h
426fc94ed3bce15b55c43692537e3833388f0352 26-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Fix our handling of #pragma GCC visibility.
Now the lexer just produces a token and the parser is the one responsible for
activating it.
This fixes problem like the one pr11797 where the lexer and the parser were not
in sync. This also let us be more strict on where in the file we accept
these pragmas.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
26f0e4e7ab534fb42485c930f20a424ecc8c9830 26-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> arc migrator: Added an option to the migrator
unused yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149001 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/MigratorOptions.h
bac341346f3c8e713a8f165120fd54b500ee3189 26-Jan-2012 Ted Kremenek <kremenek@apple.com> Rework flushing of diagnostics to PathDiagnosticConsumer. Now all the reports are batched up before being flushed
to the underlying consumer implementation. This allows us to unique reports across analyses to multiple functions (which
shows up with inlining).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148997 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
0f12507d43c2571108c65f106c1dac5bba2509f0 25-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Improve the error message slightly for files that aren't using the expected UTF-8 encoding. Patch by Seth Cantrell.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148991 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
3943b1c0215da2a4171dd6c696cb75d19e5a04a9 25-Jan-2012 Kaelyn Uhrain <rikka@google.com> Allow typo correction to be disabled in BuildOverloadedCallExpr variant.

This suppresses typo correction for auto-generated call expressions such
as to 'begin' or 'end' within a C++0x for-range statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148979 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
cd78e612d6fa8e214e6a6bb0e739a0c3e419df91 25-Jan-2012 Kaelyn Uhrain <rikka@google.com> Avoid correcting unknown identifiers to types where types aren't allowed.

Pass a typo correction callback object from ParseCastExpr to
Sema::ActOnIdExpression to be a bit more selective about what kinds of
corrections will be allowed for unknown identifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148973 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
60a09dcc4656b82c7f96f8719a403a83247f6742 25-Jan-2012 Kaelyn Uhrain <rikka@google.com> Add custom callback object for typo correction in BuildRecoveryCallExpr.

The new callback, in addition to limiting which keywords to include in
the pool of typo correction candidates, also filters out non-keyword
candidates that don't refer to (template) functions that accept the
number of arguments that are present for the call being recovered.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148962 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
d1bb4ae6cbc0f8bea4b329e040f58b18c03388e7 25-Jan-2012 Douglas Gregor <dgregor@apple.com> When we're substituting into a function parameter pack and expect to
get a function parameter pack (but don't due to weird substitutions),
complain. Fixes the last bit of PR11848.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148960 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0671555f51808b88578bf9c383ef6ba36bb17d5f 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Delete still more remnants of the now dead HostInfo. The janitoring will
continue until cleanliness improves.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148951 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
18d7f3af752c41a197552a1ff25ddd639224b4bb 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Delete the driver's HostInfo class. This abstraction just never really
did anything. The two big pieces of functionality it tried to provide
was to cache the ToolChain objects for each target, and to figure out
the exact target based on the flag set coming in to an invocation.
However, it had a lot of flaws even with those goals:
- Neither of these have anything to do with the host, or its info.
- The HostInfo class was setup as a full blown class *hierarchy* with
a separate implementation for each "host" OS. This required
dispatching just to create the objects in the first place.
- The hierarchy claimed to represent the host, when in fact it was
based on the target OS.
- Each leaf in the hierarchy was responsible for implementing the flag
processing and caching, resulting in a *lot* of copy-paste code and
quite a few bugs.
- The caching was consistently done based on architecture alone, even
though *any* aspect of the targeted triple might change the behavior
of the configured toolchain.
- Flag processing was already being done in the Driver proper,
separating the flag handling even more than it already is.

Instead of this, we can simply have the dispatch logic in the Driver
which previously created a HostInfo object create the ToolChain objects.
Adding caching in the Driver layer is a tiny amount of code. Finally,
pulling the flag processing into the Driver puts it where it belongs and
consolidates it in one location.

The result is that two functions, and maybe 100 lines of new code
replace over 10 classes and 800 lines of code. Woot.

This also paves the way to introduce more detailed ToolChain objects for
various OSes without threading through a new HostInfo type as well, and
the accompanying boiler plate. That, of course, was the yak I started to
shave that began this entire refactoring escapade. Wheee!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148950 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
4d7ff6e8639bdce74e39b90370729ad0179ebcca 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Switch the ToolChain types to all store a Driver reference rather than
a HostInfo reference. Nothing about the HostInfo was used by any
toolchain except digging out the driver from it. This just makes that
a lot more direct. The change was accomplished entirely mechanically.
It's one step closer to removing the shim full of buggy copy/paste code
that is HostInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148945 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
08386a9769575bd8290024aaaecb2dbad5bfd59d 25-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Remove the TargetTriple object that I added to the Driver recently. This
helped stage the refactoring of things a bit, but really isn't the right
place for it. The driver may be responsible for compilations with many
different targets. In those cases, having a target triple in the driver
is actively misleading because for many of those compilations that is
not actually the triple being targeted.

This moves the last remaining users of the Driver's target triple to
instead use the ToolChain's target triple. The toolchain has a single,
concrete target it operates over, making this a more stable and natural
home for it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148942 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
2ee2ac2293f313dfe1c6eb7034527a92b5d23158 25-Jan-2012 Craig Topper <craig.topper@gmail.com> Represent 256-bit unaligned loads natively and remove the builtins. Similar change was made for 128-bit versions a while back.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
8efca6bb688d32fd7c0d91b504ef3307f97ee66a 25-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce a generation number for selector lookups in the global
method pool, so that we don't perform the same lookups into the same
PCH/module file repeatedly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148895 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
5ac4b6917aa34fae6da64036539023a6155a3d48 25-Jan-2012 Douglas Gregor <dgregor@apple.com> Rework the external Sema source's ReadMethodPool() so that it doesn't
return pre-built lists. Instead, it feeds the methods it deserializes
to Sema so that Sema can unique them, which keeps the chains shorter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148889 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedIncludesSource.h
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
9d0064e802e81d0833e8ccab8978b17c0bac3625 25-Jan-2012 Ted Kremenek <kremenek@apple.com> Reduce peak memory usage of the static analyzer on sqlite3 (when using inlining) by 30%.

This is accomplished by periodically reclaiming nodes in the graph. This was an optimization
done before the CFG was linearized, but the CFG linearization destroyed that optimization since each
freshly created node couldn't be reclaimed and we only looked at a window of nodes created between
each ProcessStmt. This optimization can be reclaimed my merely expanding the window to N number of nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148888 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
b5c6babd3d8e0233b8ea5a4eb1e2700e30c0d396 25-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> arc migrator: Provide infrastructure to add options
specific to migrator. Use its first option to
warn migrating from GC to arc when
NSAllocateCollectable/NSReallocateCollectable is used.
// rdar://10532541


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148887 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInvocation.h
rontend/MigratorOptions.h
1acbe5e65631c7b52fa559df2bdcfdf76d4c410a 24-Jan-2012 Jean-Daniel Dupas <devlists@shadowlab.org> Replace a hack to handle NSLog/NSLogv in sema by declaring them as Library Builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
9bc4fc4ee96f6da0e7be3edfdedd45912e5f1161 24-Jan-2012 Jean-Daniel Dupas <devlists@shadowlab.org> Remove trailing slash in front of header name of ObjC builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
fca84b232dd74c91b2e0f963a3f8c3bd351a9037 24-Jan-2012 Nick Lewycky <nicholas@mxc.ca> Add a new warning, -Wover-aligned, which detects attempts to use the default
allocator to construct an object which declares more alignment than the default
allocator actually provides. Fixes PR9527!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148857 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
466f45a06b654d85e9504e37ccf7255ffe4f0e2b 24-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc: Issue a generic diagnostic assigning to
an objc object in any abi mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148847 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
71efba0bbafaefab14419fbd284efff5f7acade7 24-Jan-2012 Kostya Serebryany <kcc@google.com> The following patch adds __attribute__((no_address_safety_analysis)) which will allow to disable
address safety analysis (such as e.g. AddressSanitizer or SAFECode) for a specific function.

When building with AddressSanitizer, add AddressSafety function attribute to every generated function
except for those that have __attribute__((no_address_safety_analysis)).

With this patch we will be able to
1. disable AddressSanitizer for a particular function
2. disable AddressSanitizer-hostile optimizations (such as some cases of load widening) when AddressSanitizer is on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148842 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
ecd7b04ae7764179d40ee4e3e49c99d1fbcb4eff 24-Jan-2012 Douglas Gregor <dgregor@apple.com> Promote the extension warning for attempts to catch a reference or
pointer to incomplete type from an ExtWarn to an error. We put the
ExtWarn in place as part of a workaround for Boost (PR6527), but it
(1) doesn't actually match a GCC extension and (2) has been fixed for
two years in Boost, and (3) causes us to emit code that fails badly at
run time, so it's a bad idea to keep it. Fixes PR11803.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
7b383e4a3888c2bebc2762a94c23ad1fbb060281 24-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc: issue error if assigning objects in fragile-abi too.
// rdar://10731065


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148823 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5d5051f3e79bf754134ccdf7a1dc7778cd80c73e 24-Jan-2012 Douglas Gregor <dgregor@apple.com> Only mark an IdentifierInfo as having changed since deserialization
when it actually has changed (and not, e.g., when we've simply attached a
deserialized macro definition). Good for ~1.5% reduction in module
file size, mostly in the identifier table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148808 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
4a04d0b4aa33e98ea9e7b3e787f0490585ce9b6f 24-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Remove HostInfo::useDriverDriver(). This was only used in two places
inside the innards of the Driver implementation, and only ever
implemented to return 'true' for the Darwin OSes. Instead use a more
direct query on the target triple and a comment to document why the
target matters here.

If anyone is worried about this predicate getting wider use or improper
use, I can make it a local or private predicate in the driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148797 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
91e6076b9bf5e09dc6b202d17a5647b724e6f6e6 24-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Hoist the targeted triple object into an actual object in the Driver.
The Driver has a fixed target, whether we like it or not, the
DefaultTargetTriple is not a default. This at least makes things more
honest. I'll eventually get rid of most (if not all) of
DefaultTargetTriple with this proper triple object. Bit of a WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148796 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
f211662199c87461f3b1475a549ab439c63ca83b 24-Jan-2012 David Blaikie <dblaikie@gmail.com> Support decltype in member initializers.

This is the last piece of N3031 (decltype in weird places) - supporting
the use of decltype in a class ctor's member-initializer-list to
specify the base classes to initialize.

Reviewed by Richard Smith.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148789 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2dd52e3815d040e340a5d953d838cd2268e25372 24-Jan-2012 David Blaikie <dblaikie@gmail.com> Reword/rename -Wswitch-unreachable-default.

Rewording the diagnostic to be more precise/correct: "default label in switch
which covers all enumeration values" and changed the switch to
-Wcovered-switch-default

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148783 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e1d82deb6839bf972aa6301da40f06e8926f0af5 24-Jan-2012 David Blaikie <dblaikie@gmail.com> Improve -Wswitch-enum diagnostic message.

Changing wording to include the word "explicitly" (as in "enumeration value ...
not /explicitly/ handled by switch"), as suggested by Richard Smith.

Also, now that the diagnostic text differs between -Wswitch and -Wswitch-enum,
I've simplified the test cases a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148781 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7514f31c8fa3fbb3428d0dca98c32145fb0faaa5 24-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename Sema::isNullExpr() -> Sema::isSentinelNullExpr() which is more descriptive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148772 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e42670bb6885934f01a6f7ffce58add5b5b3822b 24-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objective-c: Ignore with warning forward class declaration whose name
matches a typedef declaring an object type. // rdar://10733000


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f75823f3d4dc84630a9d814479140145e62accf3 23-Jan-2012 Bill Wendling <isanbard@gmail.com> Remove extraneous ';'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148739 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
b832f6dea893f25b40500a04781286236281cb20 23-Jan-2012 Sebastian Redl <sebastian.redl@getdesigned.at> Minor fixups for auto deduction of initializer lists.

Fix some review comments.
Add a test for deduction when std::initializer_list isn't available yet.
Fix redundant error messages. This fixes and outstanding FIXME too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148735 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4f1813e55a13a19d4981d245d1da583c1051305b 23-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Sema::isNullExpr() that contains the checks that
Sema::DiagnoseSentinelCalls() does.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148722 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
277b15684582193d26f6c15b40e90a6e45299857 23-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce CXXRecordDecl::isCLike() that is true if the class is C-like,
without C++-specific features.

Use it to set the language to C++ when indexing non-C-like structs.
rdar://10732579

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f96241dedab95d633f090191c93250b347b84f53 23-Jan-2012 Douglas Gregor <dgregor@apple.com> Add -Wnarrowing as an alias for -Wc++11-narrowing, for better GCC
compatibility.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148702 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f3c82c5f5c0321babf054983c29ad84cc90244f7 23-Jan-2012 Douglas Gregor <dgregor@apple.com> Downgrade C++11 narrowing conversion errors to warnings default-mapped
to an error, so that users can turn them off if necessary. Note that
this does *not* change the behavior of in a SFINAE context, where we
still flag an error even if the warning is disabled. This matches
GCC's behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1db772bd68502e0dabbd8efeb7f7c64a4ab2e37a 23-Jan-2012 Nick Lewycky <nicholas@mxc.ca> Add support for -fno-optimize-sibling-calls. Currently only implemented in the
X86 backend in LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148689 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
df1be86ef5f5d55fc23b2339ee76e076424d9ba0 23-Jan-2012 Nico Weber <nicolasweber@gmx.de> In microsoft mode, downgrade pseudo-destructors on void from error to warning.

This matches cl.exe's behavior and fixes PR11791.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148682 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
413c2c9d9c85ceb588e9cb965853f178a3a52bc9 23-Jan-2012 David Blaikie <dblaikie@gmail.com> Rename -Wswitch-enum-redundant-default to -Wswitch-redundant-default.

This is for consistency, since the flag is actually under -Wswitch now, rather
than -Wswitch-enum (since it's really valuable for the former and rather
orthogonal to the latter)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
585d7795c2dddaa510b3bb1b3b18633bfcfdf643 23-Jan-2012 David Blaikie <dblaikie@gmail.com> Implement -Wswitch-enum correctly.

Clang previously implemented -Wswitch-enum the same as -Wswitch. This patch
corrects the behavior to match GCC's. The critical/only difference being that
-Wswitch-enum is not silenced by the presence of a default case in the switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148679 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
adabbca569bd6c6dfe91773dea8cf7d14cb4cc5e 22-Jan-2012 David Blaikie <dblaikie@gmail.com> Move -Wswitch-enum to -Wswitch

This matches GCC's documented (& actual) behavior. What Clang had implemented
as -Wswitch-enum was actually GCC's -Wswitch behavior. -Wswitch is on by
default (part of -Wall) and warns if a switch-over-enum, without a default
case, covers all enum values.

-Wswitch-enum, on the other hand, does not have the default clause and should
fire even in the presence of a default. This warning is off by default.

With this change the -Wswitch-enum flag is off-by-default in Clang but has no
functionality at the moment. I'll add that in a future commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148648 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
31ceb61172bca7ebc3fb90e9125864c7a29c55c0 21-Jan-2012 David Blaikie <dblaikie@gmail.com> Add -Wswitch-enum-redundant-default.

This warning acts as the complement to the main -Wswitch-enum warning (which
warns whenever a switch over enum without a default doesn't cover all values of
the enum) & has been an an-doc coding convention in LLVM and Clang in my
experience. The purpose is to ensure there's never a "dead" default in a
switch-over-enum because this would hide future -Wswitch-enum errors.

The name warning has a separate flag name so it can be disabled but it's grouped
under -Wswitch-enum & is on-by-default because of this.

The existing violations of this rule in test cases have had the warning disabled
& I've added a specific test for the new behavior (many negative cases already
exist in the same test file - and none regressed - so I didn't add more).

Reviewed by Ted Kremenek ( http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120116/051690.html )

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148640 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3fc809de96f9b0a4fcf7bc936399194d0b7198c8 21-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove redundant argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148628 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
78a542478dd63c2789816dcc1cdab5c9a6eef99b 21-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Fix some comments relating to ExpressionEvaluationContexts. Get rid of a couple of uses of ConstantEvaluated which don't make sense.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148624 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
71b8fb5d4233420d2ed2f150a54ea61431bd8684 21-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Make clang's AST model sizeof and typeof with potentially-evaluated operands correctly, similar to what we already do with typeid.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148610 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
23323e0253716ff03c95a00fb6903019daafe3aa 20-Jan-2012 DeLesley Hutchins <delesley@google.com> Delayed template instantiation of late-parsed attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148595 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ema/Sema.h
ema/Template.h
7b9ff0c09025dcbe48ec7db71330e2066d1e1863 20-Jan-2012 DeLesley Hutchins <delesley@google.com> Instantiate dependent attributes when instantiating templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148592 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
MakeLists.txt
akefile
ema/CMakeLists.txt
ema/Makefile
9ec60dfe771ff28a84889dced6f8fd3748d3d55e 20-Jan-2012 Sebastian Pop <spop@codeaurora.org> rename -ccc-host-triple into -target

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148582 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ce506ae231703a23ea95335cd4de19c60082f361 20-Jan-2012 Ted Kremenek <kremenek@apple.com> Tighten format string diagnostic and make it a bit clearer (and a bit closer to GCC's).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
18932a0f2a94a7813ec461d1118c39ecf8aa936f 20-Jan-2012 Ted Kremenek <kremenek@apple.com> Add ability to specifiy 'restrict' on parameters of builtins, and correct this oversight for scanf functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148573 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Builtins.def
1f6b2b5c82b2d2d3935b0db76352a04e9877b73f 20-Jan-2012 Douglas Gregor <dgregor@apple.com> 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
RCMigrate/ARCMT.h
rontend/FrontendAction.h
rontend/FrontendOptions.h
ef331b783bb96a0f0e34afdb7ef46677dc4764cb 20-Jan-2012 Eli Friedman <eli.friedman@gmail.com> 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
ema/Sema.h
be97b7edb112520d764c24e8b9a159cdc692bcb6 20-Jan-2012 Anna Zaks <ganna@apple.com> [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
taticAnalyzer/Core/PathSensitive/ProgramState.h
461af1e502c9bd88330bbf17d449a7593fc0d624 20-Jan-2012 Anna Zaks <ganna@apple.com> [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
taticAnalyzer/Core/PathSensitive/CheckerContext.h
3352ea914644edb2b56e999c94319ce915d68707 20-Jan-2012 Anna Zaks <ganna@apple.com> [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
taticAnalyzer/Core/PathSensitive/SymbolManager.h
fcaf27e185695bdf755e202aeba9632e0a8ef3c6 19-Jan-2012 Richard Trieu <rtrieu@google.com> 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
asic/DiagnosticParseKinds.td
arse/Parser.h
e64d9037658a1b95c79ea275af6167a110b3c563 19-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
ex/Lexer.h
11b652d41d0d97380ab321a1dba48ecb044f9de8 19-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
ex/Lexer.h
69bda4c027671df7163619f215209529eb236620 19-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
ex/Lexer.h
ex/Preprocessor.h
b0f9dd22bf469028b2c40eab60ad1019c3e6089d 19-Jan-2012 Tanya Lattner <tonic@nondot.org> 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
ema/Sema.h
bcdd7d92883d771106e54357245733358eac9672 19-Jan-2012 Kaelyn Uhrain <rikka@google.com> Remove the now-unused CorrectTypoContext enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148441 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8ef7b203332b0c8d65876a1f5e6d1db4e6f40e4b 19-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> 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
asic/DiagnosticSemaKinds.td
ema/Overload.h
ema/Sema.h
d6c7c67313634b317a0d63c32be0511a121bb33d 18-Jan-2012 Richard Trieu <rtrieu@google.com> 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
asic/DiagnosticParseKinds.td
arse/Parser.h
8e87490124b02ffb8eaa06fab26dfc78625613f5 18-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> 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
asic/DiagnosticSemaKinds.td
43e875d2610afcf9e7017b71f46116dc86624fd9 18-Jan-2012 Kaelyn Uhrain <rikka@google.com> 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
asic/DiagnosticSemaKinds.td
057df20b3107cef764052d271c89b8591b98b3ce 18-Jan-2012 Douglas Gregor <dgregor@apple.com> 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
erialization/ASTReader.h
erialization/Module.h
erialization/ModuleManager.h
c2a8d6cee01fc4845f5409bf5c021a64616ac8c3 18-Jan-2012 Anna Zaks <ganna@apple.com> 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
ex/Lexer.h
ex/Preprocessor.h
556b1d0f3a039a691ed4f6dd91b8587435f30b0b 18-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> 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
asic/DiagnosticSemaKinds.td
64554ba9fc5f251108fd7d10a9c218e7bf985941 18-Jan-2012 Douglas Gregor <dgregor@apple.com> 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
river/Options.td
be773526230b5a7121a8b321b05f2e53fa473f5c 18-Jan-2012 Seth Cantrell <seth.cantrell@gmail.com> 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
asic/DiagnosticLexKinds.td
4798f8dfdb15fc03fa6b4104efed8762d52ebb18 18-Jan-2012 Kaelyn Uhrain <rikka@google.com> 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
ema/Sema.h
4c3fc9b38d3723f73e4ded594cebf38c76f91d93 18-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> 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
ST/Expr.h
asic/DiagnosticSemaKinds.td
ema/Overload.h
9b0c749a20d0f7d0e63441d76baa15def3f37fdb 18-Jan-2012 Anna Zaks <ganna@apple.com> [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
taticAnalyzer/Core/PathSensitive/CheckerContext.h
9392d4e4da695e2e1a5befbb3a074793a7265471 18-Jan-2012 Anna Zaks <ganna@apple.com> Constify FunctionDecl::getmemoryFunctionKind().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148369 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
93c878ee093f2a233c32b29f074e6a3f511e333f 18-Jan-2012 Eli Friedman <eli.friedman@gmail.com> 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
ema/Sema.h
98d3606cd5583f35ba1f8cb11bf3245dd4f7ea02 17-Jan-2012 Sebastian Redl <sebastian.redl@getdesigned.at> 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
ema/Sema.h
62b7cfb73e202051e7ab0dad42ba213acd0dec7e 17-Jan-2012 Sebastian Redl <sebastian.redl@getdesigned.at> 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
asic/DiagnosticSemaKinds.td
ema/Sema.h
2b916b8b55aaf0152ab9ad630c8454bf6373b085 17-Jan-2012 Sebastian Redl <sebastian.redl@getdesigned.at> 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
ema/Initialization.h
395e04dbd7294bae4640aef1705cec3d052578b0 17-Jan-2012 Sebastian Redl <sebastian.redl@getdesigned.at> 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
ema/Sema.h
0af8049a0292ab79e3ccf9354170602e171742da 17-Jan-2012 Bob Wilson <bob.wilson@apple.com> 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
asic/DiagnosticSemaKinds.td
f7b2d8b3b1971e73e2d2f0662520dc7693235a7f 17-Jan-2012 Eli Friedman <eli.friedman@gmail.com> 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
asic/Builtins.def
29c3f814b64808c6dac4597b61a50ceecdf141fc 17-Jan-2012 Jean-Daniel Dupas <devlists@shadowlab.org> 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
ema/Sema.h
56ca8a9c0fabd65418e9b2fd85140f4ed7d3c187 17-Jan-2012 Douglas Gregor <dgregor@apple.com> 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
ST/Decl.h
ST/Type.h
7fe90f3bfa6bd7f779ecfd4ba201a296a3a1c8cb 17-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [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
rontend/ASTUnit.h
a6ea10e22b600d92e084f6b11b9b9a92d0eb2412 17-Jan-2012 Douglas Gregor <dgregor@apple.com> 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
ST/ASTContext.h
ST/DeclObjC.h
erialization/ASTBitCodes.h
7530c034c0c71a64c5a9173206d9742ae847af8b 17-Jan-2012 David Blaikie <dblaikie@gmail.com> 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
ema/DeclSpec.h
ema/Overload.h
ema/Sema.h
561d3abc881033776ece385a01a510e1cbc1fa92 17-Jan-2012 David Blaikie <dblaikie@gmail.com> 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
ST/DeclVisitor.h
ST/RecursiveASTVisitor.h
ST/StmtVisitor.h
ST/TypeVisitor.h
ema/DeclSpec.h
ea8c59aaa6bd19976879142296f8fd12f8926738 17-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
ema/CodeCompleteConsumer.h
ema/Sema.h
6fc9e1d98205649e4d0f741d194d288a45995a62 17-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
ema/Sema.h
55693fbe18e9431dbb0ea9e20d140d8bc6bc4c72 17-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Revert r148271; this requires more thought.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148276 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
58219e7f27641bb3c635f17e79b7edc0a955a188 17-Jan-2012 Eli Friedman <eli.friedman@gmail.com> 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
asic/DiagnosticSemaKinds.td
883692ebd421c40b44e2c2665e5f54dade5621bc 17-Jan-2012 Nico Weber <nicolasweber@gmx.de> 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
asic/DiagnosticParseKinds.td
0a151a137a68bb656acbcce7ff2407613bb80cfc 17-Jan-2012 Anna Zaks <ganna@apple.com> 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
ST/Decl.h
asic/Builtins.def
ema/Sema.h
4f692c27d74e249d6ef8d24792c35f3e5c620e2a 16-Jan-2012 Tanya Lattner <tonic@nondot.org> 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
ema/Sema.h
7a7ee3033e44b45630981355460ef89efa0bdcc4 16-Jan-2012 David Chisnall <csdavec@swan.ac.uk> 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
ST/Expr.h
ST/OperationKinds.h
asic/Builtins.def
cc32b44ea4b3c702bf84eae0af27ca160bd90831 15-Jan-2012 Douglas Gregor <dgregor@apple.com> When deserializing the definition of a C++ class/ObjC class/ObjC
protocol, record the definition pointer in the canonical declaration
for that entity, and then propagate that definition pointer from the
canonical declaration to all other deserialized declarations. This
approach works well even when deserializing declarations that didn't
know about the original definition, which can occur with modules.

A nice bonus from this definition-deserialization approach is that we
no longer need update records when a definition is added, because the
redeclaration chains ensure that the if any declaration is loaded, the
definition will also get loaded.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
2171bf1caba4d4b9eeb6a91efac4300b41f38b07 15-Jan-2012 Douglas Gregor <dgregor@apple.com> Completely re-implement (de-)serialization of redeclaration
chains, again. The prior implementation was very linked-list oriented, and
the list-splicing logic was both fairly convoluted (when loading from
multiple modules) and failed to preserve a reasonable ordering for the
redeclaration chains.

This new implementation uses a simpler strategy, where we store the
ordered redeclaration chains in an array-like structure (indexed based
on the first declaration), and use that ordering to add individual
deserialized declarations to the end of the existing chain. That way,
the chain mimics the ordering from its modules, and a bug somewhere is
far less likely to result in a broken linked list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148222 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
244ee7b89a483fd3764637abdf95de2893b437d0 15-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Pedantic diagnostic correction: in C++, we have integral constant expressions,
not integer constant expressions. In passing, fix the 'folding is an extension'
diagnostic to not claim we're accepting the code, since that's not true in
-pedantic-errors mode, and add this diagnostic to -Wgnu.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1136ef09ff327c2032ec20e2c2ab87cdbf017b1b 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Use a smaller vector than SmallVector.

Shrinks OverloadCandidate from 208 to 168 bytes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148204 91177308-0d34-0410-b5e6-96231b3b80d8
ema/SemaFixItUtils.h
9e2822bb4ada53a3cebd9a3f793fef8d700c5c9a 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Clear ImplicitConversionSequence the obvious way which turns out to be less fragile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148200 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
314f5544fbdcfb1082df070f730fe8acbdb85180 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Give OverloadCandidateSet the responsibility for destroying the implicit conversion sequences so we don't get double frees when the vector reallocates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148198 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
448ce0f1b419bb434761422bc5f050bf4b57b703 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Reorder initializers, make use of the whole array.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148193 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
7268c8b92de18c06f92b1986ea9730c7708997cf 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Move the inline array to the end.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148192 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
527610d92b4becc41b8611fbc3952d727f7cac12 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Destroy OverloadCandidates before taking away the underlying memory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148190 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
a54fbf2499c7cc999e22abb9be484ce976ed9689 14-Jan-2012 Douglas Gregor <dgregor@apple.com> Replace a using declararion with a typedef in the hope of satisfying GCC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148188 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/DeclTemplate.h
ef96ee0be5f100789f451641542a69cd719144d2 14-Jan-2012 Douglas Gregor <dgregor@apple.com> De-virtualize getPreviousDecl() and getMostRecentDecl() when we know
we have a redeclarable type, and only use the new virtual versions
(getPreviousDeclImpl() and getMostRecentDeclImpl()) when we don't have
that type information. This keeps us from penalizing users with strict
type information (and is the moral equivalent of a "final" method).

Plus, settle on the names getPreviousDecl() and getMostRecentDecl()
throughout.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148187 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Redeclarable.h
09dd3798e100ace40defdc5541277502346213f2 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Pool allocate ImplicitConversionSequences.

To avoid malloc thrashing give OverloadCandidateSet an inline capacity for conversion sequences.
We use the fact that OverloadCandidates never outlive the OverloadCandidateSet and have a fixed
amount of conversion sequences.

This eliminates the oversized SmallVector from OverloadCandidate shrinking it from 752 to 208 bytes.

On the test case from the "Why is CLANG++ so freaking slow" thread on llvmdev this avoids one gig
of vector reallocation (including memcpy) which translates into 5-10% speedup on Lion/x86_64.

Overload candidate computation is still the biggest malloc contributor when compiling templated
c++ code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148186 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
0e6a16f3e8c8d80a61e89848d216972aa8daea27 14-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> OverloadCandidateSet: Stop exposing SmallVector internals

Replace push_back with addCandidate which will let us make use of the fixed size of
the conversion sequence vector soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148185 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
f785a7d611404cf4747287a2bbc59b4d0e6a5a8c 14-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce Decl::getPreviousDecl() and Decl::getMostRecentDecl(),
virtual functions that provide previous/most recent redeclaration
information for any declaration. Use this to eliminate the redundant,
less efficient getPreviousDecl() functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/DeclTemplate.h
7c99bb5c4901c39460818ff8c00840218c48251f 14-Jan-2012 Douglas Gregor <dgregor@apple.com> Reimplement RedeclarableTemplateDecl in terms of
Redeclarable<RedeclarableTemplateDecl>, eliminating a bunch of
redeclaration-chain logic both in RedeclarableTemplateDecl and
especially in its (de-)serialization.

As part of this, eliminate the RedeclarableTemplate<> class template,
which was an abstraction that didn't actually save anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148181 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
2d6a5670465cb3f1d811695a9f23e372508240d2 14-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr irgen: Add irgen support for APValue::Struct, APValue::Union,
APValue::Array and APValue::MemberPointer. All APValue values can now be emitted
as constants.

Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other
entrypoints dealing with constant member pointers are no longer necessary and
will be removed in a later change.

Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to
VarDecl::evaluateValue. This performs caching and deals with the nasty cases in
C++11 where a non-const object's initializer can refer indirectly to
previously-initialized fields within the same object.

Building the intermediate APValue object incurs a measurable performance hit on
pathological testcases with huge initializer lists, so we continue to build IR
directly from the Expr nodes for array and record types outside of C++11.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
093ecc92afb70f6125d249eef31f40c0c57b7d24 14-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Remember if a type has its visibility set explicitly or implicitly.
With that, centralize the way we merge visibility, always preferring explicit over
implicit and then picking the most restrictive one.
Fixes pr10113 and pr11690.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
d9b859a74ecaede23a78d37f364498102ef418c9 13-Jan-2012 Anna Zaks <ganna@apple.com> Move identification of memory setting and copying functions (memset,
memcmp, strncmp,..) out of Sema and into FunctionDecl so that the logic
could be reused in the analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
31cbe684302a5ccb001fa2131c0e4aeaa372f5c0 13-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Revert r148138; it's causing test failures.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148141 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
43115d4904431917ef6852ee089a8520b9940ba5 13-Jan-2012 Sebastian Pop <spop@codeaurora.org> remove assertions in the Hexagon backend specific clang driver

Patch from Jyotsna Verma:

I have made the changes to remove assertions in the Hexagon backend
specific clang driver. Instead of asserting on invalid arch name, it has
been modified to use the default value.

I have changed the implementation of the CPU flag validation for the
Hexagon backend. Earlier, the clang driver performed the check and
asserted on invalid inputs. In the new implementation, the driver passes
the last CPU flag (or sets to "v4" if not specified) to the compiler (and
also to the assembler and linker which perform their own check) instead of
asserting on incorrect values. This patch changes the setCPU function for
the Hexagon backend in clang/lib/Basic/Targets.cpp which causes the
compiler to error out on incorrect CPU flag values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148139 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
edd4f3c39101912605c2a1868dd2be71aa218798 13-Jan-2012 Sebastian Pop <spop@codeaurora.org> rename -ccc-host-triple into -target

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148138 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
9606a57b6f2c43bf438a958fdffea1de60f6b2b7 13-Jan-2012 Sebastian Pop <spop@codeaurora.org> rename DefaultHostTriple into DefaultTargetTriple

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148137 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
3534050c491454e4a5c7bcd0f8e6054cd89012cd 13-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR11754: Reject non-static constexpr member functions in classes with virtual
base classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
059d578c7d45f687a81bcc97ab80404256a5287f 13-Jan-2012 Eli Friedman <eli.friedman@gmail.com> A few minor improvements to error recovery trying to access member of a function. In particular, this restores the cool error recovery for the example from http://blog.llvm.org/2010/04/amazing-feats-of-clang-error-recovery.html , which regressed a few months back.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148089 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2f4d88f4418afafbd0b22ce0f79cdead6f3a6f99 13-Jan-2012 Kaelyn Uhrain <rikka@google.com> Fix up the calls to CorrectTypo in Sema*ObjC.cpp to use callback
objects, and add a basic CorrectionCandidateCallback template class
to simplify the fixups.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148085 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
7984de35644701c0d94336da7f2215d4c26d9f5b 13-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Improve 0-argument -Wvexing-parse diagnostic by adding notes with fix-its:

- If the declarator is at the start of a line, and the previous line contained
another declarator and ended with a comma, then that comma was probably a
typo for a semicolon:

int n = 0, m = 1, l = 2, // k = 5;
myImportantFunctionCall(); // oops!

- If removing the parentheses would correctly initialize the object, then
produce a note suggesting that fix.

- Otherwise, if there is a simple initializer we can suggest which performs
value-initialization, then provide a note suggesting a correction to that
initializer.

Sema::Declarator now tracks the location of the comma prior to the declarator in
the declaration, if there is one, to facilitate providing the note. The code to
determine an appropriate initializer from the -Wuninitialized warning has been
factored out to allow use in both that and -Wvexing-parse.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148072 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
ema/Sema.h
b030b1949ff6bd9e71fedca78a34deeaf6d75e00 12-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Revert accidental commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148058 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a1796826729ba8c73c32dd49fa4945ff3cb12039 12-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Make sure adding a field to a struct never reduces its size. PR11745.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148056 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0849ade4bb3e90c2fc0ce01ccd330f76f91da732 12-Jan-2012 Ted Kremenek <kremenek@apple.com> [analyzer] fix inlining's handling of mapping actual to formal arguments and limit the call stack depth. The analyzer can now accurately simulate factorial for limited depths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148036 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
37969b7e14d6a4dfd934ef6d3738cc90b832ec1d 12-Jan-2012 Hans Wennborg <hans@hanshq.net> scanf: parse the 'm' length modifier, and check that the right arguments
are used with that and the 'a' length modifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148029 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
746f5bcbfde5b25269169c63c66492311673b67d 12-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add IsImplicit field in ObjCMessageExpr that is true when the message
was constructed, e.g. for a property access.

This allows the selector identifier locations machinery for ObjCMessageExpr
to function correctly, in that there are not real locations to handle/report for
such a message.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExprObjC.h
ema/Sema.h
1437425a62dbf7bdb0a855d3ed3b05ed2019ec1e 12-Jan-2012 Anna Zaks <ganna@apple.com> [analyzer] Rename Store::Retrieve() -> getBinding().

+ all the other Retrieve..() methods + a comment for ElementRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148011 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
5b7254c2c31d385eba95fc4d31e87587ec31fd63 11-Jan-2012 Matt Beaumont-Gay <matthewbg@google.com> Appease -Wnon-virtual-dtor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147977 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
ec3bd728cc6505c98543b001a1988c237f5fb9a9 11-Jan-2012 Douglas Gregor <dgregor@apple.com> Improve the diagnostic when trying to redefine a typedef with a
variably-modified type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147973 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7d5e6948e6a4e04ee67b607f931d90d3063579f2 11-Jan-2012 Kaelyn Uhrain <rikka@google.com> Add initial callback object support to Sema::CorrectTypo.

Also includes two examples of the callback: a wrapper/replacement for
the CorrectTypoContext enum, and a conversion of the two calls to
CorrectTypo in SemaDeclCXX.cpp (one of which provides verifiable
improvement to the typo correction, as demonstrated in the added test).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147962 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ema/TypoCorrection.h
c0004df84fca9225b66a50adc66cf21c34298227 11-Jan-2012 Douglas Gregor <dgregor@apple.com> C11 allows typedefs to be redefined. Implement this in C11 mode, and
downgrade the default-error warning to an ExtWarn in
C90/99. <rdar://problem/10668057>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147925 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b69b42c55d56815bab62991bf839cdb41634d3af 11-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Start refactoring code for capturing variables and 'this' so that it is shared between lambda expressions and block literals.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147917 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
31dfd642d5ac33c4ee0cfe1d7a1d4da455dcc7a4 10-Jan-2012 Akira Hatanaka <ahatanaka@mips.com> Add field IsIEEE in FloatingLiteral to distinguish between different 128-bit
floating point formats.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147887 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f660f4b1bedd6b614acf52108894b805b807c50d 10-Jan-2012 Ted Kremenek <kremenek@apple.com> Make PathDiagnosticLocation more resilient to null Stmt pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147854 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
15e17aed79163d0d40ed7914f7fe992c400d93dd 10-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Per John's comment, it makes sense to ask isLambda on any CXXRecordDecl; make sure that's safe. Get rid of a check which is now unnecessary in Sema::getFunctionLevelDeclContext().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bdad7a2e21686296b78dac6190b78d11c996f6d7 10-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Update C++11 scoped enumeration support to match the final proposal:
- reject definitions of enums within friend declarations
- require 'enum', not 'enum class', for non-declaring references to scoped
enumerations


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
20abee6b95c4f5a61e471b4b616439280ca4a81b 10-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc++: patch for IRgen for atomic properties of
c++ objects with non-trivial assignment/copy functions.
Also, one additional sema check. // rdar://6137845


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1c94c16317c1a35c1549e022958188eea2567089 09-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Extend the diagnostic for a ',' at the end of a declaration where a ';' was
intended to cover C++ class definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147808 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c6c8e0ec96bb64f1b9f543d7c8317c6090f80a30 09-Jan-2012 Douglas Gregor <dgregor@apple.com> Implement redeclaration merging for namespaces defined in distinct
modules. Teach name lookup into namespaces to search in each of the
merged DeclContexts as well as the (now-primary) DeclContext. This
supports the common case where two different modules put something
into the same namespace.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
753a20001f136707d6cb40ef94ee87b39986a9f9 09-Jan-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Made unknown builtin diagnostic remappable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147774 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9bc6fb6317f9bc6aaaacd266b9ea36996ad338bb 07-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Pack UsingDecl more.

88 -> 80 bytes on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147736 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
06284c1dc56caed19850bc3766c89f51763724c3 07-Jan-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed TypeofExpr AST and code generation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147730 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f5c9f9fd6f5e2850b9b0f19283430245b696c6e5 07-Jan-2012 Douglas Gregor <dgregor@apple.com> Switch NamespaceDecl from its own hand-rolled redeclaration chain over
to Redeclarable<NamespaceDecl>, so that we benefit from the improveed
redeclaration deserialization and merging logic provided by
Redeclarable<T>. Otherwise, no functionality change.

As a drive-by fix, collapse the "inline" bit into the low bit of the
original namespace/anonymous namespace, saving 8 bytes per
NamespaceDecl on x86_64.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
72899c34e3d1abfffa241ad0ce5c4bf175e5ea51 07-Jan-2012 Eli Friedman <eli.friedman@gmail.com> More lambda work: semantic analysis of capturing 'this'. It's a bit complicated, but we have to be careful about when exactly captures are marked given PotentiallyPotentiallyEvaluated contexts. (Actually, it's not 100% correct yet, but it's close enough for the moment.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147723 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
ema/Sema.h
9f03b62036a7abc0a227b17f4a49b9eefced9450 07-Jan-2012 Anna Zaks <ganna@apple.com> [analyzer] Add basic format string vulnerability checking.

We already have a more conservative check in the compiler (if the
format string is not a literal, we warn). Still adding it here for
completeness and since this check is stronger - only triggered if the
format string is tainted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147714 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
e81d7e9810eed0d805263791d761ec545d2cf779 07-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Lambdas: semantic analysis of explicit captures.

This patch (and some of my other commits related to lambdas) is heavily based off of John Freeman's work-in-progress patches.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
3070e13dca5bbefa32acb80ce4a7b217a6220983 07-Jan-2012 Ted Kremenek <kremenek@apple.com> [analyzer] Remove CallEnterNodeBuilder and simplify ExprEngine::processCallEnter().

This removes analysis of other translation units, but that was an experimental feature anyway that we will revisit later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147705 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
894212e9510299abb203801e014fec76b7926a05 07-Jan-2012 Ted Kremenek <kremenek@apple.com> [analyzer] Remove CallExitNodeBuilder, and have ExprEngine::processCallExit() do the work manually. This is a nice simplification.

Along the way, fix Exprengine::processCallExit() to also perform the postStmt callback for checkers for CallExprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147697 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
d87a0cd2b3e1c9e9f01212875f4cbe5b7bb7ab57 06-Jan-2012 Matt Beaumont-Gay <matthewbg@google.com> Suppress -Wunused-value within macros from system headers.

Along the way, move a helper function from SemaChecking.cpp to a more
accessible home in SourceManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5eca482fe895ea57bc82410222e6426c09e63284 06-Jan-2012 Ted Kremenek <kremenek@apple.com> [analyzer] Make the entries in 'Environment' context-sensitive by making entries map from
(Stmt*,LocationContext*) pairs to SVals instead of Stmt* to SVals.

This is needed to support basic IPA via inlining. Without this, we cannot tell
if a Stmt* binding is part of the current analysis scope (StackFrameContext) or
part of a parent context.

This change introduces an uglification of the use of getSVal(), and thus takes
two steps forward and one step back. There are also potential performance implications
of enlarging the Environment. Both can be addressed going forward by refactoring the
APIs and optimizing the internal representation of Environment. This patch
mainly introduces the functionality upon when we want to build upon (and clean up).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147688 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
46cd2186bddc3e046140cb2d56932ee7faf7e3ae 06-Jan-2012 Douglas Gregor <dgregor@apple.com> Stash Decl's TopLevelDeclInObjCContainer and ModulePrivate bits
into the two unused lower bits of the NextDeclInContext link, dropping
the number of bits in Decl down to 32, and saving 8 bytes per
declaration on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147660 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
b4e85ed51905fc94378d7b4ff62b06e0d08042b7 06-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> C++11 generalized constant expressions: implement checking and diagnostics for
pointer-arithmetic-related undefined behavior and unspecified results. We
continue to fold such values, but now notice they aren't constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
f143ffc4a9af79ac1d822fea6995af4bf45d17dc 06-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce a "Hidden" bit into Decl, to track whether that declaration
is hidden from name lookup. The previous hack of tweaking the
ModulePrivate bit when loading a declaration from a hidden submodule
was brittle.

Note that we now have 34 bits in Decl. I'll fix that next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ema/Lookup.h
906a7e1c0f272f7e539c82dda01f4644031ce637 06-Jan-2012 Eli Friedman <eli.friedman@gmail.com> More lambda work. Fixes a minor bug Richard pointed out, makes lookup for lambda parameters work correctly, recording more information into the AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147650 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
1d7bcf4b35f8bc0a0a40f4ea7b06b55c63725108 06-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Tweak to r147599 for PR10828: Move the check from the parser into sema, and use
the Semantic Powers to only warn on class types (or dependent types), where the
constructor or destructor could do something interesting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147642 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
71207fc0470e1eee40a2951cd5cc3ff47725b755 05-Jan-2012 Ted Kremenek <kremenek@apple.com> After further discussion, rename attribute 'objc_disable_automatic_synthesis' to 'objc_requires_property_definitions'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
6aeaa60217e1ed11a621409acf1b53df0d14b591 05-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Tweak the fix to PR8977: an empty expression-list represents value initialization, not default initialization. Fixes PR11712.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1c7946a9fbba8671cc57f7dfd00721f8c035f913 05-Jan-2012 Douglas Gregor <dgregor@apple.com> Don't seed the ASTWriter's declaration -> ID mapping with the IDs of
each deserialized declaration, since that information is already
available in each declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147619 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
b6b60c1521a2e65f60e93c5fd56c103cf027df63 05-Jan-2012 Douglas Gregor <dgregor@apple.com> When we deserialize a declaration from a module file, allocate extra
storage for the global declaration ID. Declarations that are parsed
(rather than deserialized) are unaffected, so the number of
declarations that pay this cost tends to be relatively small (since
relatively few declarations are ever deserialized).

This replaces a largish DenseMap within the AST reader. It's not
strictly a win in terms of memory use---not every declaration was
added to that DenseMap in the first place---but it's cleaner to have
this information available for every deserialized declaration, so that
future clients can rely on it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
erialization/ASTReader.h
1e68ecc4fcce12f683c4fd38acfd1a004001b04f 05-Jan-2012 Douglas Gregor <dgregor@apple.com> When creating declarations that are deserialized from an module file,
go through a central allocation routine
Decl::AllocateDeserializedDecl(). No actual functionality change (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
b8c879a5363f36bdae8831112b563333e3c05acb 05-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> When loading an AST file, set SourceManager::MainFileID to the main file of the AST file,
as suggested by Tom Honermann.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147612 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
cb7709c06027448c754dd03e2e521d82d04818bf 05-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> PR10828: Produce a warning when a no-arguments function is declared in block
scope, when no other indication is provided that the user intended to declare a
function rather than a variable.

Remove some false positives from the existing 'parentheses disambiguated as a
function' warning by suppressing it when the declaration is marked as 'typedef'
or 'extern'.

Add a new warning group -Wvexing-parse containing both of these warnings.

The new warning is enabled by default; despite a number of false positives (and
one bug) in clang's test-suite, I have only found genuine bugs with it when
running it over a significant quantity of real C++ code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
ema/DeclSpec.h
ec9ea7200718478e8a976529defbe21942a11c9c 05-Jan-2012 Eli Friedman <eli.friedman@gmail.com> More lambda work. Tweak the Sema interface slightly. Start adding the pieces to build the lambda class and its call operator. Create an actual scope for the lambda body.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147595 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ema/ScopeInfo.h
ema/Sema.h
edb9459c43dec5f376020f2b53833dee6549e11d 05-Jan-2012 Chad Rosier <mcrosier@apple.com> [driver] Add support for passing -lazy_framework/-lazy_library to the linker.
rdar://10630328


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147591 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b6cc6d728e9b151defe9e6041aaeb000f6e20c24 05-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Change casting slightly to avoid warnings about casting away const.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147589 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
447af24a003aa8d0dc7317a56f06f5b8361f8808 05-Jan-2012 Douglas Gregor <dgregor@apple.com> When we're performing name lookup for a tag, we still allow ourselves
to see hidden declarations because every tag lookup is effectively a
redeclaration lookup. For example, image that

struct foo;

is declared in a submodule that is known but hasn't been imported. If
someone later writes

struct foo *foo_p;

then "struct foo" is either a reference or a redeclaration. To keep
the redeclaration chains sound, we treat it like a redeclaration for
name-lookup purposes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147588 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
39afcafe1c0f66db67648b5230b700659448432c 05-Jan-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Sanity checks in SourceManager::getFileEntryForID() and SourceManager::getFileEntryForSLocEntry()
to make sure we do not crash. rdar://10594186

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147576 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
73076431605556fdbf28d287d084a73a24a8b8d4 05-Jan-2012 John McCall <rjmccall@apple.com> The value of a const weak variable is not an integer constant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147575 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
eb31a76d1cdaaf8874c549dc6bd964ff270d3822 05-Jan-2012 Anna Zaks <ganna@apple.com> [analyzer] Be less pessimistic about invalidation of global variables
as a result of a call.

Problem:
Global variables, which come in from system libraries should not be
invalidated by all calls. Also, non-system globals should not be
invalidated by system calls.

Solution:
The following solution to invalidation of globals seems flexible enough
for taint (does not invalidate stdin) and should not lead to too
many false positives. We split globals into 3 classes:

* immutable - values are preserved by calls (unless the specific
global is passed in as a parameter):
A : Most system globals and const scalars

* invalidated by functions defined in system headers:
B: errno

* invalidated by all other functions (note, these functions may in
turn contain system calls):
B: errno
C: all other globals (which are not in A nor B)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147569 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
22f18fd72d1a2205afdfa6a975b75cd76ef40f3a 05-Jan-2012 Ted Kremenek <kremenek@apple.com> Rename attribute 'objc_suppress_autosynthesis' to 'objc_disable_automatic_synthesis'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147567 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
b7a7819473709c01ea024a2dc15e99d38f0f8760 05-Jan-2012 Douglas Gregor <dgregor@apple.com> Store the submodules of a module in source order, as they are stored
in the module map. This provides a bit more predictability for the
user, as well as eliminating the need to sort the submodules when
serializing them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
da611a74c408af0f9526acc690b85214bf180852 05-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc: When issuing warning for missing synthesis for
properties in classes declared with objc_suppress_autosynthesis
attribute, pinpoint location of the said class in a note.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
65639284118d54ddf2e51a05d2ffccda567fe246 05-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Add an APValue representation for the difference between two address-of-label expressions. Add support to Evaluate and CGExprConstant for generating/handling them. Remove the special-case for such differences in Expr::isConstantInitializer.

With that done, remove a bunch of buggy code from CGExprConstant for handling scalar expressions which is no longer necessary.

Fixes PR11705.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
fe40bf8276b8989cacd39e15f8b393fd0661915a 04-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> Support __has_attribute for objc_suppress_autosynthesis
which is automatic with proper spelling :).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
d1247c5002ee511e6f6c3c26214221c391d437cd 04-Jan-2012 Ted Kremenek <kremenek@apple.com> Extend ConditionBRVisitor to handle condition variable assignments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147526 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
d6aba06861c41ccbc4926e5fe3cecd97b20410c0 04-Jan-2012 Douglas Gregor <dgregor@apple.com> Don't treat 'import' as a contextual keyword when we're in a caching lexer, or when modules are disabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147524 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f88c400085eac7068399d0a01dbad89f8c579f07 04-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Add an explicit LambdaExprContext to Declarator, to parallel BlockLiteralContext. Use it to ensure semantic analysis of types isn't confused by the lack of a type specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147522 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
dc3b723d35067e5d13474247b94a10c869cc7e58 04-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Stub out the Sema interface for lambda expressions, and change the parser to use it. Unconditionally error on lambda expressions because they don't work in any meaningful way yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
341b8be2b8069e09eb4d928bebf5d55a50515614 03-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc: diagnose misplacement of objc_suppress_autosynthesis
attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1ac13c37d8af0145b7e03fea70b7b1476b8828c9 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Re-uglify #public and #private to #__public_macro and #__private_macro.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
c13a34b690d2dc2a03c2fea75a0a1438636c19ce 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Eliminate the uglified keyword __import_module__ for importing
modules. This leaves us without an explicit syntax for importing
modules in C/C++, because such a syntax needs to be discussed
first. In Objective-C/Objective-C++, the @import syntax is used to
import modules.

Note that, under -fmodules, C/C++ programs can import modules via the
#include mechanism when a module map is in place for that header. This
allows us to work with modules in C/C++ without committing to a syntax.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147467 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/TokenKinds.def
ex/Preprocessor.h
ema/Sema.h
e23dcf3524fe01208cc79e707412f0a5dd8eed7b 03-Jan-2012 Fariborz Jahanian <fjahanian@apple.com> objc: introduce objc_suppress_autosynthesis class
attributes for later use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147457 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/Attr.td
ema/AttributeList.h
94ad28b31433058445a27db722f60402ee820bea 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Under -fmodules, accept #public <macroname> and #private <macroname>
to make a macro public (the default for headers) or private,
respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147455 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Preprocessor.h
5948ae1021122164b22f74353bb7fe325a64f616 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce a non-uglified syntax for module imports in Objective-C:

@import identifier [. identifier]* ;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticParseKinds.td
asic/IdentifierTable.h
asic/TokenKinds.def
ex/Preprocessor.h
arse/Parser.h
ema/Sema.h
7025d2cc327ec75353454586df2987afce5e5789 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Add -fno-modules to the driver, to turn off modules (although they're off by default anyway).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147449 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
752c74d99b647710a495c2ff5f815c30a30c3264 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Add a "Modules" language option, which subsumes the previous
"AutoModuleImport" preprocessor option and is tied to -fmodules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
rontend/PreprocessorOptions.h
ex/Preprocessor.h
c514a8a0eaa575cf46b038cc27fa1e4e8c22f89a 03-Jan-2012 Douglas Gregor <dgregor@apple.com> Rename the command-line option for mapping #include/#import over to
module imports from -fauto-module-import to -fmodules. The new name
will eventually be used to enable modules, and the #include/#import
mapping is a crucial part of the feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147447 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
d07cc36c71558b62889691184dd04655a33fd12a 02-Jan-2012 Douglas Gregor <dgregor@apple.com> Diagnose cases where the definition of a particular type is required,
is known (to Clang), but is not visible because the module has not yet
been imported.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
abf07a7fb669dcb74040eef948d61dfe3c59ff17 02-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Fix PR11685 by implementing -ffast-math and its various friends in the
Clang driver. This involves a bunch of silly option parsing code to try
to carefully emulate GCC's options. Currently, this takes a conservative
approach, and unless all of the unsafe optimizations are enabled, none
of them are. The fine grained control doesn't seem particularly useful.
If it ever becomes useful, we can add that to LLVM first, and then
expose it here.

This also fixes a few tiny bugs in the flag management around
-fhonor-infinities and -fhonor-nans; the flags now form proper sets both
for enabling and disabling, with the last flag winning.

I've also implemented a moderately terrifying GCC feature where
a language change is also provided by the '-ffast-math' flag by defining
the __FAST_MATH__ preprocessor macro. This feature is tracked and
serialized in the frontend but it isn't used yet. A subsequent patch
will add the preprocessor macro and tests for it.

I've manually tested that codegen appears to respect this, but I've not
dug in enough to see if there is an easy way to test codegen options w/o
relying on the particulars of LLVM's optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/ArgList.h
river/CC1Options.td
river/Options.td
dcbe5f71dfffa4540a367d7f1effb5a717d6c4c3 02-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Small refactoring so that only one of the mergeVisibility/mergeLinkage functions
calls setVisibility/setLinkage.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a28cb3ee88946deeb8e58d41c1e75de2d93e9cbd 02-Jan-2012 Douglas Gregor <dgregor@apple.com> Eliminate ObjCProtocolDecl's end-of-definition location. It is not
used anywhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ec1a58b201b3276966aaade8ac3ac4705aba96c2 02-Jan-2012 Douglas Gregor <dgregor@apple.com> Move ObjCProtocolDecl::EndLoc into its DefinitionData, and give
ObjCProtocolDecl proper source-range information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147420 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c9d3c7edb513e9b8a6ab65b04133653e71d7a72b 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Eliminate the ForwardDecl/InitiallyForwardDecl bits from ObjCProtocolDecl. They are no longer needed

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
163ada8a0f56a9928feaaaf11a4eb7d41f65a0e2 01-Jan-2012 Abramo Bagnara <abramo.bagnara@gmail.com> Added -Wdisabled-macro-expansion warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147418 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
dba9361891ab147b6ea658c1834bc1d660f5226b 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Implement declaration merging for Objective-C protocols across
multiple, disjoint modules. There is far too much duplicating with the
ObjCInterfaceDecl case here, which I'll eliminate shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147417 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
bd9482d859a74bf2c45ef8b8aedec61c0e1c8374 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Eliminate ObjCForwardProtocolDecl, which is redundant now that
ObjCProtocolDecl modules forward declarations properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147415 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
3937f87e53b3ee0c8da93536f48f6f96c006309d 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Eliminate ASTMutationListener::UpdatedAttributeList, which is no
longer needed now that we aren't back-patching ObjCProtocolDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
27c6da284f90e32cda0ec8f52a2b6ba5a2613252 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Wire up redeclaration chains for Objective-C protocols, so that both
forward declarations and definitions of an Objective-C protocol are
represented within a single chain of ObjCProtocolDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
1d784b277cdfd4eba03680715d2a082b3f28d295 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Introduce the core infrastructure needed to model redeclaration chains
for Objective-C protocols, including:
- Using the first declaration as the canonical declaration
- Using the definition as the primary DeclContext
- Making sure that all declarations have a pointer to the definition
data, and that we know which declaration is the definition
- Serialization support for redeclaration chains and for adding
definitions to already-serialized declarations.

However, note that we're not taking advantage of much of this code
yet, because we're still re-using ObjCProtocolDecls.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5e2a1ff9f28d2eab256d2553e76a9c9d54693875 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Move the data that corresponds to the definition of a protocol into a
separately-allocated DefinitionData structure. Introduce various
functions that will help with the separation of declarations from
definitions (isThisDeclarationADefinition(), hasDefinition(),
getDefinition()).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147408 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3fc73ee0c613715ebce78e30b4d050ea715a007d 01-Jan-2012 Douglas Gregor <dgregor@apple.com> Use declaresSameEntity() when comparing ObjCProtocolDecls, and
getCanonicalDecl() when putting ObjCProtocolDecls into a set. This is
groundwork for making ObjCProtocolDecl redeclarable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
51f564f80d9f71e175635b452ffeeeff899e9bf1 31-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement support for module requirements, which indicate the language
features needed for a particular module to be available. This allows
mixed-language modules, where certain headers only work under some
language variants (e.g., in C++, std.tuple might only be available in
C++11 mode).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticLexKinds.td
asic/Module.h
ex/HeaderSearch.h
ex/ModuleMap.h
erialization/ASTBitCodes.h
7feb321af47e65ddfe88f44f5fd994bbeba53fcf 30-Dec-2011 Craig Topper <craig.topper@gmail.com> Add FMA4 intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
6a511e14074e186328020fce78fe0c33deb64d1b 30-Dec-2011 Craig Topper <craig.topper@gmail.com> Add FMA4 feature flag. Intrinsics coming soon. Also make sse4a feature flag imply sse3. Matches gcc behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147370 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d7c56e1114bfe7d461786903bb720d2c6efc05a1 29-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Change the diagnostics which said 'accepted as an extension' to instead say
'is an extension'. The former is inappropriate and confusing when building with
-Werror/-pedantic-errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147357 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
e14e08b2552b43d81a295401ddf9b8da2c499233 29-Dec-2011 Craig Topper <craig.topper@gmail.com> Add popcnt feature flag to match gcc. This flag is implied when sse42 is enabled, but can be disabled separately. Move popcnt intrinsics to popcntintrin.h to match gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147340 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
80d4b55db94db2172a04617d1a80feca6bbcea5c 28-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
ST/Expr.h
b406669fea7c8db83a377f368f1689c848296974 28-Dec-2011 Benjamin Kramer <benny.kra@googlemail.com> 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
asic/TargetInfo.h
375bb1413c041055262c8a416f20d10474a5eda9 27-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
ST/DeclObjC.h
ST/RecursiveASTVisitor.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
asic/DeclNodes.td
erialization/ASTBitCodes.h
47d2145675099893d702be4bc06bd9f26d8ddd13 27-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
asic/DiagnosticASTKinds.td
5df37bd0242e838e465f0bd51a70af424d152053 26-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> 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
ema/Sema.h
f58f3647b19c40455065c7395db82848d8830981 26-Dec-2011 Craig Topper <craig.topper@gmail.com> Add BMI2 intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
0b269c1f3641511fb397488f8b82850416892fc9 25-Dec-2011 Craig Topper <craig.topper@gmail.com> Add the rest of the BMI intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
5c75208a5b88c835bce0a1671015c7e22c72f35f 25-Dec-2011 Craig Topper <craig.topper@gmail.com> Add intrinsics for lzcnt and tzcnt instructions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
31ceea096563c42e083eded27f6fe19ed244c0a1 25-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
river/Options.td
5cbd751a2f9d73248c5336140d73680fcd4669a3 24-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
7bb034065ec8bf54f54e4a87e77cbfae704ea419 24-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
967cd889e59ff73a53b71463d33df7bdfc4b8567 24-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
cbe627b54eaeeeac7a28725de6c9b60b4d3ab32d 24-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
ff91d240d431afbec18e25909caaf5c17f26e643 23-Dec-2011 Nico Weber <nicolasweber@gmx.de> 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
ST/DeclTemplate.h
17ba267cae596d5eb35fa0963ebcf73571572940 23-Dec-2011 Anton Yartsev <anton.yartsev@gmail.com> fix for PR11634

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147224 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ffbe9b9c64ab2e94b9d48ec56e511f75826fc80a 23-Dec-2011 Benjamin Kramer <benny.kra@googlemail.com> 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
ST/Expr.h
ST/Type.h
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/LangOptions.def
asic/Specifiers.h
asic/TokenKinds.def
rontend/LangStandard.h
rontend/LangStandards.def
d217465128c7be70f74d3b4082355ea8c3b16fee 23-Dec-2011 Benjamin Kramer <benny.kra@googlemail.com> 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
rontend/LangStandards.def
28a324a30b0677309a4c5d73ef5197398265e129 23-Dec-2011 Craig Topper <craig.topper@gmail.com> Add AVX2 multiply intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
8fdb6dee2da0dee97d64fe12eda46fb318414de9 23-Dec-2011 Dylan Noblesmith <nobled@dreamwidth.org> 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
rontend/CompilerInvocation.h
9241057266d3460392cbb7fec6ec942d3330ece3 23-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
arse/Parser.h
712ef874534ee1bef41d1aa4664ae36148ec8b12 23-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> 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
ST/DeclObjC.h
585ec93e1bd4fdd5a37aa19848e5f92084f0d923 23-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
asic/DiagnosticLexKinds.td
682060c5d95f6e4f79536013781ab0870cdd3850 23-Dec-2011 Ted Kremenek <kremenek@apple.com> Colorize and condense CFG pretty-printing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147203 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
5cb94a78202ccb1007df0be86884297761f4a53a 23-Dec-2011 Nico Weber <nicolasweber@gmx.de> 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
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
arse/Parser.h
c3cfd2ab3338d47861ece597212f21b972ebe727 22-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
cce54aa6a40e4c39b25532336e17ce40f0a7e087 22-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
erialization/ASTReader.h
567003e572eed69cf1e8a04601076c8803355c7a 22-Dec-2011 Kevin Enderby <enderby@apple.com> 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
river/CC1AsOptions.td
cf15cef8447e8b3ae08e81ad25ae9eb443038acf 22-Dec-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Overloading for initializer list construction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147156 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
10f04a6267eb07d3be00db1fd0369e1398f5d0a8 22-Dec-2011 Sebastian Redl <sebastian.redl@getdesigned.at> 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
ema/Initialization.h
231f793326e3a3ad6e07949adb776f45c07f0f7b 22-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
4617e2843e711136746865d7d6d27c7cead21f2b 22-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Delete stray semicolon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147140 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
e6a24e83e71f361c7b7de82cf24ee6f5ddc7f1c2 22-Dec-2011 Eli Friedman <eli.friedman@gmail.com> 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
asic/TargetInfo.h
6180245e9f63d2927b185ec251fb75aba30f1cac 22-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
0f75323264b93a318ac9007eb5ec5b233c444068 22-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
erialization/ASTReader.h
15ce164836472bfba88b30e53aa3f6ac0fb8a95d 22-Dec-2011 Ted Kremenek <kremenek@apple.com> 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
nalysis/AnalysisContext.h
97bbab2df74cbfe221fb20454738d607a41f3ca4 21-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> 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
ST/DeclObjC.h
cee5ec9df479994e4ba27fb65b7ded5bb5a980eb 21-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
asic/SourceManager.h
d7711ec430fde5706f85ba6c4b85283a8e743ff7 21-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> 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
asic/SourceManager.h
4a4f25a5a80dd594acf68c882bcdbf1a38468a45 21-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
318e460ada6e589bd864d9ecb86053cc6852cabf 21-Dec-2011 Craig Topper <craig.topper@gmail.com> Add AVX2 horizontal add/sub intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
7098cbd601ad915aed22d4b5850da99359f25bf3 21-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
asic/DiagnosticASTKinds.td
1d238ea926bbdd04356ce475934fcd4cac654c4b 21-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
ST/Decl.h
a44854a23b3f090729d82f447aa88df4f6563263 20-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
asic/DiagnosticParseKinds.td
2cbe791d3e9b26f30196c4852da75d9ad67b4ad9 20-Dec-2011 Anna Zaks <ganna@apple.com> [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
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
1d4c1137c314cfb9ced32006cacdb80deffb66d4 20-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
erialization/ASTDeserializationListener.h
erialization/ASTWriter.h
d7f02c6c051673ea1004b1830ad84e69ef712919 20-Dec-2011 Roman Divacky <rdivacky@freebsd.org> 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
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
2ccd89cff3f1c18b48f649240302446a7dae28b9 20-Dec-2011 Douglas Gregor <dgregor@apple.com> 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
asic/DiagnosticSemaKinds.td
ema/Lookup.h
ema/Sema.h
4c07c5dfebd270b2f0660e86f056eeafdb26a4fb 20-Dec-2011 Craig Topper <craig.topper@gmail.com> 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
asic/BuiltinsX86.def
99ba9e3bd70671f3441fb974895f226a83ce0e66 20-Dec-2011 David Blaikie <dblaikie@gmail.com> 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
ST/Attr.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/ExprCXX.h
ST/Mangle.h
nalysis/Analyses/Dominators.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/PostOrderCFGView.h
nalysis/Analyses/ReachableCode.h
asic/Diagnostic.h
asic/FileSystemStatCache.h
odeGen/CodeGenAction.h
odeGen/ModuleBuilder.h
river/Action.h
river/Job.h
rontend/ChainedDiagnosticConsumer.h
rontend/FrontendAction.h
ex/Lexer.h
ex/PPCallbacks.h
ex/PreprocessorLexer.h
ema/SemaConsumer.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugType.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
f6702a3927147655206ae729a84339c4fda4c651 20-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> 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
ema/Sema.h
9490ab433deef70105d817616928d700f87642d9 20-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Fix tentative parsing so it knows how to handle an ambiguous for-range-declaration. PR11601.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146953 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d9d12e0c0b1ad3ab6eafa18a454e1a72ce351dd2 20-Dec-2011 Ted Kremenek <kremenek@apple.com> Refine error diagnostic for using bridged casts when not using ARC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
305dc3ebaa0bea5f3b789e4b54afc79c25907615 20-Dec-2011 Douglas Gregor <dgregor@apple.com> Detect when mapping a #include/#import over to a submodule ends up
hitting a submodule that was never actually created, e.g., because
that header wasn't parsed. In such cases, complain (because the
module's umbrella headers don't cover everything) and fall back to
including the header.

Later, we'll add a warning at module-build time to catch all such
cases. However, this fallback is important to eliminate assertions in
the ASTWriter when this happens.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/Module.h
e2eb0e997320c629b2762b56b911bff43187acaa 19-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: bridge casts in non-arc mode are now
error. // rdar://10597832


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
a126651270acf17c434f60f86a3ab3687f87813a 19-Dec-2011 Douglas Gregor <dgregor@apple.com> Eliminate the first->last redeclaration map from the AST file
format. It's no longer being used, now that we have a new
implementation of redeclaration chains.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146905 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
00852e41261f9860233d3b407fce0506346cdacb 19-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: bridge casts in non-objc-arc mode are ignord.
But, warn too. // rdar://10597832


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146904 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
21cf08b7e0c03266f37f436c2afd8521c643b31a 19-Dec-2011 Douglas Gregor <dgregor@apple.com> Remove ASTReader's PendingForwardRefs, which is now handled by the
(more general) fix-up of definition data pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146903 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
fc529f7fcafe7da0b8a32621e13685891e8ce52a 19-Dec-2011 Douglas Gregor <dgregor@apple.com> Once we have fully deserialized a redeclaration chain for something
with a definition pointer (e.g., C++ and Objective-C classes), zip
through the redeclaration chain to make sure that all of the
declarations point to the definition data.

As part of this, realized again why the first redeclaration of an
entity in a file is important, and brought back that idea.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
erialization/ASTReader.h
adafc2edc0dc4fa25ea6f0a136f599a6ac279081 19-Dec-2011 Douglas Gregor <dgregor@apple.com> The submodule offset map can introduce "empty" remapping entries for
imported modules that don't introduce any new entities of a particular
kind. Allow these entries to be replaced with entries for another
loaded module.

In the included test case, selectors exhibit this behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146870 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ContinuousRangeMap.h
9c2ffd803af03f1728423d0d73ff87d988642633 19-Dec-2011 Craig Topper <craig.topper@gmail.com> More AVX2 intrinsic support including saturating add/sub and palignr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146857 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
099e7f647ccda915513f2b2ec53352dc756082d3 19-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr handling improvements. Produce detailed diagnostics when a 'constexpr'
variable is initialized by a non-constant expression, and pass in the variable
being declared so that earlier-initialized fields' values can be used.

Rearrange VarDecl init evaluation to make this possible, and in so doing fix a
long-standing issue in our C++ constant expression handling, where we would
mishandle cases like:

extern const int a;
const int n = a;
const int a = 5;
int arr[n];

Here, n is not initialized by a constant expression, so can't be used in an ICE,
even though the initialization expression would be an ICE if it appeared later
in the TU. This requires computing whether the initializer is an ICE eagerly,
and saving that information in PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
asic/DiagnosticASTKinds.td
925be547b163675b312e3cac0cc7f37f31d787c1 19-Dec-2011 Craig Topper <craig.topper@gmail.com> Begin adding AVX2 intrinsics. Necessitated increasing the number of bits used to store builtinID when serializing identifier table.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
a1be278c4f3a234ff61f04018d26c6beecde1654 18-Dec-2011 Douglas Gregor <dgregor@apple.com> Completely re-implement (de-)serialization of declaration
chains. The previous implementation relied heavily on the declaration
chain being stored as a (circular) linked list on disk, as it is in
memory. However, when deserializing from multiple modules, the
different chains could get mixed up, leading to broken declaration chains.

The new solution keeps track of the first and last declarations in the
chain for each module file. When we load a declaration, we search all
of the module files for redeclarations of that declaration, then
splice together all of the lists into a coherent whole (along with any
redeclarations that were actually parsed).

As a drive-by fix, (de-)serialize the redeclaration chains of
TypedefNameDecls, which had somehow gotten missed previously. Add a
test of this serialization.

This new scheme creates a redeclaration table that is fairly large in
the PCH file (on the order of 400k for Cocoa.h's 12MB PCH file). The
table is mmap'd in and searched via a binary search, but it's still
quite large. A future tweak will eliminate entries for declarations
that have no redeclarations anywhere, and should
drastically reduce the size of this table.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146841 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
79cbbdc8affe52591f7ee487a789639aa38331ec 18-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Split the Windows toolchain definition into its own file. This is
especially nice as the Windows toolchain needs the windows header files,
and has lots of platform specific hooks in it.

To facilitate the split, hoist a bunch of file-level static helpers into
class-level static helpers. Spiff up their doxygen comments while there
as they're now more likely to be looked up via docs.

Hopefully, this will be followed by further breaking apart of the
toolchain definitions. Most of the large and complex ones should likely
live on their own. I'm looking at you Darwin. ;]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146840 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
2b03bb0314cea77f0a8740609a9cccb2253ec1b1 17-Dec-2011 Craig Topper <craig.topper@gmail.com> Add -mavx2 and -mno-avx2 command line support. Also add core-avx2 processor type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146835 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
917078386b9b5113f33c093e296e10927b00b37e 17-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Don't deserialize bodies of interesting decls while iterating
over them because more interesting decls can be added during body
deserialization.

Should fix msvc build tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146824 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
2a76410c0a23a6feb98d0f13e9c8bfa0638d3adf 17-Dec-2011 Ted Kremenek <kremenek@apple.com> Refactor SerializeDiagnosticsPrinter to using DiagnosticRenderer. This gives us comparative diagnostics
to TextDiagnosticPrinter.

This certainly can be cleaned up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146820 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
2898d4f7648e6ed5e9047068f1e8ee2f3c2bcd75 17-Dec-2011 Ted Kremenek <kremenek@apple.com> Refactor 'TextDiagnostic' to have a parent class 'DiagnosticRenderer' which handles
the policy of how diagnostics are lowered/rendered, while TextDiagnostic handles
the actual pretty-printing.

This is a first part of reworking SerializedDiagnosticPrinter to use the same
inclusion-stack/macro-expansion logic as TextDiagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146819 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticRenderer.h
rontend/TextDiagnostic.h
672b3232f7b0cc5dc024a7702be1a26885fdea57 17-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a sanity check in the Redeclarable::redecl_iterator to avoid infinite loop
when we formed an invalid redeclaration chain due to a bug.

Thanks to Doug for the hint!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
d7dd7755fc5092c69f492d6f32cb0e34e63c6a53 17-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix _mm_permute_ps and _mm256_permute_ps AVX intrinsics to use "I" (ICE)
markings. Fix avxintrin.h to take them into account.
Part of rdar://10595450

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146810 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
c17f88efa20c9e12c7e07bf02041fd1f0e65d65b 17-Dec-2011 Chad Rosier <mcrosier@apple.com> Revert r146797, which was a partial revert of r146791; It was correct in the
first place. The permutevar_* (note the *var*) intrinsics use ymm/mem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146807 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
1e4faf56cd310dbd89b7d192db57c3d120bec8a2 17-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix _mm256_extractf128_* AVX intrinsics to use "I" (ICE) markings. Fix
avxintrin.h to take them into account.
Part of rdar://10595450


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146804 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
197808762de70edd67be1e4adbcc6cfc1823f53a 17-Dec-2011 Chad Rosier <mcrosier@apple.com> Partial revert of r146791; vpermilps/vpermilpd instructions accepts ymm/mem/imm8.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
fc038e9ef8ed262724f42597ca5c844de97b1202 17-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Remove a non-gcc-compatible extension that would apply attributes on declarations without a declarator to structs. Add a warning for ignored attributes. Patch by Michael Han.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146796 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
777d706547ebc751d998134774d9d5388fff8e02 17-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Minor: Simplify & assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146792 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
b8786c4dc4d5a4c72f23a2d46cac5f9bc2641926 17-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix _mm256_round_pd, _mm256_round_ps, _mm_permute_pd and _mm256_permute_pd AVX
intrinsics to use "I" (ICE) markings. Fix avxintrin.h to take them into
account.
Part of rdar://10595450


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
a3ca4d655974ad66e432a6c78dd08b277a639edf 16-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Don't allow #include (and its friends #import, #include_next and
#__include_macros) in the arguments of a function-style macro. Directives in the
arguments of such macros have undefined behaviour, and GCC does not correctly
support these cases. In some situations, this can lead to better diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
37f953f021c67e3b97f1ef38e1ef3cb08bd9d146 16-Dec-2011 Douglas Gregor <dgregor@apple.com> Add missing header change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146764 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7ec59c78f1e19157767648cbe3f0e3630ca1afe7 16-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Add the value of "suitably aligned" from the C++11 standard to Basic/TargetInfo.
This is equal to alignof(std::max_align_t) on the platform and equal to the
alignment provided by malloc. (Platform owners please double-check your
platform's value.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b95ddf15e75a6ea27f10c410bbc7a82308b19f4b 16-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix vinsertf128_* AVX intrinsics to use "I" (ICE) markings. Fix avxintrin.h to
take them into account.
rdar://10590282


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
c5cda1121e270548ecf258d0ed72919a5211a94e 16-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix vperm2f128_* AVX intrinsics to use "I" (ICE) markings. Fix avxintrin.h to
take them into account.
rdar://10576962


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
80d39bf55f962278867f54696a033f1aa546d5a0 16-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add a warning flag for ext_embedded_directive. gcc considers this undefined
behaviour to be an error, so it's useful to be able to make it an error in clang
too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146755 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
25b009a9d2a79929112d3c28c7dd1730bf5246c8 16-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> PR11594: Don't blindly build a UnaryOperator UO_Minus on an expression which
might not be an rvalue when checking array accesses. Instead, pass through a
flag indicating the array index is negated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146753 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
08d6e032a2a0a8656d12b3b7b93942987bb12eb7 16-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> C++11 constexpr: Add note stacks containing backtraces if constant evaluation
fails within a call to a constexpr function. Add -fconstexpr-backtrace-limit
argument to driver and frontend, to control the maximum number of notes so
produced (default 10). Fix APValue printing to be able to pretty-print all
APValue types, and move the testing for this functionality from a unittest to
a -verify test now that it's visible in clang's output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146749 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
asic/Diagnostic.h
asic/DiagnosticASTKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
8d2dbbf9ddfd9d762a341d83f83d840ff68ce03d 16-Dec-2011 Douglas Gregor <dgregor@apple.com> If there is a definition of an ObjCInterfaceDecl, make it the Decl returned from the corresponding ObjCInterfaceType

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146740 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
91ec7894ec186dd36f509682f00486c98d8228ed 16-Dec-2011 David Blaikie <dblaikie@gmail.com> Support decltype in pseudo destructors and dependent destructor calls.

Reviewed by Eli Friedman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146738 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
298aaf2c97ab7c4d5bd3a8e8d8112e3bc77b29b6 16-Dec-2011 Logan Chien <loganchien@google.com> Merge with clang upstream r146715 (Dec 16th 2011)

Change-Id: I66024a7b6eb0ee37d7b3ff7ce41c0bfb4b514bee
0af550115df1f57f17a4f125ff0e8b34820c65d1 16-Dec-2011 Douglas Gregor <dgregor@apple.com> Fix chaining of ObjCInterfaceDecl redeclarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146722 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
05c272fed899b8d3142cf080e86a235fc6168862 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Move ObjCInterfaceDecl's "EndLoc" into DefinitionData, since it only
applies to an actual definition. Plus, clarify the purpose of this
field and give the accessor a different name, since getLocEnd() is
supposed to be the same as getSourceRange().getEnd().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7723fec9b45b7258c0eddf4cbfd0d335348f5edc 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Keep track of all declarations of an Objective-C class (both forward
declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
26fec63b14565e9e2d8c9935b276b99be950444a 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Extend ObjCInterfaceDecl::DefinitionData to contain a pointer to the
definition, and implement ObjCInterfaceDecl::getDefinition()
efficiently based on that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146669 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
53df7a1d34f21d8f2309311d1067d463e9064c60 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Introduce the core infrastructure needed to model a complete
redeclaration chain for Objective-C classes, including:
- Using the first declaration as the canonical declaration.
- Using the definition as the primary DeclContext
- Making sure that all declarations have a pointer to the definition
data, and the definition knows that it is the definition.
- Serialization support for when a definition gets added to a
declaration that comes from an AST file.

However, note that we're not taking advantage of much of this code
yet, because we're still re-using ObjCInterfaceDecls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dec1cc4ec73e96f315ab7dee51459700c0ad821d 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Two null Decl*'s don't refer to the same declaration, because they
don't refer to anything. Amusingly, we were relying on this in one
place. Thanks to Chandler for noticing the weirdness in
declaresSameEntity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146659 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
161794732195881c33305f701f6e58721998541f 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Provide a default constructor for ObjCInterfaceDecl::DefinitionData
that value-initializes all of its members for which
default-initialization does not suffice. This should clean up the
failures for compilers that do not implement C++ DR543:

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#543

and, therefore, implement very unfortunate semantics for
value-initialization of classes with implicitly-declared, non-trivial
default constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d02deebce5f1b283101e035a7f5d5bab0d2068ec 15-Dec-2011 Hans Wennborg <hans@hanshq.net> Support the 'a' length modifier in scanf format strings as a C90
extension.

This fixes gcc.dg/format/c90-scanf-3.c and ext-4.c (test for excess
errors).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146649 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
2e5c15be82f362611c5928ce853d0685ff98c766 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Move the definition-specific data of ObjCInterfaceDecl into a
separately-allocated DefinitionData structure, which we manage the
same way as CXXRecordDecl::DefinitionData. This prepares the way for
making ObjCInterfaceDecls redeclarable, to more accurately model
forward declarations of Objective-C classes and eliminate the mutation
of ObjCInterfaceDecl that causes us serious trouble in the AST reader.

Note that ObjCInterfaceDecl's accessors are fairly robust against
being applied to forward declarations, because Clang (and Sema in
particular) doesn't perform RequireCompleteType/hasDefinition() checks
everywhere it has to. Each of these overly-robust cases is marked with
a FIXME, which we can tackle over time.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146644 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
erialization/ASTReader.h
f8aba8c618920db8f6ef2db0c554b0c270503cef 15-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc: do not auto synthesize properties declared in
protocols; with a warning. // rdar://10567333


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
60ef308e51c71b760d7f598c1b763ceb7b768148 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Replace all comparisons between ObjCInterfaceDecl pointers with calls
to declaresSameEntity(), as a baby step toward tracking forward
declarations of Objective-C classes precisely. Part of
<rdar://problem/10583531>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
eaa9511dd2bcb0c7f90f47a236a91c82048f484e 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Replace Decl::isSameEntityAs with a free function declaresSameEntity, which can cope with NULL pointer values

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
daaefc5381f9aafbb1cb6f88fb5ac6aaf34d65bf 15-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Produce more detailed diagnostics when static_assert condition is not an ICE.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146607 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c896ad064fd6ee73a7e0536d94df77b2cc7313b6 14-Dec-2011 Douglas Gregor <dgregor@apple.com> Introduce Decl::isSameEntityAs(), to help compare declarations using
their canonical Decl nodes. Not used yet, but it will be.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
af764723bf94f8cc7596e2b2f2a97766d188ed98 14-Dec-2011 Douglas Gregor <dgregor@apple.com> Eliminate the vistigial ObjCClassDecl::ObjCClassRef, and inline its
members into ObjCClassDecl, saving ourselves one pointer per forward
declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
553689148f546783e127749438bf6d7806e6bb1d 14-Dec-2011 Douglas Gregor <dgregor@apple.com> When name lookup comes across a declaration that is in a module that
is not visible, look for any previous declarations of that entity that
might be visible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146563 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
80fb7dd8e0c56632dc68f5864f70abb2fde0e1df 14-Dec-2011 Matt Beaumont-Gay <matthewbg@google.com> r146430 lost some compile-time performance on MultiSource/Benchmarks/MiBench/security-rijndael; this gets most of it back.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146562 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
28fd98d66dab4569316de2b5881d91b534a42461 14-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Minor refactor to addTaint.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146535 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
9f6d068b29ea2f6276f1105c71d9e768201f2b88 14-Dec-2011 Chad Rosier <mcrosier@apple.com> Per discussion on the list, remove BitcodeVerify pass to reimplement as a free function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146530 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
odeGen/CodeGenAction.h
river/CC1Options.td
rontend/FrontendOptions.h
a6dc7eff27a8c59bee42809270971931b811dd44 14-Dec-2011 Richard Trieu <rtrieu@google.com> Make the diagnostic message more consistant. Update the type comparison to
handle non-pointer types. This is for the extra info printed when function
types are compared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146525 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7209646add692c50503435bcffb13187a3349552 13-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc: diagnose duplicate declaration of methods
in classes. // rdar://10535349


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146504 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e422e45a6a89d450b8eca10f671b49874e87617a 13-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Indexing API: Fix indexing of missed references.

rdar://10567864&10567916

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7cb210100dedc2ebd0910cf270c794480a728be2 13-Dec-2011 Ted Kremenek <kremenek@apple.com> Tweak ARC diagnostic categories and rename 'Automatic Reference Counting Issue' to 'ARC Parse Issue' and 'ARC Issue' to 'ARC Semantic Issue'. Patch by Jean-Daniel Dupas.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146483 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
df512bfbc4b8c00202ea7a8c900c59ec55890676 13-Dec-2011 David Blaikie <dblaikie@gmail.com> Disallow decltype in qualified declarator-ids.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146480 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c1c5f27c64dfc3332d53ad30e44d626e4f9afac3 13-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add checks and diagnostics for many of the cases which C++11 considers to not
be constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146479 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticASTKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
9d24a8be93b28488dbfb9bbe8aa6fe35b21a5b0c 13-Dec-2011 Francois Pichet <pichet2000@gmail.com> Implement the Microsoft __if_exists/if_not_exists extension in initializer-list.
Necessary to parse Microsoft ATL code.

Example:
int array[] = {
0,
__if_exists(CLASS::Type) {2, }
3
};

will declare an array of 2 or 3 elements depending on if CLASS::Type exists or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146447 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ba96ffcb2a444d12ffcc4781bd443279c7250d7e 13-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: better diagnostic when block is declared
inside a struct/union.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146444 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ff7892758f1e46221b552486c1e329db92147ebc 13-Dec-2011 Chad Rosier <mcrosier@apple.com> Add frontend flags to enable bitcode verifier pass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146441 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
odeGen/CodeGenAction.h
river/CC1Options.td
rontend/FrontendOptions.h
9631939f82c0eaa6fb3936a0ce58a41adfbc9011 12-Dec-2011 Tony Linthicum <tlinth@codeaurora.org> Hexagon backend support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsHexagon.def
asic/LangOptions.def
asic/TargetBuiltins.h
river/CC1Options.td
river/Options.td
60f24e781484250d3602261477d16321db7a157b 12-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Further tweaking of diagnostic text for casts performing reinterpret_cast
conversions in constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146406 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
4cd9b8f7fb2cebf614e6e2bc766fad27ffd2e9de 12-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Clean up diagnostic wording for disallowed casts in C++11 constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
c08e618f990e3a01a86ee221df73268a66664be8 12-Dec-2011 Hans Wennborg <hans@hanshq.net> Fix signature of vsscanf in Builtins.def

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d95a8ab030fd2e6daec901f3d0be8c7bb2b7c941 12-Dec-2011 Hans Wennborg <hans@hanshq.net> Fix signature of sscanf in Builtins.def

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c216a01c96d83bd9a90e214af64913e93d39aacc 12-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement C++11 constant expression cast restrictions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
439ddaada2df048ecad2c0ba1934f8a890812618 12-Dec-2011 Hans Wennborg <hans@hanshq.net> Make fscanf, vscanf, etc. be recognized as scanf-like functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146367 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
dd1f29b6d686899bfd033f26e16cb1621e5549e8 12-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Prepare constant expression infrastructure for the generation of richer
diagnostics. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6d6a83c3754b449ac24cb83bc6d3a50b10535061 11-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer]Fixup r146336.

Forgot to commit the Header files.
Rename generateUnknownVal -> makeGenericVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146337 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
6fcd932dfd6835f70cc00d6f7c6789793f6d7b66 10-Dec-2011 Hans Wennborg <hans@hanshq.net> Check that arguments to a scanf call match the format specifier,
and offer fixits when there is a mismatch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146326 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
006e42f0c8b65b783d565ef10b938a9e82fc02e3 10-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> Add ability to supply additional message to availability macros,
// rdar://10095131


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146304 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
arse/Parser.h
ema/AttributeList.h
001f628a693960380e37c2b58a1009da77d7e425 10-Dec-2011 Daniel Dunbar <daniel@zuster.org> Driver: Handle -f{no-}honor-infinities, -f{no-}honor-nans, and
-ffinite-math-only.
- No test case yet, I don't know how to construct a situation where this
matters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146297 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
2c3c7675b4c01b9d555c47232597a000fbb93c26 10-Dec-2011 Matt Beaumont-Gay <matthewbg@google.com> Fix up doxyments (\arg vs \p).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146292 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f48fdb0937e67f691393f9ffdf75653e5128ea13 09-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> C++11 constant expressions: Don't use CheckICE in C++11; instead, determine
whether an expression is a (core) constant expression as a side-effect of
evaluation. This takes us from accepting far too few expressions as ICEs to
accepting slightly too many -- fixes for the remaining cases are coming next.

The diagnostics produced when an expression is found to be non-constant are
currently quite poor (with generic wording but reasonable source locations),
and will be improved in subsequent commits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticCommonKinds.td
2def77399ab3088106a2d61372344f5b7104e1a2 09-Dec-2011 David Blaikie <dblaikie@gmail.com> Add notes for suppressing and (if it's a zero-arg function returning bool) fixing the function-to-bool conversion warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
6dce88d9f71cd4be18554af94145a9147b363199 09-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: diagnose synthesis of a 'weak unavailable' property.
// rdar://10535245


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
44d95b55711bc5c2e4055ebf1b5156e7fd3f0196 09-Dec-2011 David Blaikie <dblaikie@gmail.com> Provide a separate warning for weak vtables in explicit template instantiations. There's no (current) way to fix such templates to emit strong symbols/vtables, but perhaps users want to know about the cost being incurred anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f4f0c6095d1f481b94c6821c65e3bf1c9df42af7 09-Dec-2011 Hans Wennborg <hans@hanshq.net> Make printf warnings refer to wint_t and wchar_t by name
in addition to underlying type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146254 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
432a4558b8161c362efc319f8a38e074e74da201 09-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Fix inconsistency on when SValBuilder assumes that 2
types are equivalent.

+ A taint test which tests bitwise operations and which was
triggering an assertion due to presence of the integer to integer cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146240 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
6a1db484f32eb791840dd55a8d45c86ff5bd0834 09-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement the notion of umbrella directories, which implicity cover
all of the headers below that particular directory. Use umbrella
directories as a clean way to deal with (1) directories/frameworks
that don't have an umbrella header, but don't want to enumerate all of
their headers, and (2) PrivateHeaders, which we never want to
enumerate and want to keep separate from the main umbrella header.

This also eliminates a little more of the "magic" for private headers,
and frameworks in general.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146235 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
71088d1af241ad114294ec3fe03cd9baea39ee08 09-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Move ChainedIncludesSource into the Frontend library. This never really
belonged in the Serialization library, it's setting up a compilation,
not just deserializing.

This should fix PR11512, making Serialization actually be layered below
Frontend, a long standing layering violation in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146233 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedIncludesSource.h
erialization/ChainedIncludesSource.h
cb381eac84e5a14a8c7e7654eadbe1d3d54d795c 09-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Move a free function from the Frontend library into the Lex library as
part of HeaderSearch. This function just normalizes filenames for use
inside of a synthetic include directive, but it is used in both the
Frontend and Serialization libraries so it needs a common home.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146227 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
ex/HeaderSearch.h
c6994005dc9f677c831b8e90bdab483cc2197c29 09-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Save category name loc in ObjCCategoryImplDecl, patch by Jason Haslam!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
66aff4a3b0e127b523260c9720544a3e4be9a14f 09-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Teach the Makefile build about the new diagnostic file from r146207.
Amazingly this is all that's required.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
a2398d7da920b896001f385587e7f7d3366e5b17 09-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Separate the serialization library's diagnostics from the frontend's
diagnostics. Conflating them was highly confusing and makes it harder to
establish a firm layering separation between these two libraries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146207 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
asic/Diagnostic.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticIDs.h
asic/DiagnosticSerializationKinds.td
erialization/SerializationDiagnostic.h
5fc7def35ee858791e591d005b4ae343632ca931 08-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] If memory region is tainted mark data as tainted.
+ random comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146199 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
77d029f6a24dbf70d97e61757945df53fb250ea0 08-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement umbrella directories for modules, which are similar to
umbrella headers in the sense that all of the headers within that
directory (and eventually its subdirectories) are considered to be
part of the module with that umbrella directory. However, unlike
umbrella headers, which are expected to include all of the headers
within their subdirectories, Clang will automatically include all of
the headers it finds in the named subdirectory.

The intent here is to allow a module map to trivially turn a
subdirectory into a module, where the module's structure can mimic the
directory structure.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/ModuleMap.h
erialization/ASTBitCodes.h
10694cee2588442bee1e717f5042c58ffee25279 08-Dec-2011 Douglas Gregor <dgregor@apple.com> Within the module representation, generalize the notion of an umbrella
header to also support umbrella directories. The umbrella directory
for an umbrella header is the directory in which the umbrella header
resides.

No functionality change yet, but it's coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
5e3f9223db88227d6d21679c613b139d8160186d 08-Dec-2011 Douglas Gregor <dgregor@apple.com> Keep track of import dependencies between submodules within the module
that's currently being built. This is important for supporting
transitive dependencies ("export *" in the module map) completely.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146156 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderSearch.h
53a75c07dbe79b3dd5dd88a0378aefa18f793083 08-Dec-2011 David Blaikie <dblaikie@gmail.com> Decltype in non-pseudo (& non-dependent) dtor calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146155 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e1fca502e7f1349e9b4520a4ca9a02413bcf2b14 08-Dec-2011 Francois Pichet <pichet2000@gmail.com> Remove unused parameter from the LateParsedTemplatedFunction constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146145 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c24767c9dd869ba0e78c2d4c86d86ed24b8e401e 08-Dec-2011 Daniel Dunbar <daniel@zuster.org> Driver: Add a --rtlib={compiler-rt,libgcc} argument which I plan to use to allow
dual support for compiler-rt on Linux, during bringup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
river/ToolChain.h
a792aff1c7de253b89c473fdb7eef4a5bba83aec 07-Dec-2011 Hans Wennborg <hans@hanshq.net> Make printf warnings refer to intmax_t et al. by name
in addition to underlying type.

For example, the warning for printf("%zu", 42.0);
changes from "conversion specifies type 'unsigned long'" to "conversion
specifies type 'size_t' (aka 'unsigned long')"

(This is a second attempt after r145697, which got reverted.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146032 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
29f2787b6da552018a7716f18f5bd8f67bd6edb5 07-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make changes to SDiagsWriter to make it work in combination with the ARC migrator:

-Allow it to be used with multiple BeginSourceFile/EndSourceFile calls; for this introduce
a "finish" callback method in the DiagnosticConsumer. SDiagsWriter finishes up the serialization
file inside this method.
-Make it independent of any particular DiagnosticsEngine; make it use the SourceManager of the
Diagnostic object.
-Ignore null source ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ChainedDiagnosticConsumer.h
rontend/SerializedDiagnosticPrinter.h
2e23fd561a3fa739936d9b8416f46aad19a05eb4 07-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Initialize these values, fixing the build in cases where stack realignment
actually occurs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146013 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
587986efc5ca409da3ebf0a4ab7f72ebf50a3ab9 07-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement basic support for private headers in frameworks. In essence,
when we load a module map (module.map) from a directory, also load a
private module map (module_private.map) for that directory, if
present. That private module map can inject a new submodule that
captures private headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146012 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
dcf06fa1fbb9c018e152629ef3f3fa7b1acffe7a 07-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Propagate taint through MemRegions.
SVal can be not only a symbol, but a MemRegion. Add support for such
cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146006 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
f64114b2aa611a66fc97e6bd8f35b0b039a4500a 07-Dec-2011 Douglas Gregor <dgregor@apple.com> If we can't write the temporary module map file when compiling a
module, at least have the decency to complain about it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146002 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
b76a97e91dc4bea0b6b3da06c84e02f50cd351d3 07-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc: issue deprecated/unavailable diagnostic when
methods with these attributes are sent to receivers
of 'id' type too. // rdar://10459930


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145999 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0e35b4ecee380c2b4c33d75da6bc2fb6f6bc7df3 07-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> DeadStoresChecker: when whitelisting dead initializations with constants, look
for a foldable constant rather than an IR-level constant. This is still far too
liberal, but is a step in the right direction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a91efb14cbf6af999dee02d9b611a57c7b52e209 07-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Add comments related to symbol_iterator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145987 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
1d1d515b2bafb59d624883d8fdda97d4b7dba0cb 07-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor: Move symbol_iterator from SVal to SymExpr, use it
for finding dependent symbols for taint.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145986 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
aace9ef279be3dadd53b481aee568bd7701178b4 07-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Propagate taint through NonLoc to NonLoc casts.

- Created a new SymExpr type - SymbolCast.
- SymbolCast is created when we don't know how to simplify a NonLoc to
NonLoc casts.
- A bit of code refactoring: introduced dispatchCast to have better
code reuse, remove a goto.
- Updated the test case to showcase the new taint flow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145985 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
e6fb9876970e2dc55f091522644efa16caa9ba06 06-Dec-2011 Douglas Gregor <dgregor@apple.com> Remove misleading error message

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145958 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ac252a3b0f8101a7274309e4a5cf2d5f0fdba675 06-Dec-2011 Douglas Gregor <dgregor@apple.com> When inferring a module map for a framework, infer subframework
modules for each of its subframeworks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145957 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
b80a3869b419c94ad85d2a39041c59100691bb3e 06-Dec-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove unused member to appease valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145956 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
d620a84a01cc232a9449dbcc2c40bd43ca314fc9 06-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement modules support for subframeworks (aka embedded
frameworks). A submodule can now be labeled as a "framework", and
header search will look into the appropriate Headers/PrivateHeaders
subdirectories for named headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145941 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
122de3e131a6902d22c97471520ec9005cca6f03 06-Dec-2011 Hans Wennborg <hans@hanshq.net> Suggest typo corrections for implicit function declarations.

A mistyped function call becomes an inmplicit function declaration in C.
Suggest typo correction when one can be found.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d64251fd56577dd5c78903454632361e094c6dc1 06-Dec-2011 Erik Verbruggen <erikjv@me.com> Extend warnings for missing '@end'.
Fixes PR2709.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
4e785c908ae01519d3592eae2828e2cc94fb02eb 06-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Stack realignment is a tristate. Add -mno-stackrealign to turn off all stack
realignment, even with locals with alignment exceeding the ABI guarantee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145909 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
rontend/CodeGenOptions.h
b92e5d0acbb21e57498fcc4157e108a50c82b857 06-Dec-2011 John McCall <rjmccall@apple.com> Fix an extremely stupid bug causing terrible miscompilations
of &= on pseudo-objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e209e5026892cb07294f733c72bd51359c0f0e72 06-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement inferred submodules support, which (when requested)
implicitly generates submodules corresponding to the headers that fall
within a module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145887 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
erialization/ASTWriter.h
ec236787c5868eef53a807ca1a68b6b0b8c604c6 06-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> objc: put out more coherent warning when method definition
attributes don't match its declaration. // rdar://10529259.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e9d11dbfe1f3286c5f8a2f2fc8ac759f63890655 06-Dec-2011 Joerg Sonnenberger <joerg@bec.de> Add -mstack-alignment=X and fix -mstackrealign handling now that the
backend options are gone.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145868 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
1e12368db12005ddd92fd9188c86383fe30ef443 05-Dec-2011 Douglas Gregor <dgregor@apple.com> Parse inferred submodules in module maps, track their contents in
Module, and (de-)serialize this information. Semantics of inferred
submodules to follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/Module.h
02f34c5003b2c5067675f89ffce0a84c28faf722 05-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Rely on LLVM Dominators in Clang dominator computation.

(Previously, Clang used it's implementation of dominators.)

The patch is contributed by Guoping Long!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145858 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
nalysis/CFG.h
eca4e6e58170129cbdf105b2cfdb9ac2be61858e 05-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Mark ConstraintManager::canReasonAbout as protected.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145857 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
e14ca9f509dc22d8fcc5d21d70d28a5848983b42 05-Dec-2011 Lang Hames <lhames@gmail.com> Add a warning for implicit conversion from function literals (and static
methods) to bool. E.g.

void foo() {}
if (f) { ... // <- Warns here.
}

Only applies to non-weak functions, and does not apply if the function address
is taken explicitly with the addr-of operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145849 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0dd7a25e8d679de1dc0ce788222d6dee0e879885 05-Dec-2011 Lang Hames <lhames@gmail.com> Make isWeakDecl available as a method on ValueDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145845 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5344baa704f42b22d9df25c24ffbbf6b4716603b 05-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Unify SymbolVal and SymExprVal under a single SymbolVal
class.

We are going into the direction of handling SymbolData and other SymExpr
uniformly, so it makes less sense to keep two different SVal classes.
For example, the checkers would have to take an extra step to reason
about each type separately.

The classes have the same members, we were just using the SVal kind
field for easy differentiation in 3 switch statements. The switch
statements look more ugly now, but we can make the code more readable in
other ways, for example, moving some code into separate functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145833 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
76462f00854171d2aa3ebc34f9aac1c60021b0ea 05-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove all uses of ConstraintManager::canResonAbout() from
ExprEngine.

Teach SimpleConstraintManager::assumeSymRel() to propagate constraints
to symbolic expressions.

+ One extra warning (real bug) is now generated due to enhanced
assumeSymRel().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145832 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
3cdf584e068056540769dab56cad333e95a89750 05-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] First step toward removing
ConstraintManager::canReasonAbout() from the ExprEngine.

ExprEngine should not care if the constraint solver can reason about
something or not. The solver should be able to handle all the SymExprs.

To do this, the solver should be able to keep track of not only the
SymbolData but of all SymExprs. This is why we change SymbolRef to be an
alias of SymExpr*. When encountering an expression it cannot simplify,
the solver should just add the constraints to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145831 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
d0167853f46cc78787b06255a44f9dcedd04a8ec 05-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Add ability to do a simple ProgramState dump() without
requiring CFG.

Adding more ugly code; the evnvironment printing should be moved to
envirnment at some point.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145828 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
0adaa880993ad23186c87c7f98e7a3fd2697742c 05-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement support for wildcard exports in modules, allowing a module
to re-export anything that it imports. This opt-in feature makes a
module behave more like a header, because it can be used to re-export
the transitive closure of a (sub)module's dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145811 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
55988680ece66b8e505ee136b35e74fcb1173aee 05-Dec-2011 Douglas Gregor <dgregor@apple.com> When writing a module file, keep track of the set of (sub)modules that
it imports, establishing dependencies at the (sub)module
granularity. This is not a user-visible change (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145808 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
ex/ModuleMap.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
5460ff35ab748860f05aeea4685cd195153dca66 05-Dec-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang*/Makefile: Tweak installation to work with CLANG_SRCDIR.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145800 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
42d6d0c91ab089cb252ab2f91c16d4557f458a2c 04-Dec-2011 David Blaikie <dblaikie@gmail.com> Support decltype in nested-name-specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
asic/DiagnosticSemaKinds.td
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
5e9392ba18f5925e26cc5714d1412eda0d219826 03-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement support for the __is_final type trait, to determine whether
a class is marked 'final', from Alberto Ganesh Barbati! Fixes
PR11462.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145775 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
asic/TypeTraits.h
0586520acb2f368c874943353a222be7f00c3068 03-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> If block literal return type is not specified, return type of the block is
inferred from return types. All the return statements have to agree about the type.
// rdar://10466373


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145774 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
8bc27822fc867d43399d4474bccbb58b7b7c7ad7 03-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Make sure that the SourceExpr of a OpaqueValueExpr is always initialized
when deserialized, fixing random crashes in libclang.

Also simplifies how OpaqueValueExprs are [de]serialized.
The reader/writer automatically retains pointer equality of sub-statements (when a
statement node is referenced in multiple nodes), so no need to manually handle it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145752 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
f6137e4d15cb6bbd10547267babfc699c1945873 03-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement support for precompiled headers, preambles, and serialized
"main" files that import modules. When loading any of these kinds of
AST files, we make the modules that were imported visible into the
translation unit that loaded the PCH file or preamble.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145737 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
e664977aca2a05a77abab5a06dc0fb69e870cfb9 03-Dec-2011 Douglas Gregor <dgregor@apple.com> Keep track of all of the import declarations that are parsed or
implicitly generated in a translation unit. Modules will need this
information to identify the actual imports that occurred.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145734 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
93ebfa6139bbca4d446c7343e3afc8e5ec777484 03-Dec-2011 Douglas Gregor <dgregor@apple.com> When we treat an #include or #import as a module import, create an
implicit ImportDecl in the translation unit to record the presence of
the import.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145727 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
15de72cf580840c61e5704c2f8a2b56f9d0638e1 03-Dec-2011 Douglas Gregor <dgregor@apple.com> Introduce a module import declaration, so that we properly represent, e.g.,

__import_module__ std.vector;

in the AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145725 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
erialization/ASTBitCodes.h
687b5df89d4ba91219df578d02087c68c09a0332 03-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Revert r145697 and dependent patch r145702. It added a dependency from
lib/Analysis to lib/Sema which is cyclical.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145724 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
5fdc1b993dcb01e8a994fdacfc4eb089832c82e3 02-Dec-2011 Hans Wennborg <hans@hanshq.net> Make conversion specifier warning refer to typedef if possible.

For example, the warning for printf("%zu", 42.0);
changes from "conversion specifies type 'unsigned long'" to "conversion
specifies type 'size_t' (aka 'unsigned long')"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145697 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
af13bfc3b40aa4a46f4e71d200ecfb10f45297fc 02-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement (de-)serialization of the set of exported modules in a
module map.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145695 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
a015cab273705d1198d13e8389c2f4775f539a8b 02-Dec-2011 Douglas Gregor <dgregor@apple.com> Notify the AST writer (via ASTDeserializationListener) when a
(sub)module is read from an AST file. This makes sure that the AST
writer knows how to map all modules to their global IDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145685 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTWriter.h
1329264ce0922b3cec8c8c599108f082105fa0e1 02-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement name hiding for macro definitions within modules, such that
only the macro definitions from visible (sub)modules will actually be
visible. This provides the same behavior for macros that r145640
provided for declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145683 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
90db26000aefe9335370013eec64c85232d80227 02-Dec-2011 Douglas Gregor <dgregor@apple.com> Implementing parsing and resolution of module export declarations
within module maps, which will (eventually) be used to re-export a
module from another module. There are still some pieces missing,
however.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145665 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/Module.h
ex/ModuleMap.h
ex/Preprocessor.h
7f422287a2ee7e515beb715f1f8915e9331469ee 02-Dec-2011 Ted Kremenek <kremenek@apple.com> Diagnose use of wide string literal in 'asm' instead of crashing. Fixes <rdar://problem/10465079>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ecc2c090e7146c029dd9ee9a5a2fd66b275c01c0 01-Dec-2011 Douglas Gregor <dgregor@apple.com> Implement name hiding for declarations deserialized from a non-visible
module. When that module becomes visible, so do those declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
erialization/ASTReader.h
5e35693721364673f8196e4f5a370f56b92e6053 01-Dec-2011 Douglas Gregor <dgregor@apple.com> Introduce the notion of name visibility into modules. For a given
(sub)module, all of the names may be hidden, just the macro names may
be exposed (for example, after the preprocessor has seen the import of
the module but the parser has not), or all of the names may be
exposed. Importing a module makes its names, and the names in any of
its non-explicit submodules, visible to name lookup (transitively).

This commit only introduces the notion of name visible and marks
modules and submodules as visible when they are imported. The actual
name-hiding logic in the AST reader will follow (along with test cases).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
erialization/ASTReader.h
2aba7115f9df1676d5c1811324cceff1b4c4a356 01-Dec-2011 Francois Pichet <pichet2000@gmail.com> Change the Microsoft __interface keyword to be an alias for struct (not class) since members are public by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
b805c8ff133ef0c62df032fa711d6b13c5afd7f4 01-Dec-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor checkers to use helper function for getting callee Decl and name.

We are getting name of the called function or it's declaration in a few checkers. Refactor them to use the helper function in the CheckerContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145576 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
185dbd7782a45d0f830218bfbc196c6b664ed8d9 01-Dec-2011 Douglas Gregor <dgregor@apple.com> Infer the submodule ID for a given declaration based on the location
of that declaration, and encode the submodule ID in each declaration
stored in an AST file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145555 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
f1d1ca5b2b40e66d927c2abd16d8baa21af6911f 01-Dec-2011 Douglas Gregor <dgregor@apple.com> When sending a message to a receiver that has "unknown any" type,
force the unknown any type to "id" so that the message send can be
completed without requiring a case. Fixes <rdar://problem/10506646>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145552 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
26ced127b7d443fcf3472463c9f39c2376bd9d70 01-Dec-2011 Douglas Gregor <dgregor@apple.com> Switch the ID numbers used for submodule IDs in the AST reader over to
a standard global/local scheme, so that submodule definitions will
eventually be able to refer to submodules in other top-level
modules. We'll need this functionality soonish.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145549 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
75df4eeede7b91c22c1d63fafd4dd4142844e3b9 01-Dec-2011 Ted Kremenek <kremenek@apple.com> Further tweak -Wurneachable-code and templates by allowing the warning to run on
explicit template specializations (which represent actual functions somebody wrote).

Along the way, refactor some other code which similarly cares about whether or
not they are looking at a template instantiation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8374eda250c1cf6aede92eca289759f5e0a6c308 01-Dec-2011 Douglas Gregor <dgregor@apple.com> Another GCC fix

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145542 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
58196dc06ee27cd4150ef483123e1e3b2c772821 01-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Revert most of r145372 for now. Lookahead beyond the ';' in a function
declaration tickles a bug in the way we handle visibility pragmas.

The improvement to error recovery for template function definitions declared
with the 'typedef' specifier in r145372 is unrelated and not reverted here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
1a4761edca58c6b559de825b9abfb66f7f1ba94a 01-Dec-2011 Douglas Gregor <dgregor@apple.com> Promote ModuleMap::Module to a namespace-scope class in the Basic
library, since modules cut across all of the libraries. Rename
serialization::Module to serialization::ModuleFile to side-step the
annoying naming conflict. Prune a bunch of ModuleMap.h includes that
are no longer needed (most files only needed the Module type).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145538 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Module.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/FrontendActions.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/ModuleLoader.h
ex/ModuleMap.h
ex/Preprocessor.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
erialization/ModuleManager.h
8d39c3ddfc17d9e768a17eb0ce9f11c33bf9d50a 01-Dec-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] In ASTReader::FinishedDeserializing, after we do PassInterestingDeclsToConsumer
we may end up having added more pending stuff to do, so go in a loop until everything
is cleared out.

This fixes the error in rdar://10278815 which has a certain David Lynch-esque quality..

error: unknown type name 'BOOL'; did you mean 'BOOL'?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145536 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
e3a8256a9c1f2f1037fcb844ed7666759124a852 30-Nov-2011 Douglas Gregor <dgregor@apple.com> Introduce an opt-in warning indicating when the compiler is treating
an #include/#import as a module import.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87 30-Nov-2011 Douglas Gregor <dgregor@apple.com> Implement (de-)serialization of the description of a module and its
submodules. This information will eventually be used for name hiding
when dealing with submodules. For now, we only use it to ensure that
the module "key" returned when loading a module will always be a
module (rather than occasionally being a FileEntry).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145497 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ex/ModuleMap.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
d699ade396154238d2fa89bb09fdcfb79e5587d2 30-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Add checker callback documentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145495 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
01e19be69a37bc4ab7746c454cfaa6aec7bb7c6a 30-Nov-2011 John McCall <rjmccall@apple.com> Fix the instantiation of pseudo-object expressions. This is a
really bad way to go about this, but I'm not sure there's a better
choice without substantial changes to TreeTransform --- most
notably, preserving implicit semantic nodes instead of discarding
and rebuilding them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145480 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a8cc6ce36e70e2afa22ab6b4340035cb3941c2eb 30-Nov-2011 Douglas Gregor <dgregor@apple.com> When writing a module file, pass the module through to the AST
writer. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145479 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
erialization/ASTWriter.h
b514c792821a8f053027d88444e13bfaa8efef76 30-Nov-2011 Douglas Gregor <dgregor@apple.com> Teach the preprocessor how to handle module import declarations that
involve submodules (e.g., importing std.vector), rather than always
importing the top-level module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145478 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ex/Preprocessor.h
49009ec701feb3009450e57e40c656e2ad7c1f41 30-Nov-2011 Douglas Gregor <dgregor@apple.com> When loading a module that involves submodules (e.g., std.vector),
check whether the named submodules themselves are actually
valid, and drill down to the named submodule (although we don't do
anything with it yet). Perform typo correction on the submodule names
when possible.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145477 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
dc8dab6fabf4bfd4f4b94bf572ac3342a5bbfcd7 30-Nov-2011 Bob Wilson <bob.wilson@apple.com> Add bigger method type encodings to protocol objects. <rdar://problem/10492418>

The new metadata are method @encode strings with additional data.

1. Each Objective-C object is marked with its class name and protocol names.
The same is done for property @encode already.

2. Each block object is marked with its function prototype's @encoding. For
example, a method parameter that is a block object that itself returns void
and takes an int would look like:
@?<v@?i>

These new method @encode strings are stored in a single array pointed to by structs protocol_t and objc_protocol_ext.

Patch provided by Greg Parker!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3d3589db579f7695667b913c5043dd264ebe546f 30-Nov-2011 Douglas Gregor <dgregor@apple.com> Switch the module-loading interfaces and parser from a simple
top-level module name to a module path (e.g., std.vector). We're still
missing a number of pieces for this actually to do something.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145462 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
ema/Sema.h
c8d7f586180995ba33d03c0f6115b6a7bdefe326 29-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Revert r145244. It causes us to create broken ASTs with missing type information
for some cast expressions.

Original commit message:

Removed useless ImplicitCast nodes in explicit cstyle and static casts


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Initialization.h
ema/Sema.h
6649014b792f8a4b1bc1e8be8f844a72220af508 29-Nov-2011 Douglas Gregor <dgregor@apple.com> Eliminate the -emit-module option, which emitted a module by parsing a
source file (e.g., a header). Immediately steal this useful option
name for building modules from a module map file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145444 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
2cbe84dd36664b54bf056e4c69fe8d0fecd7346c 29-Nov-2011 Ted Kremenek <kremenek@apple.com> Place "use @dynamic or provide a method implementation" warnings under a -W flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145418 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f9e357d8a66c606a86a6e1aef678898b8843bd30 29-Nov-2011 Douglas Gregor <dgregor@apple.com> Teach the module import mechanism how to rebuild modules expressed via
module map, rather than assuming that there is an umbrella
header. This allows us to automatically build umbrella-less modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145415 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
804c3bfee22076f232dddf4839439119cfdee2b6 29-Nov-2011 Douglas Gregor <dgregor@apple.com> Expose the printing of module maps as part of the ModuleMap::Module
interface. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145411 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
2fea2242fe7e7c37df1e96316616febeaf4e29eb 29-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix leaking of LexedMethod objects created for caching objc method definitions tokens
for late parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145394 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
874d253668f9ed183ca409cdff9d424925ee7800 29-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> PR10101: Recover better from a common copy-paste error: if a function
declaration at namespace scope is followed by a semicolon and an open-brace
(or in C++, a 'try', ':' or '='), then the error is probably a function
definition with a spurious ';', rather than a mysterious '{'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9b2eb7b1a1bdd1fe4acb200b448312ef407283df 29-Nov-2011 Fariborz Jahanian <fjahanian@apple.com> objc: warn if NSObject attribute appears other than in a typedef.
// rdar://10453342


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145358 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a4d36a6dd00c1495cfe3b64f949d70ba9f778391 29-Nov-2011 Douglas Gregor <dgregor@apple.com> When attempting to load a module that is not in the module cache,
return the module itself (in the module map) rather than returning the
umbrella header used to build the module. While doing this, make sure
that we're inferring modules for frameworks to build that module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145310 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
426a16d4e5efe7efefe76c405207fb170cabad9f 28-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Minor cleanup of SValBuilder: Comments + code reuse.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145274 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
d3c147f4b225a8372c90e07ae3eed0dca9ffb33f 28-Nov-2011 Fariborz Jahanian <fjahanian@apple.com> objc: turn warning for property type mismatch in
primary and its continuation class into error.
// rdar://10142679


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
56f5d36fd13c5e271ebd05192c25c88d28e77f8d 28-Nov-2011 Nicola Gigante <nicola.gigante@gmail.com> Removed useless ImplicitCast nodes in explicit cstyle and static casts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Initialization.h
ema/Sema.h
6f3ce979a7748fd117e6473d6272b16d643b6262 28-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Indexing API: If the client requested to get a CXTranslationUnit after
indexing, honor all the TU options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145229 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/MultiplexConsumer.h
991bf49f68e8caeb900dd9738712b861073363d9 28-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Indexing API: Capture diagnostics during indexing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145228 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
13dc8f98f6108dca8aaa9721567ed5a2d9911e0f 27-Nov-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Reference initialization with initializer lists.

This supports single-element initializer lists for references according to DR1288, as well as creating temporaries and binding to them for other initializer lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145186 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
2a710c84db1ebf0c16cba0ff121ca8e15f045a07 25-Nov-2011 Logan Chien <loganchien@google.com> Merge with clang upstream r145117 (Nov 25th 2011)

Change-Id: Id4fde985342e3c81f13887e8728bd94b82523642
a5aa96d01f2f8750a4756ca74c8e172384a54602 24-Nov-2011 Matt Beaumont-Gay <matthewbg@google.com> Wordsmith the -Warray-bounds diagnostic text a bit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145116 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6efd4c55a1a481d92966a91141c03e8145234cf6 23-Nov-2011 Richard Trieu <rtrieu@google.com> Add feature to diagnostics that will provide more information on function
pointer mismatch. Cases covered are: initialization, assignment, and function
arguments. Additional text will give the extra information about the nature
of the mismatch: different classes for member functions, wrong number of
parameters, different parameter type, different return type, and function
qualifier mismatch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145114 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
c14a03dffff69b5e1c55cc118fc52d8fd9f3a28d 23-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Fix operations (token annotation, getting cursor, etc.) with a file region
inside an objc container that "contains" other file-level declarations.

When getting the array of file-level declarations that overlap with a file region,
we failed to report that the region overlaps with an objc container, if
the container had other file-level declarations declared lexically inside it.

Fix this by marking such declarations as "isTopLevelDeclInObjCContainer" in the AST
and handling them appropriately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b61968857fd2c6579b4dcd7bad65736e89d21185 22-Nov-2011 Kostya Serebryany <kcc@google.com> implement __has_feature(address_sanitizer); also use LangOpts.AddressSanitizer instead of CodeGenOpts.AddressSanitizer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
rontend/CodeGenOptions.h
c18c42345636e2866fed75c7e434fb659d747672 21-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add driver arguments -ftemplate-depth=N and -fconstexpr-depth=N, with the same
semantics and defaults as the corresponding g++ arguments. The historical g++
argument -ftemplate-depth-N is kept for compatibility, but modern g++ versions
no longer document that option.

Add -cc1 argument -fconstexpr-depth N to implement the corresponding
functionality.

The -ftemplate-depth=N part of this fixes PR9890.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/LangOptions.def
river/CC1Options.td
river/Options.td
5d4d9807a65291cbe6ab88d4a4f74cb7fff01bde 21-Nov-2011 Peter Collingbourne <peter@pcc.me.uk> Teach the driver about failure result files, which are compilation
output files that are valid regardless of whether the compilation
succeeded or failed (but not if we crash). Add depfiles to the
failure result file list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145018 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
1c2e9332fa69727425a3a2b912e36e2ab62083f8 20-Nov-2011 Douglas Gregor <dgregor@apple.com> Allow preprocessor callbacks to recover from a "file not found" error,
from Jason Haslam!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145012 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ex/PPCallbacks.h
ex/Preprocessor.h
1bea8807bcd2be10bf6309a3a848489434464ced 19-Nov-2011 Douglas Gregor <dgregor@apple.com> Add support for pretty-printing attributes, from Richard Membarth!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
22c107b2b99887b5aec6d1fd38210031e944e31f 19-Nov-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed HadMultipleCandidates loading.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144995 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
ema/Sema.h
ecff7c80e5ce4ccb1d2765c234c88efafdc1a378 19-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Driver: Remove the signal number from the "command failed" diagnostic.

- With the current implementation of sys::Program this always printed "2".
- The command execution code will output the right number anyway (including the signal name).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
459001f7351c8ca542301690f0a63ec9ae870e09 19-Nov-2011 Douglas Gregor <dgregor@apple.com> Initialize ImplicitConversionSequence::ListInitializationSequence. Fixes PR11394

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144992 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
7955a25c65b3c3213a5e9375f51a02a765a3c880 19-Nov-2011 Douglas Gregor <dgregor@apple.com> Add missing initialization in the ContentCache. Seriously, when do
constructors go below public member functions?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144991 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8a0c5c2ec5c5496cfb01d2c86bd50991866a7356 18-Nov-2011 Ted Kremenek <kremenek@apple.com> Refine placement of LangOptions object in CompilerInvocation by adding a new baseclass CompilerInvocationBase with a custom copy constructor. This ensures that whenever the CompilerInvocation object's copy constructor is used we always clone the LangOptions object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144973 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
88c2596edc8eb475e20f6033de1ea01669695a0c 18-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change ASTConsumer::HandleTopLevelDecl to return true for the parser to continue
parsing or false to abort parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
rontend/MultiplexConsumer.h
0d339d06f8721d14befd6311bd306ac485772188 18-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Do not conjure a symbol when we need to propagate taint.

When the solver and SValBuilder cannot reason about symbolic expressions (ex: (x+1)*y ), the analyzer conjures a new symbol with no ties to the past. This helps it to recover some path-sensitivity. However, this breaks the taint propagation.

With this commit, we are going to construct the expression even if we cannot reason about it later on if an operand is tainted.

Also added some comments and asserts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144932 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
d3b74d9ca4f239a7a90ad193378c494306c57352 18-Nov-2011 Ted Kremenek <kremenek@apple.com> Make 'LangOptions' in CompilerInvocation a heap-allocated, reference counted object. I discovered that llvm::RefCountedBase<T> has
a bug where the reference count is copied in the copy constructor, which means that there were cases when the CompilerInvocation
objects created by ASTUnit were actually leaked. When I fixed that bug locally, it showed that a whole bunch of code assumed
that the LangOptions object that was part of CompilerInvocation was still alive. By making it heap-allocated and reference counted,
we can keep it around after the CompilerInvocation object goes away.

As part of this change, change CompilerInvocation:getLangOptions() to return a pointer, acting as another clue that this
object may outlive the CompilerInvocation object.

This commit doesn't fix the CompilerInvocation leak itself. That will come when I commit the fix to llvm::RefCountedBase<T> to
mainline LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
64595fad45abbaa75778609196b9223bf6f2ece3 17-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Add a helper method.
Naming could be improved.. But we should first rename the classes in the SVal hierarchy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144927 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
e24f5fc8c763f1b5536b8d70dd510ca959db3a80 17-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: add support for evaluation of member pointers
and base-to-derived casts, and add proper handling of temporaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
c69c42e939e6bdaa56d162cc36da4f6b6c53e8db 17-Nov-2011 Douglas Gregor <dgregor@apple.com> When making a suggestion regarding which module to load rather than
preprocess/parse a header, report back with an actual module (which
may be a submodule) rather than just the name of the module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144925 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/Preprocessor.h
a865405e4155e8ea83d7ff1a1d8316907c300897 17-Nov-2011 Douglas Gregor <dgregor@apple.com> Add the notion of "framework" modules to module maps. Framework
modules (obviously) describe frameworks, and understand the header
layout of frameworks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/ModuleMap.h
6fe2965ce722826ae7c3af85271f900286ef20c3 17-Nov-2011 David Blaikie <dblaikie@gmail.com> Include named unions in union member init checking

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
09fe1bb696847e6f1b482e5ac40029d53a2402df 17-Nov-2011 Douglas Gregor <dgregor@apple.com> Actually free memory for the module maps

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144880 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
2821c7f8870629b56b9c41e1c50c7a091edd544d 17-Nov-2011 Douglas Gregor <dgregor@apple.com> When we're loading a framework header, first try to turn the framework
into a module. This module can either be loaded from a module map in
the framework directory (which isn't quite working yet) or inferred
from an umbrella header (which does work, and replaces the existing
hack).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144877 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ex/ModuleMap.h
eeea7c44a6986752fedee1ef1bcef855db373872 17-Nov-2011 Anna Zaks <ganna@apple.com> [analysis] Constify CheckerContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144871 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
8687397a0f5e4c31632959d907f9d9b38d793b1c 17-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Put CheckerConext::getCalleeName out of line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144870 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
adb979924ade3e25342c38a5b564400b4e0540c1 17-Nov-2011 Douglas Gregor <dgregor@apple.com> A module with an umbrella header assumes that all of the headers in
the umbrella header's directory and its subdirectories are part of the
module (that's why it's an umbrella). Make sure that these headers are
considered to be part of the module for lookup purposes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144859 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/ModuleMap.h
a081da5e44600d02983d6562bed1b4fd61e410fd 16-Nov-2011 Douglas Gregor <dgregor@apple.com> Implement (de-)serialization of the buffer contents for an overridden
file in the source manager. This allows us to properly create and use
modules described by module map files without umbrella headers (or
with incompletely umbrella headers). More generally, we can actually
build a PCH file that makes use of file -> buffer remappings, which
could be useful in libclang in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144830 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
erialization/ASTBitCodes.h
ceac1d6e0521161adf7ac9834b1a7ad79d73fea4 16-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Adding basic building blocks for taint propagation.
TaintTag.h will contain definitions of different taint kinds and their properties.
TaintManager will be responsible for implementing taint specific operations, storing taint.
ProgramState will provide API to add/remove taint.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144824 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/TaintManager.h
taticAnalyzer/Core/PathSensitive/TaintTag.h
fc06f988da35df75e623e0c1c4e4db4d36c0b43b 16-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Cleanup (NULL -> 0, no doxygen in cpp).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144822 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
c24b4f6ae3507aa501c2dafdff62c1059f8922ad 16-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Assert if we ever get an over constrained state.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144821 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
0e12ebfd3ef9ad5d894466c6e4910ac5e6041034 16-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Factor getCalleeName to the checker context.
many checkers are trying to get a name of the callee when visiting
a CallExpr, so provide a convenience API.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144820 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
1b4eca67e073f0beefb9924cbe6c65427869f1fa 16-Nov-2011 Kostya Serebryany <kcc@google.com> Add -f[no-]address-sanitizer flag

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144800 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
261e75bd10198c336aded42f0398a13f7bf88889 16-Nov-2011 Douglas Gregor <dgregor@apple.com> When building a module from a module map that isn't simply an umbrella
header, create our own in-memory buffer to parse all of the
appropriate headers, and use that to build the module. This isn't
end-to-end testable yet; that's coming next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
db1cde7dc7bb3aaf48118bd9605192ab94a93635 16-Nov-2011 Douglas Gregor <dgregor@apple.com> Add support for building a module from a module map to the -cc1
interface. This is currently limited to modules with umbrella
headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
ex/HeaderSearch.h
d2536a604f59a3cca491f175bf1e49eeca49163b 15-Nov-2011 Douglas Gregor <dgregor@apple.com> Revert r144703. It was a dumb idea anyway; will add the new bits more
incrementally with a new frontend action.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144723 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
b8691df825c99b0fc989fcd92a008d2500ff2e37 15-Nov-2011 Douglas Gregor <dgregor@apple.com> Split GenerateModuleAction into its own action, which will start
differing from GeneratePCHAction fairly soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144703 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
b86b8dc7ef89405205f94635c1073cdb1a7093eb 15-Nov-2011 Douglas Gregor <dgregor@apple.com> Add a -cc1-level option -fmodule-name=<name>, which will be used when
building modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
bf2e6803d47deeef6e3bf9196875fb25ea1ce961 15-Nov-2011 Fariborz Jahanian <fjahanian@apple.com> Add -Wmismatched-method-attributes flag for when attributes in method definition and
their decl. do not match. // rdar://10448471


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144676 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dce6327160a6e333137b34cce77e2dfc2cd5aab6 15-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Warning option typo correction: When two options have the same edit_distance don't display either.

Also add a maximum edit distance threshold, so we don't correct "-Wx" to "-W#pragma-messages".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144644 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
71d9a71d19099a6673750b47b32e9786803fa81d 15-Nov-2011 Logan Chien <loganchien@google.com> Merge with clang upstream r144605 (Nov 15th 2011)

Conflicts:
include/clang-c/Index.h
include/clang/AST/APValue.h
include/clang/AST/DeclBase.h
include/clang/AST/DeclObjC.h
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Serialization/ASTWriter.h
lib/AST/APValue.cpp
lib/AST/ASTImporter.cpp
lib/AST/DeclObjC.cpp
lib/AST/ExprConstant.cpp
lib/Driver/ToolChains.cpp
lib/Frontend/SerializedDiagnosticPrinter.cpp
lib/Frontend/Warnings.cpp
lib/Lex/HeaderSearch.cpp
lib/Lex/LiteralSupport.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaInit.cpp
lib/Sema/SemaPseudoObject.cpp
test/Analysis/misc-ps.c
test/Analysis/retain-release-path-notes.m
test/CodeGen/string-literal-unicode-conversion.c
test/CodeGenCXX/blocks.cpp
test/Driver/crash-cleanup.c
test/Misc/serialized-diags.c
test/Misc/warning-flags.c
tools/c-index-test/c-index-test.c
tools/libclang/CXLoadedDiagnostic.cpp
tools/libclang/IndexDecl.cpp
tools/libclang/IndexTypeSourceInfo.cpp
tools/libclang/Indexing.cpp
tools/libclang/IndexingContext.cpp
tools/libclang/IndexingContext.h
tools/libclang/libclang.exports

Change-Id: I6621e7d5d9a9d1e4cdec7b7b62ffa6dffaff375d
40f57ee2dab3ed3475fa584f83f05bd3c9ed4a00 15-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use Decl's isImplicit field to indicate whether an ObjCInterfaceDecl is 'ImplicitInterfaceDecl',
no need to store it in another field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144624 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
32509f1e60451d86e9fbc473b6e853ba10b5fd1e 15-Nov-2011 John McCall <rjmccall@apple.com> Resolve placeholder expressions before trying to deduce
'auto'. Introduce a convenience method to make this a bit
easier, and use it elsewhere.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/BuiltinTypes.def
ST/Type.h
ema/Sema.h
639d5b8358935b2fb80a7725c20cd887317636e1 15-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> A space in a diagnostic group is a bead idea.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144594 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
a70cb9db9dd79ca9fc1febbb2f331004297664e0 15-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Print a typo correction hint for unknown warning flags.

$ clang -Wololo t.c
warning: unknown warning option '-Wololo'; did you mean '-Wall'? [-Wunknown-warning-option]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticIDs.h
b3029960632ca8a3248e74770eda64d6c16f7246 14-Nov-2011 Douglas Gregor <dgregor@apple.com> Use Sema::RequireCompleteType to check for the completeness of
Objective-C classes. This has two purposes: to consistently provide
"forward declaration here" notes when we hit an incomplete type, and
to give LLDB a chance to complete the type.

RequireCompleteType bits from Sean Callanan!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2bbcd5ce370753c86d312d2c72a97476ac35b073 14-Nov-2011 Ted Kremenek <kremenek@apple.com> ARC: make assignment to 'self' within class methods illegal. Fixes <rdar://problem/10416568>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144572 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5a174990e84b33b20761f2fde51169400dd87f2e 14-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Load the chained objc categories only after recursive loading is finished
otherwise we may crash.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144524 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
c80553efdc269dabd4ed0c3210555f45729ab5dd 14-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Do not crash if a class extension in a chained PCH introduces/redeclares a property.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
67bc4ba9894506c461aeff11302c2d2471b82273 14-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] In ASTWriter::WriteChainedObjCCategories use getDeclID since the decls
should have been already emitted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144519 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
590ad93bf59f4e5f6adcba0d78efc3a58cac15ce 13-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When chaining a PCH and serializing HeaderSearch, make sure the HeaderFileInfos
from the primary PCH is deserialized, otherwise we lose info that headers were
already #imported/#included.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144510 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
erialization/ASTWriter.h
e2d4f4ed44a32f179c6d48cd1dba8346ab2129d9 13-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix the signature of the getcontext builtin. Patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144505 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.def
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
erialization/ASTBitCodes.h
1bf9a9e6a5bdc0de7939908855dcddf46b661800 12-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Represent an APValue based on a Decl as that Decl, rather than a DeclRefExpr
or MemberExpr which refers to it. As a side-effect, MemberExprs which refer to
static member functions and static data members are now emitted as constant
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
1a43415b28e60e0e421ef60e254126acec7ab462 12-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a method in ASTMutationListener for the last use of Decl's [is/set]ChangedSinceDeserialization
and remove them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
ST/DeclBase.h
erialization/ASTWriter.h
ad834d534e9a5db3d3baa09593775f83ceaff1f2 12-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When completing an objc forward reference, do not serialize the chain of its categories because
it is going to be rewritten (and the chain will be serialized again), otherwise we may form a cycle in its
categories list when deserializing.

Also introduce ASTMutationListener::CompletedObjCForwardRef to notify that a forward reference
was completed; using Decl's isChangedSinceDeserialization/setChangedSinceDeserialization
is bug inducing and kinda gross, we should phase it out.

Fixes infinite loop in rdar://10418538.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
ST/DeclObjC.h
erialization/ASTWriter.h
5bbe816cd08bd28a87e8dadedf2cafb19ebf3b0b 12-Nov-2011 David Blaikie <dblaikie@gmail.com> Remove unnecessary 'else's after 'return's.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
26697979fb0a4e2b720a0c8d062047edca92bc92 12-Nov-2011 Douglas Gregor <dgregor@apple.com> Implement a minor optimization when loading module maps to satisfy a
module import: don't re-check for a loaded module unless we've
actually loaded a new module map file. Already-loaded module map files
aren't interesting.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144435 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
cf70d7873fe3098bdac72e7628f4e832d14d5143 12-Nov-2011 Douglas Gregor <dgregor@apple.com> When searching for a module, speculatively load module maps to see if
the module is described in one of the module maps in a search path or
in a subdirectory off the search path that has the same name as the
module we're looking for.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144433 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
484535e45b4d301847a157e943c7823da5d40884 12-Nov-2011 Douglas Gregor <dgregor@apple.com> Teach the search for modules to consider modules described by a module
map, so long as they have an umbrella header. This makes it possible
to introduce a module map + umbrella header for a given set of
headers, to turn it into a module.

There are two major deficiencies here: first, we don't go hunting for
module map files when we just see a module import (so we won't know
about the modules described therein). Second, we don't yet have a way
to build modules that don't have umbrella headers, or have incomplete
umbrella headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144424 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ModuleMap.h
65f3b5e99009f49d51eb00a859dbd2c2ee660718 11-Nov-2011 Douglas Gregor <dgregor@apple.com> Wire up the mapping from header files mentioned in module maps over to
the corresponding (top-level) modules. This isn't actually useful yet,
because we don't yet have a way to build modules out of module maps.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144410 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ex/ModuleMap.h
8b6d3deb5af464e1afbbeccdec369c5d4252b1a0 11-Nov-2011 Douglas Gregor <dgregor@apple.com> Resolve the header files named in module map "header" and "umbrella"
declarations to actual files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144408 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
77692f01900b322b8c6f409c785f171877e44be3 11-Nov-2011 Douglas Gregor <dgregor@apple.com> I predict that HeaderSearch will need the ability to generate
diagnostics in the future. Make it so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144347 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
1140f7908a8e4e634873e994ddbd1fb9cb078dbd 11-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a const version of ObjCClassDecl::getForwardDecl, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144342 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0499f76f09137ba4225df120b215caac643d8eeb 11-Nov-2011 Ted Kremenek <kremenek@apple.com> Add top-level driver option '--serialize-diagnostics' for serialize compiler diagnostics to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144339 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
6581c0b60f22f7ad010c876836e94a82eb686615 10-Nov-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang/AST/APValue.h: Try to fix *900* of cast-qual warnings by g++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
b1c06eebf90e14208d16fc4434013a4b423775d9 10-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: implement full deserialization of clang diagnostics via the libclang API.

I've tested it on simple cases and it works. Test cases to follow as well as a few tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144269 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
62d3cba9d0c608e894a8ce65f0012d730f29f267 10-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: support for evaluation of structs and unions of
literal types, as well as derived-to-base casts for lvalues and
derived-to-virtual-base casts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
427492c7815b5ec15fb4150805c6c82b25841097 10-Nov-2011 John McCall <rjmccall@apple.com> There's no good reason to track temporaries in ExprWithCleanups,
but it is sometimes useful to track blocks. Do so. Also
optimize the storage of these expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/Stmt.h
ema/Sema.h
662e67fbfb5b032488b37e30a0a7987c10fe58ae 10-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Fix some additional x86 intrinsics to use "I" (ICE) markings. Fix *mmintrin.h to take them into account.

<rdar://problem/10341145>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144246 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
4f1f667c9f9b4d33625ad347e697e7750ce960ab 09-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix the signature of __sigsetjmp and sigsetjmp. Patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b5adc4636f653b37891792d2a279e889dab0935f 09-Nov-2011 David Blaikie <dblaikie@gmail.com> Fixing 80 col violations (& removing any trailing whitespace on files I was touching anyway)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtCXX.h
ST/Type.h
ST/TypeLoc.h
ST/VTableBuilder.h
nalysis/Analyses/Dominators.h
nalysis/Analyses/FormatString.h
nalysis/Analyses/PostOrderCFGView.h
nalysis/Analyses/ThreadSafety.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/CFG.h
rontend/Utils.h
ndex/ASTLocation.h
ex/Preprocessor.h
ema/CodeCompleteConsumer.h
ema/LocInfoType.h
ema/PrettyDeclStackTrace.h
ema/Sema.h
ema/TemplateDeduction.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
0bc8fcb55cd8c23a4a82d86ded8e44284c721bf7 09-Nov-2011 David Blaikie <dblaikie@gmail.com> Fix 80 cols violations & remove trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144170 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1fe0389b281e50c23dd65d145f294e2dca308959 09-Nov-2011 Douglas Gregor <dgregor@apple.com> Workaround for compilers that don't implement C++ DR45, from Tom Honermann!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
arse/Parser.h
38949ab7f60b3d20902388352e715c926aafcd54 09-Nov-2011 Douglas Gregor <dgregor@apple.com> Put ext_offsetof_extended_field_designator under the warning flag
-Wextended-offsetof, from Jeff Walden!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7606eb68030c14c214b9f1101fa9ef048d0ccf77 09-Nov-2011 Devang Patel <dpatel@apple.com> Remove extra ';'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
f789d0ab6fd47baa32111cda58334233fbc8e2d0 09-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Fix reading from PCH of diagnostic pragmas.

In certain cases ASTReader would call the normal DiagnosticsEngine API to initialize
the state of diagnostic pragmas but DiagnosticsEngine would try to compare source locations
leading to crash because the main FileID was not yet initialized.

Yet another case of the ASTReader trying to use the normal APIs and inadvertently breaking
invariants. Fix this by having the ASTReader set up the internal state directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
e3d326de7fb351333c8de68c0fd7a5d5c69aa716 09-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add "I" (ICE) annotations onto a few more x86 intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144152 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
72ff3231af5e0fa1c24e2279dd4b6430f6bb935e 08-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: serialize the version info in a separate meta block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144115 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
f231359f3148cb2197b2290cbb4792f7283cfb7b 08-Nov-2011 Douglas Gregor <dgregor@apple.com> Mark the overloaded atomic builtins as having custom type checking,
which they do. This avoids all of the default argument promotions that
we (1) don't want, and (2) undo during that custom type checking, and
makes sure that we don't run into trouble during template
instantiation. Fixes PR11320.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144110 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
f95e992d6f2035d7754d45000d560acdb72673fa 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Misc fixes to pcmp*stri.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
2d21c996bf9c26386f475c58adad2ef5851117c6 08-Nov-2011 Bob Wilson <bob.wilson@apple.com> Clean up type flags for overloaded Neon builtins. No functional change.

This patch just adds a simple NeonTypeFlags class to replace the various
hardcoded constants that had been used until now. Unfortunately I couldn't
figure out a good way to avoid duplicating that class between clang and
TableGen, but since it's small and rarely changes, that's not so bad.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetBuiltins.h
ec603c8d2e1cd9532629c9b1afc445efbcb5351c 07-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: static data members declared constexpr are required to have an
initializer; all other constexpr variables are merely required to be
initialized. In particular, a user-provided constexpr default constructor can be
used for such initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
348d3bdc406fb652fa54949e2f356bc526cfc9c8 07-Nov-2011 Douglas Gregor <dgregor@apple.com> When we notice that a member function is defined with "= delete" or "=
default", make a note of which is used when creating the
initial declaration. Previously, we would wait until later to handle
default/delete as a definition, but this is too late: when adding the
declaration, we already treated the declaration as "user-provided"
when in fact it was merely "user-declared".

Fixes PR10861 and PR10442, along with a bunch of FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144011 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
7c2ea8d33f4846be5b972c01f53c59a24c136925 07-Nov-2011 Chad Rosier <mcrosier@apple.com> Tablegenify -g options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144001 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f31c383ca2d5fa0d8a325e8f2f334167ace8e8b6 07-Nov-2011 Douglas Gregor <dgregor@apple.com> Tighten up the conditions under which we consider ourselves to be
entering the context of a nested-name-specifier. Fixes
<rdar://problem/10397846>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143967 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a938489d14e815f56971b271bd5202e32d4df9d5 07-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: support for arrays.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
5b077a99629d0394531745da14afa871e0fb41c4 07-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Rip out one of the features I added for the driver-include-management.
We don't actually need a separate flag for non-sysrooted paths as the
driver has to manage the sysroot anyways. The driver is not infrequently
adding paths to the header search based on their existence on the
filesystem. For that, it has to add the sysroot anyways, we should pass
it on down to CC1 already joined. More importantly, the driver cannot in
all cases distinguish between sysrooted paths and paths that are
relative to the Clang binary's installation directory. Essentially, we
always need to ignore the system root for these internal header search
options. It turns out in most of the places we were already providing
the system root in the driver, and then another one in CC1 so this fixes
several bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143917 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
6295b53422fbbc9dfaa5035abdada4648ab73d40 07-Nov-2011 John McCall <rjmccall@apple.com> Rip out CK_GetObjCProperty.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143910 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
dd6797f755dbec6bf2b574690a39608aa56b232d 07-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: preserve subobject designator when flattening a
core constant value down to an APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
81f51e226ae1d35f0ec706ec56b81d3a9cba64ce 06-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure when setting AttributesAsWritten of a property that they do not
include ownership qualifiers from the type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143885 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7acf4bf00ecc31652177b3ac1d3f523346581d71 06-Nov-2011 John McCall <rjmccall@apple.com> Change the AST representation of operations on Objective-C
property references to use a new PseudoObjectExpr
expression which pairs a syntactic form of the expression
with a set of semantic expressions implementing it.
This should significantly reduce the complexity required
elsewhere in the compiler to deal with these kinds of
expressions (e.g. IR generation's special l-value kind,
the static analyzer's Message abstraction), at the lower
cost of specifically dealing with the odd AST structure
of these expressions. It should also greatly simplify
efforts to implement similar language features in the
future, most notably Managed C++'s properties and indexed
properties.

Most of the effort here is in dealing with the various
clients of the AST. I've gone ahead and simplified the
ObjC rewriter's use of properties; other clients, like
IR-gen and the static analyzer, have all the old
complexity *and* all the new complexity, at least
temporarily. Many thanks to Ted for writing and advising
on the necessary changes to the static analyzer.

I've xfailed a small diagnostics regression in the static
analyzer at Ted's request.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143867 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
09476d9498be9acd22508d99451f7c90af24447b 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix a significant oversight in my move of MSVC includes to the driver:
actually manage the builtin header file includes as well as the system
ones.

This one is actually debatable whether it belongs in the driver or not,
as the builtin includes are really an internal bit of implementation
goop for Clang. However, they must be included at *exactly* the right
point in the sequence of header files, which makes it essentially
impossible to have this be managed by the Frontend and the rest by the
Driver. I have terrible ideas that would "work", but I think they're
worse than putting this in the driver and making the Frontend library
even more ignorant of the environment and system on which it is being
run.

Also fix the fact that we weren't properly respecting the flags which
suppress standard system include directories.

Note that this still leaves all of the Clang tests which run CC1
directly and include builtin header files broken on Windows. I'm working
on a followup patch to address that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143801 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
47ae192fe624c6a684140311fd2f6a70ccfce563 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add two flags to the CC1 layer that I was hoping to avoid. We need to
encode the *exact* semantics which the header search paths internally
built by the Frontend layer have had, which is both non-user-provided,
and at times adding the implicit extern "C" bit to the directory entry.

There are lots of CC1 options that are very close, but none do quite
this, and they are all already overloaded for other purposes. In some
senses this makes the command lines more clean as it clearly indicates
which flags are exclusively used to implement internal detection of
"standard" header search paths.

Lots of the implementation of this is really crufty, due to the
surrounding cruft. It doesn't seem worth investing lots of time cleaning
this up as it isn't new, and hopefully *lots* of this code will melt
away as header search inside of the frontend becomes increasingly
trivial.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143798 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
91471b7a9ca8532175ef87549d53c9a626011aad 05-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: include FixIt information in serialized diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143776 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
8477fe9629d5c703323fcc2a4d8da249542ff166 05-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: pull emission of filenames into diagnostic block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143765 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
020566e7490bdf83486a9817b3020b5f5144c165 05-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: emit source ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143762 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
a2c05e4ecdd9b6ff336d2326ddcaf2487a1fabd9 05-Nov-2011 Ted Kremenek <kremenek@apple.com> Move definition of record/block IDs for serialized diagnostics to public header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143761 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
f9df65cf018f6333e4751c3f35a0b35bfae181ea 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Switch the C++ include interface in the ToolChain to use the same naming
as the system include interface before I start adding implementations of
it to individual ToolChain implementations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143751 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
76479d6f522eb39e6cb499579b999e7ddfac4f63 05-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Check for invalid after calling getSLocEntry, for safety.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f28958906e8e9d556e87c7dec2eac23452e16e21 04-Nov-2011 Devang Patel <dpatel@apple.com> Enable -flimit-debug-info by default. Now, clang lazily emits debug info for structs. Original behavior can be restored using -fno-limit-debug-info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143733 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
3004fea206b362c47ac52810d91871b719d38463 04-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] In GC, transform NSMakeCollectable to CFBridgingRelease.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143698 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
01a8c2fb3a74b66db639f54cfec417fd3b1c9dd0 04-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Sink the handling of -fobjc-arc-cxxlib to live with the other -fobjc-arc
implementation in the driver. This cleans up the signature and semantics
of the include flag adding component of the toolchain. Another step to
ready it for holding all the InitHeaderSearch logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143686 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
9b6402eb40bf1780158b4b82822aea65d7291092 04-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add a system include management interface to the toolchain, and call it
and the C++ include management routine from the proper place when
forming preprocessor options in the driver. This is the first step to
teaching the driver to manage all of the header search paths. Currently,
these methods remain just stubs in the abstract toolchain. Subsequent
patches will flesh them out with implementations for various toolchains
based on the current code in InitHeaderSearch.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143684 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
6e501001be0aabfa4f1ba2467b0ee782a4586049 03-Nov-2011 Douglas Gregor <dgregor@apple.com> Teach the ASTImporter to import DefinitionData bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b4321f50a9ad98ac80647968cba376b6656897d6 03-Nov-2011 Douglas Gregor <dgregor@apple.com> Refactor Sema::IsSimplyAccessible slightly, to work on a DeclContext rather than a class

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143615 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1102af7beef0c9efa95ec325a1bf8ee03557c554 03-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Add infrastructure to be able to only deserialize decls in a file region and
use it for clang_getCursor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/ASTUnit.h
erialization/ASTReader.h
738f0039be489168e493debc248d60be07a109c7 03-Nov-2011 Douglas Gregor <dgregor@apple.com> Add a printing policy flag to suppress printing "<anonymous>::" prior
to types. Enable this flag for code completion, where knowing whether
something is in an anonymous or inline namespace is actually not
useful, since you don't have to type it anyway. Fixes
<rdar://problem/10208818>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
0e13ea6a2981316357824ff4265e7b8664d470b1 02-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add an option to emulate the strange Apple gcc behavior of #pragma pack.

<rdar://problem/10374763>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
2b10ae9073fc4bc000d87cb40f71c3d6a455e7a7 02-Nov-2011 Fariborz Jahanian <fjahanian@apple.com> objc: warn if a readonly property has a setter attribute too.
// rdar://10357768


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
33f9b2408a6757ccb136e8c677e5876d2113b4b1 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Make sink attribute part of the node profile.

This prevents caching out on nodes with different sink flag.
(This is a cleaner fix for radar://10376675).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143517 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
1f6146748e22257651becd015a88ffccbf2d7a8a 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Fix PR11282 - an assert in markAsSink

This is another fallout from the refactoring. We were
calling MarkAsSink on a cached out node.
(Fixes radar://10376675)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143516 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
a1e0540a051174d029401a7eb373cca295c4b9f9 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] BranchNodeBuilder should not generate autotransitions.

This fixes radar://10367606

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143514 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/WorkList.h
0c9badaf92f3846a7cf35858c2eb4ae2d737d97e 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] CheckerContext::getPredecessor() cleanup

Remove unnecessary calls to CheckerContext::getPredecessor() + Comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143513 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
16c9bfcc32cbbdefbcd127058df65b80b15e03fd 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove the CheckerContext's destructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143512 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
2a4b94452861bf8b7259bcc0b973fd4270d8ccaa 01-Nov-2011 Ted Kremenek <kremenek@apple.com> Downgrade err_iboutlet_object_type to a warning. It was breaking a bunch of code. We will reconsider promoting it back to an error later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143470 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1cbd4441f5b323d1a3d85d4b816ebd088ca330ab 01-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put a reference of the ASTReader in the ASTUnit.

This is intended for direct access of the ASTReader for uses that make
little sense to try to shoehorn in the ExternalASTSource interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143465 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
627440b612ff96dfc25334d1475698184c55e996 01-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] For a class extension, give it a unique USR but for any property or ivar
it contains give it a USR based on its semantic context, which is the interface.

This follows what we already did for objc methods. rdar://10371669

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
dcb0b93a25ab5e938f01764b2c99f39f131e01c1 01-Nov-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Enable function call and some overload resolution with parameters of aggregate class type and initializer list arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143462 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
f3aa8d6ef9457c7e36a8f265c781c38dadc7c074 01-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Fix the representation of wide strings in the AST and IR so that it uses the native representation of integers for the elements. This fixes a bunch of nastiness involving
treating wide strings as a series of bytes.

Patch by Seth Cantrell.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ex/LiteralSupport.h
9039b1804c0724b9d85dcad2d7fcc329c150f96d 01-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Perform proper conversion for strings encoded in the source file as UTF-8. (For now, we are assuming the source character set is always UTF-8; this can be easily extended if necessary.)

Tests will be coming up in a subsequent commit.

Patch by Seth Cantrell.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143416 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/LiteralSupport.h
e8172b56b2c5091fbbdf49324a2a49735bb7733c 01-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Move ConvertUTF8toUTF32 out of #if 0, in preparation for a patch which needs it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
12e3a16149e76004393ccd1f3be1b5811efda65c 01-Nov-2011 Douglas Gregor <dgregor@apple.com> Rework the AST for the initializer of a delegating constructor, so
that it retains source location information for the type. Aside from
general goodness (being able to walk the types described in that
information), we now have a proper representation for dependent
delegating constructors. Fixes PR10457 (for real).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecursiveASTVisitor.h
ema/Sema.h
dd5b7b630f814446e06ce397dd4d036399c3ce9e 31-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> Improve text of a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143353 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
321b7acdc381a46aa6f5992525a6b78f1963aeb2 31-Oct-2011 Anders Carlsson <andersca@mac.com> In x86_64, when calling an Objective-C method that returns a _Complex long double, make sure to use the objc_msgSend_fp2ret function which ensures that the return value will be {0, 0} if the receiver is nil.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/TargetInfo.h
197a9740e4e644c55533803f4b73e5fc69d5deb0 31-Oct-2011 Axel Naumann <Axel.Naumann@cern.ch> Add possibility to specify an include location for createFileIDForMemBuffer().
Useful to set up a virtual include hierarchy, e.g. to order diagnostics for ambiguous overloads from MemoryBuffers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5668e92a176ac6a77eb62c141a2a5ad78d25de26 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the source range for ObjCInterfaces that are forward decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143343 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5fe62eccaf83e02d4b77d4bc266e17c7a49b6d53 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Now that we store the location of a decl outside its record
make sure that we keep track of locations of replaced decls as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143341 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
7db89cd2331f1b4c708b5a76fa2ddbb7d82d4c43 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] For ASTReader's FileDeclIDs also associate the Module that the
local DeclIDs came from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143340 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
311da2ffe5ae8066e5f56349cdd3c5b0ecdcf9bd 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::isLocalFileID/isLoadedFileID functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
bd463dc18423af5b0a3095c0bccb47243df375ea 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Have the ASTUnit associate the local declarations that get parsed with the file
that contains them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143338 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
7e770a0a4b685e1bb6b8d3847fa56ee67e952e31 30-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for lazily linking bitcode files (using a new
-mlink-bitcode-file flag), and more generally llvm::Modules, before
running optimisations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
odeGen/CodeGenAction.h
river/CC1Options.td
rontend/CodeGenOptions.h
8ff064e2f8c029c0d2579e279673fd3421c03d56 29-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr function substitution:
Track the function invocation where an lvalue referring to a constexpr function
parameter originated from, and use it to substitute the correct argument and to
determine whether such an argument's lifetime has ended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
899ad687a4b7081b1f39eb771d6f37bafeffd380 29-Oct-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed FriendDecl source locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143295 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d778105d47d92af4bf74f3e3019ca74ab0d78986 29-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it will
implicitly perform an lvalue-to-rvalue conversion if used on an lvalue
expression. Also improve the documentation of Expr::Evaluate* to indicate which
of them will accept expressions with side-effects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c820f183cd92d4a18de81b660a34f76e2cfdc463 29-Oct-2011 Ted Kremenek <kremenek@apple.com> Start work on SerializedDiagnosticPrinter, a new DiagnosticConsumer that serializes out the diagnostics for a given translation unit to a bit code file. This is a WIP.

The motivation for this new DiagnosticConsumer is to provide a way for tools invoking the compiler
to get its diagnostics via a libclang interface, rather than textually parsing the compiler output.
This gives us flexibility to change the compiler's textual output, but have a structured data format
for clients to use to get the diagnostics via a stable API.

I have no tests for this, but llvm-bcanalyzer so far shows that the emitted file is well-formed.

More work to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/DiagnosticOptions.h
rontend/SerializedDiagnosticPrinter.h
ca7c12796780e2e1473699ab111d68ba602bd7f2 29-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: desugar certain type and improve on diagnostic for
ownership qualifier cast which won't work.
// rdar://10244607


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143258 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3e905914b46f793e109f17da41ac4727231adb72 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Sort the file decls by file offset not raw source location.

Currently sorting by raw source location does work as intended but who knows
what may change in the future..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143256 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
0ab8a149b712dbbe91987b510798af4b51316793 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] In ASTWriter::associateDeclWithFile don't bother finding the file loc
if we are not interested in the decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143255 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
11ee2779c4df28da88a6b3e55fa5e39b905def3a 29-Oct-2011 Douglas Gregor <dgregor@apple.com> Move -Wc++11-compat out of -Wall. It causes trouble for clients that
define their own "nullptr" class in C++98 and build with -Wall.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
5ab3cf5e64095f66185b206201c0d24b591313c5 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an alias option for -error-on-deserialized-decl with joined '='.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143239 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
40b839db70f43870bff2e07a2697513459d732c4 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Keep track of file-level declarations that are contained by files.

Introduce a FILE_SORTED_DECLS [de]serialization record that contains
a file sorted array of file-level DeclIDs in a PCH/Module.
The rationale is to allow "targeted" deserialization of decls inside
a range of a source file.

Cocoa PCH increased by 0.8%
Difference of creation time for Cocoa PCH is below the noise level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143238 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
b060361e2eb672088226895ecf4a5d90d471c61a 29-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Initial support for C++11 constexpr function invocation substitution. Using
constexpr function arguments outside of their function (passing or returning
them by reference) does not work correctly yet.

Calling constexpr function templates does not work yet, since the bodies are not
instantiated until the end of the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
51e9ef0f823bcb04e8776665878745f01370f77b 28-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c arc: type-casting of an objc pointer to
an rvalue retainable object type with life-time qualifier has no
effect and wil be diagnosed as error. // rdar://10244607


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8fc563ea8f19004cf2c568f7e061c80f9f851fcb 28-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Reinstate r142844 (reverted in r142872) now that lvalue-to-rvalue conversions
are present in all the necessary places:

In constant expression evaluation, evaluate lvalues as lvalues and rvalues as
rvalues. Remove special case for caching reference initialization and fix a
cyclic initialization crash in the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143204 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
6adb12dd40178ce513b02d44f8048a76801d6331 28-Oct-2011 Richard Trieu <rtrieu@google.com> Fix for PR9751 to change the behavior of -Wformat warnings. If the format
string is part of the function call, then there is no difference. If the
format string is not, the warning will point to the call site and a note
will point to where the format string is.

Fix-it hints for strings are moved to the note if a note is emitted. This will
prevent changes to format strings that may be used in multiple places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
049360366ae89fa5263a6b2192642a2d8aeb0a2e 27-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Pull the location out of the serialized declarations and put it in the array
of decl bit offsets.

This allows us to easily get at the location of a decl without deserializing it.
It increases size of Cocoa PCH by only 0.2%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143123 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
821f8a1741e3bb62456971ba17601a678bc82e0f 27-Oct-2011 Ted Kremenek <kremenek@apple.com> Move ASTUnit's handling of temporary files and the preamble file into a lazily-created static DenseMap. This DenseMap is cleared (and the files erased) via an atexit routine in the case an ASTUnit is not destroyed. Fixes <rdar://problem/10293367>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143115 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
37a5e89434d0e98e9949cf97a803ababd2f3502f 27-Oct-2011 Douglas Gregor <dgregor@apple.com> Make the loading of information attached to an IdentifierInfo from an
AST file more lazy, so that we don't eagerly load that information for
all known identifiers each time a new AST file is loaded. The eager
reloading made some sense in the context of precompiled headers, since
very few identifiers were defined before PCH load time. With modules,
however, a huge amount of code can get parsed before we see an
@import, so laziness becomes important here.

The approach taken to make this information lazy is fairly simple:
when we load a new AST file, we mark all of the existing identifiers
as being out-of-date. Whenever we want to access information that may
come from an AST (e.g., whether the identifier has a macro definition,
or what top-level declarations have that name), we check the
out-of-date bit and, if it's set, ask the AST reader to update the
IdentifierInfo from the AST files. The update is a merge, and we now
take care to merge declarations before/after imports with declarations
from multiple imports.

The results of this optimization are fairly dramatic. On a small
application that brings in 14 non-trivial modules, this takes modules
from being > 3x slower than a "perfect" PCH file down to 30% slower
for a full rebuild. A partial rebuild (where the PCH file or modules
can be re-used) is down to 7% slower. Making the PCH file just a
little imperfect (e.g., adding two smallish modules used by a bunch of
.m files that aren't in the PCH file) tips the scales in favor of the
modules approach, with 24% faster partial rebuilds.

This is just a first step; the lazy scheme could possibly be improved
by adding versioning, so we don't search into modules we already
searched. Moreover, we'll need similar lazy schemes for all of the
other lookup data structures, such as DeclContexts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143100 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/ExternalPreprocessorSource.h
ema/IdentifierResolver.h
ema/Sema.h
erialization/ASTReader.h
erialization/ASTWriter.h
f17126e938aab826e38c73b4f4edb3f66b320157 27-Oct-2011 Hans Wennborg <hans@hanshq.net> Teach format string analysis that "%zu" means size_t.

The code had it backwards, thinking size_t was signed, and using that for "%zd".

Also let the analysis get the types for (u)intmax_t while we are at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f234773102aef1cf054e833a829663857e9d8637 27-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Optimize by not generating empty transitions in CheckerContext

Go not generate a new transition by addTransition methods if nothing changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143091 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
d8d15cf0e7f72f5e8bf4cba2a7fa324527b8e1ba 27-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Move enqueueEndOfFunction into CoreEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143090 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
4c7b5183b88bbb778b43023c3e6fba9c2484d536 27-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Make CoreEngine responsible for enqueueing Stmt Nodes.

Enqueue the nodes generated as the result of processing a statement
inside the Core Engine. This makes sure ExpEngine does not access
CoreEngine's private members and is more concise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143089 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
749e95ee8353dff9a6d1137ec4556971d27a9f87 27-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix crash on an @interface nested inside @implementation, rdar://10336158

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143085 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
cab62f8cc4967a6b9b86bb6d2b21562ad5385eb5 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Add getLocationContext to CheckerContext

CheckerContext::getPredecessor is only used to get to the LocationContext
half of the times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143061 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
a21ca0e56b638f148d974c17427efb746674cc31 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove EmitBasicReport form CheckerContext.

The path sensitive checkers should use EmitBasicReport, which provides the
node information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143060 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
23c5497d36cbf0506f48575b6d89abb4dde1b5dc 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Rename generateNode -> addTransition in CheckerContext

Also document addTransition methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143059 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
8bb2881d62a38e22e8d50b67158873c192e7f047 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove forward declarations of GenericNodeBuilder

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143058 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
2ce64505ddbe5356d03e29c02c6159f16c16b9bd 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] GenericNodeBuilder -> NodeBuilder.

Remove GenericNodeBuilder and use a class inherited from NodeBuilder instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143057 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
cda80f83ec59293222fe8b92617c8e9f41725f76 26-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Pull out conversion on LHS of -> and . into its own function. This happens
implicitly in LookupMemberExpr and explicitly in cases where template
instantiation doesn't redo the lookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143046 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c23482b5ded0c032a5959d54109d26f38d00edd2 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove getEngine() form CheckerContext

A step toward making sure that diagnostics report should only
be generated though the CheckerContext and not though BugReporter
or ExprEngine directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142947 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
f5d6176554eda96ac4097a0a1e0852250cadfb9a 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Simplify CheckerContext

Remove dead members/parameters: ProgramState, respondsToCallback, autoTransition.
Remove addTransition method since it's the same as generateNode. Maybe we should
rename generateNode to genTransition (since a transition is always automatically
generated)?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142946 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
643f4d3ea53c2360a2ed603200eb474ff91c7f75 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove unused headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142945 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
a284a7a3d1b18428afbf9f6f41b4f057406d3361 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Make branch for condition callback use CheckerContext

Now, all the path sensitive checkers use CheckerContext!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142944 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
1f7571b85caea78e0cefb558867ec84e12b32e79 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyze] Convert EndOfPath callback to use CheckerContext

Get rid of the EndOfPathBuilder completely.
Use the generic NodeBuilder to generate nodes.
Enqueue the end of path frontier explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142943 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
f299b1b7ffaa1261cb44c9182a1fb9d96be65e80 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Handle redundant 'typename' on base class specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fafbc37cf18c19cedde78f3236919ce9879ba08f 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix erroneous name-specifiers prior to decltypes better/correctly as per Doug's feedback.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142935 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e859fbf5938fc0f8ca5aa115c35c66732174f513 25-Oct-2011 John McCall <rjmccall@apple.com> Restore r142914 and r142915, now with missing file and apparent
GCC compiler workaround.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
3e1bffd2448b0acd8a6fbb0a3aced119ea035cf9 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix cases where the optional nested-name-specifier erroneously preceeded a decltype-specification when specifying a base type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142928 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
20afb0ce1aaca79ad9c0e2c9407f376ed631b627 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Support the use of decltype for specifying base types. Fixes PR11216.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142926 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
50e13c58f2c5dafb9b0fdc93a4610c0e61b2ec8f 25-Oct-2011 NAKAMURA Takumi <geek4civic@gmail.com> Revert r142914 and r142915, due to possibly missing file.

r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
1374a279a4708255530d462d4b03910e6441bf06 25-Oct-2011 John McCall <rjmccall@apple.com> Introduce a placeholder type for "pseudo object"
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.

Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
01a666e06e3f3c664b6fd284b9f042767d3a4904 25-Oct-2011 Eric Christopher <echristo@apple.com> Allow the -fno-operator-names option to be passed down to the rest
of the compiler.

Fixes PR10198
Patch by Brian Foley!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142913 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
811cba7b857944eccac47efdec43083ee6a0bbaf 25-Oct-2011 Ted Kremenek <kremenek@apple.com> Tweak printf format string parsing to accept 'hh' conversion specifier to accept any char, not just signed char. Fixes <rdar://problem/10303638>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142908 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
6f03371d98408cbe50b6668b2a07995e225192b8 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in the name that guards a
Microsoft __if_exists/__if_not_exists statement. Also note that we
weren't traversing DeclarationNameInfo *at all* within the
RecursiveASTVisitor, which would be rather fatal for variadic
templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
71811ebea95fa004d8a230310420ed36d5e7ee97 25-Oct-2011 Ted Kremenek <kremenek@apple.com> Remove extra copy of contents of header file resulting in a patch being applied twice. Aren't include guards great?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142905 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
b80b6a9a2f9f9048ca0113adb2fba2700f89a3a5 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Make the -Wc++11-compat warnings ignored by default, so we don't break
valid C++98/03 code. However, add these warnings to -Wall, for those
who obviously already like clean code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
1db0028f9aadf052735dd3433ee43b091a272d3d 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Implement support for dependent Microsoft __if_exists/__if_not_exists
statements. As noted in the documentation for the AST node, the
semantics of __if_exists/__if_not_exists are somewhat different from
the way Visual C++ implements them, because our parsed-template
representation can't accommodate VC++ semantics without serious
contortions. Hopefully this implementation is "good enough".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtCXX.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
a34fc036dbab7528e7f351e3bd244663ca24448d 25-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When visiting preprocessed entities, make it possible to avoid deserializing
preprocessed entities that are #included in the range that we are interested.

This is useful when we are interested in preprocessed entities of a specific file, e.g
when we are annotating tokens. There is also an optimization where we cache the last
result of PreprocessingRecord::getPreprocessedEntitiesInRange and we re-use it if
there is a call with the same range as before.

rdar://10313365

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
ex/PreprocessingRecord.h
erialization/ASTReader.h
7c4629c8bba02762119c873b657329d28abaa4ca 25-Oct-2011 Ted Kremenek <kremenek@apple.com> Add source-level dominators analysis. Patch by Guoping Long!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142885 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
53a12a238d92dc2d78aa2d9721a70f24b5c44d83 25-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Revert r142844, it broke selfhost. The problem appears to be a missing
lvalue-to-rvalue conversion on the LHS operand of '->'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f4387944a2888b25ef74b3daee60060c05e27321 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Rework Microsoft __if_exists/__if_not_exists parsing and semantic
analysis to separate dependent names from non-dependent names. For
dependent names, we'll behave differently from Visual C++:

- For __if_exists/__if_not_exists at class scope, we'll just warn
and then ignore them.
- For __if_exists/__if_not_exists in statements, we'll treat the
inner statement as a compound statement, which we only instantiate
in templates where the dependent name (after instantiation)
exists. This behavior is different from VC++, but it's as close as
we can get without encroaching ridiculousness.

The latter part (dependent statements) is not yet implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/Sema.h
0962ee5f01b0ee39c82d2bf0583a2446672c4b8c 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Node builders cleanup + comments
Renamed PureNodeBuilder->StmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142849 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
36075b98506d520639faed242edb3cabc64bd99d 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove the old StmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142848 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
300f753779bd46efbd326b3b0a035ab1430b4302 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Completely remove the global Builder object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142847 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
892cc7f95d7a4a80e40b5443b7f9a1c231997e6f 24-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: evaluate lvalues as lvalues, and rvalues as
rvalues, as C++11 constant evaluation semantics require. DeclRefs referring to
references can now use the normal initialization-caching codepath, which
incidentally fixes a crash in cyclic initialization of references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142844 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2ecce333b9da63773411739a75a7914ad20554cf 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert ExprEngine::visit() to use short lived builders.

This commit removes the major functional dependency on the ExprEngine::Builder
member variable.

In some cases the code became more verbose. Particularly, we call takeNodes()
and addNodes() to move responsibility for the nodes from one builder to another.
This will get simplified later on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142831 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
e6c41f4fc76a266cb84588453600e8f6051c61d0 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert VisitDeclStmt to use local node builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142830 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
05b1c8997b074531a17e03c6c9d566800221fc42 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert more functions (ex:evalBind()) to iterative builders

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142829 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
93cda4834df0ce3f4188aa434a2fe58fed441c80 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert VisitUnaryOperator to use short lived Node builders

To convert iteratively, we take the nodes the local builder will
process from the from the global builder and add the generated nodes
after the short lived builder is done. PureStmtNodeBuilder is the
one we should eventually use everywhere. Added Stmt index and Builder
context as ExprEngine globals. To avoid passing them around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142828 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
1d2c12e5e685359e8db78f569306a5f5f8000158 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Use a temporary builder in CheckerContext.

First step toward removing the global Stmt builder. Added several transitional methods (like takeNodes/addNodes).
+ Stop early if the set of exploded nodes for the next iteration is empty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142827 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
8689a00f9195202f43c2766f4bea471a87fd6271 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Pass external Dst set to NodeBuilder

This moves the responsibility for storing the output node set from the
builder to the clients. The builder is just responsible for transforming
an input set into the output set: {SrcSet/SrcNode} -> {Frontier}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142826 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
60a4a2506cea321d5509b9dcfb332d084c06ec9c 24-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Make sure we don't try to erase past the StoredDiagnostics vector.

Ted came upon the bug but I couldn't make a test out of it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142805 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
7ad3a4c2200c17058884995bd9834c4083f79031 24-Oct-2011 David Chisnall <csdavec@swan.ac.uk> Enable experimental support for objc_msgSend with GNUstep ObjC runtime.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142795 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
579ee4f9f5c7b8f939621c8008337a3c1c679957 24-Oct-2011 Ted Kremenek <kremenek@apple.com> Rename AnalysisContext to AnalysisDeclContext. Not only is this name more accurate, but it frees up the name AnalysisContext for other uses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/PostOrderCFGView.h
nalysis/Analyses/ReachableCode.h
nalysis/Analyses/ThreadSafety.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
dcc71da0bdf1a1490d6dd6b5ed70c3ca4c9fd775 23-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Fix grammar for C++11 alignment specifiers, and add a few FIXMEs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
4bcccbad1cd91224f99fcc72e53dafe3b91b9206 23-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Fix typo (C++1 -> C++11).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
3bd5a8169e57debade42d5b748ca564ca9a832ba 23-Oct-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Remove LocationContext creation methods from AnalysisManager, and change clients to use AnalysisContext instead.

WIP to remove/reduce ExprEngine's usage of AnalysisManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142739 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
6eafffd01f275eda02efc070d55284b92dc52723 22-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Pack struct better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142725 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
506d525415becf77ed6829fc366ace621f9ea822 22-Oct-2011 Ted Kremenek <kremenek@apple.com> Refactor ThreadSafety to use PostOrderCFGView instead of its own copy (of TopologicallySortedCFG).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PostOrderCFGView.h
970c23b653a817359ec0c31568890d6b4700659c 22-Oct-2011 Ted Kremenek <kremenek@apple.com> Pull TopologicallySortedCFG out of LiveVariables into its own analysis: PostOrderCFGView.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142713 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PostOrderCFGView.h
3c5cf582c870de5c0b230319812715686a5ebd8f 22-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When serializing Stmts, keep track of when sub statements are referenced again and
in such a case just write out a reference of a previously serialized Stmt, instead
of serializing it all over again.

This saves memory + space + [de]serializing time, and avoids blowing up memory
with pathological cases. rdar://10293911

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142696 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTWriter.h
28bc9b09aab06a448784b732ce67e90d1ac7fe07 22-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't try to set the "array filler" in a InitListExpr twice.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142695 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cc82772599d9272eaa526da4e4d575301eaa76df 22-Oct-2011 Eli Friedman <eli.friedman@gmail.com> More ASTRecordLayout changes for MS ABI; based on patch by r4start.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
57d2b8aefcf58a7bb82de1cdc69358b1893d1219 21-Oct-2011 DeLesley Hutchins <delesley@google.com> Thread safety analysis refactoring: invalid lock expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
371a4d9c12d23b22ea18cf0957d30e3708c523d6 21-Oct-2011 Sean Callanan <scallanan@apple.com> Added documentation for the recently-added
addDecl() and makeDeclVisibleInContextInternal()
functions, and made the latter private since it
does not and should not have external clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142655 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1aaa249734b9c87e4ad5ed8b4e8cfd26ee921741 21-Oct-2011 Douglas Gregor <dgregor@apple.com> Treat the Microsoft/Borland keyword "__except" as a context-sensitive
keyword, because both libstdc++ and libc++ use "__except" as an
identifier. Fixes <rdar://problem/10322555>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142636 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
d20f023d797483d47976923a29c955f26a6fa3d2 21-Oct-2011 Sean Callanan <scallanan@apple.com> I added a new function to DeclContext called
addDeclInternal(). This function suppresses any
calls to FindExternalVisibleDeclsByName() while
a Decl is added to a DeclContext. This behavior
is required for the ASTImporter, because in the
case of the LLDB client the ASTImporter would be
called recursively to import the visible decls,
which leads to assertions because the recursive
call is seeing partially-formed types.

I also modified the ASTImporter to use
addDeclInternal() in all places where it would
otherwise use addDecl(). This fix should not
affect the rest of Clang, passes Clang's
testsuite, and fixes several serious LLDB bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c8f2c405e2c57d11f4315f3f0cfc71d75ba6cfd5 21-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Take DW_AT_comp_dir from $PWD when it's present and starts with a '/'. This is
closer to what GCC does, except that GCC also checks that the inodes for $PWD
and '.' match.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142633 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
14475426eb5d37f179cf80626b4a45fab6e02b6b 20-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++98-compat diagnostics for jumps which bypass initialization of non-POD
but trivially constructible and destructible variables in C++11 mode. Also
incidentally improve the precision of the wording for jump diagnostics in C++98
mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f777d4b4e845431c065ee967258d20af78408a5e 20-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> 'extern template' is a C++11 feature. Add an Extension for C++98 (this matches
gcc's behaviour), and a -Wc++98-compat-pedantic warning for C++11.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142597 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f9c0daf0e4637253bc23d8c0b4ac870cfa45a738 20-Oct-2011 Douglas Gregor <dgregor@apple.com> There's no point in marking a declaration invalid just because it
shadows a template parameter. Complain about the shadowing (or not,
under -fms-extensions), but don't invalidate the declaration. Merely
forget about the template parameter declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142596 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6406f91d7baa67ace4a5e0b1bc2eeff30143bef1 20-Oct-2011 Ted Kremenek <kremenek@apple.com> Further refine the diagnostic categories for ARC diagnostics. Addresses <rdar://problem/10245086>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
asic/DiagnosticSemaKinds.td
52441ce1c7162d190baeaa26a62f657b224a4684 20-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++98-compat warning for enumerations in nested name specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6d4eb704bc2d6cb5d72e35d503ebfe94634e3b9d 20-Oct-2011 David Blaikie <dblaikie@gmail.com> Add a fixit to remove storage specifiers on anonymous enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142565 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ExpressionTraits.h
365508c75e0015d312af9478d6886f4a75707661 20-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix all 80 col violations in include/clang/Basic, plus any trailing whitespace in the files I'm touching anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ExpressionTraits.h
asic/FileManager.h
asic/OnDiskHashTable.h
asic/PartialDiagnostic.h
asic/SourceManager.h
asic/Version.h
4c4c2bb48cac89b5f8da2713eceb35fd92c2540b 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Improve the diagnostic when a comma ends up at the end of a declarator group
instead of a semicolon (as sometimes happens during refactorings). When such a
comma is seen at the end of a line, and is followed by something which can't
possibly be a declarator (or even something which might be a plausible typo for
a declarator), suggest that a semicolon was intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142544 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3da576c5b43325d9b82dd32d0b6eb0db5edcb97d 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat: warn on nontrivial types used in unions and anonymous structs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
763ab674a26aa3bb941afa45a6a43039fc8b1322 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat: diagnose if a reference is bound to a prvalue which does not
have an unambiguous accessible copying constructor; this is ill-formed in C++98.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142533 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
39d3196189a86803f7793cabd7ac498c761bc729 11-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Extend -Wno-bind-to-temporary-copy and -Wno-{unnamed,local}-type-template-args
to disable the corresponding -Wc++98-compat warnings in addition to the C++11
extension warnings, so that people already using these flags can switch to C++11
mode and turn on -Wc++98-compat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144404 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
72cd7a0e94629dc200aa97f88c4788ac2e923b48 11-Nov-2011 Douglas Gregor <dgregor@apple.com> Rename SPECIAL_TYPE_jmp_buf and SPECIAL_TYPE_sigjmp_buf to follow the
convention of SPECIAL_TYPE*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144403 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
a30cfe5026b12c28b7b575b48176e0a3543ce939 11-Nov-2011 Douglas Gregor <dgregor@apple.com> Introduce basic support for parsing module map files.

Module map files provide a way to map between headers and modules, so
that we can layer a module system on top of existing headers without
changing those headers at all.

This commit introduces the module map file parser and the module map
that it generates, and wires up the module map file parser so that
we'll automatically find module map files as part of header
search. Note that we don't yet use the information stored in the
module map.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144402 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/HeaderSearch.h
ex/ModuleMap.h
cc1af78010031e7a629c5d0840834e7189768e04 11-Nov-2011 Ted Kremenek <kremenek@apple.com> Place 'argument unused during compilation' under a -W flag. Fixes <rdar://problem/10403653>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
8e23806863721495f9e1f84aed614f7afba774a3 11-Nov-2011 Douglas Gregor <dgregor@apple.com> I predict that HeaderSearch will need the ability to generate
diagnostics in the future. Make it so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144347 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ba49103550281ff9c92c850487e83c7a6eb43825 11-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a const version of ObjCClassDecl::getForwardDecl, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144342 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
36f6e30d5c21a693abf2612ef086e83e9696f0e0 11-Nov-2011 Ted Kremenek <kremenek@apple.com> Add top-level driver option '--serialize-diagnostics' for serialize compiler diagnostics to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144339 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
3fe0aad1a6f692f691b8f953a7d079f49dfac314 10-Nov-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang/AST/APValue.h: Try to fix *900* of cast-qual warnings by g++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
153221717e39ce41323d5bc6b8b8bf130923c1bd 10-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: implement full deserialization of clang diagnostics via the libclang API.

I've tested it on simple cases and it works. Test cases to follow as well as a few tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144269 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
180f47959a066795cc0f409433023af448bb0328 10-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: support for evaluation of structs and unions of
literal types, as well as derived-to-base casts for lvalues and
derived-to-virtual-base casts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
80ee6e878a169e6255d4686a91bb696151ff229f 10-Nov-2011 John McCall <rjmccall@apple.com> There's no good reason to track temporaries in ExprWithCleanups,
but it is sometimes useful to track blocks. Do so. Also
optimize the storage of these expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/Stmt.h
ema/Sema.h
347208968c303a9c11fe29012f6dc49680465182 10-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Fix some additional x86 intrinsics to use "I" (ICE) markings. Fix *mmintrin.h to take them into account.

<rdar://problem/10341145>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144246 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
cb6542f4863a53ab6b1e1abdf8f9afc107160f8e 09-Nov-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix the signature of __sigsetjmp and sigsetjmp. Patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ba243b59a1074e0962f6abfa3bb9aa984eac1245 09-Nov-2011 David Blaikie <dblaikie@gmail.com> Fixing 80 col violations (& removing any trailing whitespace on files I was touching anyway)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtCXX.h
ST/Type.h
ST/TypeLoc.h
ST/VTableBuilder.h
nalysis/Analyses/Dominators.h
nalysis/Analyses/FormatString.h
nalysis/Analyses/PostOrderCFGView.h
nalysis/Analyses/ThreadSafety.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/CFG.h
rontend/Utils.h
ndex/ASTLocation.h
ex/Preprocessor.h
ema/CodeCompleteConsumer.h
ema/LocInfoType.h
ema/PrettyDeclStackTrace.h
ema/Sema.h
ema/TemplateDeduction.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
a8fbc053eb08c929174bf519a0e9733e4ef90bfa 09-Nov-2011 David Blaikie <dblaikie@gmail.com> Fix 80 cols violations & remove trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144170 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d3891e9fb7eb25436e5c537189030bed0d5a1dcf 09-Nov-2011 Douglas Gregor <dgregor@apple.com> Workaround for compilers that don't implement C++ DR45, from Tom Honermann!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
arse/Parser.h
b31dd8ff34903507cec1b057955f2a272ad2ee65 09-Nov-2011 Douglas Gregor <dgregor@apple.com> Put ext_offsetof_extended_field_designator under the warning flag
-Wextended-offsetof, from Jeff Walden!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
790c372f38bcc85927feae107d1e0bacae5dfbc1 09-Nov-2011 Devang Patel <dpatel@apple.com> Remove extra ';'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
87429a05ff66fe6460eaa4855fd0da574e26bf7b 09-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Fix reading from PCH of diagnostic pragmas.

In certain cases ASTReader would call the normal DiagnosticsEngine API to initialize
the state of diagnostic pragmas but DiagnosticsEngine would try to compare source locations
leading to crash because the main FileID was not yet initialized.

Yet another case of the ASTReader trying to use the normal APIs and inadvertently breaking
invariants. Fix this by having the ASTReader set up the internal state directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
75d0fe7100939c8f32ddf25e7b3f25e22e4a5878 09-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add "I" (ICE) annotations onto a few more x86 intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144152 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
0b69aa856308f6b35f8b96ef269a482558f2966b 08-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: serialize the version info in a separate meta block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144115 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
5b0c5199a7037d0435d75f37e3ba69a24f757931 08-Nov-2011 Douglas Gregor <dgregor@apple.com> Mark the overloaded atomic builtins as having custom type checking,
which they do. This avoids all of the default argument promotions that
we (1) don't want, and (2) undo during that custom type checking, and
makes sure that we don't run into trouble during template
instantiation. Fixes PR11320.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144110 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
355130fde923c7284d32cc61fc3a34673bf14852 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Misc fixes to pcmp*stri.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
da95f73b59f9af964e33725c515139d34c90c863 08-Nov-2011 Bob Wilson <bob.wilson@apple.com> Clean up type flags for overloaded Neon builtins. No functional change.

This patch just adds a simple NeonTypeFlags class to replace the various
hardcoded constants that had been used until now. Unfortunately I couldn't
figure out a good way to avoid duplicating that class between clang and
TableGen, but since it's small and rarely changes, that's not so bad.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetBuiltins.h
66f85713bd0d22f867efa8e9fb0037befdd6b151 07-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: static data members declared constexpr are required to have an
initializer; all other constexpr variables are merely required to be
initialized. In particular, a user-provided constexpr default constructor can be
used for such initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
45fa560c72441069d9e4eb1e66efd87349caa552 07-Nov-2011 Douglas Gregor <dgregor@apple.com> When we notice that a member function is defined with "= delete" or "=
default", make a note of which is used when creating the
initial declaration. Previously, we would wait until later to handle
default/delete as a definition, but this is too late: when adding the
declaration, we already treated the declaration as "user-provided"
when in fact it was merely "user-declared".

Fixes PR10861 and PR10442, along with a bunch of FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144011 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
55ccbd5fbfc6dce1b93779ba2dac0da259503ae0 07-Nov-2011 Chad Rosier <mcrosier@apple.com> Tablegenify -g options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144001 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
efaa93aaa2653f4eb40e6a22e504a448da94aaf8 07-Nov-2011 Douglas Gregor <dgregor@apple.com> Tighten up the conditions under which we consider ourselves to be
entering the context of a nested-name-specifier. Fixes
<rdar://problem/10397846>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143967 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
cc5d4f637cdf83adc174b96d2bfe27cef1cf0f36 07-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: support for arrays.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
07643086c6460095855573902d66aae1b08a6182 07-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Rip out one of the features I added for the driver-include-management.
We don't actually need a separate flag for non-sysrooted paths as the
driver has to manage the sysroot anyways. The driver is not infrequently
adding paths to the header search based on their existence on the
filesystem. For that, it has to add the sysroot anyways, we should pass
it on down to CC1 already joined. More importantly, the driver cannot in
all cases distinguish between sysrooted paths and paths that are
relative to the Clang binary's installation directory. Essentially, we
always need to ignore the system root for these internal header search
options. It turns out in most of the places we were already providing
the system root in the driver, and then another one in CC1 so this fixes
several bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143917 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
7864435ef2bce200224120bd1df3aed98ea5b99a 07-Nov-2011 John McCall <rjmccall@apple.com> Rip out CK_GetObjCProperty.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143910 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
9a17a680c74ef661bf3d864029adf7e74d9cb5b8 07-Nov-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: preserve subobject designator when flattening a
core constant value down to an APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
dbbdec994f5a96b5c25aaa679cd86ecabf545f7b 06-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure when setting AttributesAsWritten of a property that they do not
include ownership qualifiers from the type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143885 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4b9c2d235fb9449e249d74f48ecfec601650de93 06-Nov-2011 John McCall <rjmccall@apple.com> Change the AST representation of operations on Objective-C
property references to use a new PseudoObjectExpr
expression which pairs a syntactic form of the expression
with a set of semantic expressions implementing it.
This should significantly reduce the complexity required
elsewhere in the compiler to deal with these kinds of
expressions (e.g. IR generation's special l-value kind,
the static analyzer's Message abstraction), at the lower
cost of specifically dealing with the odd AST structure
of these expressions. It should also greatly simplify
efforts to implement similar language features in the
future, most notably Managed C++'s properties and indexed
properties.

Most of the effort here is in dealing with the various
clients of the AST. I've gone ahead and simplified the
ObjC rewriter's use of properties; other clients, like
IR-gen and the static analyzer, have all the old
complexity *and* all the new complexity, at least
temporarily. Many thanks to Ted for writing and advising
on the necessary changes to the static analyzer.

I've xfailed a small diagnostics regression in the static
analyzer at Ted's request.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143867 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
103accc00cf1c9a09790ef487a9fb89ec0750fd7 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Fix a significant oversight in my move of MSVC includes to the driver:
actually manage the builtin header file includes as well as the system
ones.

This one is actually debatable whether it belongs in the driver or not,
as the builtin includes are really an internal bit of implementation
goop for Clang. However, they must be included at *exactly* the right
point in the sequence of header files, which makes it essentially
impossible to have this be managed by the Frontend and the rest by the
Driver. I have terrible ideas that would "work", but I think they're
worse than putting this in the driver and making the Frontend library
even more ignorant of the environment and system on which it is being
run.

Also fix the fact that we weren't properly respecting the flags which
suppress standard system include directories.

Note that this still leaves all of the Clang tests which run CC1
directly and include builtin header files broken on Windows. I'm working
on a followup patch to address that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143801 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ac2bc4d220a6263be96b943e9162f4a11149e26d 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add two flags to the CC1 layer that I was hoping to avoid. We need to
encode the *exact* semantics which the header search paths internally
built by the Frontend layer have had, which is both non-user-provided,
and at times adding the implicit extern "C" bit to the directory entry.

There are lots of CC1 options that are very close, but none do quite
this, and they are all already overloaded for other purposes. In some
senses this makes the command lines more clean as it clearly indicates
which flags are exclusively used to implement internal detection of
"standard" header search paths.

Lots of the implementation of this is really crufty, due to the
surrounding cruft. It doesn't seem worth investing lots of time cleaning
this up as it isn't new, and hopefully *lots* of this code will melt
away as header search inside of the frontend becomes increasingly
trivial.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143798 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
96dcadec26244e028d59287ea1b249802c8fc2bc 05-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: include FixIt information in serialized diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143776 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
0d34e6ebd9d8b6e97106e12c13c6057f9829b946 05-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: pull emission of filenames into diagnostic block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143765 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
2a20b4fac5d06e2afc4980e7ef1b659c39c27c7b 05-Nov-2011 Ted Kremenek <kremenek@apple.com> serialized diagnostics: emit source ranges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143762 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
fdd0ced001babd4e65fb909cc2f847df53faf764 05-Nov-2011 Ted Kremenek <kremenek@apple.com> Move definition of record/block IDs for serialized diagnostics to public header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143761 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/SerializedDiagnosticPrinter.h
ab9fcd0ad3202735d5f21f15b2989d65f2747a13 05-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Switch the C++ include interface in the ToolChain to use the same naming
as the system include interface before I start adding implementations of
it to individual ToolChain implementations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143751 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
a246d270156a55999ecfa4099a0967ec4c9a254e 05-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Check for invalid after calling getSLocEntry, for safety.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
033be8bd33e0f84db8158771e13528e071563b73 04-Nov-2011 Devang Patel <dpatel@apple.com> Enable -flimit-debug-info by default. Now, clang lazily emits debug info for structs. Original behavior can be restored using -fno-limit-debug-info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143733 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
e0ac7454bae910ab3d67a92f6e2e5046d3bb8c1a 04-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] In GC, transform NSMakeCollectable to CFBridgingRelease.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143698 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
7ffa0325bd61f656697f99434334d425c39af309 04-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Sink the handling of -fobjc-arc-cxxlib to live with the other -fobjc-arc
implementation in the driver. This cleans up the signature and semantics
of the include flag adding component of the toolchain. Another step to
ready it for holding all the InitHeaderSearch logic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143686 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
88491fc6dfc7ebbd856d57a9acb49fb83077d6c8 04-Nov-2011 Chandler Carruth <chandlerc@gmail.com> Add a system include management interface to the toolchain, and call it
and the C++ include management routine from the proper place when
forming preprocessor options in the driver. This is the first step to
teaching the driver to manage all of the header search paths. Currently,
these methods remain just stubs in the abstract toolchain. Subsequent
patches will flesh them out with implementations for various toolchains
based on the current code in InitHeaderSearch.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143684 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
27c72d8ca8bbb2861959c71f737e2560a7bf9991 03-Nov-2011 Douglas Gregor <dgregor@apple.com> Teach the ASTImporter to import DefinitionData bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
17015eff2b3166e445377b15913474b472775e7c 03-Nov-2011 Douglas Gregor <dgregor@apple.com> Refactor Sema::IsSimplyAccessible slightly, to work on a DeclContext rather than a class

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143615 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
dfb332d0081c6641d1dbae6a2aeff757c99cc740 03-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Add infrastructure to be able to only deserialize decls in a file region and
use it for clang_getCursor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/ASTUnit.h
erialization/ASTReader.h
25270b6e6a8416b7532cfe552b41794418ea19b1 03-Nov-2011 Douglas Gregor <dgregor@apple.com> Add a printing policy flag to suppress printing "<anonymous>::" prior
to types. Enable this flag for code completion, where knowing whether
something is in an anonymous or inline namespace is actually not
useful, since you don't have to type it anyway. Fixes
<rdar://problem/10208818>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
19bda3ad8b5d37e505214e82fab1d0a0bf00f0fd 02-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Add an option to emulate the strange Apple gcc behavior of #pragma pack.

<rdar://problem/10374763>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
48a98c7a8467a9570d2fc7f2aab7f5273a3e218e 02-Nov-2011 Fariborz Jahanian <fjahanian@apple.com> objc: warn if a readonly property has a setter attribute too.
// rdar://10357768


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6800ba622e4edf287801ac69c42c61e7e294b06b 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Make sink attribute part of the node profile.

This prevents caching out on nodes with different sink flag.
(This is a cleaner fix for radar://10376675).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143517 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
2d950b15b2b2b650b102ecf0c6b50b45e0cb6a8a 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Fix PR11282 - an assert in markAsSink

This is another fallout from the refactoring. We were
calling MarkAsSink on a cached out node.
(Fixes radar://10376675)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143516 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
cdcc653642d4ac9255c574fabe74a48149e06733 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] BranchNodeBuilder should not generate autotransitions.

This fixes radar://10367606

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143514 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/WorkList.h
a2a860306e3697fcf7a12c5ba59551ca60578968 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] CheckerContext::getPredecessor() cleanup

Remove unnecessary calls to CheckerContext::getPredecessor() + Comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143513 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
6706e9783fc18cb32810404b599bf88aeaa389dc 01-Nov-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove the CheckerContext's destructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143512 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
0bfaf067c294bc4064c2f1aee0bc1c51e861ac65 01-Nov-2011 Ted Kremenek <kremenek@apple.com> Downgrade err_iboutlet_object_type to a warning. It was breaking a bunch of code. We will reconsider promoting it back to an error later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143470 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
62ba9f61af6177992d8cd2e3306257e1213b1bd3 01-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put a reference of the ASTReader in the ASTUnit.

This is intended for direct access of the ASTReader for uses that make
little sense to try to shoehorn in the ExternalASTSource interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143465 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
87ec9c257c99b4136af6c7f5be5a2d486906ba84 01-Nov-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] For a class extension, give it a unique USR but for any property or ivar
it contains give it a USR based on its semantic context, which is the interface.

This follows what we already did for objc methods. rdar://10371669

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cc7a6484d8afd6f8bede2757666c42248228e408 01-Nov-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Enable function call and some overload resolution with parameters of aggregate class type and initializer list arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143462 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
64f45a24b19eb89ff88f7c3ff0df9be8e861ac97 01-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Fix the representation of wide strings in the AST and IR so that it uses the native representation of integers for the elements. This fixes a bunch of nastiness involving
treating wide strings as a series of bytes.

Patch by Seth Cantrell.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ex/LiteralSupport.h
f74a4587629615ffd13bd0724868f86ba8c8f27b 01-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Perform proper conversion for strings encoded in the source file as UTF-8. (For now, we are assuming the source character set is always UTF-8; this can be easily extended if necessary.)

Tests will be coming up in a subsequent commit.

Patch by Seth Cantrell.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143416 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/LiteralSupport.h
436ecd959954db0e11c8daf64b3d6b6b6d0eba55 01-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Move ConvertUTF8toUTF32 out of #if 0, in preparation for a patch which needs it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
76852c218a207ef43583515cb835b6e855353a0f 01-Nov-2011 Douglas Gregor <dgregor@apple.com> Rework the AST for the initializer of a delegating constructor, so
that it retains source location information for the type. Aside from
general goodness (being able to walk the types described in that
information), we now have a proper representation for dependent
delegating constructors. Fixes PR10457 (for real).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecursiveASTVisitor.h
ema/Sema.h
56892c1c293d43b99fd84d27c831b1ce30541b0f 31-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> Improve text of a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143353 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eea64802558cc398571938b1f28cda1d4fa79ec3 31-Oct-2011 Anders Carlsson <andersca@mac.com> In x86_64, when calling an Objective-C method that returns a _Complex long double, make sure to use the objc_msgSend_fp2ret function which ensures that the return value will be {0, 0} if the receiver is nil.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/TargetInfo.h
f453cb9f677e16c00b358ec91eccf5f003765dc6 31-Oct-2011 Axel Naumann <Axel.Naumann@cern.ch> Add possibility to specify an include location for createFileIDForMemBuffer().
Useful to set up a virtual include hierarchy, e.g. to order diagnostics for ambiguous overloads from MemoryBuffers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d1cf3ff6c7e34fce764293cd2900fce99a60ed69 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the source range for ObjCInterfaces that are forward decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143343 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ef23b6001e8d9715246ca23bd8c3a6887d7844cb 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Now that we store the location of a decl outside its record
make sure that we keep track of locations of replaced decls as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143341 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
9d128d04578c62675eeb0cce83066052f9c19c9a 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] For ASTReader's FileDeclIDs also associate the Module that the
local DeclIDs came from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143340 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
718699169a7ccaf623e375031789efeed82f869b 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::isLocalFileID/isLoadedFileID functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
332cb9be88fd2d1b294a2fbc299c354e93be673c 31-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Have the ASTUnit associate the local declarations that get parsed with the file
that contains them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143338 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
22a7dfea585703d6755db69b83e29a0e6ee10369 30-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for lazily linking bitcode files (using a new
-mlink-bitcode-file flag), and more generally llvm::Modules, before
running optimisations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
odeGen/CodeGenAction.h
river/CC1Options.td
rontend/CodeGenOptions.h
47a1eed1cdd36edbefc318f29be6c0f3212b0c41 29-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr function substitution:
Track the function invocation where an lvalue referring to a constexpr function
parameter originated from, and use it to substitute the correct argument and to
determine whether such an argument's lifetime has ended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
0216df8fd3ce58f5a68ef2ab141ea34c96c11164 29-Oct-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed FriendDecl source locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143295 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
51f4708c00110940ca3f337961915f2ca1668375 29-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it will
implicitly perform an lvalue-to-rvalue conversion if used on an lvalue
expression. Also improve the documentation of Expr::Evaluate* to indicate which
of them will accept expressions with side-effects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7800212ef29be314d55814e8dcc568ff8beed106 29-Oct-2011 Ted Kremenek <kremenek@apple.com> Start work on SerializedDiagnosticPrinter, a new DiagnosticConsumer that serializes out the diagnostics for a given translation unit to a bit code file. This is a WIP.

The motivation for this new DiagnosticConsumer is to provide a way for tools invoking the compiler
to get its diagnostics via a libclang interface, rather than textually parsing the compiler output.
This gives us flexibility to change the compiler's textual output, but have a structured data format
for clients to use to get the diagnostics via a stable API.

I have no tests for this, but llvm-bcanalyzer so far shows that the emitted file is well-formed.

More work to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/DiagnosticOptions.h
rontend/SerializedDiagnosticPrinter.h
fc2eff57d7497578e8f08a5ee520ad3886a51186 29-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: desugar certain type and improve on diagnostic for
ownership qualifier cast which won't work.
// rdar://10244607


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143258 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fab8d5b478e6fb112b4414c4698a7cc2a350b0f0 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Sort the file decls by file offset not raw source location.

Currently sorting by raw source location does work as intended but who knows
what may change in the future..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143256 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
19645d2ae928580b62f9feff91c5aa5e19f5f20d 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] In ASTWriter::associateDeclWithFile don't bother finding the file loc
if we are not interested in the decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143255 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
50af19cb8aec23a182c9032e98e13f5da7707440 29-Oct-2011 Douglas Gregor <dgregor@apple.com> Move -Wc++11-compat out of -Wall. It causes trouble for clients that
define their own "nullptr" class in C++98 and build with -Wall.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
9a8cbc75052d641105e45d0eca2592743fa01e54 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an alias option for -error-on-deserialized-decl with joined '='.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143239 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
10f3df54486385e6497c9e5f229ff816e5a6c511 29-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Keep track of file-level declarations that are contained by files.

Introduce a FILE_SORTED_DECLS [de]serialization record that contains
a file sorted array of file-level DeclIDs in a PCH/Module.
The rationale is to allow "targeted" deserialization of decls inside
a range of a source file.

Cocoa PCH increased by 0.8%
Difference of creation time for Cocoa PCH is below the noise level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143238 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
d0dcceae2a8ca0e37b5dd471a704de8583d49c95 29-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Initial support for C++11 constexpr function invocation substitution. Using
constexpr function arguments outside of their function (passing or returning
them by reference) does not work correctly yet.

Calling constexpr function templates does not work yet, since the bodies are not
instantiated until the end of the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6d09f01af70bbd58ddbccb0a22f5479782b31797 28-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c arc: type-casting of an objc pointer to
an rvalue retainable object type with life-time qualifier has no
effect and wil be diagnosed as error. // rdar://10244607


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c49bd11f96c2378969822f1f1b814ffa8f2bfee4 28-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Reinstate r142844 (reverted in r142872) now that lvalue-to-rvalue conversions
are present in all the necessary places:

In constant expression evaluation, evaluate lvalues as lvalues and rvalues as
rvalues. Remove special case for caching reference initialization and fix a
cyclic initialization crash in the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143204 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
55733de16f492dadbf5f4d2809d6c610ba6d86ae 28-Oct-2011 Richard Trieu <rtrieu@google.com> Fix for PR9751 to change the behavior of -Wformat warnings. If the format
string is part of the function call, then there is no difference. If the
format string is not, the warning will point to the call site and a note
will point to where the format string is.

Fix-it hints for strings are moved to the note if a note is emitted. This will
prevent changes to format strings that may be used in multiple places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
9d31fa75bc05fe4cb903a7701550f22cfb73ea8b 27-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Pull the location out of the serialized declarations and put it in the array
of decl bit offsets.

This allows us to easily get at the location of a decl without deserializing it.
It increases size of Cocoa PCH by only 0.2%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143123 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
1872b3153a388b3a548c9f699cbc348128059be9 27-Oct-2011 Ted Kremenek <kremenek@apple.com> Move ASTUnit's handling of temporary files and the preamble file into a lazily-created static DenseMap. This DenseMap is cleared (and the files erased) via an atexit routine in the case an ASTUnit is not destroyed. Fixes <rdar://problem/10293367>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143115 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
eee242ff426bf79149f221798966e58688383c1e 27-Oct-2011 Douglas Gregor <dgregor@apple.com> Make the loading of information attached to an IdentifierInfo from an
AST file more lazy, so that we don't eagerly load that information for
all known identifiers each time a new AST file is loaded. The eager
reloading made some sense in the context of precompiled headers, since
very few identifiers were defined before PCH load time. With modules,
however, a huge amount of code can get parsed before we see an
@import, so laziness becomes important here.

The approach taken to make this information lazy is fairly simple:
when we load a new AST file, we mark all of the existing identifiers
as being out-of-date. Whenever we want to access information that may
come from an AST (e.g., whether the identifier has a macro definition,
or what top-level declarations have that name), we check the
out-of-date bit and, if it's set, ask the AST reader to update the
IdentifierInfo from the AST files. The update is a merge, and we now
take care to merge declarations before/after imports with declarations
from multiple imports.

The results of this optimization are fairly dramatic. On a small
application that brings in 14 non-trivial modules, this takes modules
from being > 3x slower than a "perfect" PCH file down to 30% slower
for a full rebuild. A partial rebuild (where the PCH file or modules
can be re-used) is down to 7% slower. Making the PCH file just a
little imperfect (e.g., adding two smallish modules used by a bunch of
.m files that aren't in the PCH file) tips the scales in favor of the
modules approach, with 24% faster partial rebuilds.

This is just a first step; the lazy scheme could possibly be improved
by adding versioning, so we don't search into modules we already
searched. Moreover, we'll need similar lazy schemes for all of the
other lookup data structures, such as DeclContexts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143100 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/ExternalPreprocessorSource.h
ema/IdentifierResolver.h
ema/Sema.h
erialization/ASTReader.h
erialization/ASTWriter.h
29e97cb35fab314388f62b68fefa78947e93c1dc 27-Oct-2011 Hans Wennborg <hans@hanshq.net> Teach format string analysis that "%zu" means size_t.

The code had it backwards, thinking size_t was signed, and using that for "%zd".

Also let the analysis get the types for (u)intmax_t while we are at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
df95d146c13cf02e106b32b01d147577d6d6b5a1 27-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Optimize by not generating empty transitions in CheckerContext

Go not generate a new transition by addTransition methods if nothing changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143091 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
4d2ae4a70336dc2aa11389b34946be152bb454c9 27-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Move enqueueEndOfFunction into CoreEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143090 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42 27-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Make CoreEngine responsible for enqueueing Stmt Nodes.

Enqueue the nodes generated as the result of processing a statement
inside the Core Engine. This makes sure ExpEngine does not access
CoreEngine's private members and is more concise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143089 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
458bacff986ed8d30e7ae191c823d4db6cfaf16b 27-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix crash on an @interface nested inside @implementation, rdar://10336158

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143085 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
39ac1876f6f9a1a8e0070f0df61036c7ba05202b 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Add getLocationContext to CheckerContext

CheckerContext::getPredecessor is only used to get to the LocationContext
half of the times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143061 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
48468dfeb3ccf099ed51ff5dcb8ae0fe783692fd 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove EmitBasicReport form CheckerContext.

The path sensitive checkers should use EmitBasicReport, which provides the
node information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143060 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
0bd6b110e908892d4b5c8671a9f435a1d72ad16a 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Rename generateNode -> addTransition in CheckerContext

Also document addTransition methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143059 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
1d08123ae7ba455fff8c61fb546521ef95496f08 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove forward declarations of GenericNodeBuilder

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143058 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
c03a39e16762627b421247b12a2658be630a3300 26-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] GenericNodeBuilder -> NodeBuilder.

Remove GenericNodeBuilder and use a class inherited from NodeBuilder instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143057 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
9138b4e96429cbaae00c52c15c960f72b6645088 26-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Pull out conversion on LHS of -> and . into its own function. This happens
implicitly in LookupMemberExpr and explicitly in cases where template
instantiation doesn't redo the lookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143046 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6a93bd526c5136ee5a26871e829cf5a8548a1c6a 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove getEngine() form CheckerContext

A step toward making sure that diagnostics report should only
be generated though the CheckerContext and not though BugReporter
or ExprEngine directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142947 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
063e0887ad65d666d23ee3178436ad6507abbd1b 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Simplify CheckerContext

Remove dead members/parameters: ProgramState, respondsToCallback, autoTransition.
Remove addTransition method since it's the same as generateNode. Maybe we should
rename generateNode to genTransition (since a transition is always automatically
generated)?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142946 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
2e9264a17bacc7dc228d5f93caaeb98dfb23d508 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove unused headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142945 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
f236b6503a4dbc44c1fccb8756bd57c9d0efdf05 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Make branch for condition callback use CheckerContext

Now, all the path sensitive checkers use CheckerContext!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142944 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
af498a28797c075c48d7e943df5f5a8e78ed8eb0 25-Oct-2011 Anna Zaks <ganna@apple.com> [analyze] Convert EndOfPath callback to use CheckerContext

Get rid of the EndOfPathBuilder completely.
Use the generic NodeBuilder to generate nodes.
Enqueue the end of path frontier explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142943 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
7fe3878a36750515fb9772414ecb2489cf149d19 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Handle redundant 'typename' on base class specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
152aa4b87633754801598ee282e1a17c3ec49257 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix erroneous name-specifiers prior to decltypes better/correctly as per Doug's feedback.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142935 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
3c3b7f90a863af43fa63043d396553ecf205351c 25-Oct-2011 John McCall <rjmccall@apple.com> Restore r142914 and r142915, now with missing file and apparent
GCC compiler workaround.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
22216eb4fb0936d2488fc03abd285d135c36ff01 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix cases where the optional nested-name-specifier erroneously preceeded a decltype-specification when specifying a base type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142928 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
09048df0b3f472091b2204e531d6b6019244884b 25-Oct-2011 David Blaikie <dblaikie@gmail.com> Support the use of decltype for specifying base types. Fixes PR11216.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142926 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
327a50f46449c946c42d50d97689bcb30e2af7d9 25-Oct-2011 NAKAMURA Takumi <geek4civic@gmail.com> Revert r142914 and r142915, due to possibly missing file.

r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
f950134af6daf207aef4101af7065573a7d93cca 25-Oct-2011 Shih-wei Liao <sliao@google.com> Revert "Hard-code 2 constants to tolerate GCC 4.0.1 used by Xcode 3.0."

This reverts commit e21f6df11b8c17c06d57723e6f4c9aa040eba72c
asic/PartialDiagnostic.h
a1b852f8e1bee5ed3604ee483803cef39ce57a20 25-Oct-2011 John McCall <rjmccall@apple.com> Introduce a placeholder type for "pseudo object"
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.

Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/BuiltinTypes.def
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
e88c4513157cc551ed8080b1e3b3b875a9a570e1 25-Oct-2011 Eric Christopher <echristo@apple.com> Allow the -fno-operator-names option to be passed down to the rest
of the compiler.

Fixes PR10198
Patch by Brian Foley!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142913 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6ca4a9ae99d65948e578d3e7d1f58ab6a947d2d7 25-Oct-2011 Ted Kremenek <kremenek@apple.com> Tweak printf format string parsing to accept 'hh' conversion specifier to accept any char, not just signed char. Fixes <rdar://problem/10303638>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142908 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
65019acfc46ffb191fac4e781ac0c4b8d0c8434e 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in the name that guards a
Microsoft __if_exists/__if_not_exists statement. Also note that we
weren't traversing DeclarationNameInfo *at all* within the
RecursiveASTVisitor, which would be rather fatal for variadic
templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
42edac0092749eff3ba881d1b9a425b4f1c9c049 25-Oct-2011 Ted Kremenek <kremenek@apple.com> Remove extra copy of contents of header file resulting in a patch being applied twice. Aren't include guards great?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142905 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
c2c11446caaee2d5a787cc8d0310330c6364210d 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Make the -Wc++11-compat warnings ignored by default, so we don't break
valid C++98/03 code. However, add these warnings to -Wall, for those
who obviously already like clean code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ba0513de93d2fab6db5ab30b6927209fcc883078 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Implement support for dependent Microsoft __if_exists/__if_not_exists
statements. As noted in the documentation for the AST node, the
semantics of __if_exists/__if_not_exists are somewhat different from
the way Visual C++ implements them, because our parsed-template
representation can't accommodate VC++ semantics without serious
contortions. Hopefully this implementation is "good enough".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtCXX.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
f226ff9fe8c8db6c5b74a61ce649eda1491c3502 25-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When visiting preprocessed entities, make it possible to avoid deserializing
preprocessed entities that are #included in the range that we are interested.

This is useful when we are interested in preprocessed entities of a specific file, e.g
when we are annotating tokens. There is also an optimization where we cache the last
result of PreprocessingRecord::getPreprocessedEntitiesInRange and we re-use it if
there is a call with the same range as before.

rdar://10313365

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
ex/PreprocessingRecord.h
erialization/ASTReader.h
58f6f1e37ab32fdd0c8bab6771d8e09bc139e9ed 25-Oct-2011 Ted Kremenek <kremenek@apple.com> Add source-level dominators analysis. Patch by Guoping Long!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142885 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/Dominators.h
436c8898cd1c93c5bacd3fcc4ac586bc5cd77062 25-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Revert r142844, it broke selfhost. The problem appears to be a missing
lvalue-to-rvalue conversion on the LHS operand of '->'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3896fc5d4daaf003e451e797e37de57dd8cf9cd5 25-Oct-2011 Douglas Gregor <dgregor@apple.com> Rework Microsoft __if_exists/__if_not_exists parsing and semantic
analysis to separate dependent names from non-dependent names. For
dependent names, we'll behave differently from Visual C++:

- For __if_exists/__if_not_exists at class scope, we'll just warn
and then ignore them.
- For __if_exists/__if_not_exists in statements, we'll treat the
inner statement as a compound statement, which we only instantiate
in templates where the dependent name (after instantiation)
exists. This behavior is different from VC++, but it's as close as
we can get without encroaching ridiculousness.

The latter part (dependent statements) is not yet implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/Sema.h
aa0aeb1cbe117db68d35700cb3a34aace0f99b99 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Node builders cleanup + comments
Renamed PureNodeBuilder->StmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142849 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
cca79db2ea94f71fb088f4b0f104cef8bedf8ff2 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove the old StmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142848 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
056c4b46335a3bd2612414735d5749ee159c0165 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Completely remove the global Builder object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142847 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
41bf4f38348561a0f12c10d34f1673cd19a6eb04 24-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation: evaluate lvalues as lvalues, and rvalues as
rvalues, as C++11 constant evaluation semantics require. DeclRefs referring to
references can now use the normal initialization-caching codepath, which
incidentally fixes a crash in cyclic initialization of references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142844 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert ExprEngine::visit() to use short lived builders.

This commit removes the major functional dependency on the ExprEngine::Builder
member variable.

In some cases the code became more verbose. Particularly, we call takeNodes()
and addNodes() to move responsibility for the nodes from one builder to another.
This will get simplified later on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142831 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
d231d0130a95336610ab9a42eaeb2cdac19992f3 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert VisitDeclStmt to use local node builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142830 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
6b6152ba96c164a292cc0b8d8b1d4cecbec27a60 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert more functions (ex:evalBind()) to iterative builders

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142829 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
8ad8c546372fe602708cb7ceeaf0ebbb866735c6 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Convert VisitUnaryOperator to use short lived Node builders

To convert iteratively, we take the nodes the local builder will
process from the from the global builder and add the generated nodes
after the short lived builder is done. PureStmtNodeBuilder is the
one we should eventually use everywhere. Added Stmt index and Builder
context as ExprEngine globals. To avoid passing them around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142828 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
8ff5c41f2bde7ebbe568b4c15e59f14b8befae66 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Use a temporary builder in CheckerContext.

First step toward removing the global Stmt builder. Added several transitional methods (like takeNodes/addNodes).
+ Stop early if the set of exploded nodes for the next iteration is empty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142827 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
1aae01a8308d2f8e31adab3f4d7ac35543aac680 24-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Pass external Dst set to NodeBuilder

This moves the responsibility for storing the output node set from the
builder to the clients. The builder is just responsible for transforming
an input set into the output set: {SrcSet/SrcNode} -> {Frontier}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142826 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
3e9d32656a8a3a787f64f9beeef66d2d700eb85d 24-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Make sure we don't try to erase past the StoredDiagnostics vector.

Ted came upon the bug but I couldn't make a test out of it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142805 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
89c300400b0b75d879da88f81c97a46feb0675be 24-Oct-2011 David Chisnall <csdavec@swan.ac.uk> Enable experimental support for objc_msgSend with GNUstep ObjC runtime.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142795 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
1d26f48dc2eea1c07431ca1519d7034a21b9bcff 24-Oct-2011 Ted Kremenek <kremenek@apple.com> Rename AnalysisContext to AnalysisDeclContext. Not only is this name more accurate, but it frees up the name AnalysisContext for other uses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/PostOrderCFGView.h
nalysis/Analyses/ReachableCode.h
nalysis/Analyses/ThreadSafety.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
0b64ba926752110cff1344a46b36e29396cc4d25 23-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Fix grammar for C++11 alignment specifiers, and add a few FIXMEs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
678b89e974ca73e15b5cb7ad30c9a7a4cadcc67a 23-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Fix typo (C++1 -> C++11).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b1b5daf30d2597e066936772bd206500232d7d65 23-Oct-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Remove LocationContext creation methods from AnalysisManager, and change clients to use AnalysisContext instead.

WIP to remove/reduce ExprEngine's usage of AnalysisManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142739 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
e21f6df11b8c17c06d57723e6f4c9aa040eba72c 23-Oct-2011 Shih-wei Liao <sliao@google.com> Hard-code 2 constants to tolerate GCC 4.0.1 used by Xcode 3.0.

See http://gcc.gnu.org/gcc-4.2/changes.html. GCC 4.0.1 doesn't support
those visibility overhaul. Without this change, we'll hit compilation
errors on Xcode 3.0.

Change-Id: I4b9642861cc53cda5d07850df93fa47dd6a116cf
asic/PartialDiagnostic.h
8d9185790fa5bd6673af91babe1ac47ab8e98a82 23-Oct-2011 Shih-wei Liao <sliao@google.com> Revert "Revert "Don't crash when trying to emit too many fixits. Also, keep some constants in""

This reverts commit e499e7fc549c186aa1c50fabed7748a0ac6d302f
asic/Diagnostic.h
asic/PartialDiagnostic.h
e499e7fc549c186aa1c50fabed7748a0ac6d302f 22-Oct-2011 Shih-wei Liao <sliao@google.com> Revert "Don't crash when trying to emit too many fixits. Also, keep some constants in"

This reverts commit 7035f310f5cfedb35ee4422bcab98e9f18f4ce63.
asic/Diagnostic.h
asic/PartialDiagnostic.h
f634bcece396cf6d51df450729bcd976785a0109 22-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Pack struct better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142725 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
439ed1656664b29841f70b6c0b91460534ff4d93 22-Oct-2011 Ted Kremenek <kremenek@apple.com> Refactor ThreadSafety to use PostOrderCFGView instead of its own copy (of TopologicallySortedCFG).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PostOrderCFGView.h
edb186399e19d84c93f25440435ab9a695138e79 22-Oct-2011 Ted Kremenek <kremenek@apple.com> Pull TopologicallySortedCFG out of LiveVariables into its own analysis: PostOrderCFGView.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142713 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PostOrderCFGView.h
00a92abaf907802bfa4d6f38bdd242c6bfc34c09 21-Oct-2011 Logan Chien <loganchien@google.com> Merge with clang upstream Oct 20th 2011 (r142531)

Change-Id: I42181113f38ce445f2a48694d6f654438562b71e
e6f0868a55aba2613e2d5dba3348aaf1064e6ddb 22-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When serializing Stmts, keep track of when sub statements are referenced again and
in such a case just write out a reference of a previously serialized Stmt, instead
of serializing it all over again.

This saves memory + space + [de]serializing time, and avoids blowing up memory
with pathological cases. rdar://10293911

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142696 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTWriter.h
21f77cd0c3da8a1dbaf6245cae43baf4c0b80ea4 22-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't try to set the "array filler" in a InitListExpr twice.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142695 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
227e483cb1f77ea6dcd38c2ca9fb490894a5f887 22-Oct-2011 Eli Friedman <eli.friedman@gmail.com> More ASTRecordLayout changes for MS ABI; based on patch by r4start.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
f1ac63702143d84db778d32eb185a77fc97db5f5 21-Oct-2011 DeLesley Hutchins <delesley@google.com> Thread safety analysis refactoring: invalid lock expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
381509ea9965ab6bde9b36b4131ad08bf851d9b4 21-Oct-2011 Sean Callanan <scallanan@apple.com> Added documentation for the recently-added
addDecl() and makeDeclVisibleInContextInternal()
functions, and made the latter private since it
does not and should not have external clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142655 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b57791e5b40afa6691063c83d0e95c416fb19fde 21-Oct-2011 Douglas Gregor <dgregor@apple.com> Treat the Microsoft/Borland keyword "__except" as a context-sensitive
keyword, because both libstdc++ and libc++ use "__except" as an
identifier. Fixes <rdar://problem/10322555>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142636 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
9faf810f08132aabb34a478297dfeea89c3bbe17 21-Oct-2011 Sean Callanan <scallanan@apple.com> I added a new function to DeclContext called
addDeclInternal(). This function suppresses any
calls to FindExternalVisibleDeclsByName() while
a Decl is added to a DeclContext. This behavior
is required for the ASTImporter, because in the
case of the LLDB client the ASTImporter would be
called recursively to import the visible decls,
which leads to assertions because the recursive
call is seeing partially-formed types.

I also modified the ASTImporter to use
addDeclInternal() in all places where it would
otherwise use addDecl(). This fix should not
affect the rest of Clang, passes Clang's
testsuite, and fixes several serious LLDB bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
7c4fd9121f5885096fd3258d20a984e3f08f8603 21-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Take DW_AT_comp_dir from $PWD when it's present and starts with a '/'. This is
closer to what GCC does, except that GCC also checks that the inodes for $PWD
and '.' match.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142633 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
0e9e9814a7f8313c0c02b6afea71f0e4c411873e 20-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++98-compat diagnostics for jumps which bypass initialization of non-POD
but trivially constructible and destructible variables in C++11 mode. Also
incidentally improve the precision of the wording for jump diagnostics in C++98
mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9324583ad2afd09db8c9967cd05c4fa44bac9555 20-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> 'extern template' is a C++11 feature. Add an Extension for C++98 (this matches
gcc's behaviour), and a -Wc++98-compat-pedantic warning for C++11.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142597 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
cb8f951deacd251d9b3a73dc65f341477e039de1 20-Oct-2011 Douglas Gregor <dgregor@apple.com> There's no point in marking a declaration invalid just because it
shadows a template parameter. Complain about the shadowing (or not,
under -fms-extensions), but don't invalidate the declaration. Merely
forget about the template parameter declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142596 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
afdc21ad774eff6ed6c464e3f2dff9e26ed3d0b0 20-Oct-2011 Ted Kremenek <kremenek@apple.com> Further refine the diagnostic categories for ARC diagnostics. Addresses <rdar://problem/10245086>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
asic/DiagnosticSemaKinds.td
95aafb2453e1fecec8dcfd9e125cd78277f45859 20-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++98-compat warning for enumerations in nested name specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f6f876cb08449febc43a6baf7720b256846d01dc 20-Oct-2011 David Blaikie <dblaikie@gmail.com> Add a fixit to remove storage specifiers on anonymous enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142565 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ExpressionTraits.h
70042f5d1ca378138f90b7b9384023701f5d03d8 20-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix all 80 col violations in include/clang/Basic, plus any trailing whitespace in the files I'm touching anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ExpressionTraits.h
asic/FileManager.h
asic/OnDiskHashTable.h
asic/PartialDiagnostic.h
asic/SourceManager.h
asic/Version.h
0706df40064d4d7559b4304af79d519033414b84 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Improve the diagnostic when a comma ends up at the end of a declarator group
instead of a semicolon (as sometimes happens during refactorings). When such a
comma is seen at the end of a line, and is followed by something which can't
possibly be a declarator (or even something which might be a plausible typo for
a declarator), suggest that a semicolon was intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142544 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e7d7c39be90bf654a8da0f53f6682d965426d081 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat: warn on nontrivial types used in unions and anonymous structs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
83da2e711902c4c54f5601c9000d646dfff06aea 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat: diagnose if a reference is bound to a prvalue which does not
have an unambiguous accessible copying constructor; this is ill-formed in C++98.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142533 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
18c9bd3b4751c70f297caadf9ae0bfb863df2be7 19-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix the signatures of vfork, __sigsetjmp and sigsetjmp.

Patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
43f5103f8051bbac19022e6edaf7d9138b0f3c0f 19-Oct-2011 Douglas Gregor <dgregor@apple.com> Improve the warning for cv-qualifiers on free functions, from Ahmed Charles!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142478 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
53e535161dfa9850de394b300915fc250eb0fdf4 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add a -Wc++98-compat warning for friend functions of class templates which would
be implicitly instantiated (resulting in a redefinition) in C++98.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142468 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
013e5ce167d72b3617951002f8aea5ff79a37d72 19-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Move static array parameter checks to SemaExpr, per Doug's request

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142465 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
77faa365cb2322cfc8edf58a4f5d68f2370cc39a 19-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat: warn if a SFINAE substitution in C++11 suppresses an access
control diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142463 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
c9003c89c7aead1686aba89c8e3ddcea1f2bec54 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Move predecessor into the NodeBuilder context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142454 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
4e82d3cf6fd4c907265e3fa3aac0a835c35dc759 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Make NodeBuilder and Pred node loosely coupled

NodeBuilder should not assume it's dealing with a single predecessor. Remove predecessor getters. Modify the BranchNodeBuilder to not be responsible for doing auto-transitions (which depend on a predecessor).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142453 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
3152b3cb5b6a2f797d0972c81a5eb3fd69c0d620 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove StmtNodeBuilder from CheckerContext

It now only depends on a generic NodeBuilder instead. As part of this change, make the generic node builder results finalized by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142452 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
319a9184d5ca9f77622b45ae15c08f6b9ce01621 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Subclassing StmtBuilder from the NodeBuilder

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142451 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
67d9fbac82922ef5b6c9ba5ac4a07e80f9960292 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove dead code.
ExprEngineBuilders is not used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142450 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngineBuilders.h
9a1e3ab97c48a0381cce449b833c56997048a6d1 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove redundant method + whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142449 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
cd656cab3fa3dd4b0c974c6ae1c0e60880b18c22 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Modularize builder use in processBranch.

Take advantage of the new builders for branch processing. As part of this change pass generic NodeBuilder (instead of BranchNodeBuilder) to the BranchCondition callback and remove the unused methods form BranchBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142448 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
ad62deeb70e97da6bd514dd390ea1ce6af6ad81d 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Pull Pred out of NodeBuilderContext.
Each builder will have a different one, so it doesn't make sense to keep it in the context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142447 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
8c90aadce33152b03e3d1d5c7e9c468c7b939c96 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Rely only on NodeBuilder inside CheckerContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142446 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
d0b080664bc6514793351a2e2a87ce67214f5306 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove redundant assignment operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142445 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
a19f4af7a94835ce4693bfe12d6270754e79eb56 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] NodeBuilder Refactoring: Subclass BranchNodeBuilder from NodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142444 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
f05aac8472d8ed081a361a218fd14d59ddc91b85 19-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Node Builder refactoring: Introduce a simple Node Builder responsible for generating the node frontier.

Currently we have a bunch of different node builders which provide some common
functionality but are difficult to refactor. Each builder generates nodes of
different kinds and calculates the frontier nodes, which should be propagated
to the next step (after the builder dies).

Introduce a new NodeBuilder which provides very basic node generation facilities
but takes care of the second problem. The idea is that all the other builders
will eventually use it. Use this builder in CheckerContext instead of
StmtNodeBuilder (the way the frontier is propagated to the StmtBuilder
is a hack and will be removed later on).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142443 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
c705d2520a51de1dc38d36efada8e9bc2d8b0d1f 18-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Make sure we do a correct invalid check in clang_getExpansionLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142430 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
6b13022faef260c8f49d04310f4a2c0a57f9103b 18-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat and -Wc++98-compat-pedantic warnings for Sema, part 2.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142426 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
097f6b008254dc7b7f89ec3daafc163bf2a0e307 18-Oct-2011 Douglas Gregor <dgregor@apple.com> Remove unused data member

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e0a22d06888c13989b3f72db319f1d498bf69153 18-Oct-2011 John McCall <rjmccall@apple.com> Macro metaprogramming for builtin types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142420 91177308-0d34-0410-b5e6-96231b3b80d8
ST/BuiltinTypes.def
ST/Type.h
ebaf0e6ab743394dda086a01b457838cb6e589a8 18-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat and -Wc++98-compat-pedantic warnings for Sema, part 1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142419 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
024f4be866d13dd2b0ec062e694a62ca84c37191 18-Oct-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Support -iframework.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142418 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
7a81e41a5e92dad2dd2a4edf27960c5d7f9c8063 18-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc: diagnose invalid argument to an
iboutletcollection attribute intead of crashing.
// rdar://10296078


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
341350ee62abd1ad818e1e3d926cd718960e439b 18-Oct-2011 Douglas Gregor <dgregor@apple.com> Make it possible to compute the type of 'this' without capturing
it. Refactoring to be used in a moment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142360 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a7da2155167676a6a5d9fca4de947a9cab2a4908 18-Oct-2011 Hans Wennborg <hans@hanshq.net> Suggest %zu for size_t args to printf.

For PR11152. Make PrintSpecifier::fixType() suggest "%zu" for size_t, etc.
rather than looking at the underlying type and suggesting "%llu" or other
platform-specific length modifiers. Applies to C99 and C++11.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142342 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
2dc7ece8a83f371cb86c2f93282cb3c8e2d010ec 18-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++11-compat warning for an inline specifier on an explicit instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3e2e91e934ecf083a7c0835b58d9627ca2faddc9 18-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Refactor the checking for explicit template instantiations being performed in
the right namespace in C++11 mode. Teach the code to prefer the 'must be in
precisely this namespace' diagnostic whenever that's true, and fix a defect
which resulted in the -Wc++11-compat warning in C++98 mode sometimes being
omitted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
85def357129b6cdfd69a66ad0e6994506418a2a9 18-Oct-2011 John McCall <rjmccall@apple.com> In hasPlaceholderType(Kind) and isSpecificPlaceholderType(Kind), assert
that the parameter is actually a placeholder type kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142312 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
841804baff6ea8ba1904a2ba81265aae1479e882 18-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++98-compat warnings for uses of the new keywords 'alignof', 'char16_t',
'char32_t', 'constexpr', 'decltype', 'noexcept', 'nullptr' and 'static_assert'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ea523d73a6de06f828952a02f5ff86e4cc631695 18-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Wire up support for the controlling the extended dwarf .file directive. With
r142300 but not this patch, clang -S may emit .s files that assemblers other
than llvm-mc can't parse.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142301 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
19706f8e702c04d19bc1ace504cbb9df008b6daa 18-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement -static-libstdc++ for linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142290 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
66d5ce11b9426f6a59f61a03cbd8dbf047cc9350 17-Oct-2011 Ted Kremenek <kremenek@apple.com> Move about 20 random diagnostics under -W flags. Patch by Ahmed Charles!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
454b57ac42c9ce0bed9b7a99c2ed5a18fbcd286b 17-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Initial implementation of __atomic_is_lock_free. The input is the size of an atomic type rather than an atomic type itself just to save some implementation pain; I can change that if it seems worthwhile.

I think this is the last hook needed for <atomic> besides defines for ATOMIC_CHAR_LOCK_FREE and friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
9f80a97408ee0da939654d851ff42ad07d47e9c7 17-Oct-2011 DeLesley Hutchins <delesley@google.com> Substitute for arguments in method calls -- refactoring

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142260 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
abd2a3e8bc251a693d4d09819fd76f2e482c21ff 17-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Code completion chunks are pod-like.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142252 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
b4a686df4de21ec4eeca69211b21f7fe716abeae 17-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTConsumer::HandleTopLevelDeclInObjCContainer which accepts
top-level declarations that occurred inside an ObjC container.

This is useful to keep track of such decls otherwise when e.g. a function
is declared inside an objc interface, it is not passed to HandleTopLevelDecl
and it is not inside the DeclContext of the interface that is returned.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
b05d7b20171bbd2feb14b059f39332cbe1bf1014 17-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep track when a ObjC interface/protocol was initially created as a forward reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142230 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5acb0c98b363400f6ade0ae7250f0102224e806b 17-Oct-2011 John McCall <rjmccall@apple.com> Teach the ARC compiler to not require __bridge casts when
passing/receiving CF objects at +0 to/from Objective-C methods
or audited C functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
ema/Sema.h
0ddaeb9b031070ec64afe92d9892875ac44df427 17-Oct-2011 John McCall <rjmccall@apple.com> Add a new placeholder type to represent "unbridged"
casts in ARC.

No semantic analysis yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142208 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
erialization/ASTBitCodes.h
4919dfd54e2296ca997e3d1c9dab85976bba8e95 17-Oct-2011 John McCall <rjmccall@apple.com> Add a helper function for determining whether an expression
has placeholder type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
aa93a875605536d72a10359a0098396192b7d4ec 17-Oct-2011 Douglas Gregor <dgregor@apple.com> For modules, all macros that aren't include guards are implicitly
public. Add a __private_macro__ directive to hide a macro, similar to
the __module_private__ declaration specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/TokenKinds.def
ex/MacroInfo.h
ex/Preprocessor.h
05edf668f0984bfa2994ddc8bb7b78d9fb24cf11 17-Oct-2011 Douglas Gregor <dgregor@apple.com> When building a module, use the macro definitions on the command line
as part of the hash rather than ignoring them. This means we'll end up
building more module variants (overall), but it allows configuration
macros such as NDEBUG to work so long as they're specified via command
line. More to come in this space.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142187 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
1e12c59e8f9bb76c23628c4e0d0a1dfced0b1fa0 16-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Split apart the state accumulated during constant expression evaluation and the
end result. Use this split to propagate state information and diagnostics
through more of constant expression evaluation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142159 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
20cdbeb8f36576f469db195b4140c293c7281718 16-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Add sema checks for calls to functions taking static array parameters

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142157 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
c223518ebf72e1709dc8938cd9384161ea5ec0bb 16-Oct-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Diagnose when omitting braces in direct list-initialization in C++0x.

This also applies to C99-style aggregate literals, should they be used in C++11, since they are effectively identical to constructor call list-initialization syntax.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142147 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
091fffeed8971a577bc3c8057c1ec40015a22775 16-Oct-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Drop the Diagnose parameter from Sema::PerformImplicitConversion again and instead use TryImplicitConversion in CheckSingleAssignmentConstraints when that function is in no-diagnostics mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142143 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4ba55659982bf45eedc9d32851815e5c4b6d8460 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Now that the structure of this is more reasonably laid out, fix a long
standing deficiency: we were providing no macro backtrace information
whenever caret diagnostics were turned off. This sinks the logic for
suppressing the code snippet and caret to the code that actually prints
tho code snippet and caret. Along the way, clean up the naming of
functions, remove some now fixed FIXMEs, and generally improve the
wording and logic of this process.

Add a test case exerecising this functionality. It is notable that the
resulting messages are extremely low quality. I'm working on a follow-up
patch that should address this and have left a FIXME in the test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142120 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
2ed3495278c13802a3d85578ab20560dcb0ef270 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Add proper doxyments to the entry point routine, and remove a dead parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142109 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
21a869aace45586125238fde88c477b330618a0b 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Persist the TextDiagnostic object across multiple diagnostics as long as
the SourceManager doesn't change, and the source files don't change.
This greatly simplifies the interfaces and interactions. The lifetime of
the TextDiagnostic object forms the 'session' over which we attempt to
condense and deduplicate information in diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142104 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
rontend/TextDiagnosticPrinter.h
7531f571808201d44002fa38b67ee0a81e5ae936 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Clean up the names of all the TextDiagnostic methods (and even a static
function) to agree with the coding conventions, and in one case have
a bit more information in it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142088 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
6ddd8871c07ab161742e8ed37d3ef121ac79fa59 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Move two functions out of the public interface that shouldn't have ever
been there. Also delete their redundant doxyments in favor of those in
the source file. I'm putting the doxyments for private and static
helpers into the implementation file, and only the public interface
doxyments into the header. If folks have strong opinions about this type
of split, feel free to chime in, I'm happy to re-organize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142087 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
db463bb2e4a9751f4cbe53996db751e1985ee966 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Graduate the TextDiagnostic interface to its own header and source file,
making it accessible to anyone from the Frontend library. Still a good
bit of cleanup to do here, but its a good milestone. This ensures that
*all* of the functionality needed to implement the DiagnosticConsumer is
exposed via the generic interface in some form. No sneaky re-use of
static functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142086 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnostic.h
03efd2efeeafc97db9a956df8c6ab88fbb6160da 16-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Rationalize the last bit of "arbitrary" state that is carried between
diagnostics to control suppression of redundant information. It now
follows the same model as all the other state, and has a bit more clear
semantics.

This is making the duality of the state a bit annoying, and I've added
a FIXME to resolve it. The problem is that I need to lift the
TextDiagnostic up into an externally visible layer before that can
happen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142083 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
d614040a678c994b0171234e7f5f9cf61e9f86fe 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Neither 'Warning' nor 'NonNote' was a good name for this location...
It's the last include-stack-root we tried to walk up. Use a better name
and better doxyments for it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142071 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
cae9ab1a8af46643f8cf89399c9ccfb28fba0c36 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Sink the include stack printing into the generic text diagnostic
utility. This is a particularly nice win because it removes a pile of
parameters from these routines. Also name them a bit better. I'm trying
to follow the pattern of 'emit' routines writing directly to what is
expected to be the final output, while 'print' routines take a output
stream argument and can be used to build up intermediate buffers, etc.

Also, fix a bug I spotted by inspection from my last commit where
'LastLoc' and 'LastNonNoteLoc' were reversed. It's really scary that
this didn't trigger a single test failure. Will be working on tests for
more of this functionality now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142069 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
f54a61454e548fff63d6ce5700ecc2958297207e 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Rationalize some of how the locations of prior diagnostics are tracked
across emissions.

1) The include stack printing is conditioned on non-note diagnostics,
not just on warning diagnostics.
2) Those should be full source locations as they're tied to a source
manager.
3) We should pass in the prior state to the TextDiagnostic constructor,
allow it to mutate as diagnostics are emitted, and then cache the
final state before tearing it down.

Some of this remains incomplete, specifically #3 isn't finished for the
non-note location. That'll come when the include stack printing sinks
down a level.

This also highlights how *completely* bug-ridden this code is. For
example, we currently do all these comparisons of a FullSourceLoc and
a SourceLocation... which silently does a SourceLocation to
SourceLocation comparison, completely disregarding the source manager
from whence one of the arguments came. Oops! Good thing in practice this
wasn't important, but it could in theory be suppressing caret
diagnostics in a second TU on a single clang invocation. I'm hoping to
hammer these bugs out as the refactorings occur, although for so many of
them it's really unlikely I can dream up a test case that would show the
potentially buggy behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142067 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
9ed3066cfe4545acec30aff63581d1a7b5c88128 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Sink the EmitDiagnosticLoc method down to the generic TextDiagnostic
interface now that its only caller is there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142065 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
60e4a2a5e9bf534e106b0c2553d06e06c3d07794 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Sink the non-caret diagnostic logic down and out of the diagnostic
consumer. The TextDiagnostic interface now has a generic entry point for
emitting a diagnostic which uses a minimal interface that should be
compatible with StoredDiagnostics such as are available in libclang etc.

Some unfortunate shuffling of static functions as things get relocated.
Also some unfortunate public interface points added to
TextDiagnosticPrinter, but those are the next bits to get moved so they
won't last long.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142064 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
55c611021e771a816e6e3679928439f667f12eb9 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Simplify the interface of a helper method in the TextDiagnosticPrinter
to operate directly on the source location and ranges associated with
a diagnostic rather than digging them out of the diagnostic. This had
a side benefit of cleaning up its code a tiny bit by using the ArrayRef
interface.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142063 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
28409289193afca1a3178a9796f8e8aebcb76896 15-Oct-2011 Chandler Carruth <chandlerc@gmail.com> Add an accessor for all of the ranges in a diagnostic as an ArrayRef.
This will simplify a number of calls in the diagnostic printing going
forward.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
0aa86c0463a881be85fd34e04c7de3379997621d 15-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add -Wc++98-compat warning for deduced 'auto' type specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7fe6208c3fa91f835813bb78236ef5c2bbf81053 15-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement -Wc++98-compat warnings for the parser.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
6a2ccc51d9b8357e1433e0029d544d95c5877a5c 15-Oct-2011 Ted Kremenek <kremenek@apple.com> Convert stray doxygen comments to regular comments. They logically represent the fields in FunctionProtoType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142052 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b8706f95eae8f85af01a26eee899c5daf8d6fcde 15-Oct-2011 Ted Kremenek <kremenek@apple.com> Revert "Move doxygen comments to pair with the actual values."

John convinced me this wasn't the right thing to do. I'll follow up with a second
commit to make these non-doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d60feeb90a4278dfb875fece6587e4c5c1198a60 15-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Use of override keywords in C++98 should produce a warning by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
05f9931eefa394698d168dc8e60334180ff6a869 15-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Rename an ExtWarn to ext_ for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
661a99690bc133bbaa029da925481d4a860dec90 15-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat warnings for the lexer.

This also adds a -Wc++98-compat-pedantic for warning on constructs which would
be diagnosed by -std=c++98 -pedantic (that is, it warns even on C++11 features
which we enable by default, with no warning, in C++98 mode).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142034 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
b75a3451bcae1301875282e73a13934c90b6574c 15-Oct-2011 Douglas Gregor <dgregor@apple.com> Teach the ASTImporter to perform DeclContext lookups in a way that
avoids loading data from an external source, since those lookups were
causing some "interesting" recursion in LLDB.

This code is not efficient. I plan to remedy this inefficiency in a
follow-up commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
aa4a99b4a62615db243f7a5c433169f2fc704420 15-Oct-2011 Anton Korobeynikov <asl@math.spbu.ru> Provide half floating point support as a storage only type.
Lack of half FP was a regression compared to llvm-gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TargetInfo.h
asic/TokenKinds.def
ema/DeclSpec.h
erialization/ASTBitCodes.h
dfa64ba45922e1c28e36341bdf34785fea74659b 15-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Add template instantiation support for AtomicExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142012 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
7c9412cdad37146e6d1eee15eaa0d7a1d93e6ee1 14-Oct-2011 Douglas Gregor <dgregor@apple.com> Teach the ASTImporter not to import redundant fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142009 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
d9b0fdf2641ee3ef6d8c6a78bbc0a76083b7a553 14-Oct-2011 Joerg Sonnenberger <joerg@bec.de> vfork comes from unistd.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142007 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
abb5afadd11b19568359880faa5d966a4e33551c 14-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow calling ASTUnit::LoadFromCompilerInvocationAction with a previously created ASTUnit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142004 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
2be460723940f8184ec36529b6f6ddf59c04e411 14-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Misc fixes for atomics. Biggest fix is doing alignment correctly for _Atomic types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142002 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/TargetInfo.h
41be673e93ed225b45479557b20ff19b3082bae8 14-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> -Wc++98-compat: warn on C++11 attributes and alignas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e5acd13f885ac95d0f2dafda245625b8190235ac 14-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Reinstate r141898 (reverted in r141921), without the -Wc++98-compat-variadic-templates flag. Consensus is that -Wc++98-compat is a useful addition to clang, but per-C++11-feature warnings may not be.
Original patch by Jeffrey Yasskin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141985 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
fe6f64846b8714b2951d9ea80fc40a3e020f3920 14-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> [temp.explicit]p1: constexpr cannot be specified in explicit instantiations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141982 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b8989f27f116ff2400e92a52c067a69846119eb5 14-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Change operator<< for raw_ostream and NamedDecl to take a reference instead of a pointer.

Passing a pointer was a bad idea as it collides with the overload for void*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
72b2625aa67c8213acaf4bf6209b67859d60e2cf 14-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Serialize info about redeclared objc methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
d5951cbf4ef86c417609237e6815ac3ca638a09c 14-Oct-2011 Joerg Sonnenberger <joerg@bec.de> Add flags for the remaining shift related warnings
(-Wshift-count-negative, -Wshift-count-overflow).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a1de8cb4b5b1c4139ebfc266ba5d3842421fc8a8 14-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: Improve arc diagnostic when method is not
found in receiver's class. // rdar://9970739


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141961 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cb1c9c36b856ad24bd32ec673fb2490d9770ab5f 14-Oct-2011 Douglas Gregor <dgregor@apple.com> Under ARC, merge the bit corresponding to the ns_returns_retained
attribute from the first declaration to later declarations. Fixes
<rdar://problem/10142572>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141957 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9ce6377714a8eb8f577c87028300421e72b00dc9 14-Oct-2011 Matt Beaumont-Gay <matthewbg@google.com> Only warn in -Wliteral-conversion if the conversion loses information

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141955 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2060650f2743650a815ce3daa414352911d408fd 14-Oct-2011 Douglas Gregor <dgregor@apple.com> When declaring an out-of-line template, attempt to rebuild any types
within the template parameter list that may have changed now that we
know the current instantiation. Fixes <rdar://problem/10194295>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141954 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6164ea1d75385b6fc3c19e5ab9bb686298436a5a 14-Oct-2011 Erik Verbruggen <erikjv@me.com> Added clang_getCompletionAnnotation and clang_getCompletionNumAnnotations to
retrieve annotations from completion string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141953 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
3a919e7110407ae7609bb6edc57aac16a5990661 14-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Really protect from infinite loop when there are objc method redeclarations.

Serialization part will come later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141950 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b40034c2e580ab3b08de9dfb738d8e5d8ef79136 14-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep track of objc method redeclarations in the same interface.

Avoid possible infinite loop when iterating over an ObjCMethod's redeclarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141946 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1f528a62258ee818e3df49016bff974a1459b5d1 14-Oct-2011 Ted Kremenek <kremenek@apple.com> Move doxygen comments to pair with the actual values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3d5f955855cab5a831cc6b9339dc77a7d46f1a30 14-Oct-2011 Douglas Gregor <dgregor@apple.com> Add a preprocessor callback that is invoked every time the 'defined'
operator is seen, from Jason Haslam!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141926 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
78f0ea710875425d501a4736565b3a34cf1840c8 14-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add support for -std=gnu90 and -std=c++03, for compatibility with modern gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141922 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandards.def
f38eaa4748ee6164d5e36309fecef71765ff8b2b 14-Oct-2011 Jeffrey Yasskin <jyasskin@google.com> Revert the -Wc++98-compat flag because dgregor doesn't like it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
575fdda948e07c1afc6fcdced9e5cf0b7905a54e 14-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Rename -Wc++0x-compat, -Wc++0x-extensions and -Wc++0x-narrowing from c++0x to
c++11. The old names are kept for backwards-compatibility. Patch by Ahmed
Charles! Names for backwards-compatible DiagGroups removed by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
cda57822327499aeb6fe606f9cf5903cffca3444 14-Oct-2011 Nico Weber <nicolasweber@gmx.de> Extend -Wno-sizeof-array-argument to strncpy and friends.

This finds 2 bugs in chromium and 1 in hunspell, with 0 false positives.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141902 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
48a9d189bbc989369155195a4ce8c7e1c02ea02a 14-Oct-2011 Jeffrey Yasskin <jyasskin@google.com> Implement the first piece of a -Wc++98-compat flag so that people can build in
C++11 mode but keep their sources compatible with C++98. This patch implements
the -Wc++98-compat-variadic-templates sub-flag and -Wc++98-compat to include
it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
9e7617220135a6f6226cf09cb242cc1b905aedb4 13-Oct-2011 Ted Kremenek <kremenek@apple.com> Tweak -Wuninitialized's handling of 'int x = x' to report that as the root cause of an uninitialized variable IFF there are other uses of that uninitialized variable. Fixes <rdar://problem/9259237>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141881 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
5f1c822def3efffe1d8f7299fbbbc3b1cdd4833d 13-Oct-2011 Erik Verbruggen <erikjv@me.com> Allow for annotate attributes after access specifiers. When such
attributes are found, propagate them to subsequent declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141861 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
dac6cec94c23ba7c9021590a88878768abde4f2e 13-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix MSVC build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141837 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
6700415542121e2cb7d867728046ffa21e402019 12-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> Add returns_twice to functions that are known to return twice. This implements
the same behavior of gcc by keeping the attribute out of the function type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141803 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
d768150ef57f617c8d9fef48f3c92e8f21698024 12-Oct-2011 Ted Kremenek <kremenek@apple.com> Implement built-in macro '__has_warning', which allows one to query if a warning flag is valid. Fixes <rdar://problem/10263428>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticIDs.h
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
b3df1386680b3830d2f4d300d4d7eaba134135fc 12-Oct-2011 Douglas Gregor <dgregor@apple.com> Switch diagnostic text from "C++0x" over to "C++11".

We'd also like for "C++11" or "c++11" to be used for the warning
groups, but without removing the old warning flags. Patches welcome;
I've run out of time to work on this today.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141801 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
920c9c1155c118ac40e5209d4b757b9f54186339 12-Oct-2011 Ted Kremenek <kremenek@apple.com> Fix typo in name of diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
312fb51f0aefc83ca4a774e9019180bc86b1b45d 12-Oct-2011 Douglas Gregor <dgregor@apple.com> Add -std=c++11 and -std=gnu++11 language flags, from Ahmed Charles

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141785 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandards.def
4a8dfb511e8f84b2e38b7a86d8ddf05ac1e1a41b 12-Oct-2011 Douglas Gregor <dgregor@apple.com> Introduce BalancedDelimiterTracker, to better track open/close
delimiter pairs and detect when we exceed the implementation limit for
nesting depth, from Aaron Ballman!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
796dbfb6c43336f58c026137c438e53eadc381f7 12-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::getFileLoc which returns a file location
taking into account macro arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5fa6a0422f12216d549d0f2991a29d5690634065 12-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: don't consider class types with mutable members to be literal types.

The standard doesn't allow this, but mutable constexpr variables break the
semantics so badly that we can't reasonably accept them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d5e1d606f8c22ebda17c6fbf952f8c1696428758 12-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Handle Perforce-style conflict markers like normal conflict markers. Perforce
swaps over the <<<< and >>>> markers, and uses shorter markers than traditional
tools.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141751 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
6dbba4fc128e2e2f5b26be996392bd32c0707f13 12-Oct-2011 John McCall <rjmccall@apple.com> Catch placeholder types in DefaultLvalueConversion
and DefaultFunctionArrayLvalueConversion. To prevent
significant regression for should-this-be-a-call fixits,
and to repair some such regression from the introduction of
bound member placeholders, make those placeholder checks
try to build calls appropriately. Harden the build-a-call
logic while we're at it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141738 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
98d86b98b3fd0bd9c546123b16fd9995509aaae1 11-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add a -Wc++0x-compat warning for C++11 keywords used as identifiers when in
C++98 mode. Only the first occurrence of each keyword will produce a warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/IdentifierTable.h
ex/Preprocessor.h
2492c89882b5c5ce03afb4704fee67b7eff8f5ee 11-Oct-2011 Douglas Gregor <dgregor@apple.com> Add support for viewing the module graph via Graphviz, for debugging
purposes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141697 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ModuleManager.h
92d6d404833468120f9a86fb360691ac60585551 11-Oct-2011 Daniel Dunbar <daniel@zuster.org> Driver: Add support for a new -nostdlibinc option.
- This disables the system include directories, but not the compiler builtin
directories. Useful for projects that want to use things like the intrinsic
headers, but are otherwise freestanding.

- I'm willing to reconsider the option naming, I also considered providing an
explicit -builtinc (which would match -nobuiltininc), but this is more
consistent with existing options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141692 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a268fc0f2229eb132ebc8501b140093aeb5516bf 11-Oct-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Replace -nostdinc by -nostdsysteminc (which is just system include
paths). The -nostdinc behavior is now -nostdsysteminc + -nobuiltininc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141691 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
71fdf469a3b6d7d557b0bfba36e8659f4966c565 11-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove an unused member variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141690 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
c892c5fa92db137ff68d95afb13fe969d17f4fb2 11-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> For the FileChanged Preprocessor callback, when exiting a file, pass its FileID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141681 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
769bb2d0dbd173589747cc8e7428a66db3b2692e 11-Oct-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Get rid of ShouldDeleteMoveConstructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141650 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c32d684d6c787b332a64c9013598d5ef668c4b45 11-Oct-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Consolidate copy constructor deletion into ShouldDeleteSpecialMember.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141645 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
276b061970939293f1abaf694bd3ef05b2cbda79 11-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Initial implementation of __atomic_* (everything except __atomic_is_lock_free).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
asic/Builtins.def
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
f11dbe9676832e599e046b2ed0f132a6bb858e0a 11-Oct-2011 Francois Pichet <pichet2000@gmail.com> [Microsoft] If -fms-compatibility, then downgrade missing typename error to warning at function prototype scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141630 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
fac9467d1676dc05761e12e41e13e01a3a3da52b 11-Oct-2011 Kaelyn Uhrain <rikka@google.com> Add typo correction for type names.

The main motivation was to do typo correction in C++ "new" statements,
though picking it up in other places where type names are expected was
pretty much a freebie.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141621 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
e1e7862586b6077a68dea05bcdbb67f63be3057d 11-Oct-2011 Ted Kremenek <kremenek@apple.com> Place diagnostic group ext_typecheck_decl_incomplete_type under a -W flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c712f50cd56eaf3662989b556e9c6b1e8fcd11a 11-Oct-2011 Kaelyn Uhrain <rikka@google.com> Move some bool flags out of function parameter lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141610 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
ema/Sema.h
a696ece1ac449a2b77e7c0a693b55cb10e9e2068 10-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Implement ConcurrencyCheck using a recursive mutex to allow re-entrancy in the same thread.
The checks are performed only in DEBUG, it becomes no-op in release mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141582 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
a6b8b2c09610b8bc4330e948ece8b940c2386406 10-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation refactoring:
- Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions,
and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
behaviour.
- Factor out evaluation of bitfield bit widths.
- Fix a few places which would evaluate an expression twice: once to determine
whether it is a constant expression, then again to get the value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
1055393814ac989727aa7437a5f3c3c44b4f83e5 10-Oct-2011 Kaelyn Uhrain <rikka@google.com> Give nicer note when a member redeclaration has or lacks 'const'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
36bc2c663f600e7c9dc1a800d36f16603ca3ea51 10-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc: Some refactoring of overriding method decl. code
for future work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141553 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
147545d698972cfd34ece30a5d55e8180784161e 10-Oct-2011 Douglas Gregor <dgregor@apple.com> Parse the initializer for a class member after handling its
declarator, so that the declarator is in scope for the
initializer. Fixes PR9989.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141539 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e16da07474c376fbbeda2d4238cf35e2bd664d5a 10-Oct-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Begin work consolidating ShouldDelete* functions.

Begin with just default constructors. One note is that as a side effect
of this, a conformance test was removed on the basis that this is almost
certainly a defect as with most of union initialization. As it is, clang
does not implement union initialization close to the standard as it's
quite broken as written. I hope to write a paper addressing the issues
eventually.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141528 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
883af83bd6f9b0b60b8c7a78b8682eb8ab40a4a8 10-Oct-2011 Douglas Gregor <dgregor@apple.com> Implement the restrictions in C++ [class.friend]p6, which disallow
defining a friend function with a qualified name or in a local
class. Fixes PR9853.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b5ae92f2f52df88ae14504d3a3f2bddb479829b6 10-Oct-2011 Douglas Gregor <dgregor@apple.com> Diagnose attempts to qualify the name of an instance variable or
property in an Objective-C++ member access expression. Fixes PR9759.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141522 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ae57eadbc1a923efb72924765445db915cc23a9b 10-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: add driver/frontend support for precompiled headers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141516 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
b5a0187b12524d2c1e6ac96e81715d1e70bbe0ad 09-Oct-2011 Douglas Gregor <dgregor@apple.com> Diagnose attempts to declare a non-static data member with a
non-identifier name. Fixes PR10839.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
15e24065a4a8b6b9d58e138969f8f6ac7495d837 08-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141432 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
a5937bbfd19e61d651a58b0f0ffeef68457902a5 08-Oct-2011 Ted Kremenek <kremenek@apple.com> Remove AnalysisContext::getLiveVariables(), and introduce a templatized mechanism to lazily create analyses that are attached to AnalysisContext objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141425 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/AnalysisContext.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
ec2ec1f20322076717c3865b196f7a1c95d883a4 07-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> In DeclContext::LoadLexicalDeclsFromExternalStorage don't clear out
the fields if they are already loaded, just ignore them when we are building
the chain in BuildDeclChain.

This fixes an lldb issue where fields were removed and not getting re-added
because lldb is based on ASTImporter adding decls to DeclContext and fields
were already added before by the ASTImporter.

We should really simplify the interaction between DeclContext <-> lldb
going forward..

rdar://10246067

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3f5e8d87dbf449d8b39fe96068415428594d370e 07-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Previously, we were passing to CheckerContext enough info to construct ProgramPoint and it would pass it to NodeBuilder, which in turn would construct the ProgramPoint. Simplify it by just passing the ProgramPoint to CheckerContext. The ProgramPoint can only change if a checker tags it, in which case, we create a copy with the given tag.

(A step closer to making CheckerContext work with all node builders, not only StmtNodeBuilder.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141417 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
13bf6336ab395eb6af487ab96d32229460907769 07-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc++: some minor cleanup and a test case
for atomic setters which requires assignment operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
63d3201619fdac284adfd3b9328562fa20a01c40 07-Oct-2011 Anna Zaks <ganna@apple.com> ProgramPoint cleanup after the previous commit r141408 (remove the copy constructor, mark withTag const).

Move getProgramPoint() utility from CoreEngine.cpp into ProgramPoint.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141414 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
af42712cd8f548f15c700d49a7038ddb846aafa8 07-Oct-2011 Anna Zaks <ganna@apple.com> Add a copy constructor to ProgramPoint and pull withTag() method from a child. (withTag essentialy creates a copy with a given tag.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141408 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
163b151809beef8f917fd16c546016e83ae3e361 07-Oct-2011 Bob Wilson <bob.wilson@apple.com> Clang driver changes for iOS 5.0 and OS X Lion support.

Check whether the libc++ library is available when using -stdlib=libc++,
and also adjust the check for whether to link with -lgcc_s.1.
Patch by Ted Kremenek and Daniel Dunbar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141374 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
5e1cdac63c3d9c9b32fa41fa0b2d242a58a20d49 07-Oct-2011 John McCall <rjmccall@apple.com> Rename TagDecl::isDefinition -> isCompleteDefinition
for better self-documenting code, since the semantics
are subtly different from getDefinition().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/TypeLoc.h
7d65f6965d215f4cb2eb0738ee1b9024e5ab5bba 07-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc: Improve on diagnostic when atomic proeprty is synthesized
on one accessor and user-provide with another.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141343 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a180f04c091bf3ede4fe292ba6a29d61da09e936 07-Oct-2011 John McCall <rjmccall@apple.com> Move type-checking for C-style casts in C into the now-misnamed
SemaCXXCast.cpp. Should have no functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
c076e37e2223cfe998fa5e657dece30da78fcdc4 07-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implicitly assume that a ObjC category to an unavailable interface is also unavailable;
only give an 'unavailable' error on the @implementation of the category. rdar://10234078

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141335 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3a387441ae339363ee5b254658f295e97bd9e913 07-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> When using an unavailable/deprecated interface Foo inside Foo's interface/implementation
don't emit unavailable errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141334 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
51c3b79caa493a53d324190c0d7e3cd1fe93d4f3 07-Oct-2011 Eli Friedman <eli.friedman@gmail.com> llvm.memory.barrier is going away; remove the wrapper intrinsic __builtin_llvm_memory_barrier.

__atomic_thread_fence will be landing soon as a replacement, wrapping around the new fence instruction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b001de7458d17c17e6d8b8034c7cfcefd3b70c00 07-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Support for C1x _Atomic specifier (see testcase). This is primarily being committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic.

Thanks to Jeffrey Yasskin for the thorough review!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TokenKinds.def
arse/Parser.h
ema/DeclSpec.h
ema/Sema.h
erialization/ASTBitCodes.h
57e264e9f4ff0a72f3585a960cdf63437b76fa93 06-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc++: For atomic properties of c++ class objec typet, appropriate
operator= is called. Issue a warning for non-trivial case until
runtime support is provided. // rdar://6137845


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d51e43af0b3a6897b971f316c4de2035ec82d1f2 06-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> CUDA: add -fcuda-is-device flag

This frontend-only flag is used by the IR generator to determine
whether to filter CUDA declarations for the host or for the device.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141301 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
b52c0dddffdb27b3a058913020001afcfc937d8d 06-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> PR11067: A definition of a constexpr static variable doesn't need an initializer if the in-class declaration had one. Such a declaration must be initialized by a constant expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d12059673dcef32bc2b6bae5321654d33863afe6 06-Oct-2011 Erik Verbruggen <erikjv@me.com> Added CXAvailability_NotAccessible to indicate that a declaration is available, but not accessible from the current code completion context.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141278 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Lookup.h
ema/Sema.h
d211cb709510fbe7e75167b9feee0050851d001a 06-Oct-2011 Ted Kremenek <kremenek@apple.com> Use a sidetable in ASTContext for ParmVarDecls whose index exceeds the 8 bits reserved for that value in VarDecl. Fixes PR 10538.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
f77c49681ab347f7602b21beda8be8b39386e0d2 06-Oct-2011 Ted Kremenek <kremenek@apple.com> Hoist truncation checking for ParmVarDeclBitfields::ParameterIndex into its own helper method. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b8b0e75aeec85a7a268fdba311de4f1cd527fae1 06-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: add a non-standard extension, cl_clang_storage_class_specifiers,
which enables support for C99 storage-class specifiers.

This extension is intended to be used by implementations to implement
OpenCL C built-in functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141271 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OpenCLExtensions.def
ema/DeclSpec.h
08f35a79f7506d6ac0349764aa4d6021a1e1c6e2 06-Oct-2011 Ivan Krasin <krasin@chromium.org> Add -Wlanguage-extension-token option for ext_token_used warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141268 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6ee5b9384533d5b3f8c18b578fccd3935e1b892f 06-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Clang-side build system infrastructure for multiple tblgens.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Makefile
asic/Makefile
river/Makefile
ex/Makefile
arse/Makefile
erialization/Makefile
390909c89c98ab1807e15e033a72e975f866fb23 06-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove the dependency on CheckerContext::getStmt() as well as the method itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141262 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
4eff823b8e015e003d05953c386d685ee6bb6235 06-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove the last dependency on CheckerContext::getNodeBuilder() as well as the method itself.

Checkers should not directly access NodeBuilder, nodes can be created by calling the CheckerContext's generateNode() methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141249 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
dff6ef903ff4fcb43b5ea292ecd772e381393b5d 06-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] OSAtomicChecker implements evalCall in a very invasive way - it essentially simulates inlining of compareAndSwap() by means of setting the NodeBuilder flags and calling ExprEngine directly.

This commit introduces a new callback just for this checker to unblock checker API cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141246 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
9dd0065e61ea4b48b19eee550704ce964e64e946 05-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Document ObjCMethodDecl::setMethodParams.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
88934e85f81abdc4fb5202325252be3bcab5ebf0 05-Oct-2011 Daniel Dunbar <daniel@zuster.org> Driver & AST: Implement support for -fpack-struct and -fpack-struct= command
line options.
- <rdar://problem/10120602>, PR9631

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
7cc58b4c927fca539d43eaa58e00dca95946eb7c 05-Oct-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Added a flag to identify resolved overloaded function references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ema/Initialization.h
ema/Overload.h
ema/Sema.h
b45ae256cfd5ef3ab22b4d715159f978d8120d45 05-Oct-2011 John McCall <rjmccall@apple.com> Refactor the analysis of C++ cast expressions so that even
C-style and functional casts are built in SemaCXXCast.cpp.
Introduce a helper class to encapsulate most of the random
state being passed around, at least one level down.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141170 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
cbb7add8d7e3f868a6695a601e45fc13257bd9f5 05-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Removing more references to CheckerContext::getNodeBuilder(): ask CheckerContext to generate the nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141136 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
50f3cade2a87bda005ae08d42b51c5b960b07779 05-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor node generation to use less code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141133 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
43f7e62442f17a2527f6eed387c86b38ffd5dc2a 05-Oct-2011 Chad Rosier <mcrosier@apple.com> [driver] Improve r141053 by only emitting the warning if the original input
was assembly. Otherwise, something like -save-temps causes the integrated
assembler to warn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
5d0ea6d62e076c776ddad028c4eb615783be1323 04-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Removing references to CheckerContext::getNodeBuilder(): checkers can obtain block count directly from the Context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141112 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BlockCounter.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
68af536046461b514b59aedac016b52784ece3f7 04-Oct-2011 Fariborz Jahanian <fjahanian@apple.com> objc: Turn diagnostic on property type mismatch in
continuation class into warning. // rdar://10231514


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141100 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8ba721428af297e540fb40b176eeeea0ee010c1f 04-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove unused methods, add comments to others.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141098 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
06d92bf8a294412340b94e0f4c1b4b78b2651824 04-Oct-2011 Ted Kremenek <kremenek@apple.com> Place diagnostic warn_atomic_property_rule under a -W flag. Fixes <rdar://problem/10230631>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141089 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d649c57c264cd2e5114a445fcea96564bc80476f 04-Oct-2011 Ted Kremenek <kremenek@apple.com> Place diagnostic warn_ownin_getter_rule under a -W flag. Fixes <rdar://problem/10230626>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3b8b00b1ec3d26d57157f9ed5004adad78e28535 04-Oct-2011 Ted Kremenek <kremenek@apple.com> Place diagnostic ext_predef_outside_function under a -W flag. Fixes <rdar://problem/10226192>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141087 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f347667044100b8a91076480a8e73a2abb418b05 04-Oct-2011 Ted Kremenek <kremenek@apple.com> Place warning warn_drv_no_debug_w_integrated_as under a -W flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141078 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
10a82cde7c317c5dd41dc3faf17f503c52ce2a3d 04-Oct-2011 Bob Wilson <bob.wilson@apple.com> Rip out flags for controlling C++ "production mode" separately.

This is old leftover cruft from the days when C++ was not yet ready
for prime time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141063 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
1711fc91efb36d131f7ba771f73f0154dc1abd1f 04-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Improve location fidelity of objc decls.

-Add the location of the class name to all objc container decls, not just ObjCInterfaceDecl.
-Make objc decls consistent with the rest of the NamedDecls and have getLocation() point to the
class name, not the location of '@'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141061 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
968b7a71c88bcd157f7d271517d7ceb266fed63a 04-Oct-2011 Chad Rosier <mcrosier@apple.com> [driver] Emit a warning if the user has requested debug information and we're
using the integrated assembler.
rdar://10216353

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
1e9775d36de8edbc665c0f0bf4dae1400e3d2112 03-Oct-2011 Anna Zaks <ganna@apple.com> [analyzer] In UndefBranchChecker, use a node generator which does not create an edge/branching. (ExprEngine should be in charge of generating edges. The checkers should examine the condition and generate PostCondition node if needed.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141034 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
a08529cc3f00e0b47a3c028823634129ac46847b 03-Oct-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed exapnsion range for # and ##.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141012 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7035f310f5cfedb35ee4422bcab98e9f18f4ce63 03-Oct-2011 Matt Beaumont-Gay <matthewbg@google.com> Don't crash when trying to emit too many fixits. Also, keep some constants in
sync between DiagnosticsEngine and PartialDiagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141006 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
f87cced71a955dca5731e7b28bc182e4824c0355 03-Oct-2011 Rafael Espindola <rafael.espindola@gmail.com> Propagate __attribute__((returns_twice)) from C to IL.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141002 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
491306a83c4f0f49f95a3bcbca8580cb98a91c7a 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow getting all source locations of selector identifiers in a ObjCMethodDecl.

Instead of always storing all source locations for the selector identifiers
we check whether all the identifiers are in a "standard" position; "standard" position is

-Immediately before the arguments: -(id)first:(int)x second:(int)y;
-With a space between the arguments: -(id)first: (int)x second: (int)y;
-For nullary selectors, immediately before ';': -(void)release;

In such cases we infer the locations instead of storing them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExprObjC.h
ST/SelectorLocationsKind.h
b994e6c7d57b00e3e0f69d152065e2cf85d1de33 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move field in ObjCMessageExpr to avoid padding.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
207180802c836fda8acbedb47a92f9d2bdca59c3 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow getting all source locations of selector identifiers in a ObjCMessageExpr.

Instead of always storing all source locations for the selector identifiers
we check whether all the identifiers are in a "standard" position; "standard" position is

-Immediately before the arguments: [foo first:1 second:2]
-With a space between the arguments: [foo first: 1 second: 2]
-For nullary selectors, immediately before ']': [foo release]

In such cases we infer the locations instead of storing them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140987 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/SelectorLocationsKind.h
8d9ed7980405e91a12e33338a78fb99620adf553 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> ArrayRef'ize ObjCMessageExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
04fb8ef41ed2bd9533ba9392b4db1a7379752c16 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an assertion that we don't overflow the bitfield ObjCMessageExpr::NumArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
11d77169555480ee0a04c6e5bc390d8fde41175d 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Pass from the parser the locations of selector identifiers when creating
objc method decls.

They are not stored in the AST yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
da92a7f91cf88f49e02050919676f7fb8e3bdff8 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't keep NumSelectorArgs in the ObjCMethodDecl, the number can be derived from the selector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
951376242c076c3f62dd78bf672909fc011991db 03-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Pass all the locations of the selector identifiers for a message expression from the parser.

They are not kept in the AST yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140982 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ema/Sema.h
78dd67e78c50a7abdc7c358e5eac1770d5fea22a 03-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> CUDA: diagnose invalid calls across targets

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Overload.h
ema/Sema.h
1f24076313e3c4921134db555194605c9a1ea49e 03-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> CUDA: add separate diagnostics for too few/many exec config args

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140977 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
8591a7f5215f6469603e6bc8f4fdbcc78e215ab9 03-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> CUDA: diagnose unconfigured calls to global functions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140975 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d1e40d5389a4382cbebc97d54792f41ee0414af4 02-Oct-2011 John McCall <rjmccall@apple.com> Make -fobjc-nonfragile-abi the -cc1 default, since it's the
increasingly prevailing case to the point that new features
like ARC don't even support the fragile ABI anymore.

This required a little bit of reshuffling with exceptions
because a check was assuming that ObjCNonFragileABI was
only being set in ObjC mode, and that's actually a bit
obnoxious to do.

Most, though, it involved a perl script to translate a ton
of test cases.

Mostly no functionality change for driver users, although
there are corner cases with disabling language-specific
exceptions that we should handle more correctly now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140957 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
cdda47faab5c2c61c239491a1a091e071ed3e38e 01-Oct-2011 John McCall <rjmccall@apple.com> Parse attributes written in an ObjC method parameter type as
attributes on the parameter declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140944 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
e82247a71a1a76e78f3b979b64d5f6412ab40266 01-Oct-2011 John McCall <rjmccall@apple.com> Hey, maybe we shouldn't silently ignore decl attributes
on declarators written as types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140931 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
ema/Sema.h
9f569cca2a4c5fb6026005434e27025b9e71309d 01-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: semantic checking for constexpr functions and constructors. Based in
part on patches by Peter Collingbourne.

We diverge from the C++11 standard in a few areas, mostly related to checking
constexpr function declarations, and not just definitions. See WG21 paper
N3308=11-0078 for details.

Function invocation substitution is not available in this patch; constexpr
functions cannot yet be used from within constant expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
2cf031d33ce6801dc11183a3cb48168f53fe06c4 01-Oct-2011 John McCall <rjmccall@apple.com> Allow the results of cf_returns_not_retained function
calls, or calls to audited functions without an explicit
return attribute, to be casted without a bridge cast.
Tie this mechanism in with the existing exceptions to
the cast restrictions. State those restrictions more
correctly and generalize.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140912 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7df2ff45f101c87398329d0ea23c1377328dca40 01-Oct-2011 John McCall <rjmccall@apple.com> Tweak the interface for analyzing the CF conventions for a name
to take a FunctionDecl* instead of an llvm::StringRef. Eventually
we might push more logic in there, like using slightly different
conventions for C++ methods.

Also, fix a bug where 'copy' and 'create' were being caught in
non-camel-cased strings. We want copyFoo and CopyFoo and XCopy
but not Xcopy or xcopy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140911 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
5202a4d0bbd9b9a98958b2d9869e38b3f118b73c 01-Oct-2011 Ted Kremenek <kremenek@apple.com> Enable -Wstrlcpy-strlcat-size by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140900 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
717a20b9cebb0d261b74995f8ebf3a1c814bbc08 01-Oct-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Mark a TagDecl when it is free standing (e.g. "struct foo;")

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
26e0b304557519c12b150afe23cd24e28fa20a1d 30-Sep-2011 Daniel Dunbar <daniel@zuster.org> Revert my --working-directory option, which wasn't well thought through.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140889 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a891a32d3762ee641a29c091d286f2a7432671a5 30-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a bug in the token caching for inline constructors in C++11, and improve error recovery in both dialects. This should fix the GCC test suite failures as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140847 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
8dfac0baaf0f81d3945bcb306480e358ba8d1f08 30-Sep-2011 John McCall <rjmccall@apple.com> Add explicit attributes to mark functions as having had their
CoreFoundation object-transfer properties audited, and add a #pragma
to cause them to be automatically applied to functions in a particular
span of code. This has to be implemented largely in the preprocessor
because of the requirement that the region be entirely contained in
a single file; that's hard to impose from the parser without registering
for a ton of callbacks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140846 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
ema/AttributeList.h
ema/Sema.h
e4c6675cccbaac991843def43072687bca50d989 30-Sep-2011 Ted Kremenek <kremenek@apple.com> Fix crash when analyzing C++ code involving constant enums and switch statements (<rdar://problem/10202899>).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140844 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
d30952838421ddfb9f7e346b2ba8213889a5f789 30-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Add -analyzer-purge option which can take on multiple values, remove -analyzer-purge=none. (Small refactor as well: move the work of constructing AnalysisManager from the callers to the class itself.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140838 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
rontend/AnalyzerOptions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
3fedbe1f71c18fba01d39109d606f421a0103a2a 30-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Some fixes for MS-style asm parsing: specifically, add some error checking, and handle asm comments using semicolons correctly. (The comments are actually surprisingly tricky.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140837 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
55dec868977ccb89cab0286122f9345f63bb5de7 30-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr functions are implicitly const. More tests to follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
2d23ec29805f54edb3243022c64d752b8fbe5f46 30-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> Suggest adding 'constexpr' if the GNU extension for in-class initializers for static const float members is used in C++11 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140828 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
947be1941e9a1d4233116f51a45799d3904d4231 30-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> Mark the ExtWarn for in-class initialization of static const float members as a GNU extension. Don't extend the scope of this extension to all literal types in C++0x mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f32caff4dc351719ca3362d95f859d72fdd6f1b 30-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> Minor refactoring. Enumerators may inherit the deprecated/unavailable
attributes from the enumeration type.
// rdar://10201690


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140818 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2da7a51270a5f40e88d07750ebdadd774368b9f4 29-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> In C++0x, static const volatile data members cannot be initialized in-class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140809 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c6d990a767150b02337de1136fdb55ccf349f4d1 29-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> constexpr: semantic checking for constexpr variables.

We had an extension which allowed const static class members of floating-point type to have in-class initializers, 'as a C++0x extension'. However, C++0x does not allow this. The extension has been kept, and extended to all literal types in C++0x mode (with a fixit to add the 'constexpr' specifier).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140801 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
97db7265ac1993e14e5877292e23d5ed2e9cf719 29-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> c - Enumerators may inherit the deprecated/unavailable
attributes from the enumeration type.
// rdar://10201690


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140800 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c41f3652f4e836cff988320bad2d6c5f416ebe1f 29-Sep-2011 Anna Zaks <ganna@apple.com> Add more comments to several checker callback functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140797 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
82d0b0aab9088e977c2a44c4a5a90479c63149fe 29-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for alignment-specifiers in C1X and C++11, remove
support for the C++0x draft [[align]] attribute and add the C1X
standard header file stdalign.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140796 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
arse/Parser.h
35f37cd6637f5cb4dbf18a542b501fd40522ba7b 29-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Add a warning group for warnings about using C1X features as extensions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140795 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
3497fdfdb742f55d7b7ec8e22779fb08962b8441 29-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for parsing an attribute-specifier-seq containing multiple
attribute-specifiers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140794 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
fe98da0fa352462c02db037360788748f95466f7 29-Sep-2011 John McCall <rjmccall@apple.com> Add an ns_bridged attribute, used to specify that a
pointer to the annotated struct type can be used as an
Objective-C object pointer. If an argument is given, the
type is actually "toll-free bridged" to the specific type
named there, rather than just to 'id'.

For now, we cannot rely on all types being so annotated,
and we'll always have to have exceptions for things like
CFTypeRef (aka const void*), but this is clearly a good
foundation for improving toolage in this area.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140779 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
2f041d0b12aa87f3345e5fb2e38fefba30c5bff3 29-Sep-2011 Ted Kremenek <kremenek@apple.com> Like IBOutletCollection, it only makes sense to apply the IBOutlet annotation to Objective-C object types. Fixes <rdar://problem/10142685>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140778 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
asic/DiagnosticSemaKinds.td
aeacae523a1c6e5bb99d12754415bbbc3ccb86c9 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostic: Kill off a few unnecessary functions now that refactoring is done, and add a note that the new setDiagnosticGroup{...} methods only operate on the current diagnostic state.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
be1aa410274b28fc143c47c814f07c989f4534d6 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Rewrite DiagnosticIDs::getDiagnosticLevel completely to be straighter line code, use the new DiagnosticMappingInfo flags, and eliminate the odd MAP_WARNING_NO_WERROR and friend mappings.
- This fixes a host of obscure bugs with regards to how warning mapping options composed with one another, and I believe makes the code substantially easier to read and reason about.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140770 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
a5e41333b06fdf036d58495490eb14d6a0a3fcf7 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Add three explicit bits to DiagnosticMappingInfo to track "no-warning-as-error", "no-error-as-fatal", and "show-in-system-header", and update DiagnosticsEngine::setDiagnosticGroup{WarningAsError,ErrorAsFatal} and GetDefaultDiagMappingInfo to set them appropriately.
- No actual functionality change for now, we still also use the diag::Mapping::{MAP_WARNING_NO_ERROR,MAP_ERROR_NO_FATAL,MAP_WARNING_SHOW_IN_SYSTEM_HEADER} for a little while longer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
3f8394669673451061f57ced81f0a2cae087f119 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Add a DiagnosticIDs::getDiagnosticsInGroup method, and use
that in DiagnosticEngine instead of the convoluted calling into DiagnosticIDs
which then calls back into the DiagnosticsEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
ba494c64365d78b1cdb6baea4d1e79263389fda9 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostic: Add a DiagSate::getOrAddMappingInfo method.
- Also, spell const_iterator as const_iterator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
09ea68d17bc0fc0b16d287ad4d3f61fe7def4f17 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Move setDiagnosticMapping() to using DiagnosticMappingInfo
and eliminate setDiagnosticMappingInternal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140763 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b1c99c679adb53be8f478d08be83af6c9c22ae4b 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Add a DiagnosticMappingInfo helper class, and switch to
storing mappings with that instead of straying some magic constants about the
source.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
c3c4a89747e12ebc2eabe57265c8b69ab720ecbf 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Eliminate getDiagnosticMappingInfo method, which wasn't worth methodizing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1656aaec223949245fdbebf306b719cba0b687ca 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostic: Eliminate the extra "mapping" out-parameter now that I killed the sole client.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
76101cfe52d1b56974bf0e316247b3201f87c463 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Add an isDefaultMappingAsError method, and switch TextDiagnosticPrinter to use that instead of extracting the current mapping via getDiagnosticLevel, which fixes one class of corner cases w.r.t. printing the "-Werror" diagnostic option marker.
- The TextDiagnosticPrinter code is still fragile as it is just "reverse engineering" what the diagnostic engine is doing. Not my current priority to fix though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140752 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
80d572d87e2a8258262fd9caa463ae9c046f7bf0 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Fix 80-col viola.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
4aa8f2bce0f498152d624f748712a991adc23fdd 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostic: Factor out
DiagnosticsEngine::setDiagnosticGroup{ErrorAsFatal,WarningAsError} methods which
more accurately model the correct API -- no internal change to the diagnostics
engine yet though.
- Also, stop honoring -Werror=everything (etc.) as a valid (but oddly behaved) option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
08d6acf6e5efa6df57345922d412476127f856fc 29-Sep-2011 Douglas Gregor <dgregor@apple.com> Introduce an opt-in warning when a module is being implicitly built
from sources.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
aee526e77657afd1600276450e9c346953ad51d7 29-Sep-2011 Douglas Gregor <dgregor@apple.com> Introduce a pure virtual clone() method to DiagnosticConsumer, so that
we have the ability to create a new, distict diagnostic consumer when
we go off and build a module. This avoids the currently horribleness
where the same diagnostic consumer sees diagnostics for multiple
translation units (and multiple SourceManagers!) causing all sorts of havok.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ChainedDiagnosticConsumer.h
rontend/CompilerInstance.h
rontend/LogDiagnosticPrinter.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/VerifyDiagnosticConsumer.h
ewrite/FixItRewriter.h
ewrite/Rewriter.h
4213df3b5da21ce25a4541ca5c447eeb28b515a3 29-Sep-2011 Daniel Dunbar <daniel@zuster.org> Basic/Diagnostics: Split out the default warning "no-Werror" and
"show-in-system-header" bits, which is part of teasing them apart from the
diagnostic mapping kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140742 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.td
asic/DiagnosticIDs.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
78213e4aec6d8d22b5828dd2687fa19116ebaa26 28-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objc arc: Diagnose block pointer type mismatch when
some arguments types are ns_consumed and some otherwise
matching types are not. This is objc side of
// rdar://10187884


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9a9cddeaaebf3a84529a66c5e9212a555913084f 28-Sep-2011 Richard Trieu <rtrieu@google.com> Fix typo. string-convervion -> string-conversion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140716 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
fcc1e50ebcb441c6c610ccd539f57c57549bd66c 28-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce non-const Decl::getParentFunctionOrMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c3a2e654f1e1c5cf956d0666d9c4c2f60a66f112 28-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Clean up a bit of the uses of CPU in the TargetInfo classes. This makes
it an error if a CPU is provided for a target that doesn't implement
logic handling CPU settings, to match the ABI settings. It also removes
the CPU parameter from the getDefaultFeatures method. This parameter was
always filled in with the same value as setCPU was called with, and at
this point every single target implementation that referenced the CPU
within this function has needed to store the CPU via setCPU anyways in
order to implement other interface points.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140683 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c8680f46970a5a53d07e05edd93657e64764da3c 28-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Decl::getParentFunctionOrMethod which if the decl is defined inside
a function/method/block it returns the corresponding DeclContext, otherwise it returns null.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140672 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
8987b2385d9ba63ada66e1344ace79b04d5cb5c3 28-Sep-2011 Douglas Gregor <dgregor@apple.com> Only print _Bool as 'bool' when 'bool' is defined as an object-like
macro whose only replacement token is '_Bool'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140656 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/PrettyPrinter.h
ema/Sema.h
30c42404202d2e2512e51efc6066bd614cfdb5a4 28-Sep-2011 Douglas Gregor <dgregor@apple.com> When 'bool' is not a built-in type but is defined as a macro, print
'bool' rather than '_Bool' within types, to make things a bit more
readable. Fixes <rdar://problem/10063263>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/PrettyPrinter.h
ST/Type.h
3240fe3b715327c8fda6f5a3bc8a092b1fce82a7 28-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objcetive-c-arc: When overriding a method, its ns_consumed patameter
attribute must match its overriden method. Same also for
ns_returns_retained/not_retained on the result type.
This is one half of // rdar://10187884


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
c1c0dfb376b829b94d4c61e9f358ce23e6aa3169 27-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Get rid of useless helper Sema::CastCategory.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140642 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2fe363622c32c471e8a68c68ba5cc372644f24fb 27-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Some changes to improve compatibility for MSVC-style C++ struct layout. Patch from r4start at gmail.com (with some minor modifications by me).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
6b4ff04dd22e7159887ea6c1bb8b1c01fc9c70a9 27-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a callback to PPCallbacks for lines skipped by the preprocessor.

Patch by Jason Haslam!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140612 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/Preprocessor.h
b201e16e0c331b0bdeae7b30f9f79aae32beb1b2 27-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Break SourceManager::translateFileLineCol into translateFile, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c737acb8e86564becc5939d681089d1851e6be1a 27-Sep-2011 Douglas Gregor <dgregor@apple.com> Revert r139989 and r140031, which implemented the Objective-C type
system change in <rdar://problem/10109725> that allows conversion from
'self' in class methods to the root of the class's hierarchy. This
conversion rule is a hack that has non-trivial repurcussions
(particularly with overload resolution).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140605 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2246368b1061ef48e00bfc95d519d4393dff9926 27-Sep-2011 Bill Wendling <isanbard@gmail.com> Revert r140589. It was causing failures during llvm compilation:

llvm[1]: Compiling CommandLine.cpp for Debug+Asserts build
if /Users/void/llvm/llvm-opt.obj/Release+Asserts/bin/clang++ -I/Users/void/llvm/llvm.obj/include -I/Users/void/llvm/llvm.obj/lib/Support -I/Users/void/llvm/llvm.src/include -I/Users/void/llvm/llvm.src/lib/Support -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -g -fno-exceptions -fno-common -Woverloaded-virtual -Wcast-qual -m64 -Wall -W -Wno-unused-parameter -Wwrite-strings -c -MMD -MP -MF "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d.tmp" -MT "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.o" -MT "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d" /Users/void/llvm/llvm.src/lib/Support/CommandLine.cpp -o /Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.o ; \
then /bin/mv -f "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d.tmp" "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d"; else /bin/rm "/Users/void/llvm/llvm.obj/lib/Support/Debug+Asserts/CommandLine.d.tmp"; exit 1; fi
In file included from /Users/void/llvm/llvm.src/lib/Support/CommandLine.cpp:25:
/Users/void/llvm/llvm.src/include/llvm/Support/system_error.h:690:14: error: unknown type name 'make_error_condition'; did you mean 'error_condition'?
{*this = make_error_condition(_e);}
^~~~~~~~~~~~~~~~~~~~
error_condition
...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140599 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f39d962cf84f46d2c0512157259ae1d41a1a5173 27-Sep-2011 David Blaikie <dblaikie@gmail.com> Renaming PathDiagnosticClients.h to PathDiagnosticConsumers.h (issue 5397)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140596 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathDiagnosticClients.h
taticAnalyzer/Core/PathDiagnosticConsumers.h
93476ddd9ce490f9c08d78b640efad812cb019d1 27-Sep-2011 Kaelyn Uhrain <rikka@google.com> Add typo correction for the type name in C++ "new" statements

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140589 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
02fa1b9cd6f185fead44f910733ff1086a6c5a0b 27-Sep-2011 Richard Trieu <rtrieu@google.com> Move string literal to bool conversion into its own warning flag -Wstring-conversion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8f944492f21a2fb61d539d933add5b1fc7b00e94 26-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Add a small note to BaseSubobject about where it is actually used.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/BaseSubobject.h
a48e676a717309afa50ae06a3d4674acec025bf9 26-Sep-2011 Douglas Gregor <dgregor@apple.com> Re-arrange and bitfieldify data members of CXXConstructExpr to save a
little storage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
480b53cfff18c40d10fcb09b0185a9b75dfd491e 26-Sep-2011 Douglas Gregor <dgregor@apple.com> Diagnose attempts to use 'using typename' with a non-identifier name,
from Stepan Dyatkovskiy. Fixes PR10925.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140528 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fb3612ef197cb8532c05f33889ec1aed7c26e5cb 26-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Associate the macro arguments location map with a FileID instead
of a ContentCache, since multiple FileIDs can have the same ContentCache
but the expanded macro arguments locations will be different.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140521 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
527f98d65ff1e7c3ed6c8467ca7f516f3ea7ad9b 26-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove SourceManager::getLocation().

It's not descriptive enough and it's just a call of translateFileLineCol()
followed by a call to getMacroArgExpandedLocation(), which is better to be
called explicitly since it has a certain cost and is not always required.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140520 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ee0f84fc84ed7de7975e102668d8e53a778f7a8c 26-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't map a file:line:col triplet that is inside the preamble range to
a "loaded" location of the precompiled preamble.

Instead, handle specially locations of preprocessed entities:
-When looking up for preprocessed entities, map main file locations inside the
preamble range to a preamble loaded location.
-When getting the source range of a preprocessing cursor, map preamble loaded
locations back to main file locations.

Fixes rdar://10175093 & http://llvm.org/PR10999

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140519 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
aef05892611562a5a2de7f4687c9f22607d3a9ac 26-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Add missing spaces in diagnostic messages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140512 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
24018467ddb13857b764182f7753764d2f32f87d 26-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Move VTable builder to AST

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTableBuilder.h
5c551f7aef7db952eca6133366e5afa9e37ab0b7 26-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Move VTT builder to AST

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/VTTBuilder.h
33446f1a22a662335c76e2ef7511e48f61801a35 26-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Move BaseSubobject class to AST

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/BaseSubobject.h
40847cfb58acc3cac7d68727df9455ac45f2e118 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename DiagnosticInfo to Diagnostic as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/IdentifierTable.h
asic/PartialDiagnostic.h
rontend/ChainedDiagnosticConsumer.h
rontend/LogDiagnosticPrinter.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/VerifyDiagnosticConsumer.h
ewrite/FixItRewriter.h
ef3643fbbbf66247c5e205497fae0f46e240c143 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename PathDiagnosticClient to PathDiagnosticConsumer as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140492 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/PathDiagnosticClients.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
621bc69624599da62abd9bc9e5edd8a63ac99fe6 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename VerifyDiagnosticsClient to VerifyDiagnosticConsumer as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140489 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticConsumer.h
rontend/VerifyDiagnosticsClient.h
4e85b8ae413fa00fa42aa3e625c2db3b1932f8d3 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename ChainedDiagnosticClient to ChainedDiagnosticConsumer as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140485 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedDiagnosticClient.h
rontend/ChainedDiagnosticConsumer.h
78ad0b98848c17a0a11847fa1d456e2dfec8aa2f 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename DiagnosticClient to DiagnosticConsumer as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140479 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
asic/Diagnostic.h
rontend/ChainedDiagnosticClient.h
rontend/CompilerInstance.h
rontend/LogDiagnosticPrinter.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/VerifyDiagnosticsClient.h
ewrite/FixItRewriter.h
d6471f7c1921c7802804ce3ff6fe9768310f72b9 26-Sep-2011 David Blaikie <dblaikie@gmail.com> Rename Diagnostic to DiagnosticsEngine as per issue 5397


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140478 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/FileRemapper.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/ASTImporter.h
ST/Decl.h
ST/DeclarationName.h
ST/Mangle.h
ST/NestedNameSpecifier.h
ST/Type.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/PartialDiagnostic.h
asic/SourceManager.h
asic/TargetInfo.h
odeGen/BackendUtil.h
odeGen/ModuleBuilder.h
river/ArgList.h
river/Driver.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/AnalyzerOptions.h
rontend/ChainedDiagnosticClient.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/DiagnosticOptions.h
rontend/LogDiagnosticPrinter.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/Utils.h
rontend/VerifyDiagnosticsClient.h
ndex/TranslationUnit.h
ex/Lexer.h
ex/LiteralSupport.h
ex/PTHManager.h
ex/Preprocessor.h
arse/Parser.h
ewrite/ASTConsumers.h
ewrite/FixItRewriter.h
ema/DeclSpec.h
ema/Scope.h
ema/ScopeInfo.h
ema/Sema.h
ema/Template.h
erialization/ASTReader.h
erialization/ASTWriter.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Frontend/CheckerRegistration.h
026cb7604c8ef0bc7032e4c067500907d03b67a3 26-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Inline this method now that its completely trivial, and prepare for
hoisting parts of the text diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140477 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
8be5c159df96c88880a50086a41efc86b89a46a4 26-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Actually remove the members of CaretDiagnostic no longer in use for
tracking the start and stop of macro expansion suppression. Also remove
the Columns variable which was just a convenience variable based on
DiagOpts. Instead we materialize it in the one piece of code that cared.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140475 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
b9c398b25b9c24769fb30b90c3805a500806e06f 26-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Sink the logic for suppressing some macro expansion notes from the
TextDiagnosticPrinter into the CaretDiagnostic class. Several
interesting results from this:

- This removes a significant per-diagnostic bit of state from the
CaretDiagnostic class, which should eventually allow us to re-use the
object.
- It removes a redundant recursive walk of the macro expansion stack
just to compute the depth. We don't need the depth until we're
unwinding anyways, so we can just mark when we reach it.
- It also paves the way for several simplifications we can do to how we
implement the suppression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140474 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
fd2a00a60837d19fcf27449d1c580bb1b24ba429 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Add a special note for overload resolution when an initializer list argument
cannot be converted.
This is in preparation for overload resolution of initializer lists.
Currently, you will always get this message when you try to pass an init
list to an overloaded function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6df6548e44a61c444bd85dccd0398cba047c79b1 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Correctly parse braced member initializers (even in delayed parsing) and correctly pass
the information on to Sema. There's still an incorrectness in the way template instantiation
works now, but that is due to a far larger underlying representational problem.
Also add a test case for various list initialization cases of scalars, which test this
commit as well as the previous one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140460 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/MultiInitializer.h
ema/Sema.h
14b0c194b356a1204d081765b3e6699687bed97c 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Give InitListChecker a verification-only mode, where it neither emits diagnostics nor
builds a semantic (structured) initializer list, just reports on whether it can match
the given list to the target type.
Use this mode for doing init list checking in the initial step of initialization, which
will eventually allow us to do overload resolution based on the outcome.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140457 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
ema/Overload.h
ema/Sema.h
8713d4e874f2adc2928ebfb86c845574a14e3b3e 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> In Initialization, add step kind SK_ListConstructorCall (list-initialization
resolves to a constructor call in C++11) and failure kind
FK_ListInitializationFailed (early InitListChecker run failed).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140456 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
b0edea9f03cf81227fa35513802f8f146f65c528 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Inline Sema::CheckInitList into its only user.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140455 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5d3d41d0873d51b405972baf38e1f3a7ef5b49e0 24-Sep-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Fix typos and non-doxygen-ness in a few comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140454 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
a4b984d8396724a8e1137c22186c558c0cb0bf3f 24-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objc - redeclaration of property in extension class
must match property type declaration in its
primary class. // rdar://10142679


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140438 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4f163424152259f5dafe6ccc696c97a80fc504fc 23-Sep-2011 Matt Beaumont-Gay <matthewbg@google.com> Add DiagGroups to a couple of warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
63bc59bf22b8f2e672fcf3904fe33993f69e006f 23-Sep-2011 Daniel Dunbar <daniel@zuster.org> Driver: Add a --working-directory option which can be used to cause the compiler
to operate "as if" in a certain working directory.
- For now, we just implement this by changing the actual working directory, but
eventually we would want to handle this transparently. This is useful to
avoid an extra exec() pair in some situations, and will be something we would
want to support for more flexibility in using the Clang libraries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140409 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
eb2d1f1c88836bd5382e5d7aa8f6b85148a88b27 23-Sep-2011 David Blaikie <dblaikie@gmail.com> Removing a bunch of dead returns/breaks after llvm_unreachables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Stmt.h
f1f8b1a404d9ce6f0eb78e97b598a220d8ca9090 23-Sep-2011 Richard Trieu <rtrieu@google.com> Add a new warning to -Wliteral-conversion to catch cases where a string literal
is cast to a boolean. An exception has been made for string literals in
logical expressions to allow the common case of use in assert statements.

bool x;
x = "hi"; // Warn here
void foo(bool x);
foo("hi"); // Warn here
assert(0 && "error");
assert("error); // Warn here



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140405 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9fe8c74a93ac8e92512615c5f83e7a328b3b0544 23-Sep-2011 David Blaikie <dblaikie@gmail.com> Fix missing includes for llvm_unreachable


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Type.h
b219cfc4d75f0a03630b7c4509ef791b7e97b2c8 23-Sep-2011 David Blaikie <dblaikie@gmail.com> Switch assert(0/false) llvm_unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140367 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/DeclTemplate.h
ST/DeclVisitor.h
ST/Mangle.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtVisitor.h
ST/Type.h
ST/TypeVisitor.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
ema/DeclSpec.h
47adebef0df6dce752fe9a45e9190e8005b5d07c 22-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Add support for CPATH and friends.

This moves the existing code for CPATH into the driver and adds the environment lookup and path splitting there.
The paths are then passed down to cc1 with -I options (CPATH), added after the normal user-specified include dirs.
Language specific paths are passed via -LANG-isystem and the actual filtering is performed in the frontend.

I tried to match GCC's behavior as close as possible

Fixes PR8971.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140341 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
71a7605977113c795edd44fcbd2302ad49506653 22-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't use TemplateArgumentListInfo inside AST nodes because it may leak.
Use ASTTemplateArgumentListInfo instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
b0c3e0909bb04af0bfb82ad01ab6909649d68cca 22-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename ExplicitTemplateArgumentList -> ASTTemplateArgumentListInfo, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
d0109823a08e19d6b27ee28ecfef1244611f09f9 22-Sep-2011 Ted Kremenek <kremenek@apple.com> Place diagnostic warn_ivar_use_hidden under the flag -Wshadow-ivar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5f625712f622f6e57de17b6f7eec242956b993ee 22-Sep-2011 Anna Zaks <ganna@apple.com> ST->scanReachableSymbols() is creating a SubRegionMap (SRM) on every call since one SRM is created in each ScanReachableSymbols instance. Creating the object just once and calling only scan inside the loop gives ~ 14% speed up of the StaticAnalyzer run (Release+Asserts).

Pull out the declaration of the ScanReachableSymbols so that it can be used directly. Document ProgramState::scanReachableSymbols() methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140323 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
77b6de07be9186063c12928d2e9785a5d4eecbf6 22-Sep-2011 David Blaikie <dblaikie@gmail.com> ArrayRef-ifying the fields passed to Sema::ActOnFields


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140293 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a71f9d0a5e1f8cafdd23a17e292de22fdc8e99ff 22-Sep-2011 David Blaikie <dblaikie@gmail.com> ArrayRef-ifying the UnexpandedParameterPacks passed to Sema::CheckParameterPacksForExpansion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140290 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4278c654b645402554eb52a48e9c7097c9f1233a 21-Sep-2011 David Blaikie <dblaikie@gmail.com> ArrayRef-ifying Function/BlockDecl's setParams


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f250365ce65412d7d4e331fccf042b6e974c2f14 21-Sep-2011 Douglas Gregor <dgregor@apple.com> Diagnose attempts to write a templated data member, from Stepan
Dyatkovskiy! Fixes PR10896.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ca82a82082edc982a1fb5fcfef2dd2c8cf9bc824 21-Sep-2011 John McCall <rjmccall@apple.com> Enforce access control for conversion operators used in contextual
conversions (rather than just call-arguments).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140244 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
09ca9ef5f92cf4375a19bf7a80d571779c9f370f 21-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Fix a bug where PathDiagnosticLocation did not generate a valid range and add asserts to check validity of locations early on. Ignore invalid ranges in PathDiagnosticPiece (they could be added by checker writers).

Addresses radar://10124836 and radar://radar10102244.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140218 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
290ad8c8eb1546692b20c4095ee441023f2f1005 21-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Merge ASTReader::LoadPreprocessedEntity with ReadPreprocessedEntity
and don't store the ID for each preprocessed entity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140208 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
ef70724e66d8ede0edbe260fbcdd9781688bb1fd 21-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor PathDiagnosticLocation: Remove SourceRange member from PathDiagnosticLocation - FullSourceLoc Loc and PathDiagnosticRange Range are sufficient.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140206 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
c20f399889f53f74eef0404388de4086b36d2948 21-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor PathDiagnosticLocation: Add comments. Remove the last constructor which could allow invalid locations to slip in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140200 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
bc0a3016b9fd51f84780f0f82fb0f7f2ca93e8ff 21-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove dead code. (This code is trying to implement the idea that PathDiagnosticClient could implement DiagnosticClient and has been dead for a while).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140198 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
5555bf78e0a76337f7149669723bf4f3f9ddbc1c 21-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove PreprocessingDirectiveKind since it's not necessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140191 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
de4e0a8e57e643bbe78ad37ad6023c45a8a9f7e2 21-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> The location of the name in MacroDefinition is the beginning of its range,
don't store an extra location for it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140190 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
590dd8e0959d8df5621827768987c4792b74fc06 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor PathDiagnosticLocation: Make PathDiagnosticLocation(SourceLocation...) private. Most of the effort here goes to making BugReport refer to a PathDiagnosticLocation instead of FullSourceLocation.

(Another step closer to the goal of having Diagnostics which can recover from invalid SourceLocations.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140182 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
61ab80a8b35e6fe9363e8ef1b3d27209b0e89349 20-Sep-2011 Chad Rosier <mcrosier@apple.com> [driver] Default to arm mode when using the integrated assembler.
rdar://10125227

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140179 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
b66f4867702697f1f097ab95f8a23a39310430e0 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor PathDiagnosticLocation: Use PointerUnion of LocationContext and AnalysisContext to support creation of PathDiagnosticLocations for checkers which no context sensitivity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140162 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
e97436732c0f20aa15ecbf92a5f905eee888528f 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor PathDiagnosticLocation: Lazily query LocationContext for a ParentMap as needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140147 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
23803374d8db054192ea6fcb766b87e04f26c8fb 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove LocationContext and a dependency from PathDiagnosticLoaction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140146 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
9d8c2b61519cb05ac6737cc542e274f9e2e0552a 20-Sep-2011 John McCall <rjmccall@apple.com> Fix a crash-on-invalid with bad CV-qualification on 'this' in the
presence of an implicit move assignment operator. I think the implicit
copy assignment operator case was also wrong, but just in a "displaying
the wrong diagnostic" way.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140139 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b490c4bb01a5a3a86947851fa66823dda32ed012 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor PathDiagnosticLocation: Pre-compute Range and Location with gen methods on object creation instead of computing on demand. This would allow to remove dependency on the other members which help with construction and might not even be valid at later stages (to be removed later on).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140131 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
1531bb0c69d9afff6a6434e4cadf345eb628b287 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Use more create methods in the PathDiagnostic, cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140130 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
4522e2a9e7fa0313e8e5a388d8f0ab66feccc6af 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] BugReport has a profile method, so reuse it here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140100 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
cf8742e471a712d551d9a348c85050427dce0b4a 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Add a convinience method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140092 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
a2d7e6511a8767dc67381c210601b895a8ebae39 20-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Constify a method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
0c706c29f20b6fa36759fa41333b9c3ec0bd2969 20-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Add list initialization for complex numbers in C. Essentially, this allows "_Complex float x = {1.0f, 2.0f};". See changes to docs/LanguageExtensions.html for a longer description.

<rdar://problem/9397672>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140090 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
8c25fc584ce27d59df9923f153e8a132dde58d04 19-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: introduce support for function scope __local variables

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140068 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
a68c4aff8cd3aada697ad36dc6582d0e09b4b0d2 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] The range map for SLoc offsets is a reversed one, not negated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140066 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
92ddef1bf843e1e18c040d69f48a6bf0bc7c776a 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> In libclang, when visiting preprocessed entities in a source range, use
PreprocessingRecord's getPreprocessedEntitiesInRange.

Also remove all the stuff that were added in ASTUnit that are unnecessary now
that we do a binary search for preprocessed entities and deserialize only
what is necessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140063 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/PreprocessingRecord.h
erialization/ASTReader.h
erialization/ASTSerializationListener.h
erialization/ASTWriter.h
b6441ef9b7285bd1aa77b05b10f473f7a3f413e7 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce local_begin()/local_end() methods in PreprocessingRecord which
return iterators for local, non-loaded, preprocessed entities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140062 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
507097ec40105ed927cb5a744fad98f5875aacac 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] When getting a source location from a file:line:col triplet
check whether the requested location points inside the precompiled preamble,
in which case the returned source location will be a "loaded" one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
efa2ff8603dae51f5f5ed7509a503f477498ad22 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Break SourceManager::translateFileLineCol into translateLineCol that returns the
source location of line:col of a specific FileID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2dbaca748bc3eb6539f417bd8354c930bdf88fa4 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce PreprocessingRecord::getPreprocessedEntitiesInRange()
which will do a binary search and return a pair of iterators
for preprocessed entities in the given source range.

Source ranges of preprocessed entities are stored twice currently in
the PCH/Module file but this will be fixed in a subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140058 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/Module.h
a64ccefdf0ea4e03ec88805d71b0af74950c7472 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset.

It already works (and is useful with) macro locs as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
erialization/ASTReader.h
5a4374812c56aa60672e291b07e14d3696bbb5a6 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make ASTReader/ASTWriter friends of SourceLocation. They already
depend on internal knowledge of SourceLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
erialization/ASTReader.h
aa6edaeb35e02a07bd4840c0159900754f083ce5 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce isLoadedSourceLocation() and isLocalSourceLocation() methods in SourceManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
1f6d22550161fffbe82ea9a8a143b2c1247f5f3c 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Const-ify some methods in ASTReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140054 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
ac1ffcc55b861737ba2466cd1ca1accd8eafceaa 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Preload the PreloadSLocEntries through the SourceManager and
don't call ReadSLocEntryRecord() directly because the entry may have
already been loaded in which case calling ReadSLocEntryRecord()
directly would trigger an assertion in SourceManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
4d1cbcf6b9aaae7f82c6e332f46b2ad2d8971bd0 19-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> For SourceManager::isBeforeInTranslationUnit, when one location
points at the inclusion/expansion point of the other, regard this
as coming before the other.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
950be71c745409e373ae8a834490f9026c8ac222 19-Sep-2011 Richard Trieu <rtrieu@google.com> Changes to the name lookup have caused a regression in the digraph fix-it hint.
For instance:

template <class T> void E() {};
class F {};

void test() {
::E<::F>();
E<::F>();
}

Gives the following error messages:

error: found '<::' after a template name which forms the
digraph '<:' (aka '[') and a ':', did you mean '< ::'?
::E<::F>();
^~~
< ::
error: expected expression
E<::F>();
^
error: expected ']'
note: to match this '['
E<::F>();

This patch adds the digraph fix-it check right before the name lookup,
moves the shared checking code to a new function, and adds new
tests to catch future regressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140039 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
24dd9ad9001d1aa16223de135d7e4ed34e94b207 19-Sep-2011 Erik Verbruggen <erikjv@me.com> Removed an unused field and its accessors methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140017 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
1d4e8e9340c9699069a33a74562e883a305f7607 17-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objc - Treat type of 'self' in class methods as root of
class of this method. // rdar://10109725


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139989 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
62ec1f2fd7368542bb926c04797fb07023547694 17-Sep-2011 Francois Pichet <pichet2000@gmail.com> Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag.

Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
arse/Parser.h
ae55608a29d61737b7c5390e2d1bb30ab8d5febb 17-Sep-2011 Francois Pichet <pichet2000@gmail.com> As per discussion with Doug Gregor on the IRC channel, introduce a new compiler switch: -fms-compatility.

Microsoft specific tweaking will now fall into 2 categories:

- fms-extension: Microsoft specific extensions that should never change the meaning of an otherwise well formed code. Currently map to LangOptions::Microsoft. (To be clearer, I am planning to change the name to LangOptions::MicrosoftExt).

- fms-compatibility: Really a MSVC emulation mode. Map to LangOptions::MicrosoftMode. Can change the meaning of an otherwise standard conformant program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
river/CC1Options.td
river/Options.td
61c5e340c26971d195bd27232e7f2e71be24bb52 17-Sep-2011 Douglas Gregor <dgregor@apple.com> With modules, we can end up loading a new module after we've seen an
arbitrary amount of code. This forces us to stage the AST writer more
strictly, ensuring that we don't assign a declaration ID to a
declaration until after we're certain that no more modules will get
loaded.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139974 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
0cd59482abd8aec9ed1eaad11f5fe9c1e42639f6 16-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor: make PathDiagnosticLocation responsible for validation of SourceLocations (commit 5 of ?):
- Get rid of PathDiagnosticLocation(SourceRange r,..) constructor by providing a bunch of create methods.
- The PathDiagnosticLocation(SourceLocation L,..), which is used by crate methods, will eventually become private.
- Test difference is in the case when the report starts at the beginning of the function. We used to represent that point as a range of the very first token in the first statement. Now, it's just a single location representing the first character of the first statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139932 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
fba18aa8f2cd1994dc65e8cb9f4be201c560dc0b 16-Sep-2011 Douglas Gregor <dgregor@apple.com> Add an experimental flag -fauto-module-import that automatically turns
#include or #import direcctives of framework headers into module
imports of the corresponding framework module.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139860 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/PreprocessorOptions.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/Preprocessor.h
dd22509c82eb7681a0f46b41d61cb2e25a4d8fa1 15-Sep-2011 Richard Trieu <rtrieu@google.com> Finish the lex->LHS and rex->RHS cleanup in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139856 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4ebd45f4279d84416568ada6adf56044bdf391b7 15-Sep-2011 Douglas Gregor <dgregor@apple.com> Detect cyclic module dependencies in a manner that is rather more
graceful than running out of stack space.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
rontend/PreprocessorOptions.h
7489889dd4e0fb5cd4b4176c59283da3b217f14e 15-Sep-2011 Douglas Gregor <dgregor@apple.com> Eliminate the list of modules from the preprocessor options. This was
used back when we had an -import-module command-line option, but it's
no longer used (or useful).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139829 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
531dcce3e5f5d5234520df7593e285d7dd007456 15-Sep-2011 Douglas Gregor <dgregor@apple.com> Eliminate the unused -create-module cc1-level option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139827 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
4fdf97bf51d2a156cec3232efd6dae110aa02aa0 15-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor: make PathDiagnosticLocation responsible for validation of SourceLocations (commit 2 of ?):
- Fix a fixme and move the logic of creating a PathDiagnosticLocation corresponding to a ProgramPoint into a PathDiagnosticLocation constructor.
- Rename PathDiagnosticLocation::create to differentiate from the added constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139825 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
74558b4c2f4136b0d89bbaa974df1070593b355a 15-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: changing naming in error messages based on reviewer comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e24692b30adbe8144597678a0e3354912e99c747 15-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Overhaul how preprocessed entities are [de]serialized.

-Use an array of offsets for all preprocessed entities
-Get rid of the separate array of offsets for just macro definitions;
for references to macro definitions use an index inside the preprocessed
entities array.
-Deserialize each preprocessed entity lazily, at first request; not in bulk.

Paves the way for binary searching of preprocessed entities that will offer
efficiency and will simplify things on the libclang side a lot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139809 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
69f5d14bae44f05b22fa50bb87122a61081fcd57 15-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: cleaning up FIXME for trylocks

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
4e4bc75d3570835e13183c66ac08974cdc016007 15-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: refactoring various out of scope warnings to use the same inteface. This eliminates a lot of unnecessary duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139801 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
asic/DiagnosticSemaKinds.td
220ac8c175cb1bf9b18d82eefe036995d7a2164d 15-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor: make PathDiagnosticLocation responsible for validation of SourceLocations (commit 2 of ?):
- Modify all PathDiagnosticLocation constructors that take Stmt to also requre LocationContext.
- Add a constructor which should be used in case there is no valid statement/location (it will grab the location of the enclosing function).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139763 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
b50dd472cd6c8b13213626f13a928dbe41581f09 14-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: small fixes in comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139733 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
8ee51ef211bfed9ce04bc93835e19aee014f2fae 14-Sep-2011 Douglas Gregor <dgregor@apple.com> Teach the driver to always pass down a module cache path. If none is
supplied, use something derived from the system's temporary
directory. Depends on LLVM r139725.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139726 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
df8327c28d293cf7c6952b86dba26863235dcc0f 14-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: reverting to use separate warning for requirement to hold any lock

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
19903465e960329c0d5d93327f4046d036b0bc75 14-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: adding additional documentation to the main thread safety interface, and making the destructor for the thread safety handler pure virtual

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
7c24334bedf59bd9af57ee53eb8f6d9f6a50ca9b 14-Sep-2011 Kaelyn Uhrain <rikka@google.com> Plug an abstraction leak and fix a crasher in DiagnoseInvalidRedeclaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139718 91177308-0d34-0410-b5e6-96231b3b80d8
ema/TypoCorrection.h
297b20ac5c1a638e650a7d85c2eab9916bb4ed57 14-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> Use a group for a diagnostics I added late.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
528a499eb84d61667f65b16a13780c135b822f6b 14-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: warn when a 'retain' block property is
declared which does not force a 'copy' of the block literal
object. // rdar://9829425


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
33e8491d7cf757812b9f8d126e0368c3ac0d2dd6 14-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Remove redundant copy constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139704 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
4d353eb8af7324c0ee3736c736668f6c9b162ee0 14-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] After CFG has been linearized, we can have a situation where an ExpoledNode has an invalid SourceLocation (which has no correspondence in the source code). This commit is the first step to solve this problem.
- It adds LocationContext to the PathDiagnosticLocation object and uses it to lookup the enclosing statement with a valid location.
- So far, the LocationContext is only available when the object is constructed from the ExplodedNode.
- Already found some subtle bugs(in plist-output-alternate.m) where the intermediate diagnostic steps were not previously shown.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139703 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
43f48b0b1bc763dc56db6e01de4fcc44ad389bef 14-Sep-2011 Anna Zaks <ganna@apple.com> [analyzer] Refactor: Make PathDiagnosticLocation responsible for creating a valid object given an ExploadedNode (the same logic can be reused by other checkers).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139672 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
6e975c4517958bcc11c834336d340797356058db 14-Sep-2011 Douglas Gregor <dgregor@apple.com> For modules, use a hash of the compiler version, language options, and
target triple to separate modules built under different
conditions. The hash is used to create a subdirectory in the module
cache path where other invocations of the compiler (with the same
version, language options, etc.) can find the precompiled modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139662 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
river/CC1Options.td
rontend/CompilerInvocation.h
rontend/HeaderSearchOptions.h
rontend/PreprocessorOptions.h
ex/HeaderSearch.h
1c7e0472f5683a8ade62285f366637050cf113e5 13-Sep-2011 Douglas Gregor <dgregor@apple.com> When building a module on-demand, clear out the "non-modular" language
and preprocessor options (such as macro definitions) first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/LangOptions.h
rontend/PreprocessorOptions.h
18aa2ff4641847d7f8866e8c5912d4d0ddb858ce 13-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename InterFace -> Interface, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
6dc6f008994472cf4da321855e8c51c39720f3ed 13-Sep-2011 John McCall <rjmccall@apple.com> A strong property of block type has "copy" setter semantics, not "retain".
This is consistent with the behavior of assigning into a __strong l-value,
and it's also necessary for ensuring that the ivar doesn't end up a dangling
reference. We decided not to change the behavior of "retain" properties, but
just to make them warnings/errors when of block type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f1e7af36d6673185994b3d1751cf7e9a9a1491b8 13-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add the location of the interface reference to IBOutletCollectionAttr.
Depends on a llvm tablegen commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139618 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
265941bc308d65cc270d5c4de5806f37ce405606 13-Sep-2011 John McCall <rjmccall@apple.com> Refactoring, mostly to give ObjCPropertyDecls stronger invariants for
their semantic attributes and then to take advantage of that.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
7d5e81bf24dbfd334a7c62a7ae51043c79a69aa9 13-Sep-2011 Douglas Gregor <dgregor@apple.com> Switch the serialization of LangOptions over to use the .def file. We
should no longer have the serialization of LangOptions out of sync
with the structure itself (yay).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.def
asic/LangOptions.h
e289d81369914678db386f6aa86faf8f178e245d 13-Sep-2011 Douglas Gregor <dgregor@apple.com> Switch LangOptions over to a .def file that describes header of the
language options. Use that .def file to declare the LangOptions class
and initialize all of its members, eliminating a source of annoying
initialization bugs.

AST serialization changes are next up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.def
asic/LangOptions.h
8c7f4bca64d5128311ce50449ae9d2048c2ffea4 13-Sep-2011 Chad Rosier <mcrosier@apple.com> [driver] Add follow up comment for r139551 to ensure the unused option is not
removed in the future.
rdar://10110352 and PR10908

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139602 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
768d6cae40ad4ff3aed5483269d068ff7a45e229 13-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep the source range of attributes. Depends on a llvm tablegen commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139600 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ema/Sema.h
ffcc3105d223899740e79f3f8199f3881df4d1de 13-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Record the full source range of an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ema/AttributeList.h
c985b88efc9188845952ab524fe6d4717705257b 13-Sep-2011 Francois Pichet <pichet2000@gmail.com> In Microsoft mode, downgrade "goto into protected scope" from error to warning if we are jumping over a variable initialization via a goto.

This fixes a few errors when parsing MFC code with clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
83754162f698a5dafad93fb89be0953651a604d0 13-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Add a bit to the CFGBlock to track when it contains a no-return
CFGElement. This will allow greatly simplifying the logic in
-Wreturn-type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139593 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
c5d9a90b3a3c16324e0cceeccec3d2993888deb6 13-Sep-2011 John McCall <rjmccall@apple.com> Don't use native atomics on ivars whose size is not a power of two,
even on architectures that support unaligned access (which is the
only way this is otherwise legal, given that ivars apparently do
not honor alignment attributes).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
c8cfc74bdcc999828bc232294d937fb191940d5b 13-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Enhance the CFG construction to detect no-return destructors for
temporary objects and local variables. When detected, these split the
block, marking the new one as having only the exit block as a successor.
This prevents a large number of false positives in warnings sensitive to
no-return constructs such as -Wreturn-type, and fixes the remainder of
PR10063 along with several variations of this bug that had not been
reported. The test cases are extended across the board to cover these
patterns.

This also checks in a stress test for these types of CFGs. The stress
test declares some 32k variables, a mixture of no-return and normal
destructors. Previously, this resulted in roughly 2500 CFG blocks, but
didn't model any of the no-return destructors. With this patch, it
results in over 33k blocks, many of them now unreachable.

The nice thing about how the analyzer is set up? This causes *no*
regression in performance of building the CFG. It actually in some cases
makes it faster, as best I can benchmark. The analysis for -Wreturn-type
(and any other that cares about no-return code paths) is technically
slower now as it has to look at many more candidate blocks, but it
computes the correct answer. I have more test cases to follow, I think
they all work now. Also I have further work that should dramatically
simplify analyses in the presence of no-return.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139586 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
78243658c533168d51fd076fba328437932ba6f1 13-Sep-2011 Douglas Gregor <dgregor@apple.com> When compiling a module on-demand, re-use the diagnostics client
already provided. This required a little bit of clean-up in the way
that VerifyDiagnosticsClient managed ownership of its underlying
"primary" client, because now it will no longer always take ownership.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/CompilerInstance.h
rontend/VerifyDiagnosticsClient.h
21cae2059a06f7d89eee169409c9266def1b1aca 13-Sep-2011 Douglas Gregor <dgregor@apple.com> When an import statement fails to find a module in the module cache,
but there is a corresponding umbrella header in a framework, build the
module on-the-fly so it can be immediately loaded at the import
statement. This is very much proof-of-concept code, with details to be
fleshed out over time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139558 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/FileManager.h
ex/HeaderSearch.h
dc3e7255f1a35ca5cf352a40a5952db0e65c7900 13-Sep-2011 Chad Rosier <mcrosier@apple.com> [driver] Ignore the '--' option, rather then fail. Do so to match gcc's
behavior.
rdar://10110352 and PR10908

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139551 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
9a6da6930644b4f2dbe4885b0eb4fc1274ff56a4 12-Sep-2011 Douglas Gregor <dgregor@apple.com> Introduce a cc1-level option to provide the path to the module cache,
where the compiler will look for module files. Eliminates the
egregious hack where we looked into the header search paths for
modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139538 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
ex/HeaderSearch.h
e389585f8a40f80004d3b98b99f3980305ef78a0 12-Sep-2011 Douglas Gregor <dgregor@apple.com> Diagnose attempt to mark function-local declarations as __module_private__.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139519 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a81fffe678107d49a9f1c03d80adf85f18a9867f 12-Sep-2011 Anna Zaks <ganna@apple.com> Doxygen comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139508 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
f3a762a8de396af471f35b77f6897989867c898e 12-Sep-2011 Douglas Gregor <dgregor@apple.com> Remove the restriction on module-private friends. Since the friend
declaration may be the first declaration, we want the ability to that
declaration to be marked module-private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
33e56f3273457bfa22c7c50bc46cf5a18216863d 10-Sep-2011 John McCall <rjmccall@apple.com> Rename the ARC cast kinds to start with "ARC".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
ac5ecf46c51c4e9128612d68ff20d465eb192554 10-Sep-2011 David Blaikie <dblaikie@gmail.com> Correctly referring to the null pointer as 'null' not the macro 'NULL' in the boolean conversion diagnostic message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139465 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4f4f349208b2b2307454e169ac7b039e989f003f 10-Sep-2011 David Blaikie <dblaikie@gmail.com> Show either a location or a fixit note, not both, for uninitialized variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139463 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dc05b11c67331016473fbc7909827b1b89c9616b 10-Sep-2011 John McCall <rjmccall@apple.com> When converting a block pointer to an Objective-C pointer type, extend
the lifetime of the block by copying it to the heap, or else we'll get
a dangling reference because the code working with the non-block-typed
object will not know it needs to copy.

There is some danger here, e.g. with assigning a block literal to an
unsafe variable, but, well, it's an unsafe variable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
ema/Sema.h
b3321093f6ead084427eb4a6621832fc4ee2f5de 10-Sep-2011 Douglas Gregor <dgregor@apple.com> Fix a diagnostics crasher with -Wmissing-noreturn in Objective-C
methods, and improve the diagnostic slightly along the way. Fixes
<rdar://problem/10098695>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139446 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
02a5e875cca1ce2f471dad06fb5557346d99c164 10-Sep-2011 Douglas Gregor <dgregor@apple.com> Don't crash when we fail to load a module. It's unbecoming of a
well-bred compiler like Clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139442 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
08e0bc16b3312c27e87d33be7dcf3d4fe5bdd2e2 10-Sep-2011 Douglas Gregor <dgregor@apple.com> Kill of the Decl::PCHLevel field entirely. We now only need to know
whether a Decl was deserialized from an AST file (any AST file).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139438 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/ASTUnit.h
a1364be341550d71dff27dd8de0c6872ba6c707e 10-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Extend the Stmt AST to make it easier to look through label, default,
and case statements. Use this to make the logic in the CFG builder more
robust at finding the actual statements within a compound statement,
even when there are many layers of labels obscuring it.

Also extend the test cases for a large chunk of PR10063. Still more work
to do here though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
919814def90acecd25a35445862f0c0ff72a9b05 10-Sep-2011 Douglas Gregor <dgregor@apple.com> Introduce a new predicate Decl::isFromASTFile() to determine whether a
declaration was deserialized from an AST file. Use this instead of
Decl::getPCHLevel() wherever possible. This is a simple step toward
killing off Decl::getPCHLevel().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139427 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ema/Lookup.h
d5b16055782034ca90153880c36bd88b59c63aa0 10-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: removing unnecessary import and reordering import list

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139426 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
77f68bb90af93b95045fb994e7cd68137adcc132 10-Sep-2011 Julien Lerouge <jlerouge@apple.com> Bring llvm.annotation* intrinsics support back to where it was in llvm-gcc: can
annotate global, local variables, struct fields, or arbitrary statements (using
the __builtin_annotation), rdar://8037476.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139423 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/Builtins.def
asic/DiagnosticSemaKinds.td
712f2fcb70ae2eb0cb684d565e7d2cb76881006b 10-Sep-2011 Douglas Gregor <dgregor@apple.com> In the ASTReader, replace the never-NULL Preprocessor pointer with a
Preprocessor reference. Simplify some code along the way, so there is
no separate "initialize the preprocessor" step.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139418 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
359427794704666ff7a5a933ace11c5256fa3af7 09-Sep-2011 Douglas Gregor <dgregor@apple.com> In ASTReader, replace the never-NULL ASTContext pointer with an
ASTContext reference. Remove all of the extra checking and logic that
was used to cope with a NULL ASTContext. No effective functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139413 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
6274d30d77870393d83a404dd223b8005f2b8cd5 09-Sep-2011 Douglas Gregor <dgregor@apple.com> Friends cannot be declared module-private

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
d023aec8907831a18d3514a95b843a7ee06b6b5e 09-Sep-2011 Douglas Gregor <dgregor@apple.com> Specializations cannot be module-hidden. Diagnose attempts to do so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139406 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
13db5cfc4e5f03eb70efe0d227b53b8280f16161 09-Sep-2011 John McCall <rjmccall@apple.com> Treat the weak export of block runtime symbols as a deployment-target
feature akin to the ARC runtime checks. Removes a terrible hack where
IR gen needed to find the declarations of those symbols in the translation
unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139404 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/ToolChain.h
e761230ae3751b525cadd8066c74ec278ee4ef57 09-Sep-2011 Douglas Gregor <dgregor@apple.com> __module_private__ is inherited by redeclarations of an entity, and
must also be present of the first declaration of that entity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
99107ebc0a5aea953b736e12757e0919d5249d43 09-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: This patch deals with previously unhandled cases when building lock expressions. We now resolve this expressions, avoid crashing when encountering cast expressions, and have a diagnostic for unresolved lock expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139370 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
asic/DiagnosticSemaKinds.td
402aa0698fec81e574818a0a6c2000fac0b2c4c6 09-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread Safety: Moving the analysis to a new file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139369 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ThreadSafety.h
a49d1d8a34381802040c3d7fa218e93b457d2b1d 09-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: refactoring test cases

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139368 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
45df9c68b4d8eb2206b884c38e89f56d41452c83 09-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use ArrayRef in ExternalASTSource::SetExternalVisibleDeclsForName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
0bcc9bc6cd46757000245fb7b91302e6ec3478a1 09-Sep-2011 John McCall <rjmccall@apple.com> Contextually converting to 'id' is not a useful operation. Contextually
converting to an arbitrary Objective-C pointer type is. Without
significantly re-implementing anything, change the API to reflect this,
and as a minor optimization, strip the pointer conversion off before
potentially building it.

Mostly, this removes a really bizarre-looking bit of code from
BuildInstanceMessage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139354 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1d9b3b25f7ac0d0195bba6b507a684fe5e7943ee 09-Sep-2011 John McCall <rjmccall@apple.com> Give conversions of block pointers to ObjC pointers a different cast kind
than conversions of C pointers to ObjC pointers. In order to ensure that
we've caught every case, add asserts to CastExpr that strictly determine
which cast kind is used for which kind of bit cast.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139352 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/OperationKinds.h
ST/Type.h
90ab75b5ad328d2b155ec83fd4e80cd0f7af5729 09-Sep-2011 Richard Trieu <rtrieu@google.com> Changed references of BaseTy, MemInitTy, CXXScopeTy, TemplateParamsTy to CXXBaseSpecifier, CXXCtorInitializer, NestedNameSpecifier, TemplateParameterList and removed their typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139350 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
b2fc69097d15f6374b9e5e6101f33960c34acbed 09-Sep-2011 Richard Trieu <rtrieu@google.com> Change references to StmtTy to Stmt and removed typedefs of StmtTy. Also removed typedef of AttrTy since it is not used.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139349 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
8d267c57afb3af418ed5281b7a9bb4555d701a82 09-Sep-2011 Douglas Gregor <dgregor@apple.com> Modules: introduce the __module_private__ declaration specifier, which
indicates that a declaration is only visible within the module it is
declared in.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139348 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/TokenKinds.def
ema/DeclSpec.h
ema/Lookup.h
ema/Sema.h
f81e5a9e3f3ff80c56e4afb4fe6311a8735f36e8 09-Sep-2011 Richard Trieu <rtrieu@google.com> Change all references of type ExprTy to Expr and get rid of the typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139347 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/ParsedTemplate.h
ema/Sema.h
ccd891ae75e9678f1138868e50508c8083d021fa 09-Sep-2011 Richard Trieu <rtrieu@google.com> Capitialize paramater names in SemaExpr.cpp and resolve any parameter name conflicts between declarations and definitions from this and previous refactorings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139346 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5330ee071743b8a896aa46979b020e6c3ca9b1cc 09-Sep-2011 Eric Christopher <echristo@apple.com> Rearrange comment slightly for Bill.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
179b920a8bca0811cf4ae32910925c3f98cca4cc 09-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: small edit to unused variation on warning left in by accident from earlier commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8bccabeac6b98650dfd88bd1fc84e841eb42af4b 08-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread Safety: In C++0x Mutexes are the objects that control access to shared variables, while Locks are the objects that acquire and release Mutexes. We switch to this new terminology.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139321 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
87198c304cc1fae48b7a06ce9faf8b4017981059 08-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> The frexp, modf, and remquo builtins are not 'const'.

These functions return a second value by writing to a pointer argument,
so they cannot be marked 'readnone' which implies that they don't access
memory.

<rdar://problem/10070234>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
978191e0906606e32965cebcf81627d8e8711b13 08-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: Adding basic support for locks required and excluded attributes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a53257c94a4d871e64070f72edb687dcfb08c15d 08-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: shared vs. exclusive locks

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139307 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed9d84a2112e2bd56befb5f4fa8fc5bdf71fafa3 08-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread safety: added support for function scopes in attribute arguments.

This patch was written by DeLesley Hutchins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139302 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ema/Sema.h
eff98fc3561f6b717f6348f04b3f4fe03e934466 08-Sep-2011 Caitlin Sadowski <supertri@google.com> Thread Safety: Patch to implement delayed parsing of attributes within a
class scope.

This patch was also written by DeLesley Hutchins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
MakeLists.txt
akefile
arse/CMakeLists.txt
arse/Makefile
arse/Parser.h
ema/Sema.h
8f7c540ac42370c40ebcdc4b69018c938faf94ec 08-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Fix annotation and getting a "macro expansion" cursor
for a builtin macro expansion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139298 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
29f39425fc7fcaede88a7e573f392975f8dc5e3e 08-Sep-2011 Eric Christopher <echristo@apple.com> Add a block comment explaining how the different source locations work
including some source examples.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139295 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
14068e83f30864ed278fa43c5954404b47e99e7d 08-Sep-2011 David Blaikie <dblaikie@gmail.com> Adding FixIts to static/inline main declaration diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
e97179c675b341927807c718be215c8d1aab8acb 08-Sep-2011 Douglas Gregor <dgregor@apple.com> Implement the Objective-C 'instancetype' type, which is an alias of
'id' that can be used (only!) via a contextual keyword as the result
type of an Objective-C message send. 'instancetype' then gives the
method a related result type, which we have already been inferring for
a variety of methods (new, alloc, init, self, retain). Addresses
<rdar://problem/9267640>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
b8db7cd9ac05c522855631670ec2e97255384f5a 08-Sep-2011 Douglas Gregor <dgregor@apple.com> Optimize the preprocessor's handling of the __import_module__
keyword. We now handle this keyword in HandleIdentifier, making a note
for ourselves when we've seen the __import_module__ keyword so that
the next lexed token can trigger a module import (if needed). This
greatly simplifies Preprocessor::Lex(), and completely erases the 5.5%
-Eonly slowdown Argiris noted when I originally implemented
__import_module__. Big thanks to Argiris for noting that horrible
regression!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/Preprocessor.h
a3e9a969fd25022805a9e0ad827f3729286f6d58 07-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r139222, operator->() in PreprocessingRecord::iterator. It is useful
to meet the requirements of the InputIterator concept.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139261 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
edc08821d3f73514291b339db29aca1a17485e39 07-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objc-gc: More sema work for properties declared 'weak'
in GC mode. // rdar://10073896


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139235 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5770bb707db9169c258859a9e7c935f99a32d64c 07-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Extract the emission of the diagnostic's location into a separate
function. This is really the beginning of the second phase of
refactorings here. The end goal is to have (roughly) three interfaces:

1) Base class to format a single diagnostic suitable for display on the
console.
2) Extension of the base class which also displays a caret diagnostic
suitable for display on the console.
3) An adaptor that implements the DiagnosticClient by delegating to #1
and/or #2 as appropriate.

Once we have these, things like libclang's formatDiagnostic can use #1
and #2 to provide really well formatted (and consistently formatted!)
textual formatting of diagnostics.

Getting there is going to be quite a bit of shuffling. I'm basically
sketching out where the interface boundaries can be drawn for #1 and #2
within the existing classes. That lets me shuffle with a minimum of fuss
and delta. Once that's done, and any of the related interfaces that need
to change are updated, I'll hoist these into separate headers and
re-implement libclang in terms of their interfaces. Long WIP, but
comments at each step welcome. =D

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139228 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
6c57ccec994f09d732a381bb4bb16c79d181e5ac 07-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Move the HilightRange method from TextDiagnosticPrinter down to
CaretDiagnostic. It's completely generic, with nothing to do with the
diagnostic client or info APIs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139227 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
900693b715b3832a42ae87157332baece94ccdd8 07-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Make sure the FunctionDecl's created by "#pragma weak" have correct ParmVarDecl's. PR10878.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139224 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a1e99cc7e9b89b27ea0a0351ef9f1421f62156e5 07-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> operator->() in PreprocessingRecord::iterator is useless since we
are returning a pointer to pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139222 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
5182a1858f4483c7289997d365ba3e103cd7d1b7 07-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Switch the CharSourceRange array to a small vector. The array was
a stack array of a magical size with an assert() that we never
overflowed it. That seems incredibly risky. We also have a very nice API
for bundling up a vector we expect to usually have a small size without
loss of functionality or security if the size is excessive.

The fallout is to remove the last pointer+size parameter pair that are
traced through the recursive caret diagnostic emission.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139217 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
0f74d1e441fdf2229118b7ca5c88db29d5e8f44f 07-Sep-2011 Francois Pichet <pichet2000@gmail.com> In Microsoft mode, if we are inside a template class member function and we can't resolve a function call then create a type-dependent CallExpr even if the function has no type dependent arguments. The goal is to postpone name lookup to instantiation time to be able to search into type dependent base classes.

With this patch in, clang will generate only 37 errors (down from 212) when parsing a typical MFC source file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a7b3f73d06a7181f2228d1605235b1b5484255f 07-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Use ArrayRef for the fixit hint array rather than a pointer and a size.
Clean up loops over the hints to use the more idiomatic iterator form in
LLVM and Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139195 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
f1bb0b049f7292336d3e2229a56e05003820b0f4 06-Sep-2011 Ted Kremenek <kremenek@apple.com> Place 'equality comparison with extraneous parentheses...' into a subgroup of -Wparentheses called -Wparentheses-equality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f8b7f7177d722d254e255a7754446148ef514789 06-Sep-2011 Douglas Gregor <dgregor@apple.com> Implement the Named Return Value Optimization (NRVO) for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139178 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
edc41e163c8f8d0cc69a3fc017beba14262af316 06-Sep-2011 Peter Collingbourne <peter@pcc.me.uk> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139128 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
38f1d680b41f8bb8deb72899c7a45aebaadd0e52 05-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Enable -Wdangling-fields by default in Clang. I've run this warning over
a very large chunk of code and found zero false positives. I've only
found a few bugs, but that likely is because bugs of this nature
actually do manifest. We've also identified several bugs that were
caught by Valgrind, but would have been caught faster and more easily
with this warning.

If anyone has concerns, or this causes fallout on any build bots, lemme
know. I'm happy to just put it under -Wmost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8f4fb190852d3f86787c7e2c3dfc1b96143197ae 04-Sep-2011 Richard Smith <richard-llvm@metafoo.co.uk> PR10458: Finesse behaviour of C++0x features when in pre-0x mode. Accept for-range and auto with an ExtWarn, and produce a -Wc++0x-compat warning in C++98 mode when auto is used as a storage class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139102 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
7d100872341f233c81e1d7b72b40457e62c36862 04-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support code-completion for C++ inline methods and ObjC buffering methods.

Previously we would cut off the source file buffer at the code-completion
point; this impeded code-completion inside C++ inline methods and,
recently, with buffering ObjC methods.

Have the code-completion inserted into the source buffer so that it can
be buffered along with a method body. When we actually hit the code-completion
point the cut-off lexing or parsing.

Fixes rdar://10056932&8319466

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139086 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
arse/Parser.h
bf3380a317ab09ae7f23c1bc17cb562f8175a986 03-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Teach -Wdangling-field to warn about temporaries bound to references as
well.

Also, clean up the flow of the code a bit, and factor things more
nicely.

Finally, add the test case that was missing from my previous
commit (sorry), with new tests added to cover temporaries and other fun
cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139077 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
81c6477bcd39b6b1a0a7d9c38da5ab8cbb6ea565 03-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Add a simple new warning to catch blatantly dangling pointer and
reference members of classes. We've had several bugs reported because of
this, and there's no reason not to flag it right away in the compiler.

Comments especially welcome on the strategy for implementing this
warning (IE, what should trigger this?) and on the text of the warning
itself.

I'm going to extend this to cover obvious cases with temporaries and
beef up the test cases some in subsequent patches. I'll then run it over
a large codebase and make sure its not misbehaving before I add it to
-Wall or turn it on by default. I think this one might be a good
candidate for on by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139075 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d1e5a89226da79f7e6f43d40facc46abda9e5245 02-Sep-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Remove TransferFuncs.h, then deal with the fallout.

And with that, TransferFuncs is gone!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139003 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/LocalCheckers.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/TransferFuncs.h
17a38e2636a8b1ce473fc6504c4b16cb09db29f4 02-Sep-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Move the knowledge of whether or not GC is enabled for the current analysis from CFRefCount to ExprEngine.

Remove TransferFuncs from ExprEngine and AnalysisConsumer.

Demote RetainReleaseChecker to a regular checker, and give it the name osx.cocoa.RetainCount (class name change coming shortly). Update tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138998 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
09a26ad31d63b3faa9f1fe0041156746da84cdf5 02-Sep-2011 Richard Trieu <rtrieu@google.com> Refactor CheckAddressOfOperand() by pulling out redundant code and moving hard coding strings from SemaExpr.cpp to DiagnosticSemaKinds.td.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f8a1e51c48761ee1d7803c3fa35ac94f42ebb55e 02-Sep-2011 Douglas Gregor <dgregor@apple.com> Always construct an ASTReader with a non-NULL ASTContext and
Preprocessor, eliminating the constructor that was used by ASTUnit
(which didn't provide an ASTContext or Prepreprocessor). Ensuring that
both objects are non-NULL will simplify module loading (but none of
that is done yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138986 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
bcfd1f55bfbb3e5944cd5e03d07b343e280838c4 02-Sep-2011 Douglas Gregor <dgregor@apple.com> Extend the ASTContext constructor to delay the initialization of
builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
998b3d3e8528ebd9d2c5d78d3a82edd90a8953a4 02-Sep-2011 Douglas Gregor <dgregor@apple.com> Allow the preprocessor to be constructed without performing target-
and language-specific initialization. Use this to allow ASTUnit to
create a preprocessor object *before* loading the AST file. No actual
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138983 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
ex/Preprocessor.h
e2ca828119b8bff4a5c25c6db8ee4fec558451e7 01-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't try keeping a 'LeadingEmptyMacroLoc' in NullStmt. This fails
in the face of buffering C++/ObjC method bodies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ex/Preprocessor.h
ema/Sema.h
898267f67b8131c4bed4430e2cfaf69ccf4c2de1 01-Sep-2011 Richard Trieu <rtrieu@google.com> Extend the self-reference warning to catch when a constructor references itself upon initialization, such as using itself within its own copy constructor.

struct S {};
S s(s);


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138969 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
aec230d29835285777ecc467e268c83b33a2adde 01-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Fix test/ARCMT/remove-statements.m regression due to
Objective-C method buffering(rdar://10056942)

Turned out the same issue existed for C++ inline methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138960 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
3e3cd93b2fd9644e970c389e715c13883faf68b6 01-Sep-2011 Douglas Gregor <dgregor@apple.com> Teach ASTContext and Preprocessor to hold on to references to the same
LangOptions, rather than making distinct copies of
LangOptions. Granted, LangOptions doesn't actually get modified, but
this will eventually make it easier to construct ASTContext and
Preprocessor before we know all of the LangOptions.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138959 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/ASTUnit.h
ex/Preprocessor.h
erialization/ASTReader.h
7143aab97c6e849a5a5005b7853b8c7d5af008ed 01-Sep-2011 Douglas Gregor <dgregor@apple.com> Modules hide macro definitions by default, so that silly things like
include guards don't show up as macro definitions in every translation
unit that imports a module. Macro definitions can, however, be
exported with the intentionally-ugly #__export_macro__
directive. Implement this feature by not even bothering to serialize
non-exported macros to a module, because clients of that module need
not (should not) know that these macros even exist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/TokenKinds.def
ex/MacroInfo.h
ex/Preprocessor.h
erialization/ASTWriter.h
e6b8d68a927368b06ac06cc9ac9e7f60aa966d5f 01-Sep-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support importing of ObjC categories from modules.

The initial incentive was to fix a crash when PCH chaining categories
to an interface, but the fix was done in the "modules way" that I hear
is popular with the kids these days.

Each module stores the local chain of categories and we combine them
when the interface is loaded. We also warn if non-dependent modules
introduce duplicate named categories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/Module.h
50c909bd837f00265034d876736e2db47686be38 01-Sep-2011 Chandler Carruth <chandlerc@gmail.com> Create a CaretDiagnostic class to hold the logic for emitting
(unsurprisingly) caret diagnostics. This is designed to bring some
organization to the monstrous EmitCaretDiagnostic function, and allow
factoring it more easily and with less mindless parameter passing.

Currently this just lifts the existing function into a method, and
splits off the obviously invariant arguments to be class members. No
functionality is changed, and there are still lots of warts to let
existing code continue functioning as-is. Definitely WIP, more cleanups
to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138921 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
8697d308c1bdd50e5c45757ac11be701c26e9e97 01-Sep-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: this patch (re)introduces objective-c's default property
synthesis. This new feature is currently placed under
-fobjc-default-synthesize-properties option
and is off by default pending further testing.
It will become the default feature soon.
// rdar://8843851


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138913 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e082af17d4b425a49f7f8bccc2a99810f0072828 31-Aug-2011 Douglas Gregor <dgregor@apple.com> Switch the "no module found" default-fatal warning to a default-fatal error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138909 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
819e74544a326b90d13aa73e6497b187c6545ff5 31-Aug-2011 John McCall <rjmccall@apple.com> Don't assert when diagnosing a missing cast of an unknown-anytype
message send to an unknown method.

rdar://problem/9416370, redux.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
65030af6526748ce11534e92f0ccefc44091ba13 31-Aug-2011 Douglas Gregor <dgregor@apple.com> Switch __import__ over to __import_module__, so we don't conflict with
existing practice with Python extension modules. Not that Python
extension modules should be using a double-underscored identifier
anyway, but...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138870 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
ex/Preprocessor.h
ema/Sema.h
140ab234c23f392d5422691c5de1ee3c15026def 31-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c - This patch buffers method implementations
and does the Sema on their body after the entire
class/category @implementation is seen. This change allows messaging
of forward private methods, as well as, access to
synthesized ivars of properties with foward synthesize
declarations; among others. In effect, this patch removes
several restrictions placed on objective-c due to in-place
semantics processing of methods.
This is part of // rdar://8843851.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138865 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
b0656ec72e25e5c8e463c2dc39914636f0cb06d1 31-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Improve the diagnostic text for -Wmissing-noreturn to include the name
of the function in question when applicable (that is, not for blocks).
Patch by Joerg Sonnenberger with some stylistic tweaks by me.

When discussing this weth Joerg, streaming the decl directly into the
diagnostic didn't work because we have a pointer-to-const, and the
overload doesn't accept such. In order to make my style tweaks to the
patch, I first changed the overload to accept a pointer-to-const, and
then changed the diagnostic printing layer to also use
a pointer-to-const, cleaning up a gross line of code along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
f84139a1331c63c998e8b7d54148c75ac0b48ccd 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Change err_pp_file_not_found back to an Error; when it's a Warning, we suppress it in system headers. And it is not a good idea to suppress it in system headers. (This was originally changed in r134996 to implement -MG.)

Fixes <rdar://10041960>. And also brings down the number of warnings without a flag by one :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138842 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
1155c42e7b1b4e401bb0a331a6d715d637958c75 31-Aug-2011 Douglas Gregor <dgregor@apple.com> Allow C99 hexfloats in C++0x mode. This change resolves the standards
collision between C99 hexfloats and C++0x user-defined literals by
giving C99 hexfloats precedence. Also, warning about user-defined
literals that conflict with hexfloats and those that have names that
are reserved by the implementation. Fixes <rdar://problem/9940194>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138839 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
85ea7aa961deac1d754f610af8062ae3f8b4e2a5 30-Aug-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Declare and define implicit move constructor and assignment operator.

This makes the code duplication of implicit special member handling even worse,
but the cleanup will have to come later. For now, this works.
Follow-up with tests for explicit defaulting and enabling the __has_feature
flag to come.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
955fadbdfecfa24a590febe66a86519096787f2d 30-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove a few mutating ObjCCategoryDecl methods.

Remove
-setClassInterface
-setNextClassCategory
-insertNextClassCategory

and combine them in the Create function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3b84ab9f2adff42dcae3509c854a446b95917a10 30-Aug-2011 Jordy Rose <jediknil@belkadan.com> Remove obsolete ObjCInferRelatedReturnType from LangOptions...the correct option is ObjCInferRelatedResultType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1335cf086f85a6ec6165a91e60828d8d5ea08cec 30-Aug-2011 Caitlin Sadowski <supertri@google.com> Thread safety: Adding a name to the thread safety diagnostic group to prevent typos

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138783 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
05b436ef550837e2141c55c590fb16010b8658d8 30-Aug-2011 Caitlin Sadowski <supertri@google.com> Thread safety: added basic handling for pt_guarded_by/var and guarded_by/var annotations. We identify situations where we are accessing (reading or writing) guarded variables, and report an error if the appropriate locks are not held.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138774 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
10af87932fe4bffad539b24d512a33a1803daeae 29-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> Minor clean up of objc's decl context stuff.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138742 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
80cb6e69d9e85231588ae604e4bc2bc9a07389af 29-Aug-2011 Nico Weber <nicolasweber@gmx.de> Warn on missing [super finalize] calls.

This matches gcc's logic. Second half of PR10661.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138730 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/IdentifierTable.h
ema/Sema.h
f5e39ece75b18c9ce19351929d4879ad9731e7f5 28-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Header cleanup to decrease coupling (and recompilation). No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138729 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugType.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
dbd658e139b3e0bf084f75feaea8d844af9e319f 28-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Introduce a new callback for checkers, printState, to be used for debug-printing the contents of a ProgramState.

Unlike the other callbacks, this one is a simple virtual method, since it is only to be used for debugging.

This new callback replaces the old ProgramState::Printer interface, and allows us to move the printing of refcount bindings from CFRefCount to RetainReleaseChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138728 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
taticAnalyzer/Core/PathSensitive/TransferFuncs.h
93bd5ca766c4d7906878f4ffe76ce1b2080e540b 28-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Remove the ProgramState argument from ExprEngine::evalBind; we were ignoring it anyway. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138720 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
e38dd95dddb8f1b38469c8d0e28aa1c660489324 28-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Migrate argument invalidation from CFRefCount to ExprEngine.

This is a common path for function and C++ method calls, Objective-C messages and property accesses, and C++ construct-exprs.

As support, add message receiver accessors to ObjCMessage and CallOrObjCMessage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138718 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
537716ad8dd10f984b6cfe6985afade1185c5e3c 28-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Change the check::RegionChanges callback to include the regions explicitly requested for invalidation.

Also, allow CallOrObjCMessage to wrap a CXXConstructExpr as well.

Finally, this allows us to remove the clunky whitelisting system from CFRefCount/RetainReleaseChecker. Slight regression due to CXXNewExprs not yet being handled in post-statement callbacks (PR forthcoming).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138716 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
b8607398a5e1e552f82a86d1d8c3a4031ac4c946 27-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c - Make warning on unimplemented protocols point
to class implementation where it is supposed to be
implemented. // rdar://10009982.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138714 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
07453ac7b3d46f930733b44a593737bdd98706b6 27-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Rename current PathDiagnosticClient::HandlePathDiagnostic() to HandlePathDiagnosticImpl(), and slot in new HandlePathDiagnostic() for potentially handling concurrent access to PathDiagnosticClients (in the future).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138713 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
95ed7784a335aca53b0c6e952cf31a4cfb633360 27-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: Treat top-level objective-c declarations
, such as list of forward @class decls, in a DeclGroup
node. Deal with its consequence throught clang. This
is in preparation for more Sema work ahead. // rdar://8843851.
Feel free to reverse if it breaks something important
and I am unavailable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Parser.h
ema/Sema.h
6be16fe900bdd1e5f677d23ae34fffead5bcfc77 27-Aug-2011 Douglas Gregor <dgregor@apple.com> Take an entirely different approach to handling the "parsing" of
__import__ within the preprocessor, since the prior one foolishly
assumed that Preprocessor::Lex() was re-entrant. We now handle
__import__ at the top level (only), after macro expansion. This should
fix the buildbot failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/Preprocessor.h
5f8d604246976a93a73549b07bbc8ee0b2061b50 27-Aug-2011 John McCall <rjmccall@apple.com> The lvalue-to-rvalue on structs in C++ is actually part
of default argument promotion and needs to happen unconditionally.
This is particularly semantically important in C++0x.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138691 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
6748ae15b3eed61b3b61f9b77470a802a1643fbb 27-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Twinify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138689 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/FileRemapper.h
62088e3317c74a3a8baf2db3e1bd7ab0b7ddc590 27-Aug-2011 Ted Kremenek <kremenek@apple.com> Control 'invalid conversion specifier' warnings under a subflag (-Wformat-invalid-specifier) of -Wformat. Fixes <rdar://problem/10031930>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
16f6c03d67a1fbcce8a85eb3849fcf8234f99344 27-Aug-2011 Douglas Gregor <dgregor@apple.com> Silence a GCC warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138683 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
831c6313dfa36f297094cd593a9dd3cb60649362 27-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove the -import-module option. It's no longer useful

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138681 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
6aa52ec6b969faabf3764baf79d89810b8249a7e 27-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce support for a simple module import declaration, which
loads the named module. The syntax itself is intentionally hideous and
will be replaced at some later point with something more
palatable. For now, we're focusing on the semantics:
- Module imports are handled first by the preprocessor (to get macro
definitions) and then the same tokens are also handled by the parser
(to get declarations). If both happen (as in normal compilation),
the second one is redundant, because we currently have no way to
hide macros or declarations when loading a module. Chris gets credit
for this mad-but-workable scheme.
- The Preprocessor now holds on to a reference to a module loader,
which is responsible for loading named modules. CompilerInstance is
the only important module loader: it now knows how to create and
wire up an AST reader on demand to actually perform the module load.
- We search for modules in the include path, using the module name
with the suffix ".pcm" (precompiled module) for the file name. This
is a temporary hack; we hope to improve the situation in the
future.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138679 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
asic/IdentifierTable.h
asic/TokenKinds.def
rontend/ASTUnit.h
rontend/CompilerInstance.h
ex/ModuleLoader.h
ex/Preprocessor.h
arse/Parser.h
ema/Sema.h
f43b5e84aa982afacd87a225440ec88a9b66c1a0 27-Aug-2011 Chad Rosier <mcrosier@apple.com> Cleanup r138662 per Ben and David's suggestions, thanks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138670 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
2ea054fbc59ed19b8e3304e7e7cbdd56a5a5120f 27-Aug-2011 Douglas Gregor <dgregor@apple.com> Teach the ASTReader how to avoid cycles when loading declarations that
are lexically within a particular DeclContext. Test forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138668 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ex/ModuleLoader.h
fe87fc73c0091a8d6ba04b7e3b5f144d4a0517a3 26-Aug-2011 Chad Rosier <mcrosier@apple.com> [driver] When generating temporary files allow a prefix to be added. In many
cases we want the prefix to be the original file name less the suffix. For an
input such as test.c to named temporary would be something like test-3O4Clq.o
Part of <rdar://problem/8314451>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138662 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
9414449e299036efbd411d92266983dfc24e24e9 26-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: Mention property's attribute by name when
finding life-time conflict with its declared ivar.
// rdar://10007230


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
782f63ecd124f9384f988dc7e0cf4ae1540c15f6 26-Aug-2011 Jeffrey Yasskin <jyasskin@google.com> Handle CXXTempObjectRegion in StackAddrEscapeChecker.

Also convert stack-addr-ps.cpp to use the analyzer instead of just Sema, now
that it doesn't crash, and extract the stack-block test into another file since
it errors, and that prevents the analyzer from running.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138613 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
1b9060553221720152e12981109549e0a1d8e3a1 26-Aug-2011 Chad Rosier <mcrosier@apple.com> [driver] Add -mglobal-merge/-mno-global-merge machine options to enable/disable merging of
globals during codegen.
Fixes <rdar://problem/10017909>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138612 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
321d70fbde6a0d584a05845f605744889193e70b 26-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Increase the number of possible checks for a checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138609 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
b5af843a20e237ad1a13ad66a867e200695b8c8e 26-Aug-2011 Douglas Gregor <dgregor@apple.com> Eliminate the -chained-pch flag and all of the frontend and libclang options associated with it. Chained PCH is the only way to build a PCH file that includes another PCH file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138597 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTUnit.h
rontend/FrontendOptions.h
9293ba8e26fcba18505b273ecc9b66645133fcce 26-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove the Chaining argument from the PCH/module generator. It's no longer used

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138596 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
erialization/ASTWriter.h
467dc88512b4ba4bb16e274ea3771dc1415d31da 26-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce a -cc1 option "-emit-module", that creates a binary module
from the given source. -emit-module behaves similarly to -emit-pch,
except that Sema is somewhat more strict about the contents of
-emit-module. In the future, there are likely to be more interesting
differences.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
arse/ParseAST.h
ema/Sema.h
erialization/ASTWriter.h
6f155de99c59af890817146ec8526bafb6560f1f 26-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Fix getting a cursor that points inside tag definition that is part
of a type specifier.

e.g. for:

typedef struct _MyS {
int foo;
} MyS;

pointing at field 'foo' would give a cursor for the typedef declaration 'MyS'
instead of the field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
f249bf3b9f8bd3af711ffe9de411fc435871a4f6 25-Aug-2011 Douglas Gregor <dgregor@apple.com> Preload source location entries as soon as we've loaded a particular
AST file, rather than waiting until we finish loading the top-level
AST file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138585 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
f09530f88ece49993f1b72271b0417574e897956 25-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> Reverse r138567 until a buildbot failure is investigated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138584 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
c69a292f9f7bee2a7359df18d1db501d8717f0b2 25-Aug-2011 Douglas Gregor <dgregor@apple.com> Move file validation in the ASTReader from "top of chain" validation
to "when loading a particular module" validation, since it was only
validating local information anyway. This shouldn't change anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138583 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
98339b96a8089a6da715487e432c5abfca0ca0df 25-Aug-2011 Douglas Gregor <dgregor@apple.com> Factor the Module and ModuleManager classes out into separate headers
and .cpp files, since ASTReader.cpp was getting way too large. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138582 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/Module.h
erialization/ModuleManager.h
03c107a42fae79e89d0016999a1a04c07d65591a 25-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make Lexer::ComputePreamble accept a LangOptions parameter, otherwise it may be
out-of-sync how a file is compiled. Patch by Matthias Kleine!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138580 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
af6fbe42e4e0bbc42e9bf824ae2a24417ae1665f 25-Aug-2011 Chad Rosier <mcrosier@apple.com> 80-column and spacing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138578 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
d10a381d92a60d4f4c126c4e81045c8ad4636a0b 25-Aug-2011 Douglas Gregor <dgregor@apple.com> Switch ASTReader::GetHeaderFileInfo() from a walk over the module
chain to a proper search.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138574 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
d8e987bee9d39f9131e9be319483265fd894c108 25-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objc -arse: Use DeclGroup for forward class declarations;
as in @class foo, bar. More cleanup to follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138567 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
3d15ab8d0822637ff5e39594c4f34172241cad2e 25-Aug-2011 Douglas Gregor <dgregor@apple.com> Use the module manager's search facility to look for methods with a
given selector, rather than walking the chain backwards. Teach its
visitor how to merge multiple result sets into a single result set,
combining the results of selector lookup in several different modules
into a single result set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138556 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
58fd97a6f4f7c909aeef46b501ab46f3d6eac671 25-Aug-2011 Francois Pichet <pichet2000@gmail.com> Add support for Microsoft __ptr32 keyword.
Patch by Chris Cudmore!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138533 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
c266de97e269c3747ffc2d122fe53185b541cb37 24-Aug-2011 Douglas Gregor <dgregor@apple.com> Don't force the complete deserialization of the visible-declarations
table when serializing an AST file. This was a holdover from the days
before chained PCH, and is a complete waste of time and storage
now. It's a good thing it's useless, because I have no idea how I
would have implemented MaterializeVisibleDecls efficiently in the
presence of modules.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138496 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
erialization/ASTReader.h
erialization/ChainedIncludesSource.h
851c75a279bb4441bc6802d0258ceb4ab64738d4 24-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce a depth-first search of modules into the module manager,
which supports both pre-order and post-order traversal via a visitor
mechanism. Use this depth-first search with a post-order traversal to
give predictable ordering semantics when walking all of the lexical
declarations in the translation unit.

Eventually, module imports will occur in the source code rather than
at the beginning, and we'll have to revisit this walk.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138490 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
14924267950e75c6c1f6fcea39fa507b7168bc39 24-Aug-2011 Anna Zaks <ganna@apple.com> [analyzer] Allow checker writes to specify that no region should be accosiated with the report. (Useful when we report an error on endOfPath or deadSymbols, when the range of the last expression might have nothing to do with the error.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138474 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
0d95f77ba180aee35b74f3bf9f8543477f3af543 24-Aug-2011 Douglas Gregor <dgregor@apple.com> In the AST reader, switch name lookup within a DeclContect over to the
module DAG-based lookup scheme. This required some reshuffling, so
that each module stores its own mapping from DeclContexts to their
lexical and visible sets for those DeclContexts (rather than one big
"chain").

Overall, this allows simple qualified name lookup into the translation
unit to gather results from multiple modules, with the lookup results
in module B shadowing the lookup results in module A when B imports A.

Walking all of the lexical declarations in a module DAG is still a
mess; we'll end up walking the loaded module list backwards, which
works fine for chained PCH but doesn't make sense in a DAG. I'll
tackle this issue as a separate commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138463 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
cc075e4092900ac9eec9dc92e35096eae1ee29c7 24-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objc - fix up the builtin type for objc_assign_ivar.
// rdar://9362887.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138412 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
0f3b4ca1764cd6d457f511d340fba504f41763c3 24-Aug-2011 Ted Kremenek <kremenek@apple.com> Start reworking -Wunreachable-code. The original analysis had serious flaws with how it
handled SCC's of dead code, or simply having false negatives by overly suppressing warnings.

WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138410 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ReachableCode.h
f0e71aede7ccf3e311feac6a414c431f7a0fc3c8 24-Aug-2011 Ted Kremenek <kremenek@apple.com> CFG: record set of C++ 'try' dispatch blocks, which could be of interest to various analyses (e.g., reachability).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138409 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
f1d10d939739f1a4544926d807e4f0f9fb64be61 24-Aug-2011 Ted Kremenek <kremenek@apple.com> Constify the result of CFGStmt::getStmt().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138408 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
8ed557991fe8d51eb27e6c439030ec6ef93a2b8f 24-Aug-2011 Ted Kremenek <kremenek@apple.com> Add 'const' version of CompoundStmt::children().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f40fd6bbb2684db5efb18627ea355613c235d23f 24-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Refactor and fix checking for initialization of flexible array members. The old version had the checks scattered across the code, missed some checks, and had a couple nasty bugs in existing checks.

Fixes PR10648 and another similar accepts-invalid bug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138398 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d7cb46c316808169679a8d72c69f02a1e55d78a8 23-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove one SourceManager::isInFileID overload and use isOffsetInFileID for the other.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b6c465e17ec37390667223a18a340e8652c212ff 23-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Amend r138129 (reduction of SLocEntries) which introduced performance regression due
to increased calls to SourceManager::getFileID. (rdar://9992664)

Use a slightly different approach that is more efficient both in terms of speed
(no extra getFileID calls) and in SLocEntries reduction.

Comparing pre-r138129 and this patch we get:

For compiling SemaExpr.cpp reduction of SLocEntries by 26%.
For the boost enum library:
-SLocEntries -34% (note that this was -5% for r138129)
-Memory consumption -50%
-PCH size -31%

Reduced SLocEntries also benefit the hot function SourceManager::getFileID,
evident by the reduced "FileID scans".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138380 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
499ea5550d6e2fc5cfbd33b47f06d92ce25d7a13 23-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::isInSLocAddrSpace and use it in TokenLexer instead of isInFileID
since it is a bit more efficient.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/TokenLexer.h
5d579e7b0463a2e65328df85e4fed8e07799fd9e 23-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename SourceManager::isBeforeInSourceLocationOffset -> isBeforeInSLocAddrSpace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138378 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
984e42ca1ff7775ce39372c314f1cb7d6862c4c7 23-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move a couple of SourceManager functions out-of-line; no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
3ac1fbc303d22af2e11a14023ecee7bd7b7d0bfd 23-Aug-2011 Caitlin Sadowski <supertri@google.com> Thread-safety analysis: adding in a basic lockset tracking system. This
system flags an error when unlocking a lock which was not held, locking
the same lock twice, having a different lockset on each iteration of a
loop, or going out of scope while still holding a lock. In order to
successfully use the lockset, this patch also makes sure that attribute
arguments are attached correctly for later parsing.

This patch was also worked on by DeLesley Hutchins.

Note: This patch has been reviewed by Chandler Carruth and Jeffrey
Yasskin. Feel free to provide post-commit review comments for a
subsequent patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AnalysisBasedWarnings.h
f857186fd1995b34185d063a29b11ad4f948519f 23-Aug-2011 Eric Christopher <echristo@apple.com> Add support for a verifier to the driver. Currently only verifies debug
output on darwin so is hard coded there.

As a note this will need a little bit of refactoring in the class
hierarchy to separate it out for different verifiers based on input type.

Fixes rdar://8256258.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138343 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Options.td
2fef11164cbe804f7b808c07757c6f900c08d765 23-Aug-2011 Nico Weber <nicolasweber@gmx.de> enable -fstack-protector on 10.5 for usermode binaries by default.

This matches gcc's behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138324 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
294396b9f2a2f4ffee6b7ed5e61211fde50b6554 23-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Migrate the handling of retain-count-related RetEffects and ArgEffects from CFRefCount to RetainReleaseChecker. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138309 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
2f64cfe19e8bf6b6ba1660e38da8c421440457fe 22-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objc refactoring - minor clean up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138276 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7f2531cb41448852ec78de90fc1d3c0149c95d7d 22-Aug-2011 Anna Zaks <ganna@apple.com> Static Analyzer Diagnostics: Allow checkers to add ExtraDescriptiveText, now renamed into ExtraText, to the diagnostic without subclassing BugReport.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138272 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
9735c5e60027b26a809df19677ff16a4d13f1321 22-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objc - Simplify switing objc decl context by using
a context switching object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138248 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9a1ecf0522ccb7a45577f856150c15af0ee1df2a 22-Aug-2011 Nico Weber <nicolasweber@gmx.de> Warn on missing [super dealloc] calls.

This matches gcc's logic. Half of PR10661.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
80f775359357f90f34b6adb8104506f13a816a67 22-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objc- checking for objc decl context range is unreliable and
subject to change. Check for equality instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
a28948f34817476d02412fa204cae038e228c827 22-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> Restore patch I reversed in r138040. Known buildbot
failures are resolved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Parser.h
ema/Sema.h
ec5bc81fd55bfcc26fc4bde6d5e33113d94c2209 22-Aug-2011 Zhongxing Xu <xuzhongxing@foxmail.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
21032df7a0dfc129a8f0c5e004811b455baafb7a 22-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix gcc build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d9d2b679d0728ea7f539f38aaea38e26b8b08043 22-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Boost the efficiency of SourceManager::getMacroArgExpandedLocation.

Currently getMacroArgExpandedLocation is very inefficient and for the case
of a location pointing at the main file it will end up checking almost all of
the SLocEntries. Make it faster:

-Use a map of macro argument chunks to their expanded source location. The map
is for a single source file, it's stored in the file's ContentCache and lazily
computed, like the source lines cache.
-In SLocEntry's FileInfo add an 'unsigned NumCreatedFIDs' field that keeps track
of the number of FileIDs (files and macros) that were created during preprocessing
of that particular file SLocEntry. This is useful when computing the macro argument
map in skipping included files while scanning for macro arg FileIDs that lexed from
a specific source file. Due to padding, the new field does not increase the size
of SLocEntry.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138225 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/PreprocessorLexer.h
500abad7edfcc2409b18dd616cdbc28a094926f5 21-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Migrate return value handling from CFRefCount to ExprEngine. This seems to result in a minor performance hit, but I think that will go away again once we eliminate TransferFuncs from function calls entirely.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138220 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
f8b5aae41e46f94fe90ed5f1ee98f36f0aa59dc9 20-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Handle reads of ObjCPropertyRefExprs implicitly in Environment. No need to bind an explicit value and create a new node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138196 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
211f6e894895f552e0a98421b2f6e931ca4a8c11 20-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce a module visitation function that starts at the top-level
modules (those that no other module depends on) and performs a search
over all of the modules, visiting a new module only when all of the
modules that depend on it have already been visited. The visitor can
abort the search for all modules that a module depends on, which
allows us to minimize the number of lookups necessary when performing
a search.

Switch identifier lookup from a linear walk over the set of modules to
this module visitation operation. The behavior is the same for simple
PCH and chained PCH, but provides the proper search order for
modules. Verified with printf debugging, since we don't have enough in
place to actually test this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138187 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
23f395ee1bf4e4aa76b310d896a951799eaca94a 20-Aug-2011 Anna Zaks <ganna@apple.com> Static Analyzer Diagnostics: Move the responsibility for generating the endOfPath diagnostic piece from BugReport to BugReporterVisitor. Switch CFRefCount to use visitors in order to generate the endOfPath piece.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138184 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
dc757b049796949e4b11646445a6598f0bdabd7a 20-Aug-2011 Anna Zaks <ganna@apple.com> Static Analyzer Diagnostics: Switch CFRefCount to using the new visitor API. BugReport no longer needs to inherit from BugReporterVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138142 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
d60a34a4e514ec0dfddd05ef2744be104e111f45 20-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> For assigning SourceLocations to macro arg tokens, reserve a single SLocEntry
for tokens that are lexed consecutively from the same FileID, instead of creating
a SLocEntry for each token. e.g for

assert(foo == bar);

there will be a single SLocEntry for the "foo == bar" chunk and locations
for the 'foo', '==', 'bar' tokens will point inside that chunk.

For parsing SemaExpr.cpp, this reduced the number of SLocEntries by 25%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/TokenLexer.h
ec3b5389a5032433116ec2f2ee266b9666ad2eb4 20-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename TokenLexer::getMacroExpansionLocation -> getExpansionLocForMacroDefLoc, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138128 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
54232ade44d31e98ea83f43ca066128e315dcbda 20-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor common functionality into SourceManager::getFileIDSize, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
50bbc165b063155cc23c360deb7b865502e068e2 20-Aug-2011 Anna Zaks <ganna@apple.com> Static Analyzer Diagnostics: Kill the addVisitorCreator(callbackTy, void*) API in favor of addVisitor(BugReporterVisitor*).

1) Create a header file to expose the predefined visitors. And move the parent(BugReporterVisitor) there as well.

2) Remove the registerXXXVisitor functions - the Visitor constructors/getters can be used now to create the object. One exception is registerVarDeclsLastStore(), which registers more then one visitor, so make it static member of FindLastStoreBRVisitor.

3) Modify all the checkers to use the new API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138126 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugReporterVisitor.h
dcf3c0f648edac4d4da1b05840e21ed23b9ca37e 19-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove another unused function from ModuleManager. We have no notion of a 'last' module any more

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138081 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
a3a0cf07fea63c020b0a261cb765ffdb5af991e6 19-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove unused function ModuleManager::exportLookup()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138079 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
5c5218e188b39b2e93b541156a69ef061e11aab8 19-Aug-2011 Matt Beaumont-Gay <matthewbg@google.com> Improve the correctness and accuracy of the message for -Wdynamic-class-memaccess

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e6f07f538fd0eddd6c087fcc01d4e4ff19129c71 19-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> Revers r138040. Need to look at a few buildbot failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138049 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Parser.h
ema/Sema.h
3dbf2f5f00cfc8b25318c119c0d39f4a49d15ebe 19-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: Bring objective-c handling of decl context
to modernity. Instead of passing down individual
context objects from parser to sema, establish decl
context in parser and have sema access current context
as needed. I still need to take of Doug's comment for
minor cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Parser.h
ema/Sema.h
00fd773ae92aa452be1bb139a186599b2c43531a 19-Aug-2011 Ted Kremenek <kremenek@apple.com> Rename -Wstrl-incorrect-size to -Wstrlcpy-strlcat-size. This warning really is just specific to strlcpy and strlcat.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fac4ece118d43e43e625c6d2b9a98905b1372d51 19-Aug-2011 Douglas Gregor <dgregor@apple.com> Teach ModuleManager::addModule() to check whether a particular module
has already been loaded before allocating a new Module structure. If
the module has already been loaded (uniquing based on file name), then
just return the existing module rather than trying to load it again.

This allows us to load a DAG of modules. Introduce a simple test case
that forms a diamond-shaped module graph, and illustrates that a
source file importing the bottom of the diamond can see declarations
in all four of the modules that make up the diamond.

Note that this version moves the file-opening logic into the module
manager, rather than splitting it between the module manager and the
AST reader. More importantly, it properly handles the
weird-but-possibly-useful case of loading an AST file from "-".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138030 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
3b030a28cda2b953758507769c1d436bec5ec45e 19-Aug-2011 Anna Zaks <ganna@apple.com> Fix a memory leak in the analyzer - BugReports didn't get freed. Plus, remove invalid assert from the destructor which wasn't called previously due to the leak.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138027 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
8e6431adab313e283a992698f6fc7afe62420999 19-Aug-2011 Anna Zaks <ganna@apple.com> Static Analyzer Diagnostics: Move custom diagnostic visitors from BugReporterContext to BugReport.

One API change: I added BugReporter as an additional parameter to the BugReporterVisitor::VisitNode() method to allow visitors register other visitors with the report on the fly (while processing a node). This functionality is used by NilReceiverVisitor, which registers TrackNullOrUndefValue when the receiver is null.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138001 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
3366582a026ce8044d58352088df358a9e987508 18-Aug-2011 Ted Kremenek <kremenek@apple.com> Remove main() *errors* from warning group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137983 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bd5da9d1a711e90b3bc265b4798954085c0b48d9 18-Aug-2011 Ted Kremenek <kremenek@apple.com> Reapply r137903, but fix the definition of size_t in the test case to use __SIZE_TYPE__ (and hence be portable).

Also, change the warning to -Wstrl-incorrect-size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/DiagnosticSemaKinds.td
ema/Sema.h
5c5f03e4020e90b9760ec547962ba02b029cc359 18-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Support code-completion inside macro arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137973 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
870d1fee3c5027efe7fd23d6935952bc1f419f99 18-Aug-2011 Chad Rosier <mcrosier@apple.com> Temporarily revert r137925 to appease buildbots. Original commit message:

Teach ModuleManager::addModule() to check whether a particular module
has already been loaded before allocating a new Module structure. If
the module has already been loaded (uniquing based on file name), then
just return the existing module rather than trying to load it again.

This allows us to load a DAG of modules. Introduce a simple test case
that forms a diamond-shaped module graph, and illustrates that a
source file importing the bottom of the diamond can see declarations
in all four of the modules that make up the diamond.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137971 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
516116308007280f0dd6661cdd94112468c3c5fc 18-Aug-2011 Kaelyn Uhrain <rikka@google.com> Rework DiagnoseInvalidRedeclaration to add the ability to correct typos when
diagnosing invalid function redeclarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137966 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1f89b4016505045d79b53ce1204fc2c46c7d01c9 18-Aug-2011 Manuel Klimek <klimek@google.com> Fixes traversal of class template nodes on template instantiations.
Also fixes a spelling error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137945 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
3bd9aa4593b4332d477407d9b5a42f3c4ababb21 18-Aug-2011 Francois Pichet <pichet2000@gmail.com> Add support for MSVC __unaligned attribute. Necessary to parse MSVC headers in 64-bit mode (ie: when _M_IA64 or _M_AMD64 is defined)

more info: http://msdn.microsoft.com/en-us/library/ms177389.aspx

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137935 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
a4c189f4356f24d984aac781d7762b8c55082b7e 18-Aug-2011 Douglas Gregor <dgregor@apple.com> Teach ModuleManager::addModule() to check whether a particular module
has already been loaded before allocating a new Module structure. If
the module has already been loaded (uniquing based on file name), then
just return the existing module rather than trying to load it again.

This allows us to load a DAG of modules. Introduce a simple test case
that forms a diamond-shaped module graph, and illustrates that a
source file importing the bottom of the diamond can see declarations
in all four of the modules that make up the diamond.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137925 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
10bc00fd45824f9b5cd139d63af8b0f6d28aadda 18-Aug-2011 Douglas Gregor <dgregor@apple.com> Keep track of which modules have been loaded directly (e.g., via
-import-module) vs. loaded because some other module depends on
them. As part of doing this, pass down the module that caused a module
to be loaded directly, rather than assuming that we're loading a
chain. Finally, write out all of the directly-loaded modules when
serializing an AST file (using the new IMPORTS record), so that an AST
file can depend on more than one other AST file, all of which will be
loaded when that AST file is loaded. This allows us to form and load a
tree of modules, but we can't yet load a DAG of modules.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137923 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
1cb4f664fd4f72a65a145e9ff8a7e2540ab09156 18-Aug-2011 Ted Kremenek <kremenek@apple.com> Revert r137903, "Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat is the size of the *source*, and not the size of the *destination*. This warning is off by default (for now)."

This currently doesn't work on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137920 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/DiagnosticSemaKinds.td
ema/Sema.h
f19eef86422b82e3415c56077f85085e0074e893 18-Aug-2011 Anna Zaks <ganna@apple.com> Fix a regression form r137894. Make sure the custom BugReporterVisitors get registred as they were in EnhancedBugReport. Would be good to add a test for this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137917 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
1e473ccb0e0f6fd1954bef330f7193c1a3fb3ba1 18-Aug-2011 Ted Kremenek <kremenek@apple.com> Implement '-Weverything', which enables all warnings except those explicitly mapped to be ignored.

Currently this includes -pedantic warnings as well; we'll need to consider whether these should
be included.

This works as expected with -Werror.

Test cases were added to Sema/warn-unused-parameters.c, but they should probably be broken off into
their own test file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1b2d53647dda5e4a70cea54ec3bedbf167081120 18-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> For the MacroExpands preprocessor callback, also pass the SourceRange
of expansion (for function macros it includes the right paren).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137909 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
4b53117c9942db2e08f18be25d9ccf7daf6af0b2 18-Aug-2011 Ted Kremenek <kremenek@apple.com> Add experimental -Wstrlcpy-size warning that looks to see if the size argument for strlcpy/strlcat is the size of the *source*, and not the size of the *destination*. This warning is off by default (for now).

Warning logic provided by Geoff Keating.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/DiagnosticSemaKinds.td
ema/Sema.h
e7c4c4ccc6a51c82332382267b84e9d72f229b5e 18-Aug-2011 Anna Zaks <ganna@apple.com> Add more comments for BugReport.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137901 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
b7530a4ca9a7ef62350682bbb374a06de6fdaa9f 18-Aug-2011 Anna Zaks <ganna@apple.com> Remove DiagBugReport by pulling it into its parent BugReport.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137899 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
e172e8b9e7fc67d7d03589af7e92fe777afcf33a 18-Aug-2011 Anna Zaks <ganna@apple.com> Remove EnhancedBugReport and RangedBugReport - pull all the extra functionality they provided into their parent BugReport. The only functional changes are: made getRanges() non const - it adds default range to Ranges if none are supplied, made getStmt() private, which was another FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137894 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
e95b9198b8b70ce0219cfb89483b41102e02dbf5 17-Aug-2011 Douglas Gregor <dgregor@apple.com> In the AST file format, eliminate the CHAINED_METADATA record. Instead,
all AST files have a normal METADATA record that has the same form
regardless of whether we refer to a chained PCH or any other kind of
AST file.

Introduce the IMPORTS record, which describes all of the AST files
that are imported by this AST file, and how (as a module, a PCH file,
etc.). Currently, we emit at most one entry to this record, to support
chained PCH.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137869 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
38ca02ed9495a3c708fafc7d8b7d87a8cfcfe8f3 17-Aug-2011 Anna Zaks <ganna@apple.com> Add a bit more comments to the BugReporter and friends.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137859 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
75cf3e86d33ce810c12084126385371b335c30ba 17-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Mark objc methods that are implicitly declared for properties (not user-declared) as implicit.
This results in libclang ignoring such methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137852 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ec8058f64bbcd79bd47748f4cf8628123dd3bae6 17-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Treating the unused equality comparisons as something other than part of
-Wunused was a mistake. It resulted in duplicate warnings and lots of
other hacks. Instead, this should be a special sub-category to
-Wunused-value, much like -Wunused-result is.

Moved to -Wunused-comparison, moved the implementation to piggy back on
the -Wunused-value implementation instead of rolling its own, different
mechanism for catching all of the "interesting" statements.

I like the unused-value mechanism for this better, but its currently
missing several top-level statements. For now, I've FIXME-ed out those
test cases. I'll enhance the generic infrastructure to catch these
statements in a subsequent patch.

This patch also removes the cast-to-void fixit hint. This hint isn't
available on any of the other -Wunused-value diagnostics, and if we want
it to be, we should add it generically rather than in one specific case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137822 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9d8eb3b2a892697aed332f6c318a8554fc2623ce 17-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Introduce a new warning, -Wtop-level-comparison. This warning is
a complement to the warnings we provide in condition expressions. Much
like we warn on conditions such as:

int x, y;
...
if (x = y) ... // Almost always a typo of '=='

This warning applies the complementary logic to "top-level" statements,
or statements whose value is not consumed or used in some way:

int x, y;
...
x == y; // Almost always a type for '='

We also mirror the '!=' vs. '|=' logic.

The warning is designed to fire even for overloaded operators for two reasons:

1) Especially in the presence of widespread templates that assume
operator== and operator!= perform the expected comparison operations,
it seems unreasonable to suppress warnings on the offchance that
a user has written a class that abuses these operators, embedding
side-effects or other magic within them.
2) There is a trivial source modification to silence the warning for
truly exceptional cases:

(void)(x == y); // No warning

A (greatly reduced) form of this warning has already caught a number of
bugs in our codebase, so there is precedent for it actually firing. That
said, its currently off by default, but enabled under -Wall.

There are several fixmes left here that I'm working on in follow-up
patches, including de-duplicating warnings from -Wunused, sharing code
with -Wunused's implementation (and creating a nice place to hook
diagnostics on "top-level" statements), and handling cases where a proxy
object with a bool conversion is returned, hiding the operation in the
cleanup AST nodes.

Suggestions for any of this code more than welcome. Also, I'd really
love suggestions for better naming than "top-level".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137819 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8a01087664cc78c0572c985949b9ebf3c184dbee 17-Aug-2011 Jordy Rose <jediknil@belkadan.com> Hook up -W[no-]analyzer-incompatible-plugin to new warning, and unbreak buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137816 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
b7b0608c3aeee3eb9f14520eb7eff159b855a34b 17-Aug-2011 Jordy Rose <jediknil@belkadan.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
a8fd0bc069275d8e7bc9fa72c2d93a76302e5e48 17-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Add a warning for an incompatible plugin version.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137813 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
8e240498dfd4355849bcec943e97799f7f75d93d 17-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Add some documentation for the new analyzer plugin infrastructure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137805 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerOptInfo.h
taticAnalyzer/Core/CheckerRegistry.h
77a33a71701b59affb5337d9e2b57d69bc095c7d 17-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Add basic support for pluggable checkers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137802 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerOptInfo.h
taticAnalyzer/Core/CheckerRegistry.h
ac836e442cbd17f33533bd0b4879258945bc1723 17-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::getMacroArgExpandedLocation function.

If we pass it a source location that points inside a function macro argument,
the returned location will be the macro location in which the argument was expanded.
If a macro argument is used multiple times, the expanded location will
be at the first expansion of the argument.
e.g.
MY_MACRO(foo);
^
Passing a file location pointing at 'foo', will yield a macro location
where 'foo' was expanded into.

Make SourceManager::getLocation call getMacroArgExpandedLocation as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137794 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
37e59a10a7a537428e5997fd5896f5b89fd34e6b 17-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make SourceManager::isBeforeInTranslationUnit handle macro locations correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
08b86531ade68727c56918f162816075b87c864a 16-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Overhaul of checker registration in preparation for basic plugin support. Removes support for checker groups (we can add them back in later if we decide they are still useful), and -analyzer-checker-help output is a little worse for the time being (no packages).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137758 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/ClangCheckers.h
taticAnalyzer/Core/CheckerOptInfo.h
taticAnalyzer/Core/CheckerProvider.h
taticAnalyzer/Core/CheckerRegistry.h
taticAnalyzer/Frontend/CheckerRegistration.h
taticAnalyzer/Frontend/FrontendActions.h
6c7511db998817e64f2e124013e7d7c9a430c580 16-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] add ExprEngine::getEagerlyAssumedTags() to allow externally querying of "eagerly assumed" expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137704 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
86b39f20d5091ca3fdcbeb4a22766aaffdf6ac35 16-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Remove PostStmtCustom ProgramPoint. It can be represented using tagged PostStmts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137697 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
ae160f880d183ab938fd7ce3b891694ae2f569c0 16-Aug-2011 Ted Kremenek <kremenek@apple.com> Add missing header files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137676 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ProgramState.h
taticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
427964e15f1b9595659cea3fcb4dd808a00f37b5 16-Aug-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Require explicit cursor visitation for all TypeLocs (compilation will
fail if a TypeLoc kind is not handled) and handle DecltypeTypeLoc and InjectedClassNameTypeLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
18c66fdc3c4008d335885695fe36fb5353c5f672 16-Aug-2011 Ted Kremenek <kremenek@apple.com> Rename GRState to ProgramState, and cleanup some code formatting along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137665 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/GRStateTrait.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
taticAnalyzer/Core/PathSensitive/TransferFuncs.h
af1fc7af351758b0ea0d285bdfe5640128109a4e 15-Aug-2011 Richard Smith <richard-llvm@metafoo.co.uk> Track in the AST whether a function is constexpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
faef9fcb41cff7c2cbafb86d3af47c422ddf3010 15-Aug-2011 Bob Wilson <bob.wilson@apple.com> Make -findirect-virtual-calls and -fterminated-vtables aliases of -fapple-kext.
Outside the driver, they were already treated that way, but the driver was not
giving them the same special treatment as -fapple-kext, e.g., falling back to
llvm-gcc for i386/Darwin kexts. Radar 9868422.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137639 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
9b127f3b44e685cbe513595b7e0115b0884b0604 15-Aug-2011 Matt Beaumont-Gay <matthewbg@google.com> Add fixit notes for -Wconstant-logical-operand.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
507d6758fb5b5c871b0796c75ac08fc478f51ed7 14-Aug-2011 Francois Pichet <pichet2000@gmail.com> Another typo found by Nico; Doug also warned me about it, but I didn't listen to him.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0d95f0d7b81110f77e99e833f766d19be7b7e072 14-Aug-2011 Francois Pichet <pichet2000@gmail.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
af0f4d0b2e38c810effc8b024ad2fb6604eec5d3 14-Aug-2011 Francois Pichet <pichet2000@gmail.com> Implement function template specialization at class scope extension in Microsoft mode. A new AST node is introduced: ClassScopeFunctionSpecialization. This node holds a FunctionDecl that is not yet specialized; then during the class template instantiation the ClassScopeFunctionSpecialization will spawn the actual function specialization.

Example:
template <class T>
class A {
public:
template <class U> void f(U p) { }
template <> void f(int p) { } // <== class scope specialization
};

This extension is necessary to parse MSVC standard C++ headers, MFC and ATL code.
BTW, with this feature in, clang can parse (-fsyntax-only) all the MSVC 2010 standard header files without any error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137573 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
cc52a0688f46cd04dd6b4670b304cbe82e3018c0 14-Aug-2011 Nico Weber <nicolasweber@gmx.de> Add support of -x objc-cpp-output, -x objc++-cpp-output to the Driver.

Matches gcc, and is also required for using ccache with clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137563 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
9c378f705405d37f49795d5e915989de774fe11f 13-Aug-2011 Ted Kremenek <kremenek@apple.com> Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137537 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/AnalysisContext.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
taticAnalyzer/Checkers/LocalCheckers.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/BlockCounter.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/GRStateTrait.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/StoreRef.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
taticAnalyzer/Core/PathSensitive/TransferFuncs.h
taticAnalyzer/Core/PathSensitive/WorkList.h
1ab69c513239596946286373e081b89fa3358612 13-Aug-2011 Ted Kremenek <kremenek@apple.com> Document purpose of ProgramPointTag::getTagKind().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137530 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
ca804539d908d3a0e8c72a0df5f1f571d29490bb 13-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] change "tag" in ProgramPoint from "void*" to a ProgramPointTag*.

Having a notion of an actual ProgramPointTag will aid in introspection of the analyzer's behavior.
For example, the GraphViz output of the analyzer will pretty-print the tags in a useful manner.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137529 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
be69f6092668b0586c8729855c01ca2eea22e6fe 13-Aug-2011 Chad Rosier <mcrosier@apple.com> [driver] Refactor a bit to enable a few fixes when generating diagnostics. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137524 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
096aef9597b263b4cd6a0feaacf9e7214fa9c75a 12-Aug-2011 Jordy Rose <jediknil@belkadan.com> [analyzer] Nitpicks on Olaf's patch, which I meant to e-mail but then didn't in
time. One is cleanup, the other is me being OCD about enum group nesting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137517 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/MemRegion.h
3a02b44e3948f7762dbfba94b7961281ca29d022 12-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> metadata generated by the compiler does not include the weak
attribute of a property. patch by Remy Demarest fixes it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
261f5b47323d5afd32da83e71284a6258791f72f 12-Aug-2011 Ted Kremenek <kremenek@apple.com> Place err_cfstring_literal_not_string_constant and warn_cfstring_truncated under "-WCFString" flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137508 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
42cd50c4e76380c34866d246099da6d13b71fe9b 12-Aug-2011 Ted Kremenek <kremenek@apple.com> Place diagnostic warn_stringcompare under the "-Wstring-compare" flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d9eef9c56aa14117a7f2c83beb2d674eef3d1fa 12-Aug-2011 Ted Kremenek <kremenek@apple.com> Place warnings related to incorrect "main()" declaration under "-Wmain".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137506 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8ed72530ce7c3bd6bb1dceaf8108fbeddde80e4e 12-Aug-2011 Ted Kremenek <kremenek@apple.com> Add -Wtypename-missing flag for diagnostic warn_typename_missing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9697934650354bed2e509d8e7e44f21a1fb00f76 12-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Introduce new MemRegion, "TypedValueRegion", so that we can separate TypedRegions that implement getValueType() from those that don't.

Patch by Olaf Krzikalla!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137498 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
772eeaefef2c883aabe35caf4543e7e32d290183 12-Aug-2011 Douglas Gregor <dgregor@apple.com> Switch the __int128_t and __uint128_t types over to predefined types
in the AST format, which are built lazily by the ASTContext when
requested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
7a27ea52b7bd635c89bec5a9c521a3bf7d204238 12-Aug-2011 Douglas Gregor <dgregor@apple.com> Switch the Objective-C 'SEL' type over to a predefined type in the
AST file format, lazily generating the actual declaration in
ASTContext as needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
79d6726921897811232554ed94c5d77b5b7b3fc0 12-Aug-2011 Douglas Gregor <dgregor@apple.com> Switch the Objective-C 'Class' type over to a predefined type in the
AST file format, lazily generating the actual declaration in
ASTContext as needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137431 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
4dfd02a17c6d604c72e6936527c5e1c56d3ecb7a 12-Aug-2011 Douglas Gregor <dgregor@apple.com> Move the creation of the predefined typedef for Objective-C's 'id'
type over into the AST context, then make that declaration a
predefined declaration in the AST format. This ensures that different
AST files will at least agree on the (global) declaration ID for 'id',
and eliminates one of the "special" types in the AST file format.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
e685848689474c600a4cc4fc3930562281c784ef 12-Aug-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang/Config/config.h.cmake: Reorder and reword to follow (generated) llvm/Config/config.h.in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137415 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
b7c324f8581a55e2a918e5f3eb2e7418b09df0f2 12-Aug-2011 Douglas Gregor <dgregor@apple.com> Collapse ASTWriter::WriteASTChain into ASTWriter::WriteASTCore,
eliminating a pile of redundant code (and probably some bugs in the
process). The variation between chained and non-chained PCH is fairly
small now anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137410 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
cb9657cfba92d5a3009e1b37109e03258c20d327 12-Aug-2011 Bill Wendling <isanbard@gmail.com> Remove extra semicolons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137409 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
579ad7ac56f7940cc543b7216ee1b1a7de1ed712 12-Aug-2011 Anna Zaks <ganna@apple.com> Optimizations for Dependent Symbol tracking (as per Ted's code review for r137309):

1) Change SymbolDependTy map to keep pointers as data. And other small tweaks like making the DenseMap smaller 64->16 elements; remove removeSymbolDependencies() as it will probably not be used.

2) Do not mark dependents live more then once.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137401 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
6bf2b9fbd3e3adc38d4712de79aeaa81d651aa08 12-Aug-2011 Douglas Gregor <dgregor@apple.com> In the serialized AST format, make the translation unit a "predefined"
declaration that never actually gets serialized. Instead, serialize
the various kinds of update records (lexical decls, visible decls, the
addition of an anonymous namespace) for the translation unit, even if
we're not chaining. This way, we won't have to deal with multiple
loaded translation unit declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137395 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
79e610a99b43b9e6df8f9b6b59dbaf5d38a682d3 12-Aug-2011 Richard Trieu <rtrieu@google.com> The current warning in -Wnull-arithmetic for comparisons between NULL and non-pointers is not very helpful. This patch will update the wording to be more helpful to users.

Old warning:

warning: use of NULL in arithmetic operation [-Wnull-arithmetic]
return 10 <= NULL;
^ ~~~~

New warning:

warning: comparison between NULL and non-pointer ('int' and NULL) [-Wnull-arithmetic]
return 10 <= NULL;
~~ ^ ~~~~


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
01a4cf11777bb34c35f5d251a9e95eb736d0842b 11-Aug-2011 Douglas Gregor <dgregor@apple.com> Encapsulate the Objective-C id/Class/SEL "redefinition" types in
ASTContext with accessors/mutators. The only functional change is that
the AST writer won't bother writing the id/Class/SEL redefinition type
if it hasn't been explicitly set; previously, it ended up being
written as a synonym for the built-in id/Class/SEL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137349 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
89f920940de4b414616cabb310c37fa84ed2476a 11-Aug-2011 Anna Zaks <ganna@apple.com> Analyzer Core: Adding support for user-defined symbol dependencies. (For example, the allocated resource symbol only needs to be freed if no error has been returned by the allocator, so a checker might want to make the lifespan of the error code symbol depend on the allocated resource symbol.) Note, by default, the map that holds the dependencies will get destroyed along with the SymbolManager at the end of function exploration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137309 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
03720fce6e709661af020f3e4e6dfd08a96e8044 11-Aug-2011 Craig Topper <craig.topper@gmail.com> Raw string followup. Pass a couple StringRefs by value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137301 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
2fa4e86b4fdada3b9ecbbbd99965b83ed879f69b 11-Aug-2011 Craig Topper <craig.topper@gmail.com> Add support for C++0x raw string literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Lexer.h
ex/LiteralSupport.h
75eeeb173cd3f6425247d3686c19e49117834fc3 11-Aug-2011 Anna Zaks <ganna@apple.com> Make SymbolManager comments doxygen friendly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137290 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SymbolManager.h
0e89061a399bae32f0eca5b85658ad66a58c504d 11-Aug-2011 Anna Zaks <ganna@apple.com> Cleanup: remove CleanedSate member and GetState() wrapper from StmtNodeBuilder, not needed as of r137273.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137284 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
db5e8cd095d1ffdd18f5620ad2348b5f386bebe3 11-Aug-2011 Anna Zaks <ganna@apple.com> Cleanup: remove GetState() wrapper from ExprEngine, not needed as of r137273.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137279 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
6bd528b9d703fdea51053719d9c53504a61a6bd7 11-Aug-2011 Anna Zaks <ganna@apple.com> Analyzer Core: In checkDeadSymbols checker callback, provide the state in which the symbols are not yet deleted so that checkers could inspect them. Since we are now always creating a transition in ProcessStmt(), remove the logic for adding a transition when none was generated. TODO: the extra transitions will have to be removed; more cleanups; a checker that tests teh new fucntionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137273 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
6b8bc0707f26aa6acfdd80a59b9a3850cafbe387 10-Aug-2011 Richard Smith <richard-llvm@metafoo.co.uk> Renamings to consistently use 'Constexpr' not 'ConstExpr' when referring to the C++0x 'constexpr' keyword.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137230 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
730cfb18463d8c2f6d0e4d4380fdd67e4abe5d97 10-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: Using existing infrastructure for finding
overridden methods to diagnose their type mismatch.
This is a general solution for previous fixes
for // rdar://6191214 and // rdar://9352731
and removes lots of duplicate code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137222 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/IdentifierTable.h
ema/Sema.h
a19950edd94c1b80e73c9f45d821b125bd0ee72f 10-Aug-2011 John McCall <rjmccall@apple.com> Change an assert into a check. I'm pretty sure there was a point
in time when this assert was valid, but it's not valid now.
Also teach this code to correctly introduce function-to-pointer
decay.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137201 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b51e0315d4ffd12670441ea2284ae1188485df14 09-Aug-2011 Caitlin Sadowski <supertri@google.com> Thread Safety: Added basic argument parsing for all new attributes.

This patch special cases the parser for thread safety attributes so that all
attribute arguments are put in the argument list (instead of a special
parameter) since arguments may not otherwise resolve correctly without two-token
lookahead.

This patch also adds checks to make sure that attribute arguments are
lockable objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137130 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
0815b579b31cb3129f732bb7ea36fd6ba6949e98 09-Aug-2011 Douglas Gregor <dgregor@apple.com> Move the creation of the record type for the state of Objective-C fast
enumerations from the ASTContext into CodeGen, so that we don't need
to serialize it to AST files. This appears to be the last of the
low-hanging fruit for SpecialTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137124 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
5c0d3d66bf06213009802876a14e6298efc1e0b0 09-Aug-2011 Douglas Gregor <dgregor@apple.com> Don't serialize the block descriptor or block extended descriptor
types to AST files; they're only used by debug info generation anyway,
and shouldn't ever exist in the AST anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
45c4ea75b235de94f44bf96843624e6a559e4c00 09-Aug-2011 Douglas Gregor <dgregor@apple.com> Move the construction of the RecordDecl representing the runtime
layout of a constant NSString from the ASTContext over to CodeGen,
since this is solely CodeGen's responsibility. Eliminates one of the
unnecessary "special" types that we serialize.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137121 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
erialization/ASTBitCodes.h
3b8043b49aff6e5d70f29ef5684214ce2473763c 09-Aug-2011 Douglas Gregor <dgregor@apple.com> Migrate the serialization of ASTContext's AutoDeduceTy and
AutoRRefDeductTy from the "special types" block to predefined
types. The latter behaves better when loading multiple AST files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137120 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTWriter.h
6948bc4bcbd92502d90b877780a3b746275efa5b 09-Aug-2011 Ted Kremenek <kremenek@apple.com> Provide diag_iterator for iterating over the built-in diagnostic IDs/names in the internal table of DiagnosticIDs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
5d8c062b8c1e5d42ecfa3c6ad52cf71c966516f0 08-Aug-2011 Ted Kremenek <kremenek@apple.com> Add -W flag for ARC warning "performSelector may cause a leak because its selector is unknown".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2112190efa85f50af84a3c4efe03c5bf69247ba2 08-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: diagnose protocol inconsistencies in following
situation. When a class explicitly or implicitly (through inheritance)
"conformsTo" two protocols which conflict (have methods which conflict).
This patch fixes the previous patch where warnings were coming out in
non-deterministic order. This is 2nd part of // rdar://6191214.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ema/Sema.h
993124ecdd44ec1430a3b7f01b22f65bbaadb586 06-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Start sketching out a new BugReporterVisitor that inspects branches and other expressions to generate interesting path events in diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137012 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
bea2753da897ede723e70bcd17023d050b0603d0 06-Aug-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Change SymbolReaper to store region roots implied by the Environment, allowing it be queried when
determining if symbols derived from regions are still live.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137005 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
3f10e32b15e54f507aed90cb72d73c7acaa500bb 06-Aug-2011 Anna Zaks <ganna@apple.com> Static Analyzer: Add a convinience API. Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137000 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
270ba59c4111c9e9d040cf3b95f1f3e0a8440dff 06-Aug-2011 Ted Kremenek <kremenek@apple.com> Revert 136984 and 136927.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136998 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ema/Sema.h
d6c8865e6f306556b7eef972ceec2cc8ba026a0d 06-Aug-2011 Kaelyn Uhrain <rikka@google.com> Perform array bounds checking in more situations and properly handle special
case situations with the unary operators & and *. Also extend the array bounds
checking to work with pointer arithmetic; the pointer arithemtic checking can
be turned on using -Warray-bounds-pointer-arithmetic.

The changes to where CheckArrayAccess gets called is based on some trial &
error and a bunch of digging through source code and gdb backtraces in order
to have the check performed under as many situations as possible (such as for
variable initializers, arguments to function calls, and within conditional in
addition to the simpler cases of the operands to binary and unary operator)
while not being called--and triggering warnings--more than once for a given
ArraySubscriptExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
e735e2deb9e57d9b62c1258ee236ccfeba8e84b2 06-Aug-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Wire up -import-module to run ReadAST for each module loaded.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136987 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
8e68f1c8a2919ea83c2053731d6011074f1062e1 05-Aug-2011 Roman Divacky <rdivacky@freebsd.org> Let attribute((cdecl)) and company override -mrtd default calling convention.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c268434b332bbe57950d977633369bf5822d9554 05-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Flesh out the -Warray-bounds detection of C89 tail-padded one-element
arrays. This now suppresses the warning only in the case of
a one-element array as the last field in a struct where the array size
is a literal '1' rather than any macro expansion or template parameter.

This doesn't distinguish between the language standard in use to allow
code which dates from C89 era to compile without the warning even in C99
and C++ builds. We could add a separate warning (under a different flag)
with fixit hints to switch to a flexible array, but its not clear that
this would be desirable. Much of the code using this idiom is striving
for maximum portability.

Tests were also fleshed out a bit, and the diagnostic itself tweaked to
be more pretty w.r.t. single elment arrays. This is more ugly than
I would like due to APInt's not being supported by the diagnostic
rendering engine.

A pseudo-patch for this was proposed by Nicola Gigante, but I reworked
it both for several correctness issues and for code style.

Sorry this was so long in coming.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136965 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
894e4d5d232a23668b3f585fdaa56858cfabf3d3 05-Aug-2011 Chandler Carruth <chandlerc@gmail.com> Change the this -W flag to 'return-stack-address'.

~or~

Paint the bikeshed green.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136959 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc2f30c4ed7770b6005bd55b529a55c1fcc250fc 05-Aug-2011 Matt Beaumont-Gay <matthewbg@google.com> Extend memset/memcpy/memmove checking to include memcmp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136950 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ace5e76e5c707f4a8447abc01ef540fa6d57ff95 05-Aug-2011 Kaelyn Uhrain <rikka@google.com> Have the typo correction in DiagnoseEmptyLookup properly handle template
functions when performing function overload resolution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136948 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
dd7fddb5b6883326e52b278a9b7e9cefea29aae0 05-Aug-2011 Chad Rosier <mcrosier@apple.com> More whitespace and naming fixup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
42d7b2d25b6f90dc397886d05502b10ab5a8b51b 05-Aug-2011 Matt Beaumont-Gay <matthewbg@google.com> Specialize diag::warn_unused_call for the "warn_unused_result" attribute, so
it can be controlled with a distinct flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136941 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
270f943c8547d325ad9ddd8c89a08b3a047b293d 05-Aug-2011 Matt Beaumont-Gay <matthewbg@google.com> Put a few warnings into a DiagGroup. Feel free to improve the flag name!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6a3bec320e5617922f1f15657dcdaeb22610ca23 04-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: diagnose protocol inconsistencies in following
situation. When a class explicitly or implicitly (through inheritance)
"conformsTo" two protocols which conflict (have methods which conflict).
This is 2nd part of // rdar://6191214.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136927 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ema/Sema.h
8fa0a80b4482ad94e82c4a19e23de17fd69140b5 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Add a new libclang API to return a CXCompletionString for an arbitrary
cursor, from Connor Wakamo! Addresses <rdar://problem/9087798>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136911 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
272b6bc6a6c8fc04f951ad850df68c44d137f513 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce local -> global mapping for preprocessed entity IDs. This is
the last of the ID/offset/index mappings that I know
of. Unfortunately, the "gap" method of testing doesn't work here due
to the way the preprocessing record performs iteration. We'll do more
testing once multi-AST loading is possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136902 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ContinuousRangeMap.h
3b2257ca054aa0b7d0150a294f184e9349cda433 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove the unset, unused return value of
ASTReader::ReadMacroRecord(). No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136893 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
6e43f3f0e2fa7a4b50d2497de94a40437cd26003 04-Aug-2011 Chad Rosier <mcrosier@apple.com> Additional comments and whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136892 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
4d9d157afb35742bc6348defbe45bc6de780ec77 04-Aug-2011 Kaelyn Uhrain <rikka@google.com> Match type names and give more info for out-of-line function definition errors.

Having a function declaration and definition with different types for a
parameter where the types have same (textual) name can occur when an unqualified
type name resolves to types in different namespaces in each location.

The error messages have been extended by adding notes that point to the first
parameter of the function definition that doesn't match the declaration, instead
of a generic "member declaration nearly matches". The generic message is still
used in cases where the mismatch is not in the paramenter list, such as
mismatched cv qualifiers on the member function itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
fb2d9e092f19cfcdd11ebd5ceac40456c090c7db 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Implement the local -> global remapping for macro definition IDs in
the detailed preprocessing record. Tested with the standard "gaps" method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136882 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
ae7902c4293d9de8b9591759513f0d075f45022a 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Parsing of C++0x lambda expressions, from John Freeman with help from
David Blaikie!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136876 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/DeclSpec.h
61a4e6a835cafe11421b217bf94a610d9e44205f 04-Aug-2011 John McCall <rjmccall@apple.com> Take -Wvector-conversions out of -Wmost; it needs a lot of
QoI work. rdar://problem/9887979. If some open-source
wants to get an idea for what QoI work I have in mind,
ping me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
70529099e60c0bb53fdf0f31b387f487807b3d99 04-Aug-2011 Chad Rosier <mcrosier@apple.com> Add documentation for useBitFieldTypeAlignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136859 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
61a62216a0bb33fb668ab653d9f9a704e43d2fc6 04-Aug-2011 Chad Rosier <mcrosier@apple.com> Add partial support for using anonymous bitfields (e.g., int : 0) to enforce
alignment. This fixes cases where the anonymous bitfield is followed by a
non-bitfield member. E.g.,

struct t4
{
int foo : 1;
long : 0;
char bar;
};

Part of rdar://9859156

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136858 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e92b8a1dbba150e213c4980710fcb59ec5c5c570 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Don't introduce a local -> global mapping for CXXBaseSpecifiers. The
IDs will never cross module boundaries, since they're tied to the
CXXDefinitionData, so just use a local mapping throughout. Eliminate
the global -> local tables and supporting data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136847 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
b18b1fd33f958264630fbae2602c81275bae8c9a 04-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce local -> global selector ID mapping into the AST
reader. Tested with the usual "gaps" method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136839 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
6ec60e00eeaaed78d98c85ce962d6f328094ca14 03-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce a local-to-global remapping for identifiers in the AST
reader, and fix up the one (!) place where we were improperly mapping
a local ID to a global ID. Tested via the usual "gaps" trick.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136817 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
f0c1d8f804e7854bedf3f241409185951ee67866 03-Aug-2011 Kaelyn Uhrain <rikka@google.com> Improve overloaded function handling in the typo correction code.

Change TypoCorrection to store a set of NamedDecls instead of a single
NamedDecl. Also add initial support for performing function overload
resolution to Sema::DiagnoseEmptyLookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136807 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ema/TypoCorrection.h
74133075f5024ce87e4c1eb644d77c20e1c521f4 03-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: Methods declared in methods must type match
those declated in its protocols. First half or // rdar://6191214


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136794 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
43fd9388d374f29e908e611a686c6137553efa79 03-Aug-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Fix a few typos



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136792 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
4192f0336e86532904b82ae63cd57b966f1c6dfd 03-Aug-2011 Douglas Gregor <dgregor@apple.com> Remove stray comma

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136783 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
0a14e4bf604a91b035a479235adf4c2f6c9128a2 03-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce a constant for the number of predefined declarations in an
AST file, along with an enumeration naming those predefined
declarations. No functionality change, but this will make it easier to
introduce new predefined declarations, when/if we need them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136781 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
496c709a6f08f5c502b6f592ddd9ed40f953a5e5 03-Aug-2011 Douglas Gregor <dgregor@apple.com> Introduce the local -> global declaration ID mapping into the AST
reader, to allow AST files to be loaded with their declarations
remapped to different ID numbers. Fix a number of places where we were
either failing to map local declaration IDs into global declaration
IDs or where interpreting the local declaration IDs within the wrong
module.

I've tested this via the usual "random gaps" method. It works well
except for the preamble tests, because our handling of the precompiled
preamble requires declaration and preprocessed entity to be stable
when parsing code and then loading that back into memory. This
property will hold in general, but my randomized testing naturally
breaks this property to get more coverage. In the future, I expect
that the precompiled preamble logic won't need this property.

I am very unhappy with the current handling of the translation unit,
which is a rather egregious hack. We're going to have to do something
very different here for loading multiple AST files, because we don't
want to have to cope with merging two translation units. Likely, we'll
just handle translation units entirely via "update" records, and
predefine a single, fixed declaration ID for the translation
unit. That will come later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136779 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
88710f22be1acb04b7d812aebe87bea56394c07c 03-Aug-2011 Eli Friedman <eli.friedman@gmail.com> A couple fixes for preprocessor expressions:

1. Be more tolerant of comments in -CC (comment-preserving) mode. We were missing a few cases.

2. Make sure to expand the second FOO in "#if defined FOO FOO". (See also
r97253, which addressed the case of "#if defined(FOO FOO".)

Fixes PR10286.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136748 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
fc6142779f42058b4a39a29b6209a01a6de9fe7c 02-Aug-2011 Chad Rosier <mcrosier@apple.com> Fix cmake for r136702 (at least for the most part). Chandler has been kind
enough to offer to investigate the underlying issue. Thanks to Doug for his
assistance as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136719 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
4068eaaec44346a5866dcf3e5e4204ca82134e53 02-Aug-2011 Chad Rosier <mcrosier@apple.com> Temporarily revert parts of r136702 to make cmake builds happy.
Someone with more cmake experience want to throw me a bone? :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136709 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
e36050111e2bdb7efc014af9dd7f0009b492ac36 02-Aug-2011 Douglas Gregor <dgregor@apple.com> Change the hashing function for DeclContext lookup within an AST file
by eliminating the type ID from constructor, destructor, and
conversion function names. There are several reasons for this change:
- A given type (say, int*) isn't guaranteed to have a single, unique
type ID within a chain of PCH files. Hence, we could end up hashing
based on the wrong type ID, causing name lookup to fail.

- The mapping from types back to type IDs required one DenseMap
entry for every type that was ever deserialized, which was an
unacceptable cost to support just the name lookup of constructors,
destructors, and conversion functions. Plus, this mapping could
never actually work with chained or multiple PCH, based on the first
bullet.

Once we have eliminated the type from the hash function, these
problems go away, as does my horrible "reverse type remap" hack, which
was doomed from the start (see bullet #1 above) and far too
complicated.

However, note that removing the type from the hash function means that
all constructors, destructors, and conversion functions have the same
hash key, so I've updated the caller to double-check that the
declarations found have the appropriate name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136708 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
2b81910618f63e4ce2373c926a26e76b4b91373f 02-Aug-2011 Chad Rosier <mcrosier@apple.com> When the compiler crashes, the compiler driver now produces diagnostic
information including the fully preprocessed source file(s) and command line
arguments. The developer is asked to attach this diagnostic information to a
bug report.
rdar://9575623


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136702 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
onfig/config.h.cmake
river/ArgList.h
river/Compilation.h
river/Driver.h
river/Job.h
c24a1eef40207457692a1ad597cefdd0dc8fa149 02-Aug-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Following up the earlier refactoring/cleanup work by fixing up how we manage the virtual files the ASTReader has to handle. Specifically, this occurs when the reader is reading AST files that were created in memory and not written to disk. For example, when a user creates a chained PCH using command line flags. These virtual files are stored in MemoryBuffers in ChainIncludeSource.cpp, and then read back in by the ASTReader. This patch moves the management of these buffers into the ModuleManager, so that it becomes the authority on where these buffers are located.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136697 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
a119da0761cb6b85f53857eaee50f6ad8c5ea0a0 02-Aug-2011 Douglas Gregor <dgregor@apple.com> Implement a proper local -> global type ID remapping scheme in the AST
reader. This scheme permits an AST file to be loaded with its type IDs
shifted anywhere in the type ID space.

At present, the type indices are still allocated in the same boring
way they always have been, just by adding up the number of types in
each PCH file within the chain. However, I've done testing with this
patch by randomly sliding the base indices at load time, to ensure
that remapping is occurring as expected. I may eventually formalize
this in some testing flag, but loading multiple (non-chained) AST
files at once will eventually exercise the same code.

There is one known problem with this patch, which involves name lookup
of operator names (e.g., "x.operator int*()") in cases where multiple
PCH files in the chain. The hash function itself depends on having a
stable type ID, which doesn't happen with chained PCH and *certainly*
doesn't happen when sliding type IDs around. We'll need another
approach. I'll tackle that next.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136693 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ContinuousRangeMap.h
8df5c9b5d65beec807e4e77dae2813dd193f77dd 02-Aug-2011 Douglas Gregor <dgregor@apple.com> Add a debugging dump for Module (also emitted as part of the AST
reader statistics), to show the local-to-global mappings. The only
such mapping we have (at least, for now) is for source location
offsets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136687 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
f33740efdb2d836a96ba97ca3004d46404401439 02-Aug-2011 Douglas Gregor <dgregor@apple.com> Generalize the module offset map to include mapping information for
all of the kinds of IDs that can be offset. No effectively
functionality change; this is preparation for adding remapping for
IDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136686 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ContinuousRangeMap.h
7898005b35f8ee5c639e1247ce56b63004b86b03 02-Aug-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: reverse patch for // rdar://9818354



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136658 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5d51a1d22d862dfae44eaa098af4e09bbfebae72 01-Aug-2011 Douglas Gregor <dgregor@apple.com> Rename the AST file's SOURCE_LOCATION_MAP to MODULE_OFFSET_MAP, to indicate the greater role it will soon play in remapping.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136619 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
0bfe83b5a98ce37bf3a10274bca6f93ca4cb9696 30-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [libclang] Annotation of parameters that got default args from a previous declarations was
broken because the end location of the parameter was the end location of the default arg,
resulting in a source range that could begin in one file and end in another.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f78c4e57122dad4430329135b966dfc241a6425b 30-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce a Fix-It for the "missing sentinel" warning, adding an
appropriate sentinel at the end of the argument list. Also, put the
sentinel warnings under -Wsentinel. Fixes <rdar://problem/8764236>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d2d8be6a27d0ef73d46039604682f7890e1cc3e0 30-Jul-2011 Douglas Gregor <dgregor@apple.com> Add code completion to produce "else" blocks after an "if"
statement. Fixes <rdar://problem/9229438>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136564 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0f91c8ccb398be2bd40dc402309bd79737542396 30-Jul-2011 Douglas Gregor <dgregor@apple.com> When performing code completion after at @interface, allow both
already-defined and forward-declared results. Already-defined results
are fine because they could be the start of a category. Fixes
<rdar://problem/9811691>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136559 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
4eb7522e70a7212328089f0ef490380a9ba322a3 30-Jul-2011 Douglas Gregor <dgregor@apple.com> When complaining about a non-POD second argument to va_arg, use a
special diagnostic for ARC ownership-qualified types. We wouldn't want
to expose Objective-C programmers to the term "POD", would we? Fixes
<rdar://problem/9772982>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136558 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
70a34da7a767bda69958d8f659de9f87b03de747 29-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Remove recursive visitation in ExprEngine::VisitObjCForCollectionStmt because it isn't needed anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136519 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
4410a935e8d8ee3c903b858bbf74ca24fce629b5 29-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Remove explicit argument processing from ExprEngine::VisitObjCMessage() since it is no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136518 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
2e09163890b51aa8766564780154531451a3cf0b 29-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Renamed Loaded member to ImportedBy, as it's easier to read. Added another set to represent the modules a module imports.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136476 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
d16aa4139b8e6d08c0166945ab24ce340055465c 29-Jul-2011 Douglas Gregor <dgregor@apple.com> Add a missing \endcode for Doxygen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
c0a575f9b791a25c94b1c3c832dd73ec564646bb 29-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make DiagnosticErrorTrap keep a count of the errors that occurred so multiple
DiagnosticErrorTraps can be composed (e.g. a trap inside another trap).

Fixes http://llvm.org/PR10462 & rdar://9852007.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136447 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9827a8049a793f23c62ade8f24f0c66c2dbf6741 29-Jul-2011 Douglas Gregor <dgregor@apple.com> In the ASTReader, replace the continuous range maps whose value types
were (Module*, Offset) with equivalent maps whose value type is just a
Module*. The offsets have moved into corresponding "Base" fields
within the Module itself, where they will also be helpful for
local->global translation (eventually).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136441 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
9aab1489866a5afe1a8a3267f9ad7124034fd644 29-Jul-2011 Peter Collingbourne <peter@pcc.me.uk> Fix an inconsistency in Sema::ConvertArgumentsForCall in that
the callee note diagnostic was not emitted in the case where
there were too few arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1e849b6f43a6aded51466978d826e938859130db 29-Jul-2011 Douglas Gregor <dgregor@apple.com> Move the base type ID from the ASTReader's global type map into the
Module itself, which makes more sense. This pattern to be repeated
several more times.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136436 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
fefe91e6017321aa7db431b94cb3615f6c97da7a 29-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: warn if implementation of a method in category
masks an existing method in its primary class, class extensions,
and primary class's non-optional protocol methods; as primary
class, or one of its subclass's will implement this method.
This warning has potential of being noisy so it has its own
group. // rdar://7020493


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136426 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
b4ae29ced808ae77914754a9e966513aa26b580b 29-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Some documentation fixes so that we are explicit about which iteration order is source-order. Also, removing unused NextInSource field of Module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136423 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
a4c7a4314ffbe402091695874e93d9b0a79c8099 29-Jul-2011 Ted Kremenek <kremenek@apple.com> Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136422 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/AnalyzerOptions.h
882998923889a2fcce9b49696506c499e22cf38f 29-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs.

The motivation of this large change is to drastically simplify the logic in ExprEngine going forward.

Some fallout is that the output of some BugReporterVisitors is not as accurate as before; those will
need to be fixed over time. There is also some possible performance regression as RemoveDeadBindings
will be called frequently; this can also be improved over time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136419 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/CFG.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
fde18c53548769748b7a2fc59f5281fdec848686 29-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] add accessor to StoreRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136417 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/StoreRef.h
fa7a95c62aa573a30d87c215b320b0086ed08bdc 29-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Add StoreManager::includedInBindings() to to query whether a region is used in any bindings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136416 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Store.h
eea72a925f294225391ecec876a342771c09b635 29-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] fix handling of MaterializeTemporaryExpr by binding the result value to
the proper expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136412 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
86c67d8802a9e0887c31c850188991465ac3c1bd 29-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce the local-global mapping for preprocessed entities, and use
it appropriately. Also, patch up a place where we were failing to map
local macro definition IDs into global macro definition IDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136411 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
e144c70d07bf7af6c0337000ac4c4e805fc6d842 29-Jul-2011 Douglas Gregor <dgregor@apple.com> Use local-to-global mapping appropriately for macro definitions in the ASTReader

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136410 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
2d2689ab787c6d54cb985c28ff3f16370bc01b0f 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Use the local -> global mapping functions for selectors more
consistently in the ASTReader.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136395 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
95eab176f51beed44a9bc14c0dcdd37844b23740 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Teach the ASTReader to perform local and global mapping of identifier
IDs properly, although the mapping itself is still trivial.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136391 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
db33e14661c7a118a2d9a777ae69c0ecaa036e1e 28-Jul-2011 Caitlin Sadowski <supertri@google.com> Added basic parsing for all remaining attributes, thread safety
analysis. This includes checking that the attributes are applied in the
correct contexts and with the correct number of arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136383 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
6722155dfe056e2c3dfbacbcaffae04dea0c2be0 28-Jul-2011 Anna Zaks <ganna@apple.com> Add */& mismatch fixit generation to the Sema::DiagnoseAssignmentResult().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e4a3f5c59664af13e02e9bb58c2810b830e3b96 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Make the deserialization of Sema::PendingInstantiations lazy. At this
point, ASTReader::InitializeSema() has very little interesting work,
*except* issues stemming from preloaded declarations. That's something
we'll still need to cope with.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136378 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
erialization/ASTReader.h
f3546eeef1eed4661b77b93b91a29be1bf5f7d0b 28-Jul-2011 Anna Zaks <ganna@apple.com> Refactor the */& mismatch fixit generation out of SemaOverload and provide a simple conversion checking function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136376 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ema/SemaFixItUtils.h
f2abb52acbba25ad93a1ecdc24d994b9694803a1 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Promote the deserialized PendingInstantiations vector from being a
Module member to being an ASTReader member; we want it to be
centralized for lazy deserialization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136373 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
dfe6543e12eca5c79421378b7fa6b3e8fc403e63 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Lazily deserialize Sema::VTableUses. Plus, fix the utterly and
completely broken deserialization mapping code we had for VTableUses,
which would have broken horribly as soon as our local-to-global ID
mapping became interesting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136371 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
31e37b2d7b4815fdea6a35d49f33005562f0d494 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Make Sema::WeakUndeclaredIdentifiers lazily deserialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136368 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
ema/Weak.h
erialization/ASTReader.h
8a22e27af58776b9bd9e51b913514fbfa4d4fa84 28-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Add missing documentation onto new member variable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136365 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
fdde9e719ad75e656a1475a36b06c2f88f0957cc 28-Jul-2011 Caitlin Sadowski <supertri@google.com> Added parsing for guarded_var, pt_guarded_var, lockable,
scoped_lockable, and no_thread_safety_analysis attributes, all for thread safety analysis

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
1afb661bc5444462a246cefa0effa61ef25fab29 28-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Switch the ModuleManager over to using a FileManager and FileEntry* as part of its lookup instead of the filename. This is a more correct unique identifier, as symlinks can be handled by the FileManager.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
erialization/ASTReader.h
5b9dc7caaef0469babc45dd8e713727a136ce517 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Make Sema::ReferencedSelectors lazily deserialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136357 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
erialization/ASTReader.h
8451ec7e709baf777bec07dc70653e0c523dd120 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Move a Module's ReferencedSelectorsData into the ASTReader itself, so
that it accumulates referenced selectors from each of the modules/PCH
files as they are loaded. No actual functionality change, yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136356 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
ec12ce2f6da44bfc9048772327a3924498099d60 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Make Sema::LocallyScopedExternalDecls lazily deserialized. In theory,
we could turn this into an on-disk hash table so we don't load the
whole thing the first time we need it. However, it tends to be very,
very small (i.e., empty) for most precompiled headers, so it isn't all
that interesting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136352 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
b4dc485a2b38ea98ba7da01596fd0e8438120346 28-Jul-2011 Douglas Gregor <dgregor@apple.com> AST serialization support for the Framework in IndexHeaderMapHeader
fields of HeaderFileInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
erialization/ASTReader.h
65e02fa80e1c185f18e5f81cefc30d75383a7301 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce the "-index-header-map" option, to give special semantics
for quoted header lookup when dealing with not-yet-installed
frameworks. Fixes <rdar://problem/9824020>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136331 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/HeaderSearchOptions.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
a126f17ca83b985300c1f65cee647bea108db657 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Switch Sema::DynamicClasses over to LazyVector

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136317 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
7e90985df09855dc309ed888a5b16a0ae684f8e3 28-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Cut down the number of open/close system calls for output files.

For PCH files, have only one open/close for temporary + rename to be safe from race conditions.
For all other output files open/close the output file directly.

Depends on llvm r136310. rdar://9082880 & http://llvm.org/PR9374.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136315 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
d58a0a55e64a7c410a80e9d6dcd899e61e99cc4d 28-Jul-2011 Douglas Gregor <dgregor@apple.com> Switch Sema::ExtVectorDecls over to LazyVector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136314 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
5cb3d699f0e37de1767eb23d26d03953a46cf1ff 28-Jul-2011 Richard Trieu <rtrieu@google.com> Add template instantiations to the output of -ast-dump.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1fc1de48cdf9a2f241e0f2c7b9e9db2322f1b794 28-Jul-2011 Chad Rosier <mcrosier@apple.com> The -fapple-kext flag was designed to "do the right thing" for building code for
use in KEXTs. However, users/Xcode still need to tweak the linker flags to do
the right thing, and end up using -Xlinker, for example. Instead, have the
driver "do the right thing" when linking when -fapple-kext is present on the
command line, and we should have Xcode use -fapple-kext instead of setting other
flags like -Xlinker -kext or -nodefaultlibs.
rdar://7809940

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136294 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
0129b561a1452bf057f6b18b6a1de815d487ab81 27-Jul-2011 Douglas Gregor <dgregor@apple.com> Turn Sema::DelegatingCtorDecls into a LazyVector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136273 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
07524039dce5c820f111a1b3f772b4261f004b4a 27-Jul-2011 John McCall <rjmccall@apple.com> The lock operand to an @synchronized statement is also
supposed to be a full-expression; make it so. In ARC, make sure
we retain the lock for the entire protected block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136271 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a2ee20aa9660851080135219cac5b31fbac08b78 27-Jul-2011 Douglas Gregor <dgregor@apple.com> Switch Sema::UnusedFileScopedDecls over to a LazyVector.
- Added LazyVector::erase() to support this use case.
- Factored out the LazyDecl-of-Decls to RecordData translation in
the ASTWriter. There is still a pile of code duplication here to
eliminate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
aca25bccefe56121b686706afc84c8cb5d46e65b 27-Jul-2011 Anna Zaks <ganna@apple.com> Add a utility function to the Lexer, which makes it easier to find a token after the given location. (It is a generalized version of trans::findLocationAfterSemi from ArcMigrate, which will be changed to use the Lexer utility).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136268 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
a862320972e63349524dc9aa744dec1b95f54ba1 27-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce a new data structure, LazyVector, which is a vector whose
contents are lazily loaded on demand from an external source (e.g., an
ExternalASTSource or ExternalSemaSource). The "loaded" entities are
kept separate from the "local" entities, so that the two can grow
independently.

Switch Sema::TentativeDefinitions from a normal vector that is eagerly
populated by the ASTReader into one of these LazyVectors, making the
ASTReader a bit more like me (i.e., lazy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
ema/ExternalSemaSource.h
ema/Sema.h
erialization/ASTReader.h
d648d373d6c14dccadd3bef7b560f6a7296f949e 27-Jul-2011 Peter Collingbourne <peter@pcc.me.uk> Silence gcc warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136258 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
020972d5d6dc1f3c49839cfbadcccf4cbefb2f4d 27-Jul-2011 Peter Collingbourne <peter@pcc.me.uk> Forbid address-space-qualified function types, per TR 18037

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5cee1195584fa8672253139c86e922daeda69b9e 27-Jul-2011 Douglas Gregor <dgregor@apple.com> Add support for C++0x unicode string and character literals, from Craig Topper!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136210 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
asic/DiagnosticLexKinds.td
asic/IdentifierTable.h
asic/TokenKinds.def
ex/Lexer.h
ex/LiteralSupport.h
ex/Token.h
ex/TokenConcatenation.h
arse/Parser.h
18fd0c6915b45c4daafe18e3cd324c13306f913f 27-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] More automatic transformations and safety improvements; rdar://9615812 :

- Replace calling -zone with 'nil'. -zone is obsolete in ARC.
- Allow removing retain/release on a static global var.
- Fix assertion hit when scanning for name references outside a NSAutoreleasePool scope.
- Automatically add bridged casts for results of objc method calls and when calling CFRetain, for example:

NSString *s;
CFStringRef ref = [s string]; -> CFStringRef ref = (__bridge CFStringRef)([s string]);
ref = s.string; -> ref = (__bridge CFStringRef)(s.string);
ref = [NSString new]; -> ref = (__bridge_retained CFStringRef)([NSString new]);
ref = [s newString]; -> ref = (__bridge_retained CFStringRef)([s newString]);
ref = [[NSString alloc] init]; -> ref = (__bridge_retained CFStringRef)([[NSString alloc] init]);
ref = [[s string] retain]; -> ref = (__bridge_retained CFStringRef)([s string]);
ref = CFRetain(s); -> ref = (__bridge_retained CFTypeRef)(s);
ref = [s retain]; -> ref = (__bridge_retained CFStringRef)(s);

- Emit migrator error when trying to cast to CF type the result of autorelease/release:
for

CFStringRef f3() {
return (CFStringRef)[[[NSString alloc] init] autorelease];
}

emits:

t.m:12:10: error: [rewriter] it is not safe to cast to 'CFStringRef' the result of 'autorelease' message; a __bridge cast may result in a pointer to a destroyed object and a __bridge_retained may leak the object
return (CFStringRef)[[[NSString alloc] init] autorelease];
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t.m:12:3: note: [rewriter] remove the cast and change return type of function to 'NSString *' to have the object automatically autoreleased
return (CFStringRef)[[[NSString alloc] init] autorelease];
^

- Before changing attributes to weak/unsafe_unretained, check if the backing ivar
is set to a +1 object, in which case use 'strong' instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136208 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
990567cb60e8530ba01b41d4e056e32b44b95ec0 27-Jul-2011 John McCall <rjmccall@apple.com> Clean up the analysis of the collection operand to ObjC
for-in statements; specifically, make sure to close over any
temporaries or cleanups it might require. In ARC, this has
implications for the lifetime of the collection, so emit it
with a retain and release it upon exit from the loop.

rdar://problem/9817306



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136204 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
d1194fbbf65374bfa3578eb40a547e4f97b497d1 27-Jul-2011 Ted Kremenek <kremenek@apple.com> clang_getCXTUResourceUsage: report memory used by HeaderSearch.

This required converting the StringMaps to use a BumpPtrAllocator. I measured the
compile time and saw no observable regression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136190 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
ca7dc2b755eb81ac95121ce1a1f1aa44a4a0fe12 27-Jul-2011 Ted Kremenek <kremenek@apple.com> clang_getCXTUResourceUsage: Report memory used by data structures in SourceManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ef8c79c52200e4f7c32f8ef2744c1557b7f3f3ea 27-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Re-fix r136172 so it isn't an error; apparently, some people are fond of their undefined behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
191591336f639dad1504e863733fb831645c1644 27-Jul-2011 Jeffrey Yasskin <jyasskin@google.com> This patch implements as much of the narrowing conversion error specified by
[dcl.init.list] as is possible without generalized initializer lists or full
constant expression support, and adds a c++0x-compat warning in C++98 mode.

The FixIt currently uses a typedef's basename without qualification, which is
likely to be incorrect on some code. If it's incorrect on too much code, we
should write a function to get the string that refers to a type from a
particular context.

The warning is currently off by default. I'll fix LLVM and clang before turning
it on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Initialization.h
ema/Sema.h
e33f643230738400f0bf5503a87d886e9bc635de 27-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Diagnose trying to delete a pointer to an abstract class with a non-virtual destructor. PR10504.

I'm not completely sure the standard allows us to reject this, but if it doesn't, it should. :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136172 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
aba9ff5d4aa9cccf88b5178f55e1fab24a210197 27-Jul-2011 Anna Zaks <ganna@apple.com> Remove unused diagnostic definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
e52c91478a144f913019591ee1839e1846345f71 27-Jul-2011 Eli Friedman <eli.friedman@gmail.com> A couple minor issues with Sema for delete:

1. Attempting to delete an expression of incomplete class type should be an error, not a warning.

2. If someone tries to delete a pointer to an incomplete class type, make sure we actually emit
the delete expression after we warn.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
473506bd9dfd84944c2c5ca2c2a38814f46febc6 26-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> In ARC we emit an error when compiling:

@interface Foo : NSObject
@property (readonly) id myProp;
@end

@implementation Foo
@synthesize myProp;
@end

t.m:9:13: error: ARC forbids synthesizing a property of an Objective-C object with unspecified storage attribute
@synthesize myProp;
^

which is fine, we want the ownership of the synthesized ivar to be explicit. But we should _not_ emit an error
for the following cases, because we can get the ownership either from the declared ivar or from the property type:

@interface Foo : NSObject {
__weak id _myProp1;
id myProp2;
}
@property (readonly) id myProp1;
@property (readonly) id myProp2;
@property (readonly) __strong id myProp3;
@end

@implementation Foo
@synthesize myProp1 = _myProp1;
@synthesize myProp2;
@synthesize myProp3;
@end

rdar://9844006.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136155 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
91d1bd6ede1d101a2e49719250c33154b39e0016 26-Jul-2011 Ted Kremenek <kremenek@apple.com> Report more memory using in Preprocessor::getTotalMemory() and PreprocessingRecord::getTotalMemory().

Most of the memory was already reported; but now we report more memory from side data structures.

Fixes <rdar://problem/9379717>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136150 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
2760455396abd72f0842122170dfab6126c46891 26-Jul-2011 Kaelyn Uhrain <rikka@google.com> Revert r136046 while fixing handling of e.g. &foo[index_one_past_size]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136113 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
48d2c3f7c3ca48da05436afdc8426a245294ee65 26-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> This patch extends the previous patch by starting to incorporate more functionality, like lookup-by-name and exporting lookup tables, into the module manager. Methods now have documentation. A few more functions have been switched over to the new iterator style and away from manual/explicit iteration. Ultimately we want to move away from name lookup here, as symlinks make filenames not a safe unique value, but we use it here as a stopgap before better measures are in place (namely instead using FileEntry* from a global FileManager).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136107 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
0a47d69af8bda945352997af3da4687a3356096a 26-Jul-2011 Douglas Gregor <dgregor@apple.com> Add new libclang API, clang_codeCompleteGetObjCSelector(), which
provides the partial Objective-C selector used in a code
completion. From Connor Wakamo!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136084 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
9f1210c3280104417a4ad30f0a00825ac8fa718a 26-Jul-2011 Chad Rosier <mcrosier@apple.com> After further discussion it has been determined that alignof should report
the preferred alignment. Thus, revert r135934, r135935, and r135940.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3201f382956ed9beee9fb31229c2835c1208889c 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Clean up as many of the comments in Basic I can find to talk in terms of
'expansion' rather than 'instantiation' for macro source locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
1728762d5a8cfaf8d64385f47b311e84de1ae7a2 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Migrate 'Instantiation' data and API bits of SLocEntry to 'Expansion'
etc. With this I think essentially all of the SourceManager APIs are
converted. Comments and random other bits of cleanup should be all thats
left.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
78df836808aee22c3157e1bc23bc4ec569b80568 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Convert InstantiationInfo and much of the related code to ExpansionInfo
and various other 'expansion' based terms. I've tried to reformat where
appropriate and catch as many references in comments but I'm going to do
several more passes. Also I've tried to expand parameter names to be
more clear where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
bf340e452339e374ea6eef78c1f0a2abdd16c5a3 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename create(MacroArg)InstantiationLoc to create(MacroArg)ExpansionLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
96d3589e523a04f4ff2058a7919226ce60696ae8 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename SourceManager (and InstantiationInfo) isMacroArgInstantiation API
to isMacroArgExpansion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b48f7c059e74cd5395ca542c1a96be16e42f3d80 26-Jul-2011 Kaelyn Uhrain <rikka@google.com> Expand array bounds checking to work in the presence of unary & and *,
and to work with pointer arithmetic in addition to array indexing.

The new pointer arithmetic porition of the array bounds checking can be
turned on by -Warray-bounds-pointer-arithmetic (and is off by default).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136046 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
642116259e8df6286063a17361c20e95b5017a0a 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename getInstantiationLineNumber to getExpansionLineNumber in both
SourceManager and FullSourceLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
b49dcd249c7f4f034493741f95394987a4ccf244 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Repair some indentation I missed in my previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135967 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a77c031cb66f75d22672070052cc6e0205289ff8 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename getInstantiationColumnNumber to getExpansionColumnNumber in both
SourceManager and FullSourceLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135965 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
e7b2b6e87dbe5b1207f77b6ff9c210a02f95bb39 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename getDecomposedInstantiationLoc to getDecomposedExpansionLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f84ef95ecec34f27fd05eb4e0392ca6bd3bd0be0 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> getInstantiationLocSlowCase -> getExpansionLocSlowCase

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135961 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
999f739404edf2078cf9f9c28b4dc45c19765842 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename SourceManager::getImmediateInstantiationRange to
getImmediateExpansionRange.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135960 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5d6d89fef8c7fff8b1a67c943fb5557a2a803468 25-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Refactor of how modules are handled in ASTReader to remove explicit uses of a chain of AST files, instead redirect calls through a module manager. This should help move toward a DAG and the potential of loading multiple, unrelated PCH files. It's still early in development.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135957 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
822f54a7ba3eca643104623e8048be20a3391b19 25-Jul-2011 Chad Rosier <mcrosier@apple.com> Allow target to specify about using minimum alignment vs preferred. Takes care of
FIXME: Override "preferred align" for double and long long for ARM apcs-gnu ABI.
Also part of rdar://9802874

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
01231610bc89a8d3ae1bdfee0063af9386fd82a4 25-Jul-2011 Axel Naumann <Axel.Naumann@cern.ch> Pick up expected diagnostics not only in the main file but also in the file where the first diagnostic occurred.
Useful if the main file is not relevant (like with cling).
By Vassil Vassilev.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135936 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
edc3dccece244a584f8ebdb81da6c962c08e79be 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rename SourceManager::getInstantiationRange to getExpansionRange.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135915 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
402785357ab053dd53f4fdd858b9630a5e0f8bad 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Mechanically rename SourceManager::getInstantiationLoc and
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part
of the API and documentation update from 'instantiation' as the term for
macros to 'expansion'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
eee3ef177a171c06f826c331e7a9e256d01eaeb0 24-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc: clang should warn if redeclaration of methods
declared in protocol in the class qualified by the
protocol have type conflicts. To reduce amount of
noise, this is done when class is implemented.
// rdar://9352731


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
2d3ba4f5a923a90c3fc290ddfba5e36c2d0a9b46 23-Jul-2011 Chris Lattner <sabre@nondot.org> Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon Mulder!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/LLVM.h
river/Driver.h
rontend/Utils.h
ex/Preprocessor.h
d47d3b0cfeb7e8564ff77f48130fe63282b6d127 23-Jul-2011 Chris Lattner <sabre@nondot.org> clean up forward declarations of raw_ostream to use the new LLVM.h
patch by Jon Mulder!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
asic/SourceManager.h
ex/DirectoryLookup.h
taticAnalyzer/Core/CheckerProvider.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
46f72725b85649f284ab4ebfbb1883cd727538c1 23-Jul-2011 Anna Zaks <ganna@apple.com> Add ext_backslash_newline_eof to Wnewline-eof group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135830 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
cfe1bcb440ef2fde5e0df6e07a5abbeee089e6e7 23-Jul-2011 Anna Zaks <ganna@apple.com> Expose no newline at end of file warning under Wnewline-eof flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135822 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
832d620b4ae0fc5fe28561b885b4cfc65cf5c9ab 22-Jul-2011 Douglas Gregor <dgregor@apple.com> Switch all of the "isysroot" const char*'s throughout the AST reader
and writer to StringRef or std::string, as appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135769 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
72a9ae18553bf8b6bdad84d2c54f73741a47e275 22-Jul-2011 Douglas Gregor <dgregor@apple.com> Rename ASTReader::PerFileData to serialization::Module, pulling it out
of ASTReader so it can become its own full-fledged class
(eventually). No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135767 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
7107d360db751aa974285ae2136aed76b6691b86 22-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Add a missing forward declaration and namespace qualifier to this
header. This showed up in client code that has a different include
ordering after Chris's shuffle of raw_ostream. All of the Clang code
ends up with a header included before this one that provides the needed
type and using declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135765 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
dc7c5ad7a15914b7ae24f31f18a20ad2f8ecd0bc 22-Jul-2011 John McCall <rjmccall@apple.com> Document the existing objc_precise_lifetime attribute.
Introduce and document a new objc_returns_inner_pointer
attribute, and consume it by performing a retain+autorelease
on message receivers when they're not immediately loaded from
an object with precise lifetime.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135764 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
8f1231b70c2b1f6fe0cee097b447487b26810301 22-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce a global bit-offset continuous range map into the ASTReader,
so that we have one, simple way to map from global bit offsets to
local bit offsets. Eliminates a number of loops over the chain, and
generalizes for more interesting bit remappings.

Also, as an amusing oddity, we were computing global bit offsets
*backwards* for preprocessed entities (e.g., the directly included PCH
file in the chain would start at offset zero, rather than the original
PCH that occurs first in translation unit). Even more amusingly, it
made precompiled preambles work, because we were forgetting to adjust
the local bit offset to a global bit offset when storing preprocessed
entity offsets in the ASTUnit. Two wrongs made a right, and now
they're both right.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135750 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
4947e25dd9f7ac1f2176d63262563ba3e96538fe 22-Jul-2011 Douglas Gregor <dgregor@apple.com> Fix an embarrassing bug in relocatable PCH support, where we were
passing a temporary const char* down as the "isysroot" parameter and
then accessing it later. Fixes <rdar://problem/9035180>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135749 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
db8264e4c5ffd7af6fbad4ca4306bd382bb02691 22-Jul-2011 Jordy Rose <jediknil@belkadan.com> Add a const overload for ObjCInterfaceDecl::all_declared_ivar_begin.
This was previously not-const only because it has to lazily construct a chain
of ivars the first time it is called (and after the chain is invalidated).
In practice, all the clients were just const_casting their const Decls;
all those now-unnecessary const_casts have been removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135741 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
527eec86ce96695a7198073e574bf4a184848d24 22-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objective-c: Any use of @synthesize or @dynamic lexically after a method (or C function) implementation
will be rejected with a compilation error in ARC mode, and a compiler warning otherwise.
This may cause breakage in non-arc (and arc) tests which don't expect warning/error. Feel free
to fix the tests, or reverse the patch, if I am unavailable. // rdar://9818354 - WIP


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
393f249399fe30e9580e1529a7479489e90f3a57 22-Jul-2011 Douglas Gregor <dgregor@apple.com> In the AST reader, factor out the mapping of local type IDs to global
type IDs into a single place, and make sure that all of the callers
use the appropriate functions to do the mapping. Since the mapping is
still the identity function, this is essentially a no-op.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135733 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
f5bb9ae23d68ffb1e1c37b05fc8d943bc6bff12e 22-Jul-2011 Douglas Gregor <dgregor@apple.com> Clean up the rest of the local -> global declaration ID mappings
within the ASTReader (I hope).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135720 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
409448c832d27703146b70a1137d86b020f29863 22-Jul-2011 Douglas Gregor <dgregor@apple.com> In the ASTReader, factor out the loading of (local) declaration IDs,
such that every declaration ID loaded from an AST file will go through
a central local -> global mapping function. At present, this change
does nothing, since the local -> global mapping function is the
identity function.

This is the mechanical part of the refactoring; a follow-up patch will
address a few remaining areas where it's not obvious whether we're
dealing with local or global IDs.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135711 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
428382c1ae2e867604ace65713345c9b6cd7e95e 21-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix diagnostic when loading a PCH which has different enabled/disabled state of -fobjc-arc. rdar://9818341

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135707 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
1da901467f72d1733704b068e22089813a1962fd 21-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Cleaning up more of the ID situation in the AST reader. This patch relaxes and generalizes how CXX base specifiers are identified and loaded by using a ContinuousRangeMap. This also adds a global bit offset (or base) to the PerFileData.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135705 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
23d7df5ce30f4a068e13ad6cb81d473365d260db 21-Jul-2011 Douglas Gregor <dgregor@apple.com> Add some debugging output to the AST reader, so we can see the global remappings we generate

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135701 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
aab24a616de59c543d78d7636f22fb786053fefa 21-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc - Diagnose missing method return type specifier under
a warning flag. // rdar://9615045


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135681 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1a23f12e1e283384b76e768a83f01bfcbbd61ca0 21-Jul-2011 Douglas Gregor <dgregor@apple.com> One last RandomAccessIterator operator for PreprocessingRecord::iterator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135680 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
67029567f7d39d9356fbc505fffc2c1e21bf06ce 21-Jul-2011 Douglas Gregor <dgregor@apple.com> Add the remaining RandomAccessIterator operations to
PreprocessingRecord::iterator. Where's concept_map when I need it?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135679 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
8d366c0e347ab600ac09e2ba9b676d12017a448a 21-Jul-2011 Francois Pichet <pichet2000@gmail.com> For some reason I don't fully comprehend, the MSVC debug build will fail with a huge 50+ lines template error message if PreprocessingRecord::iterator has no operator<()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135670 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
4fed22cdd8bb7d98127853ebb3f42be66bf2ce59 21-Jul-2011 Ted Kremenek <kremenek@apple.com> Move AnalysisManager constructor out of line. No functionality change (yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135667 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
bc5cb8a5fe2b88f917d47ceb58b53696a121e57e 21-Jul-2011 Ted Kremenek <kremenek@apple.com> Simplify passing of CFGBuildOptions around for AnalysisContext. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135666 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
5254161b269829b74e7a9379b1bdfa27de72d7cc 21-Jul-2011 Richard Trieu <rtrieu@google.com> Remove warning for conditional operands of differend signedness from -Wsign-compare. Cases that previously warn on this will have a different warning emitted from -Wsign-conversion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e081a61bb0dc546fd623bf259435d17c9a4ea0d5 21-Jul-2011 Douglas Gregor <dgregor@apple.com> New libclang API to expose container type for code completion, from
Connor Wakamo!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135651 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
4c30bb148b53c8063e940ca3e049ba4d270dc9d5 21-Jul-2011 Douglas Gregor <dgregor@apple.com> Rework the detailed preprocessing record to separate preprocessing
entities generated directly by the preprocessor from those loaded from
the external source (e.g., the ASTReader). By separating these two
sets of entities into different vectors, we allow both to grow
independently, and eliminate the need for preallocating all of the
loaded preprocessing entities. This is similar to the way the recent
SourceManager refactoring treats FileIDs and the source location
address space.

As part of this, switch over to building a continuous range map to
track preprocessing entities.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135646 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
erialization/ASTReader.h
ffe9edd45f26873d58e7ddf79d403dd8072b748b 21-Jul-2011 Anna Zaks <ganna@apple.com> Addressing code review comments for commit 135509 - Add FixItHints in case a C++ function call is missing * or & operators on

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Overload.h
e9b76c11a88d0af98f32d11a6668d03d45be3123 20-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Continuing to improve and generalize how IDs are handled in ASTReader. This patch cleans up and generalizes TypeID loading and uses a similar table-lookup to Doug's previous Decl patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135622 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
d7a3ba03f69892aac02e0771eb2e6d1b7b1d1267 20-Jul-2011 Chad Rosier <mcrosier@apple.com> Temporarily revert r135614 while I fix the cmake build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ArgList.h
river/Compilation.h
river/Driver.h
river/Job.h
2da13b15959365df7edf1ed12a049b599b39c276 20-Jul-2011 Chad Rosier <mcrosier@apple.com> When the compiler crashes, the compiler driver now produces diagnostic information
including the fully preprocessed source file(s) and command line arguments. The
developer is asked to attach this diagnostic information to a bug report.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ArgList.h
river/Compilation.h
river/Driver.h
river/Job.h
909bcb37c4bc1ea1a62d505881defc3c3ba0eca3 20-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> arc-objc++: Issue an arc specific diagnostic when overload resolution
fails because of lifetime differences of parameter and argument type.
// rdar://9790531


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135593 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d102547dc44d064b40473a5a5166a8bb0dec99a 20-Jul-2011 Logan Chien <loganchien@google.com> Merge with clang upstream r135574 (Jul 20th 2011)

Change-Id: Ib6cc2ba08a63e4cf8febc05fb6e3f2ca58f1d71d
5d8179106fc513a04458d49abe682151f75c8f6a 20-Jul-2011 Chris Lattner <sabre@nondot.org> arrayref should now move in here, and redundant #includes of <cassert> can go
away (since it comes in through Casting.h). This will have to wait for another
day when I'm unmotivated though, or someone else to pick it up :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LLVM.h
db999aad8a1b9dc265b2e627be334be6580a86a3 20-Jul-2011 Chris Lattner <sabre@nondot.org> remove some now-redundant forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
ST/NestedNameSpecifier.h
ST/PrettyPrinter.h
ST/TemplateBase.h
nalysis/CFG.h
asic/SourceLocation.h
river/ArgList.h
river/Compilation.h
river/Driver.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/FrontendAction.h
ndex/ASTLocation.h
ewrite/FixItRewriter.h
ewrite/Rewriter.h
ema/CodeCompleteConsumer.h
ema/Initialization.h
8cc488fefb2fb04bc8d5398da29f0182f97934cf 20-Jul-2011 Chris Lattner <sabre@nondot.org> add raw_ostream and Twine to LLVM.h, eliminating a ton of llvm:: qualifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/DeclarationName.h
ST/Mangle.h
ST/NestedNameSpecifier.h
ST/PrettyPrinter.h
ST/Stmt.h
ST/TemplateBase.h
ST/TemplateName.h
nalysis/Analyses/FormatString.h
nalysis/CFG.h
asic/LLVM.h
asic/MacroBuilder.h
asic/OnDiskHashTable.h
asic/PrettyStackTrace.h
asic/SourceLocation.h
asic/VersionTuple.h
odeGen/BackendUtil.h
river/ArgList.h
river/Compilation.h
river/Driver.h
river/OptTable.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/FrontendActions.h
rontend/LogDiagnosticPrinter.h
rontend/TextDiagnosticPrinter.h
rontend/Utils.h
ndex/ASTLocation.h
ndex/CallGraph.h
arse/Parser.h
ewrite/ASTConsumers.h
ewrite/FixItRewriter.h
ewrite/Rewriter.h
ewrite/Rewriters.h
ema/CodeCompleteConsumer.h
ema/Initialization.h
ema/Lookup.h
ema/PrettyDeclStackTrace.h
erialization/ASTWriter.h
taticAnalyzer/Core/CheckerProvider.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
taticAnalyzer/Frontend/FrontendActions.h
686775deca8b8685eb90801495880e3abdd844c2 20-Jul-2011 Chris Lattner <sabre@nondot.org> now that we have a centralized place to do so, add some using declarations for
some common llvm types: stringref and smallvector. This cleans up the codebase
quite a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135576 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/ARCMTActions.h
RCMigrate/FileRemapper.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/ASTImporter.h
ST/Attr.h
ST/CXXInheritance.h
ST/Decl.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprObjC.h
ST/ExternalASTSource.h
ST/Mangle.h
ST/Stmt.h
ST/TemplateBase.h
ST/Type.h
ST/UnresolvedSet.h
nalysis/Analyses/FormatString.h
nalysis/DomainSpecific/CocoaConventions.h
nalysis/FlowSensitive/DataflowSolver.h
asic/Builtins.h
asic/DelayedCleanupPool.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LLVM.h
asic/PartialDiagnostic.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/TargetInfo.h
odeGen/CodeGenAction.h
river/Action.h
river/Arg.h
river/ArgList.h
river/Driver.h
river/Job.h
river/Option.h
river/Tool.h
river/ToolChain.h
river/Util.h
rontend/ASTUnit.h
rontend/CommandLineSourceLoc.h
rontend/CompilerInstance.h
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
rontend/HeaderSearchOptions.h
rontend/LangStandard.h
rontend/LogDiagnosticPrinter.h
rontend/PreprocessorOptions.h
rontend/Utils.h
ndex/Entity.h
ndex/Handlers.h
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/PPCallbacks.h
ex/PTHManager.h
ex/Pragma.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
arse/Parser.h
ewrite/FrontendActions.h
ewrite/Rewriter.h
ema/AttributeList.h
ema/CXXFieldCollector.h
ema/CodeCompleteConsumer.h
ema/DeclSpec.h
ema/DelayedDiagnostic.h
ema/Designator.h
ema/ExternalSemaSource.h
ema/IdentifierResolver.h
ema/Initialization.h
ema/Overload.h
ema/Ownership.h
ema/Scope.h
ema/ScopeInfo.h
ema/Sema.h
ema/Template.h
ema/TemplateDeduction.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/ChainedIncludesSource.h
erialization/ContinuousRangeMap.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugType.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Frontend/FrontendActions.h
9594675cc1eb52a054de13c4a21e466643847480 20-Jul-2011 Chris Lattner <sabre@nondot.org> introduce a centralized place to introduce and inject llvm types into the
clang namespace. There are a number of LLVM types that are used pervasively
and it doesn't make sense to keep qualifying them. Start with casting
operators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Stmt.h
ST/Type.h
asic/LLVM.h
river/Action.h
river/Job.h
river/Option.h
14ad03b6f4350f062256757efc4149a7df94bdf9 20-Jul-2011 Douglas Gregor <dgregor@apple.com> Use a ContinuousRangeMap to map from the global macro definition ID in
the AST reader down to the AST file + local ID, rather than walking
the PCH chain. More cleanup/generalization, although there is more
work to do for preprocessed entities. In particular, the
"preallocation" scheme for preprocessed entities is not going to work
well with late loading of PCH files, and it's likely we'll have to do
something akin to the SourceManager's negative/positive loading.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135556 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
96958cbe6fb423ab2446629ead5f1b138398433c 20-Jul-2011 Douglas Gregor <dgregor@apple.com> Use a ContinuousRangeMap to map from the global selector ID in the AST
reader down to the AST file + local ID, rather than walking the PCH
chain. No functionality change; this is generalization and cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135554 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
67268d02388d3d25107fa9cf4998c35246255a65 20-Jul-2011 Douglas Gregor <dgregor@apple.com> Use a ContinuousRangeMap to map from the global identifier ID in the
AST reader down to the AST file + local ID, rather than walking the
PCH chain. No functionality change; this is generalization and cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135551 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
07e5f1a7047f82da14c3223d14435bee4e763369 20-Jul-2011 Douglas Gregor <dgregor@apple.com> Try to appease MSVC's standard library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135549 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ContinuousRangeMap.h
96e973f2be14c9b82136f74b4108465d24894fea 20-Jul-2011 Douglas Gregor <dgregor@apple.com> Use a ContinuousRangeMap to map from the global declaration ID in the
AST reader down to the AST file + local ID within that file, rather
than lamely walking the PCH chain. There's no actual functionality
change now, but this is cleaner and more general.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135548 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
0ff6f8f038f32d85c32fd984673cea51ef737b22 20-Jul-2011 Richard Smith <richard-llvm@metafoo.co.uk> Replace r134583's fix for PR10290 with one which also works for non-value-dependent cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135543 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
51e11f743e7478e94218b3c28283454dae1c6533 20-Jul-2011 Richard Smith <richard-llvm@metafoo.co.uk> Use the zero from the correct enumeration when initializing this variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135541 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
b89fe6b04c5b8a2d080c1c5605b72f809fc9ee68 19-Jul-2011 Anna Zaks <ganna@apple.com> Add FixItHints in case a C++ function call is missing * or & operators on one/several of it's parameters (addresses http://llvm.org/PR5941).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135509 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
ema/Overload.h
7ee2049278b98d42709380054eb83f4952af1200 19-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Add some additional driver flags to optionally emit or save the pre-migration ARC errors.

-arcmt-migrate-emit-errors : Emits the pre-migration ARC errors but it doesn't affect anything else
-arcmt-migrate-report-output : Writes out the pre-migration ARC errors to the provided plist file

rdar://9791454

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135491 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/ARCMTActions.h
river/CC1Options.td
river/Options.td
rontend/FrontendOptions.h
d6dbb8759a05ab32db67f089c1f5d3f53091e9ed 19-Jul-2011 Jeffrey Yasskin <jyasskin@google.com> Name the "c++0x-compat" warning group, and fix the names of two
warnings that were intended to be inside it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f62d43d2afe1960755a1b5813cae1e5983bcac1b 19-Jul-2011 Douglas Gregor <dgregor@apple.com> Revamp the SourceManager to separate the representation of parsed
source locations from source locations loaded from an AST/PCH file.

Previously, loading an AST/PCH file involved carefully pre-allocating
space at the beginning of the source manager for the source locations
and FileIDs that correspond to the prefix, and then appending the
source locations/FileIDs used for parsing the remaining translation
unit. This design forced us into loading PCH files early, as a prefix,
whic has become a rather significant limitation.

This patch splits the SourceManager space into two parts: for source
location "addresses", the lower values (growing upward) are used to
describe parsed code, while upper values (growing downward) are used
for source locations loaded from AST/PCH files. Similarly, positive
FileIDs are used to describe parsed code while negative FileIDs are
used to file/macro locations loaded from AST/PCH files. As a result,
we can load PCH/AST files even during parsing, making various
improvemnts in the future possible, e.g., teaching #include <foo.h> to
look for and load <foo.h.gch> if it happens to be already available.

This patch was originally written by Sebastian Redl, then brought
forward to the modern age by Jonathan Turner, and finally
polished/finished by me to be committed.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ContinuousRangeMap.h
74fb1a493cf5d2dd0fb51a4eadf74e85e10a3457 19-Jul-2011 Ted Kremenek <kremenek@apple.com> Add hooks into the CFG builder to force that specific expressions are always CFGElements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135479 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
5b106a872d66f57522b1cc6d1b67f93704409114 18-Jul-2011 Jeffrey Yasskin <jyasskin@google.com> Define DiagnosticBuilder<<APValue so it's easy to include APValues in
diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
dce67a70a86db8758c926a76fdd980f5369d5746 18-Jul-2011 Nick Lewycky <nicholas@mxc.ca> In C99, emit an inline function when encountering an extern redeclaration.
Fixes PR10233!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
99d3594a56fb8e6900611ede7330aae61e924ec4 17-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r135359 at Sun. 17th July 2011.
0556048ae8ff743d0abb9fa88a0d0ee8e9123742 16-Jul-2011 Ted Kremenek <kremenek@apple.com> [analyzer] Place checking for Core Foundation "Create" rule into a proper API. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135349 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
174cba922331b896949d02d8b1a05f1998ed98e1 16-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r135344 at Sat. 16th July 2011.
e2f854ddd365e6837cef3e1a1b7621b32200fc71 16-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r135304 and apply fix in clang_getCanonicalCursor per Doug's, Fariborz's comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ba6ffaf21e465c0926d7fc5fa294ea52f8d45faf 15-Jul-2011 Douglas Gregor <dgregor@apple.com> Augment the interface of ExternalASTSource::FindExternalLexicalDecls()
to allow clients to specify that they've already (correctly) loaded
declarations, and that no further action is needed.

Also, make sure that we clear the "has external lexical declarations"
bit before calling FindExternalLexicalDecls(), to avoid infinite
recursion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
erialization/ASTReader.h
erialization/ChainedIncludesSource.h
cea2e3d7ea9cdc763f7a98937c09769cd4d1f582 15-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> The canonical decl for an ObjCImplDecl is it's interface class. Fixes rdar://8728637.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5b8968cc599eb6100bb73ae87be9d6cd2577ac9e 15-Jul-2011 Douglas Gregor <dgregor@apple.com> Store bracket locations for array subscript expressions, from Erik Verbruggen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f70d12dbd49fcc25f1dfc0127217112ae76bcb8f 15-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Move the Serialization library from 'instantiation' to 'expansion', with
the exception of its uses of SourceManager and SourceLocation APIs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135260 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTWriter.h
7110fd6c32306b3feb97b9edb8064b1b68a54e6b 15-Jul-2011 John McCall <rjmccall@apple.com> Add serialization support for SubstNonTypeTemplateParmExpr.
Also add the missing serialization support for SEHTryStmt,
SEHFinallyStmt, and SEHExceptStmt, and fix and finish the
serialization support for AsTypeExpr. In addition, change
the code so that it will no longer link if a Stmt subclass
is missing serialization support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Stmt.h
erialization/ASTBitCodes.h
379010addb0e84fd0fbc37c829baf658958521bd 15-Jul-2011 John McCall <rjmccall@apple.com> Fix the definition of AsTypeExpr. I'm still not sure this
is right --- shouldn't there be a TypeLoc in here somewhere? ---
but at least it doesn't have a redundant QualType and a broken
children() method.

Noticed this while doing things in serialization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
91a5755ad73c5dc1dfb167e448fdd74e75a6df56 15-Jul-2011 John McCall <rjmccall@apple.com> Create a new expression node, SubstNonTypeTemplateParmExpr,
to represent a fully-substituted non-type template parameter.
This should improve source fidelity, as well as being generically
useful for diagnostics and such.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135243 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
165622faa4a472ff94352dee534e2adeaac9c824 15-Jul-2011 Ted Kremenek <kremenek@apple.com> Add 'Contains()' method to GRStateTrait for ImmutableList. Patch by Rui Paulo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135241 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRStateTrait.h
b29a6108b164b183d32d8c14bf5b7492a483c7c9 15-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Switch help text in the CC1 driver from 'instantiation' to 'expansion'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135225 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
3b80232b50c29b245e674f5aa02047b408e41018 14-Jul-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Remove InitializationSequence::ReferenceBinding, the last redundant sequence kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135175 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
4d461b691a57544340bf511bd662001fd2d1da1a 14-Jul-2011 Caitlin Sadowski <supertri@google.com> Moving one misplaced entry in the attribute enum in AttributeList.h into alphabetical order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135153 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AttributeList.h
9f79a1f89695a79d5e29a72c28ffb59823b31cef 14-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Update the remaining comments in Frontend to 'expansion'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135150 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
rontend/PreprocessorOptions.h
ba7537febdf1bc1cc617e1f1746f2644feba6274 14-Jul-2011 Chandler Carruth <chandlerc@gmail.com> NestedMacroInstantiations -> NestedMacroExpansions

This is switches all the interfaces points (and most of the commenst
/ local variables I saw on my way through) regarding the
NestedMacroInstantiations bit.

The libclang enums corresponding to this state were renamed, but
a legacy enum was added with the old name, and the same value to keep
existing clients working. I've added a documentation blurb for it, but
let me know if there is a canonical way to document legacy elemenst of
the libclang interface.

No functionality changed here, even in tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135141 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
9e5bb85ac899eeab7c21b5ff9030c3da6ff4837b 14-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Move the rest of the preprocessor terminology from 'instantiate' and
variants to 'expand'. This changed a couple of public APIs, including
one public type "MacroInstantiation" which is now "MacroExpansion". The
rest of the codebase was updated to reflect this, especially the
libclang code. Two of the C++ (and thus easily changed) libclang APIs
were updated as well because they pertained directly to the old
MacroInstantiation class.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135139 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
ex/Preprocessor.h
433db06b614f26dc6829e86d6ff469e2cca7d4f9 14-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Convert terminology in the Lexer from 'instantiate' and variants to
'expand'. Also update the public API it provides to the new term, and
propagate that update to the various clients.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135138 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
d0f5e443ceed37e1a72015bd109db8e5fc6206cf 14-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Switch the TokenLexer's terminology from various forms of 'instantiate'
to 'expand' for macros. Only comments and uses local to the TokenLexer
are updated.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135137 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
90ebed0734fac9b464c9bdff53fbf85a86b27f32 13-Jul-2011 Douglas Gregor <dgregor@apple.com> Add 'mutable' to the function declarator chunk, to be used when
parsing lambda expressions, from John Freeman!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135090 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
48218c60d6b53b7880917d1366ee716dec2145ca 13-Jul-2011 John McCall <rjmccall@apple.com> In debugger mode, make ObjC message sends to unknown selectors return
__unknown_anytype, and rewrite such message sends correctly.

I had to bite the bullet and actually add a debugger support mode for this
one, which is a bit unfortunate, but there really isn't anything else
I could imagine doing; this is clearly just debugger-specific behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
c286f3835eb6001c61664cef5d610dfaf80a6e9b 13-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc++: Some level of covariance is allowed in ObjC properties.
Make it also available in ObjC++ propeties. // rdar://9740328


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bb52786da8d055568eef6e5694288c1258bc8c2a 12-Jul-2011 Peter Collingbourne <peter@pcc.me.uk> Implement -MG. Fixes PR9613

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134996 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticLexKinds.td
river/CC1Options.td
rontend/DependencyOutputOptions.h
98a5403ecf1d2b60ae8cbf43e54194bd762cacaa 12-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> Fix a bug where a local variable named 'self' is causing
implicit ivar accesses to go through the 'self' variable
rather than the real 'self' for the method. // rdar://9730771


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134992 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
ema/Sema.h
f1588660c109610e6a79c786b83b7c9bbd6ed31e 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Improve name mangling for instantiation-dependent types that are not
dependent. This covers an odd class of types such as

int (&)[sizeof(sizeof(T() + T()))];

which involve template parameters but, because of some trick typically
involving a form of expression that is never type-dependent, resolve
down to a non-dependent type. Such types need to be mangled
essentially as they were written in the source code (involving
template parameters), rather than via their canonical type.

In general, instantiation-dependent types should be mangled as
they were written in the source. However, since we can't do that now
without non-trivial refactoring of the AST (see the new FIXME), I've
gone for this partial solution: only use the as-written-in-the-source
mangling for these strange types that are instantiation-dependent but
not dependent. This provides better compatibility with previous
incarnations of Clang and with GCC. In the future, we'd like to get
this right.

Fixes <rdar://problem/9663282>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6af9f3ca25157379efd5c1caad82e9d01c17b9ff 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Fix the desugaring of dependent decltype and typeof(expr) nodes. The
isSugared() and desugar() routines previously provided were never
actually called, since the corresponding types
(DependentTypeOfExprType, DependentDecltypeType) don't have
corresponding type classes. Outside of the current (incomplete) patch
I'm working on, I haven't found a way to trigger this problem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9f3480bab8fcb6547978f8ad9e2b8f468e3658ee 12-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move OBJC_PR_NumBits out of PropertyAttributeKind enum, to its own NumPropertyAttrsBits.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
79e6bd379773447a74cc3e579d9081e4c5cb6d63 12-Jul-2011 Douglas Gregor <dgregor@apple.com> Centralize the getCanonicalType() calls in the Itanium C++ mangling
code so that they only occur in a single place. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ema/Sema.h
0a68dc7f04be1542ce249ff4adb169453698ad91 12-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [ARC] Complain about property without storage attribute when @synthesizing it, not at its declaration.

For this sample:

@interface Foo
@property id x;
@end

we get:

t.m:2:1: error: ARC forbids properties of Objective-C objects with unspecified storage attribute
@property id x;
^
1 error generated.

The error should be imposed on the implementor of the interface, not the user. If the user uses
a header of a non-ARC library whose source code he does not have, we are basically asking him to
go change the header of the library (bad in general), possible overriding how the property is
implemented if he gets confused and says "Oh I'll just add 'copy' then" (even worse).

Second issue is that we don't emit any error for 'readonly' properties, e.g:

@interface Foo
@property (readonly) id x; // no error here
@end

@implementation Foo
@synthesize x; // no error here too
@end

We should give an error when the implementor is @synthesizing a property which doesn't have
any storage specifier; this is when the explicit specifier is important, because we are
going to create an ivar and we want its ownership to be explicit.

Related improvements:
-OBJC_PR_unsafe_unretained turned out to not fit in ObjCPropertyDecl's bitfields, fix it.
-For properties of extension classes don't drop PropertyAttributesAsWritten values.
-Have PropertyAttributesAsWritten actually only reflect what the user wrote

rdar://9756610.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134960 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
46d37c10404097eed7c173b17e52693edcb66486 11-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Add diagnostic for constructs like "va_arg(l, float)" which have undefined behavior. PR10201.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134926 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e7c7f2b78ac3930e45f00626ef6acf08b3f80ca 11-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: Diagnose when captured variable in block literals
require destruction and there is possibility of that without
construction. Thanks Johnm for review and suggestions offline.
// rdar://9535237.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134906 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0673cb30340aadaede7b795c763b00f6b64e611c 11-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Apply patch from Richard Trieu to fix PR9548:

When two different types has the same text representation in the same
diagnostic message, print an a.k.a. after the type if the a.k.a. gives extra
information about the type.

class versa_string;

typedef versa_string string;

namespace std {template <typename T> class vector;}

using std::vector;

void f(vector<string> v);

namespace std {
class basic_string;
typedef basic_string string;
template <typename T> class vector {};
void g() {
vector<string> v;
f(v);
}
}

Old message:
----------------
test.cc:15:3: error: no matching function for call to 'f'
f(&v);
^
test.cc:7:6: note: candidate function not viable: no known conversion from
'vector<string>' to 'vector<string>' for 1st argument
void f(vector<string> v);
^
1 error generated.

New message:
---------------
test.cc:15:3: error: no matching function for call to 'f'
f(v);
^
test.cc:7:6: note: candidate function not viable: no known conversion from
'vector<string>' (aka 'std::vector<std::basic_string>') to
'vector<string>' (aka 'std::vector<versa_string>') for 1st argument
void f(vector<string> v);
^
1 error generated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
asic/Diagnostic.h
386b0075d02837cba066d299adb0bbc6c3ebd2ee 11-Jul-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Added removeBitWidth method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
699f9b1effc8fd891637797ef3dc58d7b80d476a 10-Jul-2011 Francois Pichet <pichet2000@gmail.com> Change __debugbreak signature to void __debugbreak(void); MSVC compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134869 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
69325d5b7cfecf1b3128745efc33612aedf1b8b4 09-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Introduce new '-ccc-arcmt-migrate <path>' ARC migration driver option.

This is a new mode of migration, where we avoid modifying the original files but
we emit temporary files instead.

<path> will be used to keep migration process metadata. Currently the temporary files
that are produced are put in the system's temp directory but we can put them
in the <path> if is necessary.

Also introduce new ARC migration functions in libclang whose only purpose,
currently, is to accept <path> and provide pairs of original file/transformed file
to map from the originals to the files after transformations are applied.

Finally introduce the c-arcmt-test utility that exercises the new libclang functions,
update arcmt-test, and add tests for the whole process.

rdar://9735086.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134844 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/ARCMTActions.h
river/CC1Options.td
river/Options.td
rontend/FrontendOptions.h
094240ab184c3ca4b94e9d7eac80fcd34d8dd30c 08-Jul-2011 Cameron Zwarich <zwarich@apple.com> Add codegen support for the fma/fmal/fmaf builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
82007c3a3f60ce2299c74333a881e4fdfc2135ce 08-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc++-arc: more diagnosis of converting a weak-unavailable
object to a __weak object type. // rdar://9732636


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c8d1ecca1cd3fadbd331d15c420755aa6184554b 08-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Keep track of which source locations are part of a macro argument
instantiation and improve diagnostics which are stem from macro
arguments to trace the argument itself back through the layers of macro
expansion.

This requires some tricky handling of the source locations, as the
argument appears to be expanded in the opposite direction from the
surrounding macro. This patch provides helper routines that encapsulate
the logic and explain the reasoning behind how we step through macros
during diagnostic printing.

This fixes the rest of the test cases originially in PR9279, and later
split out into PR10214 and PR10215.

There is still some more work we can do here to improve the macro
backtrace, but those will follow as separate patches.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134660 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
7a084ec568f8336ec6f10011d0118a6b19e253cb 08-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc++-arc: diagnose assignment/cast of a weak-unavailable
object to a __weak object/type. // rdar://9732636.
One item is yet todo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134655 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3bd21383f0d788e49af71c5d25255197ddb8a59b 08-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Remove BoostCon-specific code from Clang. FWIW, I'm a fan of things like this living in a separate branch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134649 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
7a759606d93975866051f67104ae58446e55f404 07-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move SourceManager::isAt[Start/End]OfMacroInstantiation functions to the Lexer, since they depend on it now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134644 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Lexer.h
ex/Preprocessor.h
dbd3c85825ad59896292ac7d326fe1985768f1e3 07-Jul-2011 Cameron Zwarich <zwarich@apple.com> r134634 causes a failure on MultiSource/Benchmarks/Olden/bh with TEST=nightly,
so roll it out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134638 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2357aeec0da2740838963880edd97e43f14cb6fd 07-Jul-2011 Nick Lewycky <nicholas@mxc.ca> A redeclaration of an inline method in C99 mode should trigger emission of that
function. Fixes PR10233!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c5f90c2250f20037e604e849044442d70573507e 07-Jul-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Undo r134587 as the bug was actually a deep and hideous one in the
client code.

My bad.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
04e5a2509d1eed48cc0c7115c52089bef35b36af 07-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: diagnose assignment/cast of a weak-unavailable
object to a __weak object/type. // rdar://9732636.
This is objc side of things. objc++ side tbd.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
3da626b4f38eb0350de960d71271ca77af7a9cc8 07-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce a new libclang aPI function,
clang_codeCompleteGetContexts(), that provides the client with
information about the context in which code completion has occurred
and what kinds of entities make sense as completions at that
point. Patch by Connor Wakamo!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134615 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
7e5e5f4cc36fe50f46ad76dca7a266434c94f475 07-Jul-2011 John McCall <rjmccall@apple.com> In ARC, reclaim all return values of retainable type, not just those
where we have an immediate need of a retained value.

As an exception, don't do this when the call is made as the immediate
operand of a __bridge retain. This is more in the way of a workaround
than an actual guarantee, so it's acceptable to be brittle here.

rdar://problem/9504800



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ST/Stmt.h
72ac120023abb73f3ff9386e193fed55fa9a96e2 07-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Add -ccc-arcmt-check/-ccc-arcmt-modify driver option aliases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134591 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b73377eeb3eff76be134203aebb6068244b177f3 07-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make the Preprocessor more memory efficient and improve macro instantiation diagnostics.

When a macro instantiation occurs, reserve a SLocEntry chunk with length the
full length of the macro definition source. Set the spelling location of this chunk
to point to the start of the macro definition and any tokens that are lexed directly
from the macro definition will get a location from this chunk with the appropriate offset.

For any tokens that come from argument expansion, '##' paste operator, etc. have their
instantiation location point at the appropriate place in the instantiated macro definition
(the argument identifier and the '##' token respectively).
This improves macro instantiation diagnostics:

Before:

t.c:5:9: error: invalid operands to binary expression ('struct S' and 'int')
int y = M(/);
^~~~
t.c:5:11: note: instantiated from:
int y = M(/);
^

After:

t.c:5:9: error: invalid operands to binary expression ('struct S' and 'int')
int y = M(/);
^~~~
t.c:3:20: note: instantiated from:
\#define M(op) (foo op 3);
~~~ ^ ~
t.c:5:11: note: instantiated from:
int y = M(/);
^

The memory savings for a candidate boost library that abuses the preprocessor are:

- 32% less SLocEntries (37M -> 25M)
- 30% reduction in PCH file size (900M -> 635M)
- 50% reduction in memory usage for the SLocEntry table (1.6G -> 800M)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134587 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/MacroInfo.h
ex/TokenLexer.h
8b86ef0b71900c64c0c2cfca54cac08a203a16a4 07-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix bug in SourceManager::getDecomposedInstantiationLocSlowCase.

It would add up relative (decomposed) offsets like in getDecomposedSpellingLocSlowCase, but while
it makes sense to preserve the offset among lexed spelling locations, it doesn't make
sense to add anything to the offset of the instantiation location. The instantiation
location will be the same regardless of the relative offset in the tokens that were
instantiated.

This bug didn't actually affect anything because, currently, in practice we never create macro
locations with relative offset greater than 0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e9a37e45e2832869e3814b9e3ddeae13e0f4386a 07-Jul-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Ensure that we actually visit function parameter declarations with
RecursiveASTVisitor.

This deficiency was discovered while working with the AST matcher
framework and likely impacts other users of RecursiveASTMatcher who
previously weren't seeing these Decls in their visitation.

Patch reviewed by Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
bca01b46850f867b2f4137f25c882022b58f8471 07-Jul-2011 Douglas Gregor <dgregor@apple.com> Properly implement the scope restriction on the NRVO for
throw-expressions, such that we don't consider the NRVO when the
non-volatile automatic object comes from outside the innermost try
scope (C++0x [class.copymove]p13). In C++98/03, our ASTs were
incorrect but it didn't matter because IR generation doesn't actually
apply the NRVO here. In C++0x, however, we were moving from an object
when in fact we should have copied from it. Fixes PR10142 /
<rdar://problem/9714312>.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
arse/Parser.h
ema/Scope.h
ema/Sema.h
7263feeb367ab55af7e9a6fd701148b1b8264dba 06-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> Some code cleanup of r134522


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
742352a3984aeef9ecf911be23e673e97b34595f 06-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: Support objc_arc_weak_unavailable on those
classes which are incompatible with weak references.
// rdar://9693477


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134522 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
85bea9777d444ccbcc086d98f075fe666c2e865d 06-Jul-2011 Douglas Gregor <dgregor@apple.com> Keep track of when "unrecoverable" errors occur, then allow
clang_saveTranslationUnit() to save a PCH file if the only errors it
contains are recoverable errors. Fixes <rdar://problem/9727804>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
39c411fa229b2a6747b92f945d1702ee674d3470 06-Jul-2011 Douglas Gregor <dgregor@apple.com> libclang: Allow callers of clang_saveTranslationUnit() to distinguish
between different classes of errors. Addresses most of
<rdar://problem/9660328>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134495 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5d98994c7749312a43ce6adf45537979a98e7afd 06-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Build up statistics about the work done for analysis based warnings.
Special detail is added for uninitialized variable analysis as this has
serious performance problems than need to be tracked.

Computing some of this data is expensive, for example walking the CFG to
determine its size. To avoid doing that unless the stats data is going
to be used, we thread a bit into the Sema object to track whether
detailed stats should be collected or not. This bit is used to avoid
computations whereever the computations are likely to be more expensive
than checking the state of the flag. Thus, counters are in some cases
unconditionally updated, but the more expensive (and less frequent)
aggregation steps are skipped.

With this patch, we're able to see that for 'gcc.c':
*** Analysis Based Warnings Stats:
232 functions analyzed (0 w/o CFGs).
7151 CFG blocks built.
30 average CFG blocks per function.
1167 max CFG blocks per function.
163 functions analyzed for uninitialiazed variables
640 variables analyzed.
3 average variables per function.
94 max variables per function.
96409 block visits.
591 average block visits per function.
61546 max block visits per function.

And for the reduced testcase in PR10183:
*** Analysis Based Warnings Stats:
98 functions analyzed (0 w/o CFGs).
8526 CFG blocks built.
87 average CFG blocks per function.
7277 max CFG blocks per function.
68 functions analyzed for uninitialiazed variables
1359 variables analyzed.
19 average variables per function.
1196 max variables per function.
2540494 block visits.
37360 average block visits per function.
2536495 max block visits per function.

That last number is the somewhat scary one that indicates the problem in
PR10183.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
ema/AnalysisBasedWarnings.h
ema/Sema.h
786dcd9dca76e3780fdb9642c0db33ed13db1187 06-Jul-2011 Douglas Gregor <dgregor@apple.com> Teach the static analyzer's interpretation of Cocoa conventions to
obey the objc_method_family attribute when provided. Fixes
<rdar://problem/9726279>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
19f74acdf8842ceece578b7307884f5ba22d7f59 06-Jul-2011 Rafael Espindola <rafael.espindola@gmail.com> Use attributes from the definition (if available) when
instantiating functions.

Fixes PR10272.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134491 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9dc71d2fddcd283e07d45f3894c8559e2f7dd9a7 06-Jul-2011 John McCall <rjmccall@apple.com> Fixed enum types can be complete without actually being valid to use
as scope specifiers; diagnose the attempt, rather than letting it go
to an assert. The rest of PR10264.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134479 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ema/DeclSpec.h
256a76e0b0e0c9e65a3122917d553ef10bc84d29 06-Jul-2011 John McCall <rjmccall@apple.com> Call objc_terminate() instead of abort() when a cleanup throws an
exception in Objective-C; in Objective-C++ we still use std::terminate().
This is only available in very recent runtimes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134456 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/ObjCRuntime.h
rontend/CodeGenOptions.h
c06e0743431b28c96e0bbe27cc07851d2e0d2681 06-Jul-2011 John McCall <rjmccall@apple.com> Missing header from last commit; accidental change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134455 91177308-0d34-0410-b5e6-96231b3b80d8
river/ObjCRuntime.h
9f084a3166b684573ba49df28fc5792bc37d92e1 06-Jul-2011 John McCall <rjmccall@apple.com> Change the driver's logic about Objective-C runtimes: abstract out a
structure to hold inferred information, then propagate each invididual
bit down to -cc1. Separate the bits of "supports weak" and "has a native
ARC runtime"; make the latter a CodeGenOption.

The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134453 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/ToolChain.h
rontend/CodeGenOptions.h
9670e179a67d868e171feac44fb8f9e2f108c5e8 06-Jul-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: enforce performSelector rules in rejecting retaining selectors
passed to it, and unknown selectors causing potential leak.
// rdar://9659270


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134449 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/IdentifierTable.h
b18b8ad63061c23daf4d95b022764027739691d8 06-Jul-2011 Dan Gohman <gohman@apple.com> Add the ObjC ARC optimization passes manually, now that they're not
hardwired into the default pass list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134445 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
e7e66f72221d6233bdad3b87a717e7382acd477b 05-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Remove unused member of Builtin::Info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134443 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
c261c76812a256c98cf3309c92f77e7ce1e8848b 05-Jul-2011 Douglas Gregor <dgregor@apple.com> Some documentation fixes for the parser, from John Freeman

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134419 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bcf6a8025aa50f3f28cfbd0470cf3e8f5cffbab2 05-Jul-2011 Douglas Gregor <dgregor@apple.com> StringRef'ize clang::drive::Option::getName(), from Zach Wheeler!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134418 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
3fd1ba0fa133d1c6e641770d0bc56606587d3eef 05-Jul-2011 Douglas Gregor <dgregor@apple.com> Clean up and refactor ParseFunctionDeclarator to reduce code
repetition and better reflect the actual grammar, from John Freeman!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134417 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3242ee01d43c6b6f5db968cd2c82e5d18d71283c 04-Jul-2011 Anders Carlsson <andersca@mac.com> Remove unused parameter from ActOnDeclarator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134377 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3c54415a4e1db09b210a466469c72d2582ce1d83 02-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r134305 at Sat. 2nd July 2011.
377fde82248fc0162d04f72c26485303f3058ff1 02-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Reorganize builtins to separate out builtins which require MMX registers. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134304 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
05d4876a64865e34366b58fc8a6848c3cde895d9 02-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the warning that is emitted when an ownership attribute is applied incorrectly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134278 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0a85183be6930571f3af8e5a976d24c3f95e5b25 02-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [ARC] When casting from a pointer to an objective-c object with known ownership, if the
cast type has no ownership specified, implicitly "transfer" the ownership of the cast'ed type
to the cast type:

id x;
(NSString**)&x; // Casting as (__strong NSString**).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134275 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
707f101d3302b76ee01e8ca29b1a61f081137b9f 02-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Remove Sema::ActOnCastOfParenListExpr and move most of its functionality to
newly introduced Sema::BuildVectorLiteral.
-Make Sema::ActOnCastExpr handle a vector initializer both when the cast'ed expression
is a ParenListExpr and when it is a ParenExpr.
-Ultimately make Sema::ActOnParenOrParenListExpr independent of what the cast type was.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134274 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
31862ba5ea70b1f2c81d03f8a0100b61cd6f06f6 02-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [ARC] When casting from a pointer to an objective-c object with known ownership, if the
cast type has no ownership specified, implicitly "transfer" the ownership of the cast'ed type
to the cast type:

id x;
static_cast<NSString**>(&x); // Casting as (__strong NSString**).

This currently only works for C++ named casts, C casts to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ema/Sema.h
17b6399f8461c5b7e1c6f367b0a0dde49f921240 02-Jul-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Declarator::ObjCCatchContext, this will result in correct error for 'auto' in obj-c catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134271 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
9864c7dc0232701b9cc6b3928a867c11c92564a5 02-Jul-2011 Douglas Gregor <dgregor@apple.com> Refactor AttributeList.h to use alphabetical order, from Caitlin Sadowski

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134267 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AttributeList.h
c89edf5aaa08683f4afcf61a7a1d183c08b76498 01-Jul-2011 Richard Smith <richard-llvm@metafoo.co.uk> Fix AST representations of alias-declarations which define tag types. Inside classes, the tag types need to have an associated access specifier, and inside function definitions, they need to be included in the declarations of the DeclStmt. These issues manifested as assertions during template instantiation, and also in a WIP constexpr patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134250 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
01b6e31a62e2265849f4388b9be6be0a5d13348d 01-Jul-2011 Douglas Gregor <dgregor@apple.com> When we create a precompiled preamble, don't copy the
CompilerInvocation on the stack, because other objects (e.g., the
CompilerInstance) maintain an intrusive reference-counted pointer to
the CompilerInvocation. This doesn't matter in the normal case,
because we take back the CompilerInvocation. However, during crash
recovery, this leads to us trying to free an object on the stack, and
hilarity ensues. Fixes <rdar://problem/9652540>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134245 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
561f81243f665cf2001caadc45df505f826b72d6 01-Jul-2011 Douglas Gregor <dgregor@apple.com> Introduce the notion of instantiation dependence into Clang's AST. A
type/expression/template argument/etc. is instantiation-dependent if
it somehow involves a template parameter, even if it doesn't meet the
requirements for the more common kinds of dependence (dependent type,
type-dependent expression, value-dependent expression).

When we see an instantiation-dependent type, we know we always need to
perform substitution into that instantiation-dependent type. This
keeps us from short-circuiting evaluation in places where we
shouldn't, and lets us properly implement C++0x [temp.type]p2.

In theory, this would also allow us to properly mangle
instantiation-dependent-but-not-dependent decltype types per the
Itanium C++ ABI, but we aren't quite there because we still mangle
based on the canonical type in cases like, e.g.,

template<unsigned> struct A { };
template<typename T>
void f(A<sizeof(sizeof(decltype(T() + T())))>) { }
template void f<int>(A<sizeof(sizeof(int))>);

and therefore get the wrong answer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/NestedNameSpecifier.h
ST/Stmt.h
ST/TemplateBase.h
ST/TemplateName.h
ST/Type.h
ema/LocInfoType.h
d57b7ff9bebc4c45f325fc1be6f238cfcd4c3732 30-Jun-2011 Peter Collingbourne <peter@pcc.me.uk> Replace an unreachable error path with an assert
(SourceManager::createFileID cannot return an invalid file ID).
Also update a comment to reflect this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a1a38741fdf676af3174ea6f465eb07da003e761 30-Jun-2011 Peter Collingbourne <peter@pcc.me.uk> Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134167 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
ca0d0d4a0d6ecd256d4bf8c1a0dc183a83119833 30-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Improve the wording of the warning when returning a value from
a constructor or destructor.

Patch by Hans Wennborg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
146060435c3efce95c95a092c7a1eb651cfb9ae0 30-Jun-2011 John McCall <rjmccall@apple.com> Preserve that a TemplateName was arrived at by substituting
for a template template parameter.

Uses to follow.

I've also made the uniquing of SubstTemplateTemplateParmPacks
use a ContextualFoldingSet as a minor space efficiency.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
ST/Type.h
1901dce8b1e78d0bf7072cccab695bd58c7eec21 30-Jun-2011 John McCall <rjmccall@apple.com> Document and check tighter assumptions about the TemplateName of a
TemplateSpecializationType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134120 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5b3284a9275a27f5c4410e25eb8933be540601d6 30-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a caching mechanism for macro expanded tokens.

Previously macro expanded tokens were added to Preprocessor's bump allocator and never released,
even after the TokenLexer that were lexing them was finished, thus they were wasting memory.
A very "useful" boost library was causing clang to eat 1 GB just for the expanded macro tokens.

Introduce a special cache that works like a stack; a TokenLexer can add the macro expanded tokens
in the cache, and when it finishes, the tokens are removed from the end of the cache.

Now consumed memory by expanded tokens for that library is ~ 1.5 MB.

Part of rdar://9327049.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134105 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/TokenLexer.h
c5c5e92ec53f7e6ac7ebbbf77c6d8e4b7d88daec 30-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Preprocessor::getTotalMemory() and use it in CIndex.cpp, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134103 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
5d9b6bf9de98a33427fc7a3beeca90a3002b4744 29-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Use existing -fcatch-undefined-behavior option,
replacing -freset-local-blocks. // rdar://9227352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
95b135b5c677173a2f27e9b150843545abf0d97c 29-Jun-2011 David Chisnall <csdavec@swan.ac.uk> Make ARC support default to true. Please can we stop making Objective-C runtime features part of the platform description? This only makes sense for Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134066 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
1077e420b89c9541396135157f22a1eff6062edf 29-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Under a compiler flag, -freset-local-blocks,
wipe out stack blocks when they go out of scope.
// rdar://9227352


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
de31fd7eeebdc64fb043463e7f515dab8eccac8d 28-Jun-2011 Eric Christopher <echristo@apple.com> Split out logic for valid clobbers and valid inline asm registers.

Fixes rdar://9281377


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134016 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
d8bba9c15230d2b1b3893e272106aa79efc50251 28-Jun-2011 Douglas Gregor <dgregor@apple.com> Add support for C++ namespace-aware typo correction, e.g., correcting

vector<int>

to

std::vector<int>

Patch by Kaelyn Uhrain, with minor tweaks + PCH support from me. Fixes
PR5776/<rdar://problem/8652971>.

Thanks Kaelyn!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134007 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
ema/Sema.h
ema/TypoCorrection.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
83068315f7d9ed7b82ec35c2c26702151d186a70 28-Jun-2011 Chris Lattner <sabre@nondot.org> Fix PR9279 - Macro expansion stack trace seriously broken with function-style macros, by not recursively printing notes for other 'instantiated from' notes.

This is a one line fix here:
+ // Don't print recursive instantiation notes from an instantiation note.
+ Loc = SM.getSpellingLoc(Loc);

While here, fix the testcase to be more precise (it got filecheck'ized
brutally), and fix EmitCaretDiagnostic to be private and to not pass down
the unused 'Level' argument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133993 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
0b8c98f3ddf83adcb9e9d98b68ce38e970cdee73 28-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Declarator::CXXNewContext and remove 'AutoAllowedInTypeName' parameter
from Sema::GetTypeForDeclarator. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133987 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
ema/Sema.h
d3880f8458bb6a03818ee01f758c32f945de3eaa 28-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Centralize all checks for a C++ tag definition inside a typename in
Sema::GetTypeForDeclarator and remove its 'OwnedDecl' out parameter.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133986 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6326e05fe8c2ff92b65b4759a91e45fad5ef886f 28-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Provide fix-it for '.' <-> '->' for Objective-C ivar/property access.
// rdar://7811841


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133970 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6ce51ee94bd300c5f30930d96436fd53e4ea89a7 28-Jun-2011 John McCall <rjmccall@apple.com> Don't factor in visibility for templates and template arguments
for explicit specializations with their own explicit visibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
0c1c98c2375fe68fee0a6075905772e5290d4a28 27-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Cache the result of AttributeList::getKind(); it's relatively expensive to compute, and we query it frequently enough that it showed up in a profile.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133948 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AttributeList.h
37ac1ea86c11f0163e6f88af421fd50b81fb300d 27-Jun-2011 Bob Wilson <bob.wilson@apple.com> Minor grammatical fix for error message. Radar 9681093.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7e47e1e7e6a2b83d903c97129f27e92f584c3dc2 27-Jun-2011 Douglas Gregor <dgregor@apple.com> Reduce the size of the ExtInfo bitfield in FunctionType from 9 bits
down to 8 by restricting the maximum allowed regparm value to 6
(previously it was 7). I need the extra bit in Type to handle
instantiation-dependence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TargetInfo.h
6628969c3e3886b68d8a0051df7e222aa50ef118 27-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Cleanup a fixme by using a specific diagnostic for subscripting
a pointer to void.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
13b21be065e9feb0759303bd51b8e8653130f0fb 27-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Factor out (some of) the checking for invalid forms of pointer
arithmetic into a couple of common routines. Use these to make the
messages more consistent in the various contexts, especially in terms of
consistently diagnosing binary operators with invalid types on both the
left- and right-hand side. Also, improve the grammar and wording of the
messages some, handling both two pointers and two (different) types.

The wording of function pointer arithmetic diagnostics still strikes me
as poorly phrased, and I worry this makes them slightly more awkward if
more consistent. I'm hoping to fix that with a follow-on patch and test
case that will also make them more helpful when a typedef or template
type parameter makes the type completely opaque.

Suggestions on better wording are very welcome, thanks to Richard Smith
for some initial help on that front.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133906 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
555f57e3549fb5cc963a2ce38180c4f3643a6f95 25-Jun-2011 Douglas Gregor <dgregor@apple.com> When deciding how to parse "= something" as part of a member
declaration, determine whether the declaration will end up declaring a
function using semantic criteria (e.g., it will have function type)
rather than purely syntactic criteria (e.g., it has the form of a
function declarator). Fixes <rdar://problem/9670557>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133854 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
ema/LocInfoType.h
ema/Sema.h
831fb9622581fc3b777848e6b097a0cb23d124de 25-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc/mrc: Allow ns_returns_not_retained attribute on properties
to turn off warning on those properties which follow Cocoa naming
convention for retaining objects and yet they were not meant for
such purposes. Also, perform consistancy checking for declared
getters of such methods. // rdar://9636091



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133849 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
537c3461166ce074d05fb7c96ffa98ed54c9aaa0 25-Jun-2011 Bob Wilson <bob.wilson@apple.com> Revert "Shorten some ARM builtin names by removing unnecessary "neon" prefix."
Sorry, this was a bad idea. Within clang these builtins are in a separate
"ARM" namespace, but the actual builtin names should clearly distinguish tha
they are target specific.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89f19e43730a2895cd81159d375c71c91872b8c2 24-Jun-2011 Bob Wilson <bob.wilson@apple.com> Shorten some ARM builtin names by removing unnecessary "neon" prefix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f2050f21a1e2c640710776c6e7b37c8c3d96ecf3 24-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: Give more descriptive diagnostics when
making unsafe assignment of a retainable
object, Per John's request.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
921c14322977253a60dcb171f45e468c95fe41f8 24-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: Check on a variety of unsafe assignment of retained
objects. // rdar://9495837


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
f58de90e209eac7159a52e75dcd6e99b3a6311a6 24-Jun-2011 Bob Wilson <bob.wilson@apple.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
b8b0313e84700b5c6d597b3be4de41c97b7550f1 24-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename objc_lifetime -> objc_ownership, and modify diagnostics to talk about 'ownership', not 'lifetime'.

rdar://9477613.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
a81397323cc8475ef8243f938118a9c231fb18ff 24-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> When forming a cycle in objc's inheritance hierarchy,
diagnose it properly and don't throw clang into an
infinit loop. // rdar://9653341


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d028302b57ff14a495eaa220393ae40c14a583f4 23-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Improve on warning when objc pointer is used in
c++ catch in fragile abi - per Eli's request.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4c4cbe5794897442e7cd5a57932f6aa91b6dff55 23-Jun-2011 Douglas Gregor <dgregor@apple.com> Remove superfluous comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133757 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
8cf0f52037e0c4bf656953ae63a07e8156aeb5fb 23-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Move definition of template <typename T> void Decl::dropAttr
to its header to avoid an explicit instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
7f88c0133272129111ec32d7aa5eacf6e685c6fc 23-Jun-2011 Douglas Gregor <dgregor@apple.com> Bump Token::Kind from an unsigned char to an unsigned short, from Anton Lokhmotov

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133750 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
cf5abc7ba032bd35158e4d75b0bc92a482fc67e8 23-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Support for catching objc pointer objects in c++ catch-statement
in fragile abi mode and some other cleanups. // rdar://8940528



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b9b4b789ebd28d6fde1c42de820b036ffaf95162 23-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Fix Sema::CheckVectorOperands so that it doesn't try to insert a cast expression into the LHS of a compound assignment. Fixes compound assignment of various "compatible" vector types, including NEON-vector and gcc-vector types.

<rdar://problem/9640356>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133737 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c3ca14d13741889a9b924d0ca32e818f07a9834a 23-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Remove multiple use of weak_import attribute on
same declaration. Templatize dropAttr for general use.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3e66003c1f03bf734efbd0f8eea35784a2d78d66 23-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133721, Fri. 24th Jun.
8785d115ebaf1a850f5e581e4acd2dbfb2b843cb 23-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Remove weak_import attribute on new declaration.
// rdar://9538608


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133721 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1626601b00a1feccd6b7a3f54e2991f56b659192 23-Jun-2011 Dylan Noblesmith <nobled@dreamwidth.org> avoid using config.h in public headers

This is the only usage in clang's headers, and it's for a define
that only exists on CMake builds for the sake of the MSVC compiler,
so just use an ifdef instead.

Also add an include for config.h in a file that actually needs it,
and was picking it up by accident indirectly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
7062281f240ef9c4fb343614fb2406532307c4a5 23-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133678 at Thu. 23th Jun 2011.
2b1ad8b42bbbe00a1845e566f52f1941b8dbc725 23-Jun-2011 Douglas Gregor <dgregor@apple.com> Move all of Sema's member-access-related checking out of SemaExpr.cpp
and into a new file, SemaExprMember.cpp, bringing SemaExpr.cpp just
under 10,000 lines of code (ugh). No functionality change, although I
intend to do some refactoring of this code to address PR8368 at some
point in the "near" future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
572bbec2e0e23f684108e3a410a67c8c60ff9179 23-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow unavailable function calls inside unavailable functions in C++/ObjC++ as well. rdar://9660196

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133672 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d543130a3009a350017e2e411ea43bb3e5459b96 23-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Issue warning if weak_import attribute is added to an already
declared variable and ignore it. // rdar://9538608


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133654 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d96bce991048fd2337cf058ec6a6a722207cbf2 22-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Alloa catching Objective-C id's being thrown with C++ throw
in Darwin's fragile abi mode. // rdar://8940528


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0d9106fc97cde979a995e26b18bcd2643f8afb55 22-Jun-2011 Manuel Klimek <klimek@google.com> Changes ParenListExpr to always require a type.
Removes dead code found in the process.
Adds a test to verify that ParenListExprs do not have NULL types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c09ce1224dedc470fce9747e5936ff83cc6762eb 22-Jun-2011 Douglas Gregor <dgregor@apple.com> Copy diagnostic pragmas to the preprocessed output, from Richard Osborne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133633 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
5b27b6d1311fbcc26e7258f2f59f047af63fb0aa 22-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put all ARC-related warnings into the "arc" diagnostic group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d26fef0e80033eaee3a2c95c14eb2e91931d92fb 22-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change "cannot assign retained object.." warning to "assigning retained object.."

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b4b7b5034bb8304ed03416635bf64c75c39889fc 22-Jun-2011 Douglas Gregor <dgregor@apple.com> Give MaterializeTemporaryExpr the exact type of the lvalue it binds
to, including cv-qualifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
45ba8a6ab70afd418d35d2502849fa11ff73ed1a 22-Jun-2011 Douglas Gregor <dgregor@apple.com> Fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133617 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Specifiers.h
25a767651d14db87aa03dd5fe3e011d877dd4100 22-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce DelayedCleanupPool useful for simplifying clean-up of certain resources that, while their
lifetime is well-known and restricted, cleaning them up manually is easy to miss and cause a leak.

Use it to plug the leaking of TemplateIdAnnotation objects. rdar://9634138.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DelayedCleanupPool.h
arse/Parser.h
0a17cae4e3dcccda0e930f9f55574c8f3bb5337c 22-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Extend the deleted overload candidate note to cover all cases. It
probably shouldn't cover the implicit member case, but it needs to until
more descriptive diagnostics are implemented.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133594 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
661c67a9227708056850403847a10395308705e5 22-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Attempt to reapply this patch for caching copy assignment operator
lookup. Previously, it was breaking self-host, but it's been a week and
a half and I can't reproduce, so I need to see if it's still failing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133581 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
57b9d9810d969df141a19dae8bea9defddb02264 21-Jun-2011 Bob Wilson <bob.wilson@apple.com> Fix a case that I missed in r133550.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133551 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
5dd45f13dc4463f0c18b923fe6795ce55103301d 21-Jun-2011 Bob Wilson <bob.wilson@apple.com> Make InitHeaderSearch::AddPath and HeaderSearchOptions::AddPath consistent
use an "IgnoreSysRoot" argument. HeaderSearchOptions had been using the
opposite form with "IsSysRootRelative", which made for much confusion when
looking at true/false values in calls in AddPath. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133550 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
13c4f2144b35bda21746eb60ad90e52a9bd8dcda 21-Jun-2011 Bob Wilson <bob.wilson@apple.com> Fix the default libc++ header search path to be sysrooted. Radar 9639692.

The -cxx-isystem path is not prefixed with the sysroot directory, so it's
not a good way for the driver to set the system default C++ search path.
Instead, add -stdlib as a cc1 option and teach the frontend how to find the
headers. The driver can then just pass -stdlib through to "cc1".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133547 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
ee273b3b312642da33dd832125206d30e07fc811 21-Jun-2011 Bob Wilson <bob.wilson@apple.com> Fix cut-and-paste error: --stdlib is an alias for -stdlib, not -std.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133546 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ed798951b46555946c95cb76568ea3cf0b16c9ab 21-Jun-2011 Daniel Dunbar <daniel@zuster.org> Driver: Factor out IsUsingLTO helper function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133542 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
e26bdb91b7e3912ffe895b78a446db94471a59dd 21-Jun-2011 Daniel Dunbar <daniel@zuster.org> IRgen: Add a -fuse-register-sized-bitfield-access option, for testing.
- Changes bit-field access policy to try to use (aligned) register sized accesses.

The idea here is that by using larger accesses we expose more coalescing
potential to the backend when we have situations like adjacent bit-fields in the
same structure (which is common), and that the backend should be smart enough to
narrow the accesses down when no coalescing is done or when it is shown not to
be profitable.

--
$ clang -m32 -O3 -S -o - t.c
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movb (%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, (%eax)
movb 1(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 1(%eax)
movb 2(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 2(%eax)
movb 3(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 3(%eax)
popl %ebp
ret

$ clang -m32 -O3 -S -o - t.c -Xclang -fuse-register-sized-bitfield-access
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movl $-2139062144, %ecx ## imm = 0xFFFFFFFF80808080
andl (%eax), %ecx
orl $16843009, %ecx ## imm = 0x1010101
movl %ecx, (%eax)
popl %ebp
ret
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133532 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
08737c49bd98f73b50fe90fd19f97c41cd29e3d1 21-Jun-2011 Daniel Dunbar <daniel@zuster.org> Basic: Add TargetInfo::getRegisterWidth hook.
- For clarity only, currently just assumes register width == long width.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0b5810882bd34183c2b764676cafa4c2ce324740 21-Jun-2011 Douglas Gregor <dgregor@apple.com> A few tweaks to MaterializeTemporaryExpr suggested by John.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
af9751747b098d77052cb71f1e648f29cfbadcc1 21-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: CodeGen part of unbridged cast of CF types.
// rdar://9474349


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133525 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
03e80030515c800d1ab44125b9052dfffd1bd04c 21-Jun-2011 Douglas Gregor <dgregor@apple.com> Introduce a new AST node describing reference binding to temporaries.

MaterializeTemporaryExpr captures a reference binding to a temporary
value, making explicit that the temporary value (a prvalue) needs to
be materialized into memory so that its address can be used. The
intended AST invariant here is that a reference will always bind to a
glvalue, and MaterializeTemporaryExpr will be used to convert prvalues
into glvalues for that binding to happen. For example, given

const int& r = 1.0;

The initializer of "r" will be a MaterializeTemporaryExpr whose
subexpression is an implicit conversion from the double literal "1.0"
to an integer value.

IR generation benefits most from this new node, since it was
previously guessing (badly) when to materialize temporaries for the
purposes of reference binding. There are likely more refactoring and
cleanups we could perform there, but the introduction of
MaterializeTemporaryExpr fixes PR9565, a case where IR generation
would effectively bind a const reference directly to a bitfield in a
struct. Addresses <rdar://problem/9552231>.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
65aa6885818d4b4eea2e5a9d12085b2398148662 21-Jun-2011 Jay Foad <jay.foad@gmail.com> Make more use of llvm::StringRef in various APIs. In particular, don't
use the deprecated forms of llvm::StringMap::GetOrCreateValue().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/IdentifierTable.h
asic/SourceManager.h
asic/SourceManagerInternals.h
ex/LiteralSupport.h
c3b9014c7236a15cf467662264b243a22c420312 21-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Add support for -Wa,--noexecstack when building from a non-assembly file. For
an assembly file it worked correctly, while for a .c file it would given an
error about how --noexecstack is not a supported argument to -Wa.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133489 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
cfd323d0d4476dd4ff64097c91b114067ecaa82b 21-Jun-2011 Eric Christopher <echristo@apple.com> Move additional register names to their own lookup, separate from
register aliases. Fixes unnecessary renames of clobbers.

Fixes part of rdar://9425559


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133485 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1522a7c35e9872c5767721350fc8050be5b14fd2 20-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> objc-arc: allow explicit unbridged casts if the source of the cast is a
message sent to an objc method (or property access)
// rdar://9474349


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133469 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
33f46e22b7fc3b75c34b6d892790f80869da0300 20-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Warn for un-parenthesized '&' inside '|' (a & b | c), rdar://9553326.

Patch by Henry Mason with tweaks by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133453 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c04985647bbd54d53b1f1219287eddce8ff530b5 20-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Remove this poor "abstraction" from the AST. Sorry! =D

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6af966266235cae3287d50f1a10072bc48759ba0 20-Jun-2011 Francois Pichet <pichet2000@gmail.com> Remove more unnecessary #include <llvm/ADT/SmallVector.h>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
river/Compilation.h
ewrite/FixItRewriter.h
45ee1532ca3a8c6146fd9d396b795c35edb4d3dc 20-Jun-2011 Francois Pichet <pichet2000@gmail.com> Remove unnecessary include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133417 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
bc8d7f9fd4346cfcc285868be32b74e019a40f01 20-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Restructure the API in Type based on a conversation with Richard Smith.
This makes 'isPointerLikeType' a little less confusing, and pulls the
decay check into a separate interface that is much more clear and
concrete. Also, just implement these as logical wrappers around other
predicates. Having a switch based implementation isn't likely to be
necessary. We can try to optimize them later if they show up on
a profile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133405 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
732271ee3f97249c1b73088b402665ce4332256e 19-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Turn -Wnull-arithmetic back on by default -- we now have tests for the
false positives, including those in the GCC test suite, and don't warn
about them.

Let me know if this causes fallout, we can turn it back off if needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2af68e4761ed30181540dafb5572993daffa4910 19-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Add test cases for false positives on -Wnull-arithmetic from Richard
Trieu, and fix them by checking for array and function types as well as
pointer types.

I've added a predicate method on Type to bundle together the logic we're
using here: isPointerLikeType(). I'd welcome better names for this
predicate, this is the best I came up with. It's implemented as a switch
to be a touch lighter weight than all the chained isa<...> casts that
would result otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4e5c886eb6b3e86f7de0f203a2f643d764880cb6 19-Jun-2011 Francois Pichet <pichet2000@gmail.com> Add support for MSVC __debugbreak compiler intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
18e0461ad72dcf6ec93cd3b1df7bf1b5a30b10b7 18-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Accept no-return stripping conversions for pointer type arguments after
deducing template parameter types. Recently Clang began enforcing the
more strict checking that the argument type and the deduced function
parameter type (after substitution) match, but that only consideres
qualification conversions.

One problem with this patch is that we check noreturn conversions and
qualification conversions independently. If a valid conversion would
require *both*, perhaps interleaved with each other, it will be
rejected. If this actually occurs (I'm not yet sure it does) and is in
fact a problem (I'm not yet sure it is), there is a FIXME to implement
more intelligent conversion checking.

However, this step at least allows Clang to resume accepting valid code
we're seeing in the wild.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133327 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e665d6929e11796620ff799bc0186ebd747bfc76 18-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Fix the ARC migrator. -arcmt-modify requires running before the initialization of SourceManager
because it is going to modify the input file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133323 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMTActions.h
rontend/FrontendAction.h
c2e70b46b686c8debb3020891a5593f298b053ae 18-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [arcmt] Remove '-arcmt-modify-in-memory', it turned out less useful than we hoped it would be.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133315 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/ARCMTActions.h
river/CC1Options.td
river/Options.td
rontend/FrontendOptions.h
b64915a41bf681e97609055b2068647f5fe29740 17-Jun-2011 John McCall <rjmccall@apple.com> Only accept __bridge_retain in system headers, as Doug suggested.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
1816442fd19cb2f1c35a807391a6b7f280b35c58 17-Jun-2011 John McCall <rjmccall@apple.com> As a hopefully temporary workaround for a header mistake, treat
__bridge_retain as a synonym for __bridge_retained.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133295 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
4e938df04897ebc196d92b4f7f77b19f204e9d24 17-Jun-2011 Richard Trieu <rtrieu@google.com> Put the new warning from revision 133196 on NULL arithmetic behind the flag -Wnull-arthimetic and set to DefaultIgnore. A few edge cases need to be worked out before this can be set to default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7acddacc921cd0b3f813443a8641eeddb82dfbd4 17-Jun-2011 John McCall <rjmccall@apple.com> Objective-C fast enumeration loop variables are not retained in ARC, but
they should still be officially __strong for the purposes of errors,
block capture, etc. Make a new bit on variables, isARCPseudoStrong(),
and set this for 'self' and these enumeration-loop variables. Change
the code that was looking for the old patterns to look for this bit,
and change IR generation to find this bit and treat the resulting
variable as __unsafe_unretained for the purposes of init/destroy in
the two places it can come up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133243 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0f9dc86a14068e04e0d2cc6b4ff15eca571236ce 17-Jun-2011 Douglas Gregor <dgregor@apple.com> When an explicit specialization has a storage specifier, error if that
storage specifier is different from the storage specifier on the
template. If that storage specifier is the same, then we only warn.

Thanks to John for the prodding.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133236 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51d7cdd4bfd11e0eeac55517419d0ebba0abb4cb 17-Jun-2011 Douglas Gregor <dgregor@apple.com> Downgrade the error complaining about presence of a storage class
specifier on an explicit specialization to a warning, since neither
EDG nor GCC diagnose this code as ill-formed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133232 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7a883e3e1798efdb12f06e4e1b722f9a659dbac3 17-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Add support for -force_load flag, for compat with Apple gcc. rdar://9555962 .



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133218 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6970155edde8c79cf22824322470485434b8eb83 17-Jun-2011 Francois Pichet <pichet2000@gmail.com> Finish 2 sentences.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133214 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
12ee102774c747874f0a6904089100667153b0c0 17-Jun-2011 Chris Lattner <sabre@nondot.org> comment improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133213 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
ebb6164bebf2b1e4f439433e751710b506918f62 17-Jun-2011 Chris Lattner <sabre@nondot.org> code cleanups, no behavior change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133211 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
3e95ba94fd34c5f6420c57d7732f601875074681 16-Jun-2011 Richard Trieu <rtrieu@google.com> Add a new warning when a NULL constant is used in arithmetic operations. The warning will fire on cases such as:

int x = 1 + NULL;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133196 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a92d7e7a55a35b28437103130904a6401bf35408 16-Jun-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Fix of a minor typo.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
707a23e8b87410332b55bb4534fa1c799edef38a 16-Jun-2011 Douglas Gregor <dgregor@apple.com> Teach the warning about non-POD memset/memcpy/memmove to deal with the
__builtin_ versions of these functions as well as the normal function
versions, so that it works on platforms where memset/memcpy/memmove
are macros that map down to the builtins (e.g., Darwin). Fixes
<rdar://problem/9372688>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133173 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b1f7d2496a2916cfad17633e403151dd09118821 16-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> arc: diagnose dereferencing a __weak pointer which may be
null at any time. // rdar://9612030


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16c8f9d68ae6d302083763d4733e728634717dec 16-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133163 at Fri. 17th Jun 2011.
dbfb371e297794e827ad2e5b33b45fafbfc46b29 16-Jun-2011 Douglas Gregor <dgregor@apple.com> Implement the consistency checking for C++ [temp.deduct.call]p3, which
checks that the deduced argument type for a function call matches the
actual argument type provided. The only place we've found where the
consistency checking should actually cause template argument deduction
failure is due to qualifier differences that don't fall into the realm
of qualification conversions (which are *not* checked when we
initially perform deduction). However, we're performing the full
checking as specified in the standard to ensure that no other cases
exist.

Fixes PR9233 / <rdar://problem/9039590>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133163 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f7f8188fac71e34e09ee457ff6f039f5d14ad117 16-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Raise the ARCMT functionality in Clang into proper FrontendActions.
These are somewhat special in that they wrap any other FrontendAction,
running various ARC transformations or checks prior to the standard
action's run. To implement them easily, this extends FrontendAction to
have a WrapperFrontendAction utility class which forwards all calls by
default to an inner action setup at construction time. This is then
subclassed to override the specific behavior needed by the different
ARCMT tools.

Finally, FrontendTool is taught how to create these wrapper actions from
the existing flags and options structures.

The result is that clangFrontend no longer depends on clangARCMigrate.
This is very important, as clangARCMigrate *heavily* depends on
clangFrontend. Fundamentally ARCMigrate is at the same layer as
a library like Rewrite, sitting firmly on top of the Frontend, but tied
together with the FrontendTool when building the clang binary itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133161 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMTActions.h
rontend/FrontendAction.h
000d428347f352979e0f6dffcf0a64e73af0a2b5 16-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Rework the warning for 'memset(p, 0, sizeof(p))' where 'p' is a pointer
and the programmer intended to write 'sizeof(*p)'. There are several
elements to the new version:

1) The actual expressions are compared in order to more accurately flag
the case where the pattern that works for an array has been used, or
a '*' has been omitted.
2) Only do a loose type-based check for record types. This prevents us
from warning when we happen to be copying around chunks of data the
size of a pointer and the pointer types for the sizeof and
source/dest match.
3) Move all the diagnostics behind the runtime diagnostic filter. Not
sure this is really important for this particular diagnostic, but
almost everything else in SemaChecking.cpp does so.
4) Make the wording of the diagnostic more precise and informative. At
least to my eyes.
5) Provide highlighting for the two expressions which had the unexpected
similarity.
6) Place this diagnostic under a flag: -Wsizeof-pointer-memaccess

This uses the Stmt::Profile system for computing #1. Because of the
potential cost, this is guarded by the warning flag. I'd be interested
in feedback on how bad this is in practice; I would expect it to be
quite cheap in practice. Ideas for a cheaper / better way to do this are
also welcome.

The diagnostic wording could likely use some further wordsmithing.
Suggestions welcome here. The goals I had were to: clarify that its the
interaction of 'memset' and 'sizeof' and give more reasonable
suggestions for a resolution.

An open question is whether these diagnostics should have the note
attached for silencing by casting the dest/source pointer to void*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133155 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b11382497a923b0d7009e85a1d8eb7bf93ec6d0d 16-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Make the Stmt::Profile method const, and the StmtProfile visitor
a ConstStmtVisitor. This also required adding some const iteration
support for designated initializers and making some of the getters on
the designators const.

It also made the formatting of StmtProfile.cpp rather awkward. I'm happy
to adjust any of the formatting if folks have suggestions. I've at least
fitted it all within 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
a07398ed98ea2b55ad7a505a3aab18aed93b149f 16-Jun-2011 John McCall <rjmccall@apple.com> Restore correct use of GC barriers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133144 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9d4562445decb576249a049f5cdaf04a138bda33 16-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Make the presentation of the warnings on 'x + y ? 1 : 0' a bit more
pretty. In particular this makes it much easier for me to read messages
such as:

x.cc:42: ?: has lower ...

Where I'm inclined to associate the third ':' with a missing column
number, but in fact column numbers have been turned off. Similar
punctuation collisions happened elsewhere as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133121 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
82d1cc06ea533267e24ffe8b5885062ca062b479 16-Jun-2011 John McCall <rjmccall@apple.com> Suppress an over-zealous MSVC warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133109 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
8f0e8d22960d56f8390f4971e2c0f2f0a0884602 16-Jun-2011 John McCall <rjmccall@apple.com> The ARC Migration Tool. All the credit goes to Argyrios and Fariborz
for this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133104 91177308-0d34-0410-b5e6-96231b3b80d8
RCMigrate/ARCMT.h
RCMigrate/FileRemapper.h
f85e193739c953358c865005855253af4f68a497 16-Jun-2011 John McCall <rjmccall@apple.com> Automatic Reference Counting.

Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.

Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclObjC.h
ST/Expr.h
ST/ExprObjC.h
ST/OperationKinds.h
ST/ParentMap.h
ST/PrettyPrinter.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtObjC.h
ST/Type.h
asic/Attr.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.h
asic/StmtNodes.td
asic/TokenKinds.def
river/CC1Options.td
river/Options.td
river/ToolChain.h
rontend/CodeGenOptions.h
rontend/FrontendOptions.h
rontend/PreprocessorOptions.h
rontend/Utils.h
arse/Parser.h
ewrite/Rewriter.h
ema/AttributeList.h
ema/DeclSpec.h
ema/DelayedDiagnostic.h
ema/Initialization.h
ema/Overload.h
ema/Sema.h
erialization/ASTBitCodes.h
204e13395d83524e9a557c3f3fd6df2e2f353b9d 16-Jun-2011 John McCall <rjmccall@apple.com> Introduce a utility routine for checking whether a block's captures
include a specific variable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
add80bb3957dba1d9389304453c0a4c975768bd7 16-Jun-2011 John McCall <rjmccall@apple.com> Missing files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
923cd5744a724d9302ea12baa5476ad1c37f474d 15-Jun-2011 John McCall <rjmccall@apple.com> Generate enumerators for diagnostic categories. Patch by Argyrios!
Depends on LLVM r133093.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCategories.h
4ac01401b1ec602a1f58c217544d3dcb5fcbd7f1 15-Jun-2011 Douglas Gregor <dgregor@apple.com> Eliminate a 'default' case in template argument deduction, where we
were just punting on template argument deduction for a number of type
nodes. Most of them, obviously, didn't matter.

As a consequence of this, make extended vector types (via the
ext_vector_type attribute) actually work properly for several
important cases:
- If the attribute appears in a type-id (i.e, not attached to a
typedef), actually build a proper vector type
- Build ExtVectorType whenever the size is constant; previously, we
were building DependentSizedExtVectorType when the size was constant
but the type was dependent, which makes no sense at all.
- Teach template argument deduction to handle
ExtVectorType/DependentSizedExtVectorType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133060 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1454cb952b76a7dc441f2ae1b7f8d998a54a23cf 15-Jun-2011 Douglas Gregor <dgregor@apple.com> Properly implement C++0x [stmt.dcl]p3, which requires a scope to be
protected in the case where a variable is being initialized by a
trivial default constructor but has a non-trivial destructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133037 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cf739927f9b00c801867f620b04b79e3259c311f 15-Jun-2011 Nico Weber <nicolasweber@gmx.de> Warn on "void f(int a[10]) { sizeof(a); }"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133036 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
fa821380182f00eddfa536280b5a103c59e5c1c4 15-Jun-2011 Ted Kremenek <kremenek@apple.com> Sema: show shift result in hexadecimal

Change the output for -Wshift-overflow and
-Wshift-sign-overflow to an unsigned hexadecimal. It makes
more sense for looking at bits than a signed decimal does.
Also, change the diagnostic's wording from "overrides"
to "sets".

This uses a new optional argument in APInt::toString()
that adds the '0x' prefix to hexademical numbers.

This fixes PR 9651.

Patch by nobled@dreamwidth.org!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
74da19fc3a52d7e3005eeb7a7833859da84fd12a 15-Jun-2011 Douglas Gregor <dgregor@apple.com> Introduce a -cc1-level option to turn off related result type
inference, to be used (only) by the Objective-C rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133025 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
997e15cfdc5c78cf3cd9c520dd1bcf3eef4750c0 14-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Bad table discription of fromat-y2k causes
no-format-y2k turn off -Wformat altogether.
// rdar://9504680


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
e4a1c64700304459ac436fe29cb498f2da3b6194 14-Jun-2011 Nico Weber <nicolasweber@gmx.de> Warn on memset(ptr, 0, sizeof(ptr)). Diagnostic wording by Jordy Rose.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132996 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2a00b8347bdf0064cc106295a070c00669ded9a9 14-Jun-2011 Jay Foad <jay.foad@gmail.com> Hyphenate "argument-dependent".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132989 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e1eed38733ed47d44f9d8c7731817c411eaf4141 14-Jun-2011 Chris Lattner <sabre@nondot.org> when compiling in a GNU mode (e.g. gnu99) treat VLAs with a size that can be folded to a constant
as constant size arrays. This has slightly different semantics in some insane cases, but allows
us to accept some constructs that GCC does. Continue to be pedantic in -std=c99 and other
modes. This addressed rdar://8733881 - error "variable-sized object may not be initialized"; g++ accepts same code


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132983 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
24c38e1ff057ce49c866294bf486444255e18f31 14-Jun-2011 Chris Lattner <sabre@nondot.org> fix rdar://9204520 - Accept int(0.85 * 10) as an initializer in a class member
as an extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0adde128d96a73864569516e684faa570e3c0333 14-Jun-2011 David Majnemer <david.majnemer@gmail.com> Properly diagnose using abstract and incomplete types in va_arg

- Move a test from test/SemaTemplate/instantiate-expr-3.cpp, it did not belong there
- Incomplete and abstract types are considered hard errors


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132979 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fd05ca03abdfb38f78b9535d996ecc9c39d3b0db 14-Jun-2011 Peter Collingbourne <peter@pcc.me.uk> Move GlobalDecl to AST

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/GlobalDecl.h
4c4efee6d3113f20b41efaeec08934332d2ea40e 13-Jun-2011 Douglas Gregor <dgregor@apple.com> Eliminate the -f[no]objc-infer-related-result-type flags; there's no
reason to allow the user to control these semantics through a flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
db11b0187bafe77263036eafc3977fa5da3bcf1a 13-Jun-2011 David Majnemer <david.majnemer@gmail.com> Give a diagnostic when using non-POD types in a va_arg


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132905 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c2cdd5354aba8d6a74c45231829f3bbbbfeb2781 12-Jun-2011 Richard Smith <richard-llvm@metafoo.co.uk> Don't assert on initialized typedef declarations in classes:

struct {
typedef int A = 0;
};

According to the C++11 standard, this is not ill-formed, but does not have any ascribed meaning. We can't reasonably accept it, so treat it as ill-formed.

Also switch C++ from an incorrect 'fields can only be initialized in constructors' diagnostic for this case to C's 'illegal initializer (only variables can be initialized)'



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7a614d8380297fcd2bc23986241905d97222948c 11-Jun-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement support for C++11 in-class initialization of non-static data members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/ExceptionSpecificationType.h
arse/Parser.h
ema/DeclSpec.h
ema/Scope.h
ema/Sema.h
926df6cfabf3eaa4afc990c097fa4619b76a9b57 11-Jun-2011 Douglas Gregor <dgregor@apple.com> Implement Objective-C Related Result Type semantics.

Related result types apply Cocoa conventions to the type of message
sends and property accesses to Objective-C methods that are known to
always return objects whose type is the same as the type of the
receiving class (or a subclass thereof), such as +alloc and
-init. This tightens up static type safety for Objective-C, so that we
now diagnose mistakes like this:

t.m:4:10: warning: incompatible pointer types initializing 'NSSet *'
with an
expression of type 'NSArray *' [-Wincompatible-pointer-types]
NSSet *array = [[NSArray alloc] init];
^ ~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1:
note:
instance method 'init' is assumed to return an instance of its
receiver
type ('NSArray *')
- (id)init;
^

It also means that we get decent type inference when writing code in
Objective-C++0x:

auto array = [[NSMutableArray alloc] initWithObjects:@"one", @"two",nil];
// ^ now infers NSMutableArray* rather than id




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
asic/IdentifierTable.h
asic/LangOptions.h
river/CC1Options.td
river/Options.td
ema/Sema.h
45937ae10a0f70f74508165aab4f2b63e18ea747 11-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Restore 'atomic' as an attribute of objc
properties.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/DeclSpec.h
e5df885367b9e122ac11c89ddfbc62375695cdab 10-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r132843 at Fri. 10th Jun 2011.
3bde0ce7a18d2513ebe286df67baa32700fd3d6b 10-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> This change is breaking selfhost. Revert it until I have more time
to study it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132843 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
53e669f4bd617dc4df1b1850bcd3998d7680bdc5 10-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement caching of copy assignment operator lookup.

I believe, upon, careful review, that this code causes us to incorrectly
handle exception specifications of copy assignment operators in C++03
mode. However, we currently do not seem to properly implement the subtle
distinction between copying of members and bases made by implicit copy
constructors and assignment operators in C++03 - namely that they are
limited in their overload selection - in all cases. As such, I feel that
committing this code is correct pending a careful review of our
implementation of these semantics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132841 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c530d1758cef1acc596f2ec905665da534e66d29 10-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement caching for copy constructors in similar situations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132835 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b320e0c322fb71d6235ebca9ec22940a97bdcdc7 10-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement caching of default constructors on the resolution table. This
isn't yet used for the less controlled environments of initialization.

Also a few random text fixups.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132833 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
bbf34c024398e7bae825686dcff4c3b901ec9f89 10-Jun-2011 Richard Trieu <rtrieu@google.com> Made changes to how 'struct'/'class' mismatches are handled in -Wmismatched-tags.
- Removed fix-it hints from template instaniations since changes to the
templates are rarely helpful.
- Changed the caret in template instaniations from the class/struct name to the
class/struct keyword, matching the other warnings.
- Do not offer fix-it hints when multiple declarations disagree. Warnings are
still given.
- Once a definition is found, offer a fix-it hint to all previous declarations
with wrong tag.
- Declarations that disagree with a previous definition will get a fix-it hint
to change the declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
2f072b442879b8bba8c5dea11d7c61bedb1924ae 09-Jun-2011 Hans Wennborg <hans@hanshq.net> Handle overloaded operators in ?: precedence warning

This is a follow-up to r132565, and should address the rest of PR9969:

Warn about cases such as

int foo(A a, bool b) {
return a + b ? 1 : 2; // user probably meant a + (b ? 1 : 2);
}

also when + is an overloaded operator call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d7bc7a210993fc4f67cdf5764ce4ef33f2a8ede3 09-Jun-2011 Bob Wilson <bob.wilson@apple.com> Add isVCVT_N flag to identify Neon VCVT_N intrinsics, which require special
range checking for immediate operands. Radar 9558930.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132783 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
b92003b3d8d6128be3daa0b3f40a042a08545644 08-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Remove 'atomic' as a property attribute keyword.
It is not a sanctioned keyword and is assumed as default.
// rdar://8790791


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/DeclSpec.h
6ce33d67e2ed4f8c9395a807bebd25be04580c0f 08-Jun-2011 Stuart Hastings <stuart@apple.com> Followup to 132737; make two-character string explicit, add some
comments. rdar://problem/9037836


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132752 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
169dd31c6c552c9234ae97ac2013f9635bdbfa32 08-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Revert "hack in my new variables for GCC"

Very sorry for the accidental commit of WIP code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132745 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
8afdd56babf69cd8e3b45d0baff0d4fc20d088a0 08-Jun-2011 Chandler Carruth <chandlerc@gmail.com> hack in my new variables for GCC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132743 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
002333f8b2cf1a8614e532f6ce366b21af85142c 08-Jun-2011 Stuart Hastings <stuart@apple.com> Clang support for ARM Uv/Uy/Uq inline-asm constraints.
rdar://problem/9037836


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132737 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
175df89a9794271669ec347c8c842a99271cbfce 07-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> More coherent diagnostic when a stack variable is
declared __weak objc-gc mode. // rdar://9666091.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132731 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5b01b8319012c6b568de6dfff935c1b16184952f 07-Jun-2011 Douglas Gregor <dgregor@apple.com> Downgrade the warning about the use of typedefs for class template
specializations within an explicit instantiation to default to off
(enabled by -pedantic). Nobody else seem to implement C++
[temp.explicit]p3. Fixes PR10093.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7f4afa55bb1c580739a98bf8051d6400f4fc5738 06-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Don't put a note in the DiagGroup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132687 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89b9f10cca9e2812b3e7943d3150fe6c9028bbe4 06-Jun-2011 Douglas Gregor <dgregor@apple.com> Diagnose the condition in C++ [temp.expl.spec]p16 that prohibits
specializing a member of an unspecialized template, and recover from
such errors without crashing. Fixes PR10024 / <rdar://problem/9509761>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132677 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7299a4ef4d75901012e006f463d789447976a21b 06-Jun-2011 Francois Pichet <pichet2000@gmail.com> ok now, let's fix that MSVC warning for real.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132675 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c9f487a8aa73376b8cbee364663b50956fc641a2 06-Jun-2011 Francois Pichet <pichet2000@gmail.com> Fix MSVC warning:
"unsafe mix of type 'int' and type 'bool' in operation"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132674 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f50e88a793dd5bc7073c717fec78912e3234e95a 06-Jun-2011 Richard Smith <richard-llvm@metafoo.co.uk> Fix PR10053: Improve diagnostics and error recovery for code which some compilers incorrectly accept due to a lack of proper support for two-phase name lookup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7491c499e826682e128a400038361ebcbde30eec 05-Jun-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Drop most of InitializationSequence::SequenceKind's values. They didn't really contain any information that the step array didn't contain too. This makes debugging dumps a bit less informative, but probably not significantly so. The advantage is that the redundancy is gone, so the code is easier to understand.
ReferenceBinding is still there, because it is used in some unclear code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132667 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
d695d6bb7323672e29dbb1556a3dafde3d3b2732 05-Jun-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Remove more references to FailedSequence.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132666 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
383616cd2e61131a534afd9364ef53f643e1f834 05-Jun-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Remove all references to InitializationSequence::FailedSequence from outside SemaInit.cpp. Replace them with the boolean conversion or the new Failed() function. This is a first step towards removing InitializationSequence::SequenceKind. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132664 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
dbef1bb8a8118b7b73e184e08fccfe0eaf914dda 05-Jun-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Parse C++0x generalized initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132662 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
4ae5b7208ef72dec2a79d3d1c602cb47e9750d69 05-Jun-2011 Douglas Gregor <dgregor@apple.com> Identity and non-identity standard conversion sequences can be
compared even when one is a reference binding and the other is not
(<rdar://problem/9173984>), but the definition of an identity sequence
does not involve lvalue-to-rvalue adjustments (PR9507). Fix both
inter-related issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132660 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ab3c80e79e09132d1ee51b7c11ca697cb4592913 04-Jun-2011 Richard Smith <richard-llvm@metafoo.co.uk> Remove the old implementation of -verify, which has been dead code since r88750.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132651 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
7339902e47acacad0d6b911c54ee3aa8cbfac683 04-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Revert r132630. GCC passes everything down, we aren't trying to replicate that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132637 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f6ff3abc3a7ee63fcf279e68ef802a12d94adf08 04-Jun-2011 Nick Lewycky <nicholas@mxc.ca> GCC passes -z foo directly through to the linker (and yes -z=foo becomes
"-z =foo"). Do the same thing in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132630 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
308742c87e2311c3f349092e5b823c3821e61b10 04-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Reimplement r132572 on top of a FoldingSet, thus hopefully solving both
the self-host failures and Chandler's concerns.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
7b33c2b3908b178511ccaace8cacb5e5b14552a9 04-Jun-2011 Nick Lewycky <nicholas@mxc.ca> Remove extraneous "virtual" keyword and non-virtual destructor. Caught by
-Wnon-virtual-dtor!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
61eee0ca33b29e102f11bab77c8b74cc00e2392b 04-Jun-2011 Tanya Lattner <tonic@nondot.org> Add support for builtin astype:
__builtin_astype(): Used to reinterpreted as another data type of the same size using for both scalar and vector data types.
Added test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
asic/TokenKinds.def
ema/Sema.h
erialization/ASTBitCodes.h
953c564288f2f376fed9c3540096bde3694bbb7a 04-Jun-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Improvements to abbreviations for PCH which add support for EnumDecl, ObjCIvarDecl, TypedefDecl, VarDecl and FieldDecl and improve support for ParmVarDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132604 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
c5c9b538de70124a57bee0adbfdd7853a582176e 03-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Revert r132572 to figure out why it broke selfhost and clean it up as
suggested by Chandler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
8fd7722fce4e4f9549897699ec3a4c752613b214 03-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Begin implementing a cache of special member lookups. Currently only
destructors are implemented but other special members are on the way,
which is where the real benefits of this will be visible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
5a4cca2cc576bb42309e3e86befaa904283e9c8c 03-Jun-2011 Matt Beaumont-Gay <matthewbg@google.com> Don't warn about -Wno-foo where foo is an unknown warning option. Explicitly
passing -Wunknown-warning-option will re-enable warnings about -Wno-foo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
9cfdae3144fc004cf203b05288f4dab49097ce7b 03-Jun-2011 Hans Wennborg <hans@hanshq.net> Warn about missing parentheses for conditional operator.

Warn in cases such as "x + someCondition ? 42 : 0;",
where the condition expression looks arithmetic, and has
a right-hand side that looks boolean.

This (partly) addresses http://llvm.org/bugs/show_bug.cgi?id=9969

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132565 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
78e9c55c9acc85d82f4dd53a49c05310b4b56a1b 03-Jun-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a warning flag for the warning about default arguments making
special member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c7f532f9b8e934a0a284d15a739333372e979f61 03-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r132540 at Fri. 3rd Jun 2011.
929f0135ab60166202f52e0dd19835c0490d792a 03-Jun-2011 Chandler Carruth <chandlerc@gmail.com> Clean up the "non-POD memaccess" stuff some. This adds a properly named
diagnostic group to cover the cases where we have definitively bad
behavior: dynamic classes.

It also rips out the existing support for POD-based checking. This
didn't work well, and triggered too many false positives. I'm looking
into a possibly more principled way to warn on the fundamental buggy
construct here. POD-ness isn't the critical aspect anyways, so a clean
slate is better. This also removes some silliness from the code until
the new checks arrive.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132534 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a72d8c4556fbdfca2c9e101722812861fcbdde12 03-Jun-2011 Douglas Gregor <dgregor@apple.com> Introduce additional abbreviations into the AST writer for
DeclRefExprs, IntegerLiterals, and others, reducing Cocoa PCH size by
~1% and C++ header size by ~2.5%. From Jonathan Turner!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132528 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTWriter.h
4cdb0e2a2e9d93805e5ceaf8bc7018bdd166aec1 02-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Store the offsets of source location file entries and go through them
in ASTReader::validateFileEntries().

This avoids going through all source location entries and fixes the performance regression.
Many thanks to Doug for the hint!
(rdar://9530587)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132481 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
01ba8545fb6bae2a370606b4f40f0d17eb0a8c6c 02-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Add -fno-gnu89-inline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132468 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
16f213142f8f8f5410672205a19f79ed3c232929 02-Jun-2011 Manuel Klimek <klimek@google.com> Reverts the Tooling changes as requested by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132462 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ASTMatchers.h
ooling/Tooling.h
ooling/VariadicFunction.h
fb3f4aad0436a9c40e9130598162150890c405b5 02-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement -fgnu89-inline. Fixes PR10041.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132460 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
9277bea0e6b4202845b9a8160b4d18a6f026c2ba 01-Jun-2011 Ted Kremenek <kremenek@apple.com> Rename -Wunknown-attributes to -Wattributes to match GCC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
6a5e062cbcb5c10e745f241604ca080d5cfbefcc 01-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Don't use stdint.h; including it directly is not allowed from LLVM code because it doesn't exist on MSVC.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132403 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ASTMatchers.h
4e1ff2b6c9bdffd1cc202a2c9a38393d78f4bca5 01-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove pointless assert, N is unsigned.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132392 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ASTMatchers.h
c89db5acb0b2661bdbbfe9e2f5d968a8b7d45b48 01-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Change a name for consistency and hopefully unbreak builds with gcc 4.6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132391 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ASTMatchers.h
b68ffb107a86f5e3851e8108c712b64dd16ba258 01-Jun-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] Be conservative and check all the files the PCH references to see if
a file was modified since the time the PCH was created.

The parser is not fit to deal with stale PCHs, too many invariants do not hold up. rdar://9530587.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132389 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
64cbdf370984783911bb6d3bc25ec35a8b59e998 01-Jun-2011 Manuel Klimek <klimek@google.com> This patch implements an AST matching framework that allows to write
tools that match on the C++ ASTs. The main interface is in ASTMatchers.h,
an example implementation of a tool that removes redundant .c_str() calls
is in the example RemoveCStrCalls.cpp.

Various contributions:
Zhanyong Wan, Chandler Carruth, Marcin Kowalczyk, Wei Xu, James Dennett.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132374 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/ASTMatchers.h
ooling/Tooling.h
ooling/VariadicFunction.h
5aecb786a32d321e8d3462cd49e50092e8d55cd3 01-Jun-2011 Francois Pichet <pichet2000@gmail.com> Revert 132332 (Microsoft friend as a forward declaration), John McCall pointed out a better/simpler way to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132369 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8adc227de934e23c72eb8d9abf5c0e3dfffec131 31-May-2011 Francois Pichet <pichet2000@gmail.com> For compatibility with MSVC, a friend declaration also act as a forward declaration if the tag name is not already declared. The tag name is declared in the next outermost non record scope.
Example:

class A {
friend class B;
B* b;
};
B* global_b;


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132332 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8155910a192dafa423d6b932b7d127d48e4641e8 31-May-2011 Nick Lewycky <nicholas@mxc.ca> Whenever we instantiate a static data member, make sure to define any new
vtables! Fixes PR10020

This also allows us to revert the part of r130023 which added a big loop around
the template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132331 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1838ca5618bc6c84ca3d13d84717bf32d9862bb3 29-May-2011 Richard Trieu <rtrieu@google.com> Add a new warning on NULL pointer constant to integer conversion.

This path was reviewed by Chandler Carruth at http://codereview.appspot.com/4538074/



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e72c55b9a11be9f00fa3f66f7ad6b73b2814e963 29-May-2011 Chandler Carruth <chandlerc@gmail.com> Fix a regression in the source locations for unary trait expressions.
I tried to use an assert to prove that I could remove each of the
arguments I did, but ended up writing my assert with inverted logic.
Doh! Reported by Xi Wang on cfe-dev. I have manually verified the source
locations and ranges for these using -ast-dump. I tried writing a test
case that would catch these, but these expressions aren't exposed in the
c-index-test's token annotation utility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132284 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
43c9791207a2bd7cef8b17e9bfc4dd87db21690f 28-May-2011 Nowar Gu <nowar100@gmail.com> Merge upstream r132249 at Sat. 28th. May 2011.
26c1b8df8d1af0d8ef7f6c726fe1a8a9ddc60267 28-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add support for ARM ldrexd/strexd builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132249 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
469244a322dd5d35cee1d02d70a2edbc12ac5ce7 28-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a couple of helper methods in the SourceManager API, isAtStartOfMacroInstantiation/isAtEndOfMacroInstantiation
useful only for source locations that point at a macro token.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e4d645cbe073042d8abc1a4eb600af4ff7a8dffb 27-May-2011 Chandler Carruth <chandlerc@gmail.com> Enhance Clang to start instantiating static data member definitions
within class templates when they are necessary to complete the type of
the member. The canonical example is code like:

template <typename T> struct S {
static const int arr[];
static const int x;
static int f();
};

template <typename T> const int S<T>::arr[] = { 1, 2, 3 };
template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]);
template <typename T> int S<T>::f() { return x; }

int x = S<int>::f();

We need to instantiate S<T>::arr's definition to pick up its initializer
and complete the array type. This involves new code to specially handle
completing the type of an expression where the type alone is
insufficient. It also requires *updating* the expression with the newly
completed type. Fortunately, all the other infrastructure is already in
Clang to do the instantiation, do the completion, and prune out the
unused bits of code that result from this instantiation.

This addresses the initial bug in PR10001, and will be a step to
fleshing out other cases where we need to work harder to complete an
expression's type. Who knew we still had missing C++03 "features"?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132172 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f968d8374791c37bc464efd9168c2d33dd73605f 27-May-2011 Douglas Gregor <dgregor@apple.com> Objective-C doesn't consider the use of incomplete types as method
parameter types to be ill-formed. However, it relies on the
completeness of method parameter types when producing metadata, e.g.,
for a protocol, leading IR generating to crash in such cases.

Since there's no real way to tighten down the semantics of Objective-C
here without breaking existing code, do something safe but lame:
suppress the generation of metadata when this happens.

Fixes <rdar://problem/9123036>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f858bd817e8d6eac58ae496fa96a2f508fbb286f 26-May-2011 Richard Trieu <rtrieu@google.com> Add a fix-it and better error recovery for improperly nested namespaces. This will give a better error message for cases such as "namespace foo::bar::baz {}" and a suggested fix-it of "namespace foo { namespace bar { namespace baz {} } }"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
9d342d0121531bcbd2410f600a751dc85993bdee 26-May-2011 Chandler Carruth <chandlerc@gmail.com> Add a convenience interface for checking expression arguments to unary
traits which uses the information embedded in the expression. Use this
to simplify several interfaces which repeated information embedded in
the expression through explicit arguments. I added an assertion that the
only extra piece of data to come in from the parser matches what is
stored in the expression. No functionality change intended here.

Also cleaned up the doxygen comments for some of these methods and some
formatting oddities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132115 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9ae60d54e4454192384933f3020968ea5c8c3540 26-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a new warning for when adding a default argument to a method
makes it into a special member function. This is very bad and can lead
to all sorts of nastiness including implicit member functions violating
the One Definition Rule. This should probably be made ill-formed in a
later version of the standard, but for now we'll just warn.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132104 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e5cfd52a3a5d4bb46f77323fa8fa0b973fcde7bc 26-May-2011 Ted Kremenek <kremenek@apple.com> static analyzer: when conservatively evaluating functions, don't invalidate the values of globals when the called function is strlen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132100 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
82713174914bdb927a254c5ee188e35fd79c4948 26-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Update our diagnostics to properly account for move operations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
ffe37fdda5b4b4f162a45155c30d9f60ce110c12 25-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a little bit of cleanup and a lot more of the base work
behind implicit moves. We now correctly identify move constructors and
assignment operators and update bits on the record correctly. Generation
of implicit moves (declarations or definitions) is not yet supported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ema/Sema.h
563a645de82231a55e221fe655b7188bf8369662 25-May-2011 Francois Pichet <pichet2000@gmail.com> Add support for Microsoft __if_exists, __if_not_exists extension at class scope.

Example:

typedef int TYPE;
class C {
__if_exists(TYPE) {
TYPE a;
}
__if_not_exists(TYPE) {
this will never be parsed.
}
};


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132052 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
477aab6782795e7472055a54108d2df270ce1a89 25-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> A StringRef-ication of the DiagnosticIDs API and internals.

Patch by Matthieu Monrocq with tweaks by me to avoid StringRefs in the static
diagnostic data structures, which resulted in a huge global-var-init function.

Depends on llvm commit r132046.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
3573fff02a7f021bebdf3c7f59f631eb5dccbd44 25-May-2011 Daniel Dunbar <daniel@zuster.org> Driver: Don't warn about unused PIE arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132020 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ca63c200346c0ca9e00194ec6e34a5a7b0ed9321 25-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a new type node, UnaryTransformType, designed to represent a
type that turns one type into another. This is used as the basis to
implement __underlying_type properly - with TypeSourceInfo and proper
behavior in the face of templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132017 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
asic/Specifiers.h
ema/DeclSpec.h
ema/Sema.h
erialization/ASTBitCodes.h
6f0074ae2f466bae9f415da268d61a2dc1fabe26 24-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add new warning that warns when invoking 'delete' on a polymorphic, non-final, class without a virtual destructor.

Patch by Matthieu Monrocq!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131989 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
848afb0c1ff4571ca7a21927ecc2699ea2e7429a 24-May-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r131958 at Tue. 24th May 2011.
74a5fd8bcc68b540b58f6fcd2d80e6e926966e71 24-May-2011 Nico Weber <nicolasweber@gmx.de> Make it possible for external tools to distinguish between paths that come from -I and paths that come from -system. Patch from Paul Holden!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131955 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
0f161593b36584ec447e5268dbed2953489854d8 24-May-2011 Francois Pichet <pichet2000@gmail.com> MSVC doesn't do any validation regarding exception specification.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b2ee8305f878259613b65d0f96a03f7f852977ea 23-May-2011 Francois Pichet <pichet2000@gmail.com> Emulate a MSVC bug where if during an using declaration name lookup, the declaration found is unaccessible (private) and that declaration was bring into scope via another using declaration whose target declaration is accessible (public) then no error is generated.

Example:
class A { public: int f(); };
class B : public A { private: using A::f; };
class C : public B { private: using B::f; };

Here, B::f is private so this should fail in Standard C++, but because B::f refers to A::f which is public MSVC accepts it.

This fixes 1 error when parsing MFC code with clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Lookup.h
74a63bca21a352319162505dce8310c1d6ed15cd 22-May-2011 David Chisnall <csdavec@swan.ac.uk> Change the default for supporting ObjC GC to true. This shouldn't really be in ToolChain at all, since it's a property of the objc runtime library.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131856 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
4d509341bd5db06a517daa311379f52bb540bc34 21-May-2011 Eli Friedman <eli.friedman@gmail.com> Fix the clang part of PR7952: rewrite the specialization of isa<> in DeclBase,
and stop abusing the multi-level dereference isa<> used to allow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
e885e188b25dc218132402d1f48fb35e175bfb2e 21-May-2011 Douglas Gregor <dgregor@apple.com> Diagnose the presence of storage-class-specifiers on explicit
instantiations and specializations. Fixes <rdar://problem/9126453> and PR8700.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c9471b0ff1815ed0149dbfcad0f385ed8648eeb0 21-May-2011 Douglas Gregor <dgregor@apple.com> Introduce the -fdiagnostics-format=xxx option to control how Clang
prints the file, line, and column of a diagnostic. We currently
support Clang's normal format, MSVC, and Vi formats.

Note that we no longer change the diagnostic format based on
-fms-extensions.

Patch by Andrew Fish!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131794 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
5e9ebb3c0fb554d9285aa99c470abdf283272bd9 21-May-2011 Douglas Gregor <dgregor@apple.com> A few more is(Un)signedIntegerType/is(Un)signedOrEnumerationType cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131793 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
0fd228d48bbf05d08d9b408023d7c8ddb681bc91 21-May-2011 Douglas Gregor <dgregor@apple.com> Implement C++0x semantics for passing non-POD classes through varargs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131792 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
575a1c9dc8dc5b4977194993e289f9eda7295c39 20-May-2011 Douglas Gregor <dgregor@apple.com> Introduce Type::isSignedIntegerOrEnumerationType() and
Type::isUnsignedIntegerOrEnumerationType(), which are like
Type::isSignedIntegerType() and Type::isUnsignedIntegerType() but also
consider the underlying type of a C++0x scoped enumeration type.

Audited all callers to the existing functions, switching those that
need to also handle scoped enumeration types (e.g., those that deal
with constant values) over to the new functions. Fixes PR9923 /
<rdar://problem/9447851>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
b7ec906b189f71ab35825bdb60fb1f6c4c40880b 20-May-2011 Douglas Gregor <dgregor@apple.com> Downgrade the error about re-opening an inline namespace as non-inline
to a warning, since apparently libstdc++'s debug mode does this (and
we can recover safely). Add a Fix-It to insert the "inline", just for kicks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131732 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4926d832aa2f0af9d7c00633727d49e7967eb978 20-May-2011 Douglas Gregor <dgregor@apple.com> Clean up two comments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131727 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
7dfd96fd5f4e63071f5d4f684e9f0e1928d226c7 20-May-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r131722 at Fri. 20th May 2011.
1e55e91a257c4ddd4364656b048a3c345c366804 20-May-2011 Matt Beaumont-Gay <matthewbg@google.com> Undo enough of r131143 to make private copy ctor diags say "copy constructor" again

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
46a49391efab20d7a2a1c18f22edb3d76b465252 19-May-2011 Joerg Sonnenberger <joerg@bec.de> Correction for r131662, the GNU as option is --fatal-warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131671 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
d793350dee89688f1cc939096dc60c3bc15c20fe 19-May-2011 Joerg Sonnenberger <joerg@bec.de> Support -fatal-warnings for the assembler frontend


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131662 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
db5d44b775c60166074acd184ca9f1981c10c2a7 19-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement __underlying_type for libc++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131633 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
asic/TokenKinds.def
arse/Parser.h
ema/DeclSpec.h
0ee33912f8ec3453856c8a32ed2c2e8007bed614 19-May-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Reapply r121528, fixing PR9941 by delaying the exception specification check for destructors until the class is complete and destructors have been adjusted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131632 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1d78032167c2f2d470e4270aadcb07ff71e6c7e1 18-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Revert r121528 as it breaks a simple testcase, which leads to, among
other things, libcxx not building.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131573 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0320a1d7b3305d1aef36ee68b77bebe170e1d30a 18-May-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Implement implicit exception specifications of destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131528 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
403de3f932b5d1d3e4e58f69960000911d04dd2a 18-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix a nasty bug where inside StringLiteralParser:

1. We would assume that the length of the string literal token was at least 2
2. We would allocate a buffer with size length-2

And when the stars aligned (one of which would be an invalid source location due to stale PCH)
The length would be 0 and we would try to allocate a 4GB buffer.

Add checks for this corner case and a bunch of asserts.
(We really really should have had an assert for 1.).

Note that there's no test case since I couldn't get one (it was major PITA to reproduce),
maybe later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131492 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
be63122e65ea06010c4ce06a77276bcb29a575b6 17-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fix some minor bugs and add a lot more test cases for defaulted
constructors, including two more FIXMEs (one of which I don't actually
understand).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6ee6cf6a13e4047a78ce61951870c6605a7260f0 17-May-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r131450 at Tue. 17th May 2011.
2636197098e02fd7c90f9496056b8ab886dcbff0 17-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Reapply the commits that r131401 reverted and add a fix for PR9927.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131446 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
81e557b1ded0e3249f784172c54728469baad1db 16-May-2011 Manuel Klimek <klimek@google.com> Pulls the common part of the clang-check example into Tooling, to allow new tools to be implemented without duplicating the boilerplate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131425 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
4ea030403d509f5b320b8e1d7952447aba5c2f6c 16-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 131377, 131369 and 131365.
131365 caused PR9927.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
23c608d6815f188cb0bd3444c9708383c6461036 15-May-2011 John McCall <rjmccall@apple.com> Add a method for checking whether a function is one of the reserved global
placement allocation or deallocation functions. These functions cannot be
replaced by the user and are exempt from the normal requirements on
allocation functions (e.g. that they must return unaliased memory).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ffb945ffb5d29b80fd93649c3572b6d87abce3fc 15-May-2011 Anders Carlsson <andersca@mac.com> When emitting the destructor for a class with a vtable, if we can determine
that the destructor body is trivial and that all member variables also have either
trivial destructors or trivial destructor bodies, we don't need to initialize the
vtable pointers since no virtual member functions will be called on the destructor.

Fixes PR9181.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
02c5116db6a40e806534c416e0abb22b8840831e 14-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Create proper Objective-C @encoding for C++ classes; fixes rdar://9357400.

Go through and expand the members of bases into the encoding string (and encode the VTable as well).
Unlike gcc which expands virtual bases as many times as they appear in the
hierarchy, clang will only expand them once at the end, to reflect the actual layout.

Note that there doesn't seem to be a way to indicate in the encoding that
packing/alignment of members is different that normal, in which case
the encoding will be out-of-sync with the real layout.
If the runtime switches to just consider the size of types without
taking into account alignment, we could easily make padding explicit in the
encoding (e.g. using arrays of chars). The encoding strings would be
longer then though.

Also encode a flexible array member as array of 0 size, like gcc, not as a pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3b5904ba83fc9b968b1cd6f1ce78d01bfd6e8686 14-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Emit an error when trying to @encode an incomplete type.

There are APIs, e.g. [NSValue valueWithBytes:objCType:], which use the encoding to find out
the size of an object pointed to by a pointer. Make things safer by making it illegal to @encode
incomplete types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
e1e96a6201168c232a06ec81685f948e05fddd39 14-May-2011 Francois Pichet <pichet2000@gmail.com> Revert 131347. It asserts if the specialization in within a class template:

template<class U>
struct X1 {
template<class T> void f(T*);
template<> void f(int*) { }
};

Won't be so simple. I need to think more about it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1fa8028d9ff5de64f8b9d55731ca83a2d3423a77 14-May-2011 Francois Pichet <pichet2000@gmail.com> In Microsoft mode, allow template function explicit specialization at class scope.
Necessary to parse MFC and MSVC standard lib code.

Example:
struct X {
template<class T> void f(T) { }
template<> void f(int) { }
}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b188085eccf741a9520ba86f1e6e32d0e0cd3f2 14-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> What I hope to be an implementation of defaulted copy assignment
operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131338 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
7f410191f344dc26aa926de6593fdacaad9fd1a7 14-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> More progress towards defaulted copy assignment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131337 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
30de05c228d5d38dbfdeeeb598cb960646bf998a 14-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Start implementing defaulted copy assignment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131336 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d01d2b2de449d68e6c44d99a12c0c1fc53222113 14-May-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r131335 at Sat. 14th May 2011.
c1b5fa41f09512c74030b9a2a0d1564535e22a76 13-May-2011 Peter Collingbourne <peter@pcc.me.uk> Introduce __has_extension macro

__has_extension is a function-like macro which takes the same set
of feature identifiers as __has_feature. It evaluates to 1 if the
feature is supported by Clang in the current language (either as a
language extension or a standard language feature) or 0 if not.

At the same time, add support for the C1X feature identifiers
c_generic_selections (renamed from generic_selections) and
c_static_assert, and document them.

Patch by myself and Jean-Daniel Dupas.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ex/Preprocessor.h
600d57ff204fb8167134aa4a4b9a3f74d5113a50 13-May-2011 Bill Wendling <isanbard@gmail.com> Remove the 'unaligned load' builtins now that they're no longer used in the *mmintrin.h files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
819e9bfe398bd556f43ca1f0c24d1b3fa21f41ef 13-May-2011 Fariborz Jahanian <fjahanian@apple.com> refactor CheckForwardProtocolDeclarationForCircularDependency returns
'true' on detecting protocol cycles. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131297 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
49634cf3b9b0c3da2aedc3bdefbf331bce167239 13-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Defaulting copy constructors now works reasonably well.

One more special member to go

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
8cad3046be06ea73ff8892d947697a21d7a440d3 13-May-2011 Peter Collingbourne <peter@pcc.me.uk> Refactoring of constant expression evaluator

This introduces a generic base class for the expression evaluator
classes, which handles a few common expression types which were
previously handled separately in each class. Also, the expression
evaluator now uses ConstStmtVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
7999991060b136db49eb9d6b34595383de56278c 13-May-2011 Peter Collingbourne <peter@pcc.me.uk> Add a ConstStmtVisitor class

ConstStmtVisitor is a constness-preserving variant of StmtVisitor.
ConstStmtVisitor and StmtVisitor share an implementation using a common
base class, StmtVisitorBase, which uses a template template parameter
to build pointer types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
2bb110125e0e5adb7c1c65d12adfa34151ca1c47 13-May-2011 Douglas Gregor <dgregor@apple.com> When determining whether we can make a declaration into a global
constant, also consider whether it's a class type that has any mutable
fields. If so, it can't be a global constant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131276 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
feb375d31b7e9108b04a9f55b721d5e0c793a558 13-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement the __is_trivially_copyable type trait

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
2be7e90b81509204b99b7bbf9753ad17b894a12a 13-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement defaulting of destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131260 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
cb45a0f42964ab5fa1474b25abcc1ae3a8bd0ab8 13-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Hrm

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
5762c0bec6b73a7f6360a71b94b07b7ba0e4b5e8 13-May-2011 Nick Lewycky <nicholas@mxc.ca> Add a method to query whether or not a class has a default constructor declared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
96b69a7305e20c98f1a3e2e7cd52e2d6c5d53835 13-May-2011 Fariborz Jahanian <fjahanian@apple.com> After issuing diagnostics on circular protocol list,
don't build circular AST in protocol's protocol list
when user code has introduced it. Indexer and other
clients may crash. // rdar://9221614


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131254 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0c9643008e5a35cac76cf3419b3308dcad97e53e 12-May-2011 Bill Wendling <isanbard@gmail.com> LLVM doesn't always optimize away the four loads from this:

(__m128){ p[0], p[1], p[2], p[3] }

which produces really bad code. This could be done in instcombine, but it's
probably better to do it in the front-end instead.
<rdar://problem/9424836>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
e4246a633b13197634225971b25df0cbdcec0c5d 12-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Properly parse the 'default' and 'delete' keywords.

They are actually grammatically considered definitions and parsed
accordingly.

This fixes the outstanding bugs regarding defaulting functions after
their declarations.

We now really nicely diagnose the following construct (try it!)

int foo() = delete, bar;

Still todo: Defaulted functions other than default constructors
Test cases (including for the above construct)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131228 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
ca46d131aa40ae953d719b096cb951b385787445 12-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement deletion of explicitly defaulted default constructors.

We still don't parse out-of-line defaults correctly, which is needed to
get the full effect out of this patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cf41cdd14d0b0be75bf2da4559ad5f48cc8dc33e 12-May-2011 Ted Kremenek <kremenek@apple.com> Place "conflicting distributed object modifiers..." warnings under a -W flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131206 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cdee3fee8ca4df7fb9179f29cc3ba96ac4fd0f95 12-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement implicit deletion of default constructors.

Yes, I'm aware that the diagnostics are awful.

Tests to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
6a24747beed797b2f1184c66ca45beb4db20eb08 11-May-2011 Francois Pichet <pichet2000@gmail.com> In Microsoft mode, allow pure specifier (=0) on inline functions declared at class scope.
This removes 2 errors when parsing MFC code with clang

Example:
class A {
virtual void f() = 0 { }
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
44054452c416a622b8f19a6d157a0affc05b9aa8 10-May-2011 Douglas Gregor <dgregor@apple.com> Tweak the diagnostics for the C++0x extensions to friend types to note
that they are C++0x extensions, and put them in the appropriate
group. We already support most of the semantics. Addresses
<rdar://problem/9407525>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f961ea5716867b5e426fb2136edd6d1f04c3a7ca 10-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Re-do R131114 without breaking code.

I've edited one diagnostic which would print "copy constructor" for copy
constructors and "constructor" for any other constructor. If anyone is
extremely enamored with this, it can be reinstated with a simple boolean
flag rather than calling getSpecialMember, which is inappropriate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
c840649ed5acccf68e1bc5a9d22f2ea017074586 10-May-2011 Douglas Gregor <dgregor@apple.com> Reimplement Sema::MatchTemplateParametersToScopeSpecifier() based on
the semantic context referenced by the nested-name-specifier rather
than the syntactic form of the nested-name-specifier. The previous
incarnation was based on my complete misunderstanding of C++
[temp.expl.spec]. The latest C++0x working draft clarifies the
requirements here, and this rewrite is intended to follow that.

Along the way, improve source location information in the
diagnostics. For example, if we report that a specific type needs or
doesn't need a 'template<>' header, we dig out that type in the
nested-name-specifier and highlight its range.

Fixes: PR5907, PR9421, PR8277, PR8708, PR9482, PR9668, PR9877, and
<rdar://problem/9135379>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131138 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
680404e0d91ac67c91097af6c62bc92f1fba5965 10-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 131114. This fixes PR9884.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131126 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
001cad932380419c6fbfecbeec63e0579f5ecbf3 10-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Further implement defaulting constructors.

Focus is on default constructors for the time being. Currently the
exception specification and prototype are processed correctly. Codegen
might work but in all likelihood doesn't.

Note that due to an error, out-of-line defaulting of member functions is
currently impossible. It will continue to that until I muster up the
courage to admit that I secretly pray to epimetheus and that I need to
rework the way default gets from Parse -> Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
a780da70f74ab09ed1f91c1e992abf850e5268ea 10-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> The last of the trivial constructor changes, make CXXSpecialMember
reflect our new, more accurate AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131114 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7604f64a865bdba86c05cab76bcd47fd10372eb8 10-May-2011 Douglas Gregor <dgregor@apple.com> Ignore const/volatile/restrict qualifiers on anonymous structs and
unions. Fixes PR8326.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131109 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
37b8c9ee7cf2b4d5ce3ccd3be1fcadd18a783a57 09-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Clean up trivial default constructors now.

hasTrivialDefaultConstructor() really really means it now.

Also implement a fun standards bug regarding aggregates. Doug, if you'd
like, I can un-implement that bug if you think it is truly a defect.

The bug is that non-special-member constructors are never considered
user-provided, so the following is an aggregate:

struct foo {
foo(int);
};

It's kind of bad, but the solution isn't obvious - should

struct foo {
foo (int) = delete;
};

be an aggregate or not?

Lastly, add a missing initialization to FunctionDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
023df37c27ee8035664fb62f206ca58f4e2a169d 09-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Rename "hasTrivialConstructor" to "hasTrivialDefaultConstructor" and
modify the semantics slightly to accomodate default constructors (I
hope).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/TypeTraits.h
76934c703e53f676b96e4127663b4adb0285ea4a 08-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Restore an accidentally-deleted word.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
377e1bd6853118c5b1718503569e5179c40f09b7 08-May-2011 Douglas Gregor <dgregor@apple.com> Relax the conversion rules for Objective-C GC qualifiers a
bit by allowing __weak and __strong to be added/dropped as part of
implicit conversions (qualification conversions in C++). A little
history: GCC lets one add/remove/change GC qualifiers just about
anywhere, implicitly. Clang did roughly the same before, but we
recently normalized the semantics of qualifiers across the board to
get a semantics that we could reason about (yay). Unfortunately, this
tightened the screws a bit too much for GC qualifiers, where it's
common to add/remove these qualifiers at will.

Overall, we're still in better shape than we were before: we don't
permit directly changing the GC qualifier (e.g., __weak -> __strong),
so type safety is improved. More importantly, we're internally
consistent in our handling of qualifiers, and the logic that allows
adding/removing GC qualifiers (but not adding/removing address
spaces!) only touches two obvious places.

Fixes <rdar://problem/9402499>.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131065 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f986038beed360c031de8654cfba43a5d3184605 07-May-2011 Francois Pichet <pichet2000@gmail.com> Add support for _if_exists and __if_not_exists at namespace/global scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131050 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
52bbe7a1133c3cb57e9246f1b96c12940ea3821a 06-May-2011 Fariborz Jahanian <fjahanian@apple.com> Establish a new alignment for an ms_struct bitfield following
a non-bitfield if size of their types differ.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
31d375f056447d4e2418275d4913661d3bfedb3e 06-May-2011 Douglas Gregor <dgregor@apple.com> Keep track of the file ID corresponding to the original file used to
build a precompiled header. Use this information to eliminate the call
to SourceManager::getLocation() while loading a precompiled preamble,
since SourceManager::getLocation() itself causes unwanted
deserialization.

Fixed <rdar://problem/9399352>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131021 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
bb85f8edca8103aa10e4b2f4a6fcc3a251b0ea03 06-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Per Richard's suggestion, rename DefLoc to DefaultLoc where it appears.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131018 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
26dc3e08da33594bb2fe5466ce48b4544a626cf0 06-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fix diagnostics to start with a lower case letter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
1e862693c63067ae467b0b3884c44f753cd6e821 06-May-2011 Francois Pichet <pichet2000@gmail.com> Add support for Microsoft __if_exists and __if_not_exists construct inside function definition.
Allow to include or exclude code depending on if a symbol exists or not. Just like a #ifdef but for C/C++ symbols.

More doc: http://msdn.microsoft.com/en-us/library/x7wy9xh3(v=VS.100).aspx

Support at class and namespace scopes will be added later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
10620eb5164e31208fcbf0437cd79ae535ed0559 06-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Modify some deleted function methods to better reflect reality:

- New isDefined() function checks for deletedness
- isThisDeclarationADefinition checks for deletedness
- New doesThisDeclarationHaveABody() does what
isThisDeclarationADefinition() used to do
- The IsDeleted bit is not propagated across redeclarations
- isDeleted() now checks the canoncial declaration
- New isDeletedAsWritten() does what it says on the tin.
- isUserProvided() now correct (thanks Richard!)

This fixes the bug that we weren't catching

void foo() = delete;
void foo() {}

as being a redefinition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
5f3827cabd526d0dd5f291d46c310103cebe7a44 06-May-2011 Eli Friedman <eli.friedman@gmail.com> Fix a couple of comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dca8ee8b7bc86076916a3a80f553f7a4e98c14af 06-May-2011 Douglas Gregor <dgregor@apple.com> Introduce a new libclang parsing flag,
CXTranslationUnit_NestedMacroInstantiations, which indicates whether
we want to see "nested" macro instantiations (e.g., those that occur
inside other macro instantiations) within the detailed preprocessing
record. Many clients (e.g., those that only care about visible tokens)
don't care about this information, and in code that uses preprocessor
metaprogramming, this information can have a very high cost.

Addresses <rdar://problem/9389320>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130990 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
2174d4c11c1544a6729637790637b765e35b67a3 06-May-2011 Anders Carlsson <andersca@mac.com> Warn when trying to call a pure virtual member function in a class from the class constructor/destructor. Fixes PR7966.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130982 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fe2695eec167b28578825576863228f86b392f24 06-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Do defaulted constructors properly.

Explictly defaultedness is correctly reflected on the AST, but there are
no changes to how that affects the definition of functions or much else
really.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
ema/Sema.h
5f802e51406664ca9b6e0d57fc7ce37ea97a1c65 06-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Revert r130912 in order to approach defaulted functions from the other
direction and not introduce things in the wrong place three different
times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
ema/Sema.h
3e4c6c4c79a03f5cb0c4671d7c282d623c6dc35e 05-May-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement support for C++0x alias templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/RecursiveASTVisitor.h
ST/Type.h
asic/DeclNodes.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
4b81cde48b8b56c219e8d665884f5f33139b5eca 05-May-2011 Douglas Gregor <dgregor@apple.com> When providing code completions for an Objective-C property access,
also include methods with zero-argument selectors. Implements
<rdar://problem/9048332>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130922 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e59abb56ce0e1c206fb80bd945a0c358b0abe1ef 05-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a Diagnostic::Report function that accepts and emits a StoredDiagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
38165ae49d8af7dcc135858f347fdbce295093fd 05-May-2011 Ted Kremenek <kremenek@apple.com> Place "incompatible pointer types assigning..." warning under a flag, allowing it to be surgically mapped to an error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130916 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9be6e7ce5788e50c62d40c59b0bbc2ea423683f7 05-May-2011 Ted Kremenek <kremenek@apple.com> Add Checker callback for running a checker at the end of processing an entire TranslationUnit. Patch by Lei Zhang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130913 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
ad7ec12ef2edbadb85a3754f0395ef2f06d4256c 05-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement some framework for defaulted constructors.

There's some unused stuff for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
ema/Sema.h
3dc05418538c719fea48b906bfa4febe5296e126 05-May-2011 Nick Lewycky <nicholas@mxc.ca> Preserve the full name of the file, so that '-c -o foo.pic.o' produces
foo.pic.gcno instead of foo.gcno.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130899 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
c1598700010cea9364a58a65e967b0b56361b6aa 05-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Change cycle detection to be based off of a warning flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.h
river/CC1Options.td
ebcbe1d3dc7d4f0c1f540a632fa0684dd0a857d5 05-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> there i fixed it

Increase robustness of the delegating constructor cycle detection
mechanism. No more infinite loops on invalid or logic errors leading to
false results. Ensure that this is maintained correctly accross
serialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130887 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
c9366ba8fff6461a5b7f0fd2626d1bce3e98e629 05-May-2011 Matt Beaumont-Gay <matthewbg@google.com> Implement Sema::isExprCallable.

We can use this to produce nice diagnostics (and try to fixit-and-recover) in
various cases where we might see "MyFunction" instead of "MyFunction()". The
changes in SemaExpr are an example of how to use isExprCallable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130878 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5ea4f44e34449a78d6b38aa47c14b527839d7aac 04-May-2011 Nick Lewycky <nicholas@mxc.ca> Record where the GCOV data files should be placed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130866 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
9b3acaa32548d0ce78b9c39a3911397f6738a47c 04-May-2011 Fariborz Jahanian <fjahanian@apple.com> More ms_struct bitfield stuff:
Adjacent bit fields are packed into the same 1-, 2-, or
4-byte allocation unit if the integral types are the same
size. // rdar://8823265.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
69d891d45a29fdd0074ff3eb158694e95fef57e1 04-May-2011 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev:
Like in r126648, provide (empty) default implementation for pure virtual getMemoryBufferSizes(). Not all use cases have meaningful implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130838 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
fe57eef44cc80e5bb51e4f484835be08b8d84256 04-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement a better version of delegating constructor cycle detection.

This is more efficient as it's all done at once at the end of the TU.
This could still get expensive, so a flag is provided to disable it. As
an added bonus, the diagnostics will now print out a cycle.

The PCH test is XFAILed because we currently can't deal with a note
emitted in the header and I, being tired, see no other way to verify the
serialization of delegating constructors. We should probably address
this problem /somehow/ but no good solution comes to mind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130836 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
asic/LangOptions.h
river/CC1Options.td
ema/Sema.h
5e1db6a434d0e3fe0fbde0bca2ec44552818fb22 04-May-2011 Ted Kremenek <kremenek@apple.com> Enhance clang_getCXTUResourceUsage() to return the amount of memory used by the Preprocessor's bump allocator as well as those from the PreprocessingRecord.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130823 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
156b640c67300f2b70eb11102aa393a610798cc6 04-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement serialization of delegating constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130822 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
fa74c2344addf92826c938758fb4dc612a004eb9 04-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Ensure that delegating constructor loop detection uses canonical
declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
dd3e5549e3c11e217078938aacf72f042eea5343 04-May-2011 Douglas Gregor <dgregor@apple.com> Introduce a new libclang API, clang_isFileMultipleIncludeGuarded(),
which determines whether a particular file is actually a header that
is intended to be guarded from multiple inclusions within the same
translation unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130808 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
d808bd2978bd4ac95a92b309b038452b533fd7a0 04-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTUnit::LoadFromCompilerInvocationAction that allows one to create an ASTUnit
from a CompilerInvocation along with an ASTFrontendAction to invoke, and without all the goo
about the precompiled preamble.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130805 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
06bc9eb9908e42696775b395b290827bde468c8b 03-May-2011 Douglas Gregor <dgregor@apple.com> Extend -Wnon-pod-memset to also encompass memcpy() and memmove(),
checking both the source and the destination operands, renaming the
warning group to -Wnon-pod-memaccess and tweaking the diagnostic text
in the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
2a053a33707eba9e642adedb557b1a6aace103b5 03-May-2011 Douglas Gregor <dgregor@apple.com> Separate the -Wnon-pod-memset warnings into two separate warnings:
- a default-on warning for pointers to dynamic classes (= classes with vtables)
- a default-off warning for other non-POD types



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130781 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f4be74ff0273e505d383f89174ef539828424ed 03-May-2011 Chandler Carruth <chandlerc@gmail.com> When parsing a template friend declaration we dropped the template
parameters on the floor in certain cases:
class X {
template <typename T> friend typename A<T>::Foo;
};

This was parsed as a *non* template friend declaration some how, and
received an ExtWarn. Fixing the parser to actually provide the template
parameters to the freestanding declaration parse triggers the code which
specifically looks for such constructs and hard errors on them.

Along the way, this prevents us from trying to instantiate constructs
like the above inside of a outer template. This is important as loosing
the template parameters means we don't have a well formed declaration
and template instantiation will be unable to rebuild the AST. That fixes
a crash in the GCC test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130772 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2bc0e5d955dbee5518afa59e1c66025a78b097f1 03-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add a few ARM coprocessor builtins. The llvm side of the commit contains the intrinsics and matching patterns.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
1dd986dff9ddfbec687975700770bb377988e9ed 03-May-2011 Richard Trieu <rtrieu@google.com> Added an assert to IntegerLiteral to ensure that the integer type passed in has the same size as the APInt passed in. Also, updated the comments around IntegerLiteral.

Changed the integer type that range-based for-loops used. Switched to pointer difference type, which satisfies the new assert in IntegerLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1a584022c86bd0778cf7ad1fbea08c78869cf216 02-May-2011 Eric Christopher <echristo@apple.com> Add the -mstackrealign option which just communicates the need to
force align the stack to the backend.

Fixes rdar://9289631


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130725 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
35bdbf40624beba3fc00cb72ab444659939c1a6b 02-May-2011 Ted Kremenek <kremenek@apple.com> Augment retain/release checker to not warn about tracked objects passed as arguments to C++ constructors. This is a stop-gap measure for Objective-C++ code that uses smart pointers to manage reference counts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130711 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
b2dba4bc0eee144baa60e36599a0887496d1295e 02-May-2011 Chad Rosier <mcrosier@apple.com> When using -std= flag added check to make sure language and standard are compatable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130710 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
rontend/LangStandards.def
f4bbbf0aaf741cc7d014e2cf059670a6756f8cbd 02-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a warning for when reinterpret_cast leads to undefined behavior, patch by Richard Trieu!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130703 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
340fa242130c2d8d74c83edca0952e771aebe0e6 02-May-2011 Fariborz Jahanian <fjahanian@apple.com> More rule enforcement of zero bitfields for ms_struct.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7f00f842aaf628c1b02c471a233184024511fedd 02-May-2011 Chandler Carruth <chandlerc@gmail.com> I updated this constructor's interface, and didn't have to fix any
callers. Shockingly enough, *there are none*!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130677 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7079886ab5a9df450ed773419f0ae81f8404e2aa 02-May-2011 John McCall <rjmccall@apple.com> Revise the representation of parameter scope data so that the
scope depth overlaps with the ObjCDeclQualifier, dropping
memory usage back to previous levels.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130671 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3aa8140bde5b9bedf13e46ec0a668daa54814196 02-May-2011 Chandler Carruth <chandlerc@gmail.com> Add an optional field attached to a DeclRefExpr which points back to the
Decl actually found via name lookup & overload resolution when that Decl
is different from the ValueDecl which is actually referenced by the
expression.

This can be used by AST consumers to correctly attribute references to
the spelling location of a using declaration, and otherwise gain insight
into the name resolution performed by Clang.

The public interface to DRE is kept as narrow as possible: we provide
a getFoundDecl() which always returns a NamedDecl, either the ValueDecl
referenced or the new, more precise NamedDecl if present. This way AST
clients can code against getFoundDecl without know when exactly the AST
has a split representation.

For an example of the data this provides consider:
% cat x.cc
namespace N1 {
struct S {};
void f(const S&);
}
void test(N1::S s) {
f(s);
using N1::f;
f(s);
}

% ./bin/clang -fsyntax-only -Xclang -ast-dump x.cc
[...]
void test(N1::S s) (CompoundStmt 0x5b02010 <x.cc:5:20, line:9:1>
(CallExpr 0x5b01df0 <line:6:3, col:6> 'void'
(ImplicitCastExpr 0x5b01dd8 <col:3> 'void (*)(const struct N1::S &)' <FunctionToPointerDecay>
(DeclRefExpr 0x5b01d80 <col:3> 'void (const struct N1::S &)' lvalue Function 0x5b01a20 'f' 'void (const struct N1::S &)'))
(ImplicitCastExpr 0x5b01e20 <col:5> 'const struct N1::S' lvalue <NoOp>
(DeclRefExpr 0x5b01d58 <col:5> 'N1::S':'struct N1::S' lvalue ParmVar 0x5b01b60 's' 'N1::S':'struct N1::S')))
(DeclStmt 0x5b01ee0 <line:7:3, col:14>
0x5b01e40 "UsingN1::;")
(CallExpr 0x5b01fc8 <line:8:3, col:6> 'void'
(ImplicitCastExpr 0x5b01fb0 <col:3> 'void (*)(const struct N1::S &)' <FunctionToPointerDecay>
(DeclRefExpr 0x5b01f80 <col:3> 'void (const struct N1::S &)' lvalue Function 0x5b01a20 'f' 'void (const struct N1::S &)' (UsingShadow 0x5b01ea0 'f')))
(ImplicitCastExpr 0x5b01ff8 <col:5> 'const struct N1::S' lvalue <NoOp>
(DeclRefExpr 0x5b01f58 <col:5> 'N1::S':'struct N1::S' lvalue ParmVar 0x5b01b60 's' 'N1::S':'struct N1::S'))))

Now we can tell that the second call is 'using' (no pun intended) the using
declaration, and *which* using declaration it sees. Without this, we can
mistake calls that go through using declarations for ADL calls, and have no way
to attribute names looked up with using declarations to the appropriate
UsingDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
fb44de956f27875def889482b5393475060392af 02-May-2011 John McCall <rjmccall@apple.com> Store a parameter index and function prototype depth in every
parameter node and use this to correctly mangle parameter
references in function template signatures.

A follow-up patch will improve the storage usage of these
fields; here I've just done the lazy thing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130669 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Scope.h
ema/Sema.h
6857c3e12c86fd0271eb46baab5b18756a94f4cb 02-May-2011 Chandler Carruth <chandlerc@gmail.com> Remove the NameQualifier struct, which was just a wrapper around
NestedNameSpecifierLoc. It predates when we had such an object.

Reference the NNSLoc directly in DREs, and embed it directly into the
MemberNameQualifier struct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130668 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7e740bd36772aae16b5cc5e605998ccc5eaf26db 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Several cosmetic changes, no functionality changed.

Mostly trailing whitespace so that me editor nuking it doesn't muddy the
waters of subsequent commits that do change functionality.

Also nukes a stray statement that was harmless but redundant that
I introduced in r130666.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cb66cff8fdf641f57f85dedb515a5f3240e3a9bb 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Move the state bits in DeclRefExpr out of the pointer union and into
a bitfield in the base class. DREs weren't using any bits here past the
normal Expr bits, so we have plenty of room. This makes the common case
of getting a Decl out of a DRE no longer need to do any masking etc.

Also, while here, clean up code to use the accessor methods rather than
directly poking these bits, and provide a nice comment for DREs that
includes the information previously attached to the bits going into the
pointer union.

No functionality changed here, but DREs should be a tad faster now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
5d65e34b08b3e57a4da834195757d0d15baaffd0 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Switch getAs to castAs (didn't know about this before!) and simplify
some code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
960d13dde337a59dacc9dc3936c26d4aa8478986 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Based on the new information in the AST provided by r130628, write
3 lines of code and improve a bunch of information in the libclang view
of the code.

Updates the two tests that exercise this with the new data, checking
that each new source location actually points back to the declared
template parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130656 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
aaf147be3cc7403d8f7889d363421bb291ef23f2 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Move several more type traits' implementations into the AST. A few were
already present in the AST, and I added the ones that weren't.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130655 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d064c70bc63ad742d11625e485c1dc1631f6e303 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Remove more dead code for emitting diagnostics. The callers of these
functions already precluded dependent types from reaching them.

Also change one of the callers to not error when a trait is applied to
a dependent type. This is a perfectly reasonable pattern, and both Unary
and Binary type traits already support dependent types (by populating
the AST with a nonce value).

Remove the actual diagnostic, since these aren't errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
336f51e463340dc7b159bc38517ac4a68081302d 01-May-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Improve traversing of BlockExprs in RecursiveASTVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
98fa94d2564057555c4a12e8737b8371700cf6e4 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Remove the type traits UTT_IsLvalueExpr and UTT_IsRvalueExpr.

As might be surmised from their names, these aren't type traits, they're
expression traits. Amazingly enough, they're expression traits that we
have, and fully implement. These "type" traits are even parsed from the
same tokens as the expression traits. Luckily, the parser only tried the
expression trait parsing for these tokens, so this was all just a pile
of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TypeTraits.h
059ce0d92eb5a7da900ae735dc0a2ea3d64f4b0b 01-May-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fully implement delegating constructors!

As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.

Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
ema/Initialization.h
ema/Sema.h
09e2c524a18435211cfbc2fb355f91e1ac43ea89 01-May-2011 John McCall <rjmccall@apple.com> Improve the documentation for the two ObjCDeclQualifiers so that I
stop considering whether I can compress them. :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ema/DeclSpec.h
f1e4fbf3112f33ec5b7bc5c57ec148445190d0a8 01-May-2011 John McCall <rjmccall@apple.com> Compress some bits. Only matters for MSVC, or if we ever
devirtualize Decl (because bits can't get laid out in base
classes if the base is POD).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b7efff4bae117604f442bb6859c844f90b15f3ff 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Switch the interface name for both TemplateTypeParmType and
SubstTemplateTypeParmType to be 'getIdentifier' instead of 'getName' as
it returns an identifier. This makes them more consistent with the
NamedDecl interface.

Also, switch back to using this interface to acquire the indentifier in
TypePrinter.cpp. I missed this in r130628.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
4fb86f8c4585e53c21c847ad3de9e3b2de123cd9 01-May-2011 Chandler Carruth <chandlerc@gmail.com> Re-applies the patch first applied way back in r106099, with
accompanying fixes to make it work today.

The core of this patch is to provide a link from a TemplateTypeParmType
back to the TemplateTypeParmDecl node which declared it. This in turn
provides much more precise information about the type, where it came
from, and how it functions for AST consumers.

To make the patch work almost a year after its first attempt, it needed
serialization support, and it now retains the old getName() interface.
Finally, it requires us to not attempt to instantiate the type in an
unsupported friend decl -- specifically those coming from template
friend decls but which refer to a specific type through a dependent
name.

A cleaner representation of the last item would be to build
FriendTemplateDecl nodes for these, storing their template parameters
etc, and to perform proper instantation of them like any other template
declaration. They can still be flagged as unsupported for the purpose of
access checking, etc.

This passed an asserts-enabled bootstrap for me, and the reduced test
case mentioned in the original review thread no longer causes issues,
likely fixed at somewhere amidst the 24k revisions that have elapsed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclTemplate.h
ST/Type.h
f24a151d645abc89f94aa58ad59f3131502041b1 30-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Implement -fno-dwarf2-cfi-asm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130616 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
769d0cc72b1831785596d0e76f327bdb887823be 30-Apr-2011 Douglas Gregor <dgregor@apple.com> When comparing parameters of reference-to-qualified type during
partial ordering of function templates, use a simple superset
relationship rather than the convertibility-implying
isMoreQualifiedThan/compatibilyIncludes relationship. Fixes partial
ordering between references and address-space-qualified references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ec997dc66627957bcdcd3db7906a68c1e14a279c 30-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Rename the last '[hH]asStandardLayout' entites to '[iI]sStandardLayout'
based on Doug's preferences when we discussed this in IRC. This brings
the wording more in line with the standard.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
636a617cc6021a4366380b3ce673f4472f3d99db 30-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Hoist all of the type-specific trait logic for __is_standard_layout into
a Type method isStandardLayoutType, to keep our user API matching the
type trait builtins as closely as possible. Also, implement it in terms
of other Type APIs rather than in terms of other type traits. This
models the implementation on that of isLiteralType and isTrivialType.
There remain some common problems with these traits still, so this is
a bit of a WIP. However, we can now fix all of these traits at the same
time and in a consistent manner.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a8225449421e8c1e996a7c48300521028946482a 30-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Completely re-implement the core logic behind the __is_standard_layout
type trait. The previous implementation suffered from several problems:

1) It implemented all of the logic in RecordType by walking over every
base and field in a CXXRecordDecl and validating the constraints of
the standard. This made for very straightforward code, but is
extremely inefficient. It also is conceptually wrong, the logic tied
to the C++ definition of standard-layout classes should be in
CXXRecordDecl, not RecordType.
2) To address the performance problems with #1, a cache bit was added to
CXXRecordDecl, and at the completion of every C++ class, the
RecordType was queried to determine if it was a standard layout
class, and that state was cached. Two things went very very wrong
with this. First, the caching version of the query *was never
called*. Even within the recursive steps of the walk over all fields
and bases the caching variant was not called, making each query
a full *recursive* walk. Second, despite the cache not being used, it
was computed for every class declared, even when the trait was never
used in the program. This probably significantly regressed compile
time performance for edge-case files.
3) An ASTContext was required merely to query the type trait because
querying it performed the actual computations.
4) The caching bit wasn't managed correctly (uninitialized).

The new implementation follows the system for all the other traits on
C++ classes by encoding all the state needed in the definition data and
building up the trait incrementally as each base and member are added to
the definition of the class.

The idiosyncracies of the specification of standard-layout classes
requires more state than I would like; currently 5 bits. I could
eliminate one of the bits easily at the expense of both clarity and
resilience of the code. I might be able to eliminate one of the other
bits by computing its state in terms of other state bits in the
definition. I've already done that in one place where there was a fairly
simple way to achieve it.

It's possible some of the bits could be moved out of the definition data
and into some other structure which isn't serialized if the serialized
bloat is a problem. That would preclude serialization of a partial class
declaration, but that's likely already precluded.

Comments on any of these issues welcome.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
3fd823b0625eba87153fe592a0fd12e088db3b36 30-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Reject invalid arch combinations with
-mios-simulator-version-min.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130593 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
9d609f2b0dd604879f8b284ded1f14ba300e8070 30-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Sketch initial support for a -mios-simulator-version-min= flag
and associated deployment target environment variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
654f6b2b53af2c950c62ef0161fa021648accbcb 30-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a couple of assertions to make sure the bitfields can fit the value assigned to them. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130573 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
a0fa203f04235cb6d05eeb8cea3392a01aa7571b 30-Apr-2011 Bob Wilson <bob.wilson@apple.com> Add -Oz option and use it to set the inline threshold to 25.
Radar 9333566. Patch by Chad Rosier!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130554 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
202e123d0d680af6d1754b22246ea63fb3604931 29-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Disable -Wnon-pod-memset for now while I try to reduce the false
positives still further.

The plan is to:

1) Create a more targeted warning for memset of memory pointing at
a type with virtual methods or bases where a vptr would be
overwritten.
2) Consider turning the above warning back on by default.
3) Evaluate whether any false positives in the existing warning can be
detected and white listed in the warning implementation.
4) If #3 lowers the noise floor enough, enable the full warning in -Wall
or -Wextra.

Comments or suggestions welcome. Even more welcome are specific test
cases which trigger the warning and shouldn't.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130538 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0a241a1755b5e4d3adb0d828dff42f96a5a8bd95 29-Apr-2011 Ted Kremenek <kremenek@apple.com> Change -Wparentheses to not imply -Widiomatic-parentheses. Users rarely want to see these warnings, and often explicitly pass -Wparentheses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130535 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
43fa33b4bedc28d2faa17d678ad1f40eb42817a1 29-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Relax the non-POD memset warning to use the less restrictive C++11
definition of POD. Specifically, this allows certain non-aggregate
types due to their data members being private.

The representation of C++11 POD testing is pretty gross. Any suggestions
for improvements there are welcome. Especially the name
'isCXX11PODType()' seems truly unfortunate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130492 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f79a71908d6f28cb2bc0c081d9a801ed14d61d82 29-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Add a decl update when a static data member of a class template is instantiated in a different PCH than its containing class. Otherwise we get double definition errors. Fixes a Boost.MPL problem that affects Boost.Accumulators and probably a lot more of Boost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
0acc4ea40d2a75fbaf385e095a252f59078c7b94 29-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Use std::vector for ASTReader's ASTBuffers, instead of std::deque.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130487 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
e9b5f3d4acfc2ad6e8b65a4072464e997dea9ed3 29-Apr-2011 Ted Kremenek <kremenek@apple.com> Enhance clang_getCXTUResourceUsage() to report the sizes of the memory buffers used by PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130460 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
erialization/ASTReader.h
erialization/ChainedIncludesSource.h
f61b831d7f6a15676b07647f507de80324cb7056 28-Apr-2011 Ted Kremenek <kremenek@apple.com> Enhance clang_getCXTUResourceUsage() to report how much memory is used by SourceManager's memory buffers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
25aaf28c5bec71d5d005df67ee78b908ba5940f4 28-Apr-2011 Manuel Klimek <klimek@google.com> Fixes ArrayTypeTraitExpr (-Wnon-virtual-dtor).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
3cda937d4c015ff6070f1117024621a452cfaddd 28-Apr-2011 Ted Kremenek <kremenek@apple.com> Add comment to CFGBlock suggested by Jiri Slaby.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130387 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
ba29bd25515fbd99e98ba0fedb9d93617b27609e 28-Apr-2011 Ted Kremenek <kremenek@apple.com> Enhance clang_getCXTUResourceUsage() to report the amount of memory used by ASTContext's side tables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
457aaf0692dfb2d9638f383334b81027f637f20c 28-Apr-2011 Ted Kremenek <kremenek@apple.com> Enhance clang_getCXTUResourceUsage() to report the amount of memory used by SourceManager's content cache allocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130380 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
cf5664114eb75c6a5fef2bed1c0f0d0fb19debc9 28-Apr-2011 John Wiegley <johnw@boostpro.com> A few corrections to type traits that missed the last checkin

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
338d7f7362d18fa9c39c6bb5282b4e20574a9309 28-Apr-2011 Francois Pichet <pichet2000@gmail.com> Upgrade Microsoft's __int8, __int16, __int32 and __int64 types from builtin defines to real types.

Otherwise statements like:
__int64 var = __int64(0);

would be expanded to:
long long var = long long(0);

and fail to compile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
28bbe4b8acc338476fe0825769b41fb32b423c72 28-Apr-2011 John Wiegley <johnw@boostpro.com> Parsing/AST support for Structured Exception Handling

Patch authored by Sohail Somani.

Provide parsing and AST support for Windows structured exception handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/IdentifierTable.h
asic/StmtNodes.td
ex/Preprocessor.h
arse/Parser.h
ema/Sema.h
61d0b6baf47cf411f6c0f6ddb4acffcfeec724f1 28-Apr-2011 Douglas Gregor <dgregor@apple.com> More cleanup of template argument deduction and its handling of
non-CVR qualifiers. We can now properly match address-space--qualified
references during template argument deduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
21ff2e516b0e0bc8c1dbf965cb3d44bac3c64330 28-Apr-2011 John Wiegley <johnw@boostpro.com> Implementation of Embarcadero array type traits

Patch authored by John Wiegley.

These are array type traits used for parsing code that employs certain
features of the Embarcadero C++ compiler: __array_rank(T) and
__array_extent(T, Dim).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130351 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
asic/TokenKinds.def
asic/TypeTraits.h
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
20c0da7787c9a7d2529e42a4a91d777778595d74 28-Apr-2011 John Wiegley <johnw@boostpro.com> t/clang/type-traits

Patch authored by John Wiegley.

These type traits are used for parsing code that employs certain features of
the Embarcadero C++ compiler. Several of these constructs are also desired by
libc++, according to its project pages (such as __is_standard_layout).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130342 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
26517e4ffe7c2c366496feb02370ba24ab5ae8f5 28-Apr-2011 Ted Kremenek <kremenek@apple.com> Remove unused method CFGBlock::hasBinaryBranchTerminator().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130336 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
14d56ef43ff4921c6749f7340212fbb743fdbb9b 27-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Some refactoring of my ms_struct patch.
// rdar://8823265 related.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130311 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9a05fa97df4d5e64f740848a7759ecae5e1ed162 27-Apr-2011 Manuel Klimek <klimek@google.com> This is the next step in building the standalone tools infrastructure:
This patch simplifies writing of standalone Clang tools. As an
example, we add clang-check, a tool that runs a syntax only frontend
action over a .cc file. When you integrate this into your favorite
editor, you get much faster feedback on your compilation errors, thus
reducing your feedback cycle especially when writing new code.

The tool depends on integration of an outstanding patch to CMake to
work which allows you to always have a current compile command
database in your cmake output directory when you set
CMAKE_EXPORT_COMPILE_COMMANDS.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130306 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
7ccc95bceebb2d1c8fbe277c9e33bde7dc1ccbb1 27-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Add a warning (-Wnon-pod-memset) for calls to memset() with
a destination pointer that points to a non-POD type. This can flag such
horrible bugs as overwriting vptrs when a previously POD structure is
suddenly given a virtual method, or creating objects that crash on
practically any use by zero-ing out a member when its changed from
a const char* to a std::string, etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130299 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
d46a1125d43bcfd47fbd1206ebd1226863549390 27-Apr-2011 John McCall <rjmccall@apple.com> Diagnose attempts to implicitly instantiate a template before it is
fully defined. Somehow this escaped notice for a very long time.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5ecdd78408a1c6f4be506d94f776642570d27336 27-Apr-2011 Douglas Gregor <dgregor@apple.com> Introduce a new parser annotation token for primary expressions. When
ClassifyName() builds a primary expression, generate one of these
annotation tokens rather than jumping into the parser.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
d0719b183ae331e0e8731c486f21392e0eb288c3 27-Apr-2011 Douglas Gregor <dgregor@apple.com> Clean out some cruft I introduced when adding Sema::ClassifyName()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130295 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d9d75e57dfa22366c0379c92beac1db82db34e9a 27-Apr-2011 Douglas Gregor <dgregor@apple.com> Simplify the parser's handling of Sema::ClassifyName() for types, by
creating a type-annotation token rather than jumping into the
declaration parsing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130293 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
6b4f567109d76ce1f1de289554e35f2a7bbeff6b 27-Apr-2011 Ted Kremenek <kremenek@apple.com> Allow 'Environment::getSVal()' to allow an optional way for checkers to do a direct lookup to values bound to expressions, without
resulting to lazy logic. This is critical for the OSAtomicChecker that does a simulated load on any arbitrary expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130292 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/GRState.h
0047012d99e9f80e242f9dbbc374049d478ffc6f 27-Apr-2011 Francois Pichet <pichet2000@gmail.com> Add support for Microsoft __interface keyword. An __interface class is basically a normal class containing just pure virtual functions. No urgency to enforce that restriction in clang for now, so make __interface an "class" alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
b7d98d35ea723624345f06e5895ddce2e0388ef0 27-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> If a null statement was preceded by an empty macro keep its instantiation source location
in NullStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ex/Preprocessor.h
ema/Sema.h
028ea4bf0c643e0e2a8fa086c28beb0d5b594ba7 27-Apr-2011 Douglas Gregor <dgregor@apple.com> When computing Objective-C pointer conversions in C++, retain
the qualifiers (e.g., GC qualifiers) on the type we're converting
from, rather than just blindly adopting the qualifiers of the type
we're converting to or dropping qualifiers altogether.

As an added bonus, properly diagnose GC qualifier mismatches to
eliminate a crash in the overload resolution failure diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7412494982c8b50c90961302c3a718633b2c3ab7 26-Apr-2011 Manuel Klimek <klimek@google.com> To be able to replay compilations we need to accurately remodel how
includes get resolved, especially when they are found relatively to
another include file. We also try to get it working for framework
includes, but that part of the code is untested, as I don't have a code
base that uses it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130246 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/PPCallbacks.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
864c041e118155c2b1ce0ba36942a3da5a4a055e 26-Apr-2011 John McCall <rjmccall@apple.com> Make yet another placeholder type, this one marking that an expression is a bound
member function, i.e. something of the form 'x.f' where 'f' is a non-static
member function. Diagnose this in the general case. Some of the new diagnostics
are probably worse than the old ones, but we now get this right much more
universally, and there's certainly room for improvement in the diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130239 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
ema/Sema.h
erialization/ASTBitCodes.h
c1a0a73c1fad684dd23e9aade02c4e00dbaeaee6 26-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Add ms_struct attribute on record typee
(and ignore it for now) - wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
ema/Sema.h
7a3a8148ab21dba3965622b03969bae721d561e2 26-Apr-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang/AST/StmtIterator.h: std::pair should be provided by <utility>. libcxx needs it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130183 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
8d8f2c20f3e21c7516e5d27293f08283913904d1 26-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix a crash when ASTReader emits diagnostic when another one is in flight. Fixes rdar//9334563.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130162 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
62c9258f4a71569a66d805fc7776526a2c76b34e 25-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Recognize gcc's ms_struct pragma (and ignore for now).
This is wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/Sema.h
8d5fcc7e3fc7347b87b6a95b398d5e17faf974e0 25-Apr-2011 Francois Pichet <pichet2000@gmail.com> Add Windows SEH keywords.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130132 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
552622067dc45013d240f73952fece703f5e63bd 25-Apr-2011 John Wiegley <johnw@boostpro.com> t/clang/expr-traits

Patch authored by David Abrahams.

These two expression traits (__is_lvalue_expr, __is_rvalue_expr) are used for
parsing code that employs certain features of the Embarcadero C++ compiler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/ExpressionTraits.h
asic/StmtNodes.td
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
912d372642584b1d91ac75cb5da8e0eb8155c7b1 25-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Missing bit of r130117.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130118 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
74b485a2b36c0ba33a85ba9cb6e36e0e3a1fada1 24-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Set the correct anonymous namespace (must be last reopening), and behave correctly in the presence of the ever-annoying linkage specifications.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
58a2cd8c0d52e710cbcc57a67eac7b51b0b831c4 24-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Synthesizing the definition of an implicit member is an AST modification, so notify any mutation listeners of it. This fixes a crasher in chained PCH, where an implicit destructor in a PCH gets a definition in a chained PCH, which is then lost. However, any further use of the destructor would cause its definition to be regenerated in the final file, hiding the bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTMutationListener.h
ema/Sema.h
erialization/ASTWriter.h
9856c993d5bbe966290ef36de8dc5428a0097710 24-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Give MultiplexConsumer.h a header guard.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130100 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/MultiplexConsumer.h
b5ef3ca808b16aa2ba010251773e820f57190d1a 24-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Fix PathDiagnosticClients.h header guard. (Case error)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130099 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathDiagnosticClients.h
a5d318ad4ad3a110b3abb34f765e69b76f7c0bcd 24-Apr-2011 Francois Pichet <pichet2000@gmail.com> Downgrade unnecessary "typename" from error to warning in Microsoft mode.
This fixes 1 error when parsing MSVC 2008 headers with clang.

Must "return true;" even if it is a warning because the rest of the code path assumes that SS is set to something. The parser will get back on its feet and continue parsing the rest of the declaration correctly so it is not a problem.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
312eadb832cab4497a069409954500d8192b8f0d 24-Apr-2011 Douglas Gregor <dgregor@apple.com> Implement a new identifier-classification scheme where Sema
performs name lookup for an identifier and resolves it to a
type/expression/template/etc. in the same step. This scheme is
intended to improve both performance (by reducing the number of
redundant name lookups for a given identifier token) and error
recovery (by giving Sema a chance to correct type names before the
parser has decided that the identifier isn't a type name). For
example, this allows us to properly typo-correct type names at the
beginning of a statement:

t.c:6:3: error: use of undeclared identifier 'integer'; did you mean
'Integer'?
integer *i = 0;
^~~~~~~
Integer
t.c:1:13: note: 'Integer' declared here
typedef int Integer;
^


Previously, we wouldn't give a Fix-It because the typo correction
occurred after the parser had checked whether "integer" was a type
name (via Sema::getTypeName(), which isn't allowed to typo-correct)
and therefore decided to parse "integer * i = 0" as an expression. By
typo-correcting earlier, we typo-correct to the type name Integer and
parse this as a declaration.

Moreover, in this context, we can also typo-correct identifiers to
keywords, e.g.,

t.c:7:3: error: use of undeclared identifier 'vid'; did you mean
'void'?
vid *p = i;
^~~
void

and recover appropriately.

Note that this is very much a work-in-progress. The new
Sema::ClassifyName is only used for expression-or-declaration
disambiguation in C at the statement level. The next steps will be to
make this work for the same disambiguation in C++ (where
functional-style casts make some trouble), then push it
further into the parser to eliminate more redundant name lookups.

Fixes <rdar://problem/7963833> for C and starts us down the path of
<rdar://problem/8172000>.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130082 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
1501ba306cf9370e409db42991cb636232237b11 24-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put -Wunneeded-internal-declaration under UnusedFunction group so it will be disabled with -Wno-unused-function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130080 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
9b6347cd410be55425f7062d22fd6e4ecb4e1a58 24-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Implement most of the remaining logic in __is_literal type trait. This
should now support all of the C++98 types, and all of the C++0x types
Clang supports.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
3840281126e7d10552c55f6fd8b1ec9483898906 24-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Add support for '__is_literal_type' spelling of the existing
'__is_literal' type trait for GCC compatibility. At least one relased
version if libstdc++ uses this name for the trait despite it not being
documented anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130078 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
4d6e5a22d9481bb83b82d911727540096d171c0b 24-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Begin tracking trivialness of move constructors and move assignment
operators in C++ record declarations.

This patch starts off by updating a bunch of the standard citations to
refer to the draft 0x standard so that the semantics intended for move
varianst is clear. Where necessary these are duplicated so they'll be
available in doxygen.

It adds bit fields to keep track of the state for the move constructs,
and updates all the code necessary to track this state (I think) as
members are declared for a class. It also wires the state into the
various trait-like accessors in the AST's API, and tests that the type
trait expressions now behave correctly in the presence of move
constructors and move assignment operators.

This isn't complete yet due to these glaring FIXMEs:
1) No synthesis of implicit move constructors or assignment operators.
2) I don't think we correctly enforce the new logic for both copy and
move trivial checks: that the *selected* copy/move
constructor/operator is trivial. Currently this requires *all* of them
to be trivial.
3) Some of the trait logic needs to be folded into the fine-grained
trivial bits to more closely match the wording of the standard. For
example, many of the places we currently set a bit to track POD-ness
could be removed by querying other more fine grained traits on
demand.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130076 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0d2d1bcef51993ca3fd957e45fb7ec85e45016e5 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Teach the AST reader and writer to preserve the __DEPRECATED bit in
language options, and warn when reading an AST with a different value
for the bit.

There doesn't appear to be a good way to test this (commenting out
similar other language options doesn't break anything) but if folks have
suggestions on tests I'm happy to add them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
c69a505cfa318d571ce8a0cd038c8d958585a735 23-Apr-2011 Jay Foad <jay.foad@gmail.com> Remove unused STL header includes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130068 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
river/Arg.h
rontend/ASTConsumers.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/PTHLexer.h
ex/Pragma.h
ex/PreprocessorLexer.h
arse/Parser.h
ewrite/FrontendActions.h
ewrite/Rewriter.h
taticAnalyzer/Core/CheckerProvider.h
f8c247d247f9f7ab2bf4965677e6d056711c99d5 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Move all of the logic for __DEPRECATED to the driver based on comments
from dgregor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
89ebaed91cca7fd296ec7804e4e9fb68949c1d0e 23-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> "note" location of forward class used as receiver of
a 'deprecated' selector in the diagnostics for the
selector. // rdar://9309223



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130062 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4a47e8d35dc1778ef7e428d9edd7676be67e725f 23-Apr-2011 Francois Pichet <pichet2000@gmail.com> Remove unnecessary const away cast in LateTemplateParserCallback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130058 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
b7e9589bce9852b4db9575f55ac9137572147eb5 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Implement basic __is_trivial type-trait support, enough to close PR9472.
This introduces a few APIs on the AST to bundle up the standard-based
logic so that programmatic clients have access to exactly the same
behavior.

There is only one serious FIXME here: checking for non-trivial move
constructors and move assignment operators. Those bits need to be added
to the declaration and accessors provided.

This implementation should be enough for the uses of __is_trivial in
libstdc++ 4.6's C++98 library implementation.

Ideas for more thorough test cases or any edge cases missing would be
appreciated. =D

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
4e61ddd644e9c6293697a966d98d7c1905cf63a8 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Sort the type traits in a few places where they weren't previously
sorted in order to prepare for adding some new ones.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
asic/TypeTraits.h
1cfe3c305c0d5393fd94167808b8f5d96cd65227 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Fix Clang's __DEPRECATED define to be controled by -Wdeprecated. This
matches GCC behavior which libstdc++ uses to limit #warning-based
messages about deprecation.

The machinery involves threading this through a new '-fdeprecated-macro'
flag for CC1. The flag defaults to "on", similarly to -Wdeprecated. We
turn the flag off in the driver when the warning is turned off (modulo
matching some GCC bugs). We record this as a language option, and key
the preprocessor on the option when introducing the define.

A separate flag rather than a '-D' flag allows us to properly represent
the difference between C and C++ builds (only C++ receives the define),
and it allows the specific behavior of following -Wdeprecated without
potentially impacting the set of user-provided macro flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130055 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
f3babb93eba416ff30c4408d843b7408221e1d4e 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> GCC overloads -Wwrite-strings just to make it extra confusing. While it
changes language semantics in C and ObjC (which Clang has supported for
a while), in C++ it's the name used for Clang's
-Wdeprecated-writable-strings.

Clang's name is at least less overloaded if still confusing (the string
isn't writable, we just allow converting to a non-const pointer without
warning), so I've left it in place and made the GCC name an alias for
compatibility.

With this I've implemented all the aspects of GCC's -Wwrite-strings I've
encountered which didn't work with Clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
50465d1d2f5f6dd3d8e18e2cf7bad4691e5ca6a8 23-Apr-2011 Chandler Carruth <chandlerc@gmail.com> There were some frustrating problems with the implementation of
-Wwrite-strings. First and foremost, once the positive form of the flag
was passed, it could never be disabled by passing -Wno-write-strings.
Also, the diagnostic engine couldn't in turn use -Wwrite-strings to
control diagnostics (as GCC does) because it was essentially hijacked to
drive the language semantics.

Fix this by giving CC1 a clean '-fconst-strings' flag to enable
const-qualified strings in C and ObjC compilations. Corresponding
'-fno-const-strings' is also added. Then the driver is taught to
introduce '-fconst-strings' in the CC1 command when '-Wwrite-strings'
dominates.

This entire flag is basically GCC-bug-compatibility driven, so we also
match GCC's bug where '-w' doesn't actually disable -Wwrite-strings. I'm
open to changing this though as it seems insane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130051 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
bb29d1ba8b0895e3923c724f49845636f35b4bde 23-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't allow reinterpret_cast to reference of vector element and property expression. Thanks goes to Eli Friedman!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130036 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4a0caf78e7c18e7aca65fbfd799a6c024ff51fb 23-Apr-2011 Francois Pichet <pichet2000@gmail.com> Correctly emit a diagnostic for multiple templated function definitions in -flate-template-parsing mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130030 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b464a5b18916b467ed884d07f9e34295d39cec0a 23-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> reinterpret_cast to reference of a bit-field is not allowed.

Fixes rdar://9202628 & http://llvm.org/PR9564.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130024 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
788440378c442562497c09610939cbe6218ab43d 23-Apr-2011 Douglas Gregor <dgregor@apple.com> At the end of the translation unit, defining a vtable can introduce
new templates that need to be instantiated and vice-versa. Iterate
until we've instantiated all required templates and defined all
required vtables. Fixed PR9325 / <rdar://problem/9055177>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130023 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8387e2a41eef6fa17fb140a18c29b6eee9dd2b8a 23-Apr-2011 Francois Pichet <pichet2000@gmail.com> Add -fdelayed-template-parsing option. Using this option all templated function definitions are parsed at the end of the translation unit only if it is required by an actual instantiation. As such all the symbols of the TU are available during name lookup.

Using this flag is necessary for compatibility with Microsoft template code.
This also provides some parsing speed improvement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130022 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/LangOptions.h
river/CC1Options.td
river/Options.td
arse/Parser.h
ema/Sema.h
64089cece350472c04b420c497ae391443353325 23-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Fixes an instance method meta-data generation bug in
ObjC NeXt runtime where method pointer registered in
metadata belongs to an unrelated method. Ast part of this fix,
I turned at @end missing warning (for class
implementations) into an error as we can never
be sure that meta-data being generated is correct.
// rdar://9072317


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
cf320c6388c90f1938c264e87d77a0e43946e2c3 22-Apr-2011 Francois Pichet <pichet2000@gmail.com> For consistency, change suffix from war_ to warn_ for some Microsoft warnings I introduced lately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
2e510a0c0f7afa7951aa19c65a06c2da579535a8 22-Apr-2011 Francois Pichet <pichet2000@gmail.com> Downgrade error "static declaration of 'foo' follows non-static declaration" to a warning in Microsoft mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129985 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49e5b913d7953dfbf62a020e648b725038de4789 22-Apr-2011 Francois Pichet <pichet2000@gmail.com> _declspec is an alias for __declspec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129982 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
e8ba8d78a258ec992d3521eebdae8324db777b14 22-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Wire up the -ftest-coverage and -fprofile-arcs flags to .gcno file emission (at
compile time) and .gcda emission (at runtime). --coverage enables both.

This does not yet add the profile_rt library to the link step if -fprofile-arcs
is enabled when linking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129956 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
144bc08f5fe6046bd8e07de5e41a4237dd2c6275 22-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't hide #warnings in a system header, same as gcc. Fixes rdar://8495837.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129951 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticIDs.h
asic/DiagnosticLexKinds.td
bb9b80c308d7d3f758886243c7145404a50c66cf 21-Apr-2011 Richard Trieu <rtrieu@google.com> Add a fixit suggest for missing case keywords inside a switch scope. For instance, in the following code, 'case ' will be suggested before the '1:'

switch (x) {
1: return 0;
default: return 1;
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/Scope.h
ema/Sema.h
723b1782460bc448d9d865e9b828c09d26a50964 21-Apr-2011 Nick Lewycky <nicholas@mxc.ca> Alphabetize this one flag, just to pull it out of my patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129941 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
3e8dc2ac8926dfbebd8f2f6b74ceba4befccd4d2 21-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use the ArrayFiller to fill out "holes" in the array initializer due to designated initializers,
avoiding to create separate Exprs for each one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cf3ce5d89628b3955c638fb102c8dc4c24e1986d 21-Apr-2011 Manuel Klimek <klimek@google.com> Adds a function to run FrontendActions over in-memory code. This is
the first step towards a standalone Clang tool infrastructure.
The plan is to make it easy to build command line tools that run over
the AST of source files in a project outside of the build system.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129924 91177308-0d34-0410-b5e6-96231b3b80d8
ooling/Tooling.h
0e02f6ef48a098cc27a250e644415038c2fa52a5 21-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Tweak -Xarch diags a bit more, we can't actually differentiate between
unknown and "required more arguments", but only the latter should be feasible in
practice.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
7e9293b8be1716149f2150f96e76876719f14e45 21-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Improve -Xarch argument diagnostics a bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
13d7dc04f3ae095c195446376df54fb2c8d4aead 21-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Have #pragma message not turn into error by -Werror, by default. Fixes rdar://9308989.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129916 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticLexKinds.td
4423ac0282acb8ba801eb05b38712438dc0c1e3e 21-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> For

double data[20000000] = {0};

we would blow out the memory by creating 20M Exprs to fill out the initializer.

To fix this, if the initializer list initializes an array with more elements than
there are initializers in the list, have InitListExpr store a single 'ArrayFiller' expression
that specifies an expression to be used for value initialization of the rest of the elements.

Fixes rdar://9275920.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129896 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a10ae7b895737694ddc3f0f3fc6105c4871fef23 21-Apr-2011 Bill Wendling <isanbard@gmail.com> Remove __builtin_ia32_loadup[sd] since clang can represent the actions natively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
285dc6530b37d632cd858bac444d29044de4d283 20-Apr-2011 Justin Holewinski <justin.holewinski@gmail.com> PTX: Add PTX intrinsics as builtins and add ptx32 and ptx64 as valid architectures for triples, e.g. ptx32-unknown-unknown

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129870 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsPTX.def
asic/TargetBuiltins.h
109ec1b05664e35e710785314c12552307f39a7d 20-Apr-2011 Douglas Gregor <dgregor@apple.com> Fix a crash-on-invalid involving non-identifier names in a member
access expression that appears to be a property reference. Fixes
<rdar://problem/8985943>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e23ac65af568ffe611b0990818ac3a57c856a4d8 20-Apr-2011 Douglas Gregor <dgregor@apple.com> Teach SourceManager::getSLocEntry() that it can fail due to problems
during deserialization from a precompiled header, and update all of
its callers to note when this problem occurs and recover (more)
gracefully. Fixes <rdar://problem/9119249>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129839 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
erialization/ASTReader.h
6b6b42aed07726178f61954ac6e51f47da00275c 19-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> We regard a function as 'unused' from the codegen perspective, so our warnings diverge from
gcc's unused warnings which don't get emitted if the function is referenced even in an unevaluated context
(e.g. in templates, sizeof, etc.). Also, saying that a function is 'unused' because it won't get codegen'ed
is somewhat misleading.

- Don't emit 'unused' warnings for functions that are referenced in any part of the user's code.
- A warning that an internal function/variable won't get emitted is useful though, so introduce
-Wunneeded-internal-declaration which will warn if a function/variable with internal linkage is not
"needed" ('used' from the codegen perspective), e.g:

static void foo() { }

template <int>
void bar() {
foo();
}

test.cpp:1:13: warning: function 'foo' is not needed and will not be emitted
static void foo() { }
^

Addresses rdar://8733476.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1c860d5640e8eebb11a5d515a761242b66761b0b 19-Apr-2011 Peter Collingbourne <peter@pcc.me.uk> Add a new expression classification, CL_AddressableVoid

CL_AddressableVoid is the expression classification used for void
expressions whose address can be taken, i.e. the result of [], *
or void variable references in C, as opposed to things like the
result of a void function call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
61e0b94838127601718c64b80940868d4b995e1f 19-Apr-2011 Ted Kremenek <kremenek@apple.com> Add ASTContext::getTotalMemory() to allow clients to query how much memory is bump allocated for declarations, statements, and types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
97f55d6ffd548d1777d790c84b358030682f9de2 19-Apr-2011 Ted Kremenek <kremenek@apple.com> Add SelectorTable::getTotalMemory() to allow clients to query how much memory is used by selectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129728 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
877ded8532736d49b3cda8708cf0e5e9c44a760b 18-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Support -fno-lto.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129712 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
10c8d9e63bcc96d55f788e7c08b72ce626c8aeec 16-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Rewriter::IncreaseIndentation() which increase indentations for the lines between the given source range.
To determine what the indentation should be, a SourceLocation 'parentIndent' parameter is used that should be at
a source location with an indentation one degree lower than the given range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129628 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
7d2b8c1fcc2b707be78b09930a7767477822462f 16-Apr-2011 Douglas Gregor <dgregor@apple.com> Initial work to improve documentation for Clang's diagnostics, from Matthieu Monrocq

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/CMakeLists.txt
asic/Diagnostic.td
asic/DiagnosticIDs.h
asic/Makefile
river/CC1Options.td
river/DriverDiagnostic.h
river/Options.td
rontend/DiagnosticOptions.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
5666d36cce566b59be271670364794de9803af04 15-Apr-2011 Douglas Gregor <dgregor@apple.com> Forbid the use of C++ new/delete to allocate/free objects within an
address space. I could see that this functionality would be useful,
but not in its current form (where the address space is ignored):
rather, we'd want to encode the address space into the parameter list
passed to operator new/operator delete somehow, which would require a
bunch more semantic analysis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129593 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4c5f84bbed2ecb5ddd0f0e8316c553b2084772a 15-Apr-2011 Douglas Gregor <dgregor@apple.com> Implement appropriate semantics for C++ casting and conversion when
dealing with address-space- and GC-qualified pointers. Previously,
these qualifiers were being treated just like cvr-qualifiers (in some
cases) or were completely ignored, leading to uneven behavior. For
example, const_cast would allow conversion between pointers to
different address spaces.

The new semantics are fairly simple: reinterpret_cast can be used to
explicitly cast between pointers to different address spaces
(including adding/removing addresss spaces), while
static_cast/dynamic_cast/const_cast do not tolerate any changes in the
address space. C-style casts can add/remove/change address spaces
through the reinterpret_cast mechanism. Other non-CVR qualifiers
(e.g., Objective-C GC qualifiers) work similarly.

As part of this change, I tweaked the "casts away constness"
diagnostic to use the term "casts away qualifiers". The term
"constness" actually comes from the C++ standard, despite the fact
that removing "volatile" also falls under that category. In Clang, we
also have restrict, address spaces, ObjC GC attributes, etc., so the
more general "qualifiers" is clearer.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8b36a9ee7fe7204b30a85b95b11850aeb4b63ee3 15-Apr-2011 Michael J. Spencer <bigcheesegs@gmail.com> Add 3DNow! Intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
162e1c1b487352434552147967c3dd296ebee2f7 15-Apr-2011 Richard Smith <richard-llvm@metafoo.co.uk> Support for C++11 (non-template) alias declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
asic/DeclNodes.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
831efaeb4ba2c0939db6eeb77229d9e47dd03c9c 15-Apr-2011 Ted Kremenek <kremenek@apple.com> Improve diagnostics on GNU attributes by warning about attributes that should have no arguments or parameters. Patch by Michael Han!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129560 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AttributeList.h
fc8f0e14ad142ed811e90fbd9a30e419e301c717 15-Apr-2011 Chris Lattner <sabre@nondot.org> fix a bunch of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129559 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/CharUnits.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
ST/ExprObjC.h
ST/Type.h
asic/Diagnostic.h
asic/IdentifierTable.h
asic/PartialDiagnostic.h
asic/SourceManager.h
asic/TokenKinds.def
river/OptParser.td
ex/HeaderSearch.h
ex/MultipleIncludeOpt.h
arse/Parser.h
ema/DeclSpec.h
ema/IdentifierResolver.h
ema/Initialization.h
ema/Scope.h
ema/Sema.h
ema/TemplateDeduction.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
c6eb44b321c543c5bcf28727228a0cceced57e2e 15-Apr-2011 Peter Collingbourne <peter@pcc.me.uk> C1X: implement static asserts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/TokenKinds.def
f111d935722ed488144600cea5ed03a6b5069e8f 15-Apr-2011 Peter Collingbourne <peter@pcc.me.uk> C1X: implement generic selections

As an extension, generic selection support has been added for all
supported languages. The syntax is the same as for C1X.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129554 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
asic/TokenKinds.def
arse/Parser.h
ema/Ownership.h
ema/Sema.h
erialization/ASTBitCodes.h
7e7fbd05a5dfdb0addfc8b5af2fcbed8c7b5fb87 15-Apr-2011 Peter Collingbourne <peter@pcc.me.uk> C1X: add a language standard

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
asic/TokenKinds.def
rontend/LangStandard.h
rontend/LangStandards.def
ad762fcdc16b9e4705b12b09d92b8c026212b906 15-Apr-2011 Richard Smith <richard-llvm@metafoo.co.uk> Add support for C++0x's range-based for loops, as specified by the C++11 draft standard (N3291).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/ExprCXX.h
ST/PrettyPrinter.h
ST/RecursiveASTVisitor.h
ST/StmtCXX.h
nalysis/Visitors/CFGStmtVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
ea698b3f6cad84f7f583282dce3e03e24fe80e98 14-Apr-2011 Richard Smith <richard-llvm@metafoo.co.uk> Detect when the string "<::" is found in code after a cast or template name and is interpreted as "[:" because of the digraph "<:". When found, give an error with a fix-it to add whitespace between the "<" and "::".

Patch by Richard Trieu! Plus a small tweak from me to deal with one of the tokens coming from a macro.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
414d8967e1d760ea1e19a4aca96b13777a8cf8c5 14-Apr-2011 Anton Korobeynikov <asl@math.spbu.ru> Implement ARM pcs attribute. Basically it's another way of calling convention selection (AAPCS or
AAPCS+VFP), similar to fastcall / stdcall / whatevercall seen on x86.

In particular, all library functions should always be AAPCS regardless of floating point ABI used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129534 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
8a9013d24864272cf5b18c908a267bd7a2bda4c4 14-Apr-2011 Douglas Gregor <dgregor@apple.com> Parse an '@' in an Objective-C++ class member specification,
diagnosing it as an error rather than looping infinitely. Also,
explicitly disallow @defs in Objective-C++. Fixes <rdar://problem/9260136>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129521 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
5bbcdbf36f8cf79d99703ef20848c55960065e43 14-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Chained PCH: Remember when additional specializations are added to a function template from a previous PCH. Fixes the only crasher when using massive chains on Clang's Sema component. We still have some incomplete codegen there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129516 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
ST/DeclTemplate.h
erialization/ASTWriter.h
e7a03c98f0a3c0263ac569ad42cb5329672fd7ee 14-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Add header guards to include/clang/Basic/ConvertUTF.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
dde5557e87e1163ad792471e0bdbb2cd17894576 14-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Re-fix r129481 and r129465 properly. Nulls fixits shouldn't be dropped in
DiagnosticBuilder::AddFixItHint: they will be dropped along with any
other (possibly valid) fixits later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3e2193ce5feb2feb092e5ae615e85148e06e9fd2 14-Apr-2011 Anders Carlsson <andersca@mac.com> Add a flag to StringLiteral to keep track of whether the string is a pascal string or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fd183ba0b16718ff05e161bc479678e447df4999 13-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Collect the options applicable to the Rewriter methods into a RewriterOptions struct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129430 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
6943e9befee204becfae55de1298b3d5fee87934 13-Apr-2011 Francois Pichet <pichet2000@gmail.com> In Microsoft mode, within class scope, if a CXXScopeSpec's type is equal to the type of one of the base classes then downgrade the missing typename error to a warning. Up to now this is the only case I found where MSVC doesn't require "typename" at class scope. Really strange!
This fixes 1 error when parsing the MSVC 2008 header files.
Example:

template<class T> class A {
public:
typedef int TYPE;
};
template<class T> class B : public A<T> {
public:
A<T>::TYPE a; // no typename required because A<T> is a base class.
};


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129425 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b8f17abf30a9aab6382c84a758fd6679a8b5583a 13-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Redeclaration of 'self' should be flagged in
objective-c instead of crashing in IRgen.
// rdar://9154582.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129412 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f077c0d4bb1598f9201cdc38592634ca8922da6c 12-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Don't treat -m{abi,arch,cpu,cmodel}= as "driver" options, they don't
modify the driver planning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129396 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
627788c29976fbeb4ad47bcfcb3576889070e357 12-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Fix a regression where the initializer implements
the initialized's protocol and yet clang warns.
objective-c issue, // rdar://9267196


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129363 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
755d8497e39071aa24acc173ff07083e3256b8f8 12-Apr-2011 John McCall <rjmccall@apple.com> After some discussion with Doug, we decided that it made a lot more sense
for __unknown_anytype resolution to destructively modify the AST. So that's
what it does now, which significantly simplifies some of the implementation.
Normal member calls work pretty cleanly now, and I added support for
propagating unknown-ness through &.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
asic/DiagnosticSemaKinds.td
235c02f79e0ece9463490aa87eaaa02bad300dac 12-Apr-2011 Ted Kremenek <kremenek@apple.com> Teach GRState::getSValAsScalarOrLoc() about C++ references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129329 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
9fec9b1fbd32e71ce8acb701165fd6649b3d8285 12-Apr-2011 Ted Kremenek <kremenek@apple.com> C++ static analysis: also invalidate fields of objects that are the callees in C++ method calls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129308 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
d762357055f3d82959604743dbff20ca337e04be 11-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129301 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
1d015313b27f6002b1c4a74e478ede1622141b4e 11-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Fixup more objc rwriter bug having to do with
rewriting of blocks which have objective-c
stuff which need be rewritten as well. // rdar://9254348


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129300 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
379b5155b4566f63679e1da6b0ceb5fdfa2aec6d 11-Apr-2011 John McCall <rjmccall@apple.com> More __unknown_anytype work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
asic/DiagnosticSemaKinds.td
575b374fdbfc2c2224fd3047ac11ffc4b8db9ae5 11-Apr-2011 Anders Carlsson <andersca@mac.com> Remove CK_DynamicToNull.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
0fee330f5754ca4b248e5bb7363e834668aff06d 11-Apr-2011 Anders Carlsson <andersca@mac.com> Add CXXDynamicCastExpr::isAlwaysNull() which will be replacing the cast kind I added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
bc34b1d7f4f371bfdebf68d66086f54586d68abe 11-Apr-2011 Eli Friedman <eli.friedman@gmail.com> PR9669: implement correct checking for [dcl.init.string]p2.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7d99bc37e77157523e3bfbc6c077842b74e6690f 10-Apr-2011 Anders Carlsson <andersca@mac.com> As a first step towards fixing PR9641, add a CK_DynamicToNull cast kind which
represents a dynamic cast where we know that the result is always null.

For example:

struct A {
virtual ~A();
};
struct B final : A { };
struct C { };

bool f(B* b) {
return dynamic_cast<C*>(b);
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129256 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
fb8721ce4c6fef3739b1cbd1e38e3f1949462033 10-Apr-2011 John McCall <rjmccall@apple.com> Simplify calling CheckPlaceholderExpr, converge on it in a few places,
and move a vector-splat check to follow l-value conversion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129254 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f65076ebf5e8bc5ae7b77fe3c3a65dc5db8d763f 10-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Enhance the diagnostic for literal float -> int conversions to suggest
rewriting the literal when the value is integral. It is not uncommon to
see code written as:

const int kBigNumber = 42e5;

Without any real awareness that this is no longer an ICE. The note helps
automate and ease the process of fixing code that violates the warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129243 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d051e00ad674754d476cc1fa0442da0bc47b2c8 10-Apr-2011 Francois Pichet <pichet2000@gmail.com> MSVC accepts that default parameters be redefined for member functions
of template class. The new value is ignored.

This fixes 1 error when parsing MSVC 2010 header files with clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a5fc472b353b88be3b4981da946fb01f5a5cc0c6 10-Apr-2011 John McCall <rjmccall@apple.com> Fix a bunch of major problems with __unknown_anytype and properly test
for them. The only major missing feature is references.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
asic/Specifiers.h
asic/TokenKinds.def
river/CC1Options.td
ema/DeclSpec.h
2eba7abeab4abddd28644200397f8a1d5badccdd 09-Apr-2011 Logan Chien <tzuhsiang.chien@gmail.com> Merge with clang upstream r129173 (Apr 8th 2011)

Upstream Revision
git-id: 0ff32595e4b92c5bdee78946b39f9e990b20cc90
svn-id: 129173
b8a3e8139b9fe513500c89bbcd9133415654a689 09-Apr-2011 Dylan Noblesmith <nobled@dreamwidth.org> refactor -ccc-gcc-name code

Put the logic for deciding the default name for gcc/g++
in the only place that actually cares about it.

This also pushes an ifdef out of the generic driver code
to a little further down, when the target is actually known.
Hopefully it can be changed into just a runtime check
in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129212 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
a49218e17bcbb1acde0245773173e2c0c42f4f19 09-Apr-2011 Eli Friedman <eli.friedman@gmail.com> PR8369: make __attribute((regparm(0))) work correctly. Original patch by
pageexec@freemail.hu, tweaks by me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129206 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b6006696358572a668d6de773af8f550e54259bf 09-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Clean up the bool conversion warning. Group it with other conversion
warnings, and make its text appropriate for constant bool expressions
other than 'false'. This should finish off PR9612.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129205 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
23aa9c8ca0bc441aab2a38a4c9fc7a1c9e9ac16a 09-Apr-2011 Chris Lattner <sabre@nondot.org> add a __sync_swap builtin to fill out the rest of the __sync builtins.
Patch by Dave Zarzycki!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
a00d678f32f44668f42112a749fd4fe9c6e061e5 09-Apr-2011 Eric Christopher <echristo@apple.com> Remove a pair of unused diagnostic messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0ff32595e4b92c5bdee78946b39f9e990b20cc90 09-Apr-2011 Chris Lattner <sabre@nondot.org> complete documentation of flags, patch by nobled


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129173 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ec7346077c1fb423c9279771675c098bc2dffc92 09-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Properly traverse a ObjCMethodDecl in RecursiveASTVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
49af1f3cedc55726e4a3dd343eb4a8e24eab8439 08-Apr-2011 Evan Cheng <evan.cheng@apple.com> Rename -mtrap_function= to -ftrap_function= since it's now a target neutral options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129153 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b20e442b31287b7e926a118dec36bddc34dbe730 08-Apr-2011 Evan Cheng <evan.cheng@apple.com> Add -mtrap_function=<> option. rdar://9257465

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129145 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
429bb276991ff2dbc7c5b438828b9b7737cb15eb 08-Apr-2011 John Wiegley <johnw@boostpro.com> Use ExprResult& instead of Expr *& in Sema

This patch authored by Eric Niebler.

Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr
pointers as in/out parameters (Expr *&). This is especially true for the
routines that apply implicit conversions to nodes in-place. This design is
workable only as long as those conversions cannot fail. If they are allowed
to fail, they need a way to report their failures. The typical way of doing
this in clang is to use an ExprResult, which has an extra bit to signal a
valid/invalid state. Returning ExprResult is de riguour elsewhere in the Sema
interface. We suggest changing the Expr *& parameters in the Sema interface
to ExprResult &. This increases interface consistency and maintainability.

This interface change is important for work supporting MS-style C++
properties. For reasons explained here
<http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html>,
seemingly trivial operations like rvalue/lvalue conversions that formerly
could not fail now can. (The reason is that given the semantics of the
feature, getter/setter method lookup cannot happen until the point of use, at
which point it may be found that the method does not exist, or it may have the
wrong type, or overload resolution may fail, or it may be inaccessible.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129143 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
ema/Sema.h
b7bc34a83aff8af09f2a78aa6d1dcafe18ad8619 08-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Warn for any kind of initialization if initializer does not
implement lhs's protocols. // rdar://9091389.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
584b9d6bd0ce199787900695fe75528fcde405fe 08-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Switch 'is possibly uninitialized' to 'may be uninitialized' based on
Chris's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f04eb2de1f17dce4dfaebbf9002844087b7d357d 08-Apr-2011 Chandler Carruth <chandlerc@gmail.com> Now that the analyzer is distinguishing between uninitialized uses that
definitely have a path leading to them, and possibly have a path leading
to them; reflect that distinction in the warning text emitted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129126 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
089f872fedb175f7569f24f1dba362ffbc403528 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Don't attempt to forward some Clang-only options to cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129108 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b6534bbee90bf73f364072051d10b60352d43c3e 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Fronted/CC_LOG_DIAGNOSTICS: Wire up dwarf-debug-flags support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129095 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
28f14933edc863821e4f2ffa3663835c62440dcb 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Fronted/CC_LOG_DIAGNOSTICS: Output main file name, and add support for
outputting dwarf-debug-flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129094 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LogDiagnosticPrinter.h
64bfbf573e625c04abc3d40faa9b695fe21ebdbb 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Continue flushing out LogDiagnosticPrinter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129091 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LogDiagnosticPrinter.h
9df23493f5b8a223dfbc491e4b7de3850797c2e7 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Sketch a LogDiagnosticPrinter object, and wire CC_LOG_DIAGNOSTICS to
it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129089 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LogDiagnosticPrinter.h
b680d4bc53ecfece9b583f8e8566fddb5189d39a 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> ChainedDiagnosticClient: Fix a bug where chained diagnostic clients wouldn't
accurately track warning/error counts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129088 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedDiagnosticClient.h
08c6695f6018fb6cb1a7c7d311a851aa5c233bc0 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Sketch support for -diagnostic-log-file, which still doesn't do anything.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129086 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/DiagnosticOptions.h
b65ed34ebf0380c001756eea7a1c1d01e110b557 07-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Enhance the Rewriter.

-Allow removing a line completely if it ends up empty
-Provide more control on what should be removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129085 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
8f89652be7bb85bdac83c37fec85f20cdd2dfc83 07-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add FullSourceLoc::BeforeThanCompare. a comparison function class, useful for sorting FullSourceLocs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129084 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
c8a22b091677c02003880166e5d5767ca8d74b70 07-Apr-2011 Daniel Dunbar <daniel@zuster.org> Driver: Sketch driver support for a CC_LOG_DIAGNOSTICS options, similar to the
existing CC_PRINT_OPTIONS and CC_PRINT_HEADERS, which can be used to
transparently capture the compiler diagnostics from a build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/Driver.h
737d5447b5d20633992ee5388eca5270c28c8ae7 07-Apr-2011 Abramo Bagnara <abramo.bagnara@gmail.com> In C++ the argument of logical not should always be bool. Added missing implicit cast for scalars.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129066 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1de4d4e8cb2e9c88809fea8092bc6e835a5473d2 07-Apr-2011 John McCall <rjmccall@apple.com> Basic, untested implementation for an "unknown any" type requested by LLDB.
The idea is that you can create a VarDecl with an unknown type, or a
FunctionDecl with an unknown return type, and it will still be valid to
access that object as long as you explicitly cast it at every use. I'm
still going back and forth about how I want to test this effectively, but
I wanted to go ahead and provide a skeletal implementation for the LLDB
folks' benefit and because it also improves some diagnostic goodness for
placeholder expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129065 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/OperationKinds.h
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
759abb4d9ec14ae32104a9677b60f0542b60d1d8 06-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Fix lookup for class messages sent to qualified-class
types such that protocols are seached first. Fixes
// rdar://9224670


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
9a7319305fc25222b91d585dfa056c8cdbac8434 06-Apr-2011 Nowar Gu <nowar100@gmail.com> Merge upstream until 2011.04.05.
4c8acc9b0158081635e1dabd49304377ae67ca98 05-Apr-2011 Michael J. Spencer <bigcheesegs@gmail.com> Fix spelling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128896 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
30f64714da00794cfc4179c5d5046b0c7d4cd3c0 05-Apr-2011 Eric Christopher <echristo@apple.com> Make this const, there's probably no harm in it and it silences a bunch
of warnings when passing const arguments into the function.

Fixes PR9426


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128880 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ae8ec2b8b890ad663bdeb27e69f590c71b966cb6 05-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix building with gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128863 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
d40066b0fb883839a9100e5455e33190b9b8abac 05-Apr-2011 Ted Kremenek <kremenek@apple.com> Fix PR 9626 (duplicated self-init warnings under -Wuninitialized) with numerous CFG and UninitializedValues analysis changes:

1) Change the CFG to include the DeclStmt for conditional variables, instead of using the condition itself as a faux DeclStmt.
2) Update ExprEngine (the static analyzer) to understand (1), so not to regress.
3) Update UninitializedValues.cpp to initialize all tracked variables to Uninitialized at the start of the function/method.
4) Only use the SelfReferenceChecker (SemaDecl.cpp) on global variables, leaving the dataflow analysis to handle other cases.

The combination of (1) and (3) allows the dataflow-based -Wuninitialized to find self-init problems when the initializer
contained control-flow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
832316e9a04242972f4b57281dccb8e4cf5894ea 05-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move Driver::createInvocationFromArgs function to Frontend library to avoid dependency cycle
between libFrontend and libDriver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128852 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
rontend/Utils.h
054e4f50e2f1995e91b0cd3c3258aa252785fe3f 04-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Driver::createInvocationFromArgs used to create a CompilerInvocation from command-line args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128848 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
5862f0e1ac29c5af8089b4bf119fd4493f6ab58c 04-Apr-2011 Ted Kremenek <kremenek@apple.com> When emitting a "too many arguments to function call..." error, also include a note with a location for the function prototype.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cccc02ac215ffc16fc4b3ebfee5ee87c40e30505 04-Apr-2011 Eli Friedman <eli.friedman@gmail.com> PR9585: add __decltype as a keyword. While I'm here, alphabetize the list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128809 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
8083414ee7cc8f5c807ed6a4e120fb4e0ab50ff8 03-Apr-2011 Ted Kremenek <kremenek@apple.com> static analyzer: Add a new ProgramPoint PostCondition to represent the post position of a branch condition, and a new generateNode method to BranchNodeBuilder using PostCondition ProgramPoint. This method generates a new ExplodedNode but not a new block edge.

Patch by Lei Zhang!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128784 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
4d840e9ac4d8e9baa9459ca3dd7ab14ae884a80f 02-Apr-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Simplify CheckerFn template and use it more to reduce duplication. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128779 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
e87e717b0dbe4776f2b4dbb1e6ce2a19f562d2b0 02-Apr-2011 csmon7507 <csmon7507@gmail.com> Merge branch 'upstream' into logan-fastforward-20110320
2bfa3019b8fb35931ca4927feaf25d39161b423e 02-Apr-2011 Zhongxing Xu <xuzhongxing@gmail.com> Remove a redundant method. We have a const version.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128762 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
422ab7a49a9a4252dbc6350e49d7a5708337b9c7 02-Apr-2011 Ted Kremenek <kremenek@apple.com> Teach IdempotentOperationsChecker about paths aborted because ExprEngine didn't know how to handle a specific Expr type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128761 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
66750fa464ace9f8c41666c8585ec71a248c1cca 02-Apr-2011 Ted Kremenek <kremenek@apple.com> static analyzer: Rename 'BlocksAborted' to 'BlocksExhausted' to reflect that a given CFGBlock was analyzed too many times.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128760 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
f445debe3a6825e6528655db0906ce4fa41240ea 01-Apr-2011 csmon <csmon@csmon-desktop.(none)> Merge branch 'upstream' into logan-fastforward-20110320
ce0682ff4647b885d41847b0f97918504282c2e8 31-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Make ChainedIncludesSource an ExternalSemaSource, otherwise initialization of the ASTReader is incomplete, leading to errors like not realizing std::type_info is already defined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128664 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ChainedIncludesSource.h
ad1a4c6e89594e704775ddb6b036ac982fd68cad 31-Mar-2011 Daniel Dunbar <daniel@zuster.org> Change Clang's __VERSION__ to include the same basic info as in clang -v.
- Please never ever ever ever write a tool that sniffs this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
2d33e423d5091b7d2cb8618952752abd55bba965 31-Mar-2011 Bob Wilson <bob.wilson@apple.com> Use intrinsics for Neon vmull operations. Radar 9208957.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
b78c33f74970c23878c03294760054b3a4c006eb 30-Mar-2011 Ted Kremenek <kremenek@apple.com> Put "#pragma message ..." into its own warning (human friendly) category.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
a6c530868fd8ca54b0a2e00f3a623af72e8dc979 30-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Silence warnings of unkwown -Wlarger-than and -Wframe-larger-than. Fixes rdar://6970318.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128560 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b277159055933e610bbc80262b600d3ad7e0595c 30-Mar-2011 Ted Kremenek <kremenek@apple.com> Begin reworking static analyzer support for C++ method calls. The current logic was divorced
from how we process ordinary function calls, had a tremendous about of redundancy, and relied
strictly on inlining behavior (which was incomplete) to provide semantics instead of falling
back to the conservative analysis we use for C functions. This is a significant step into
making C++ analyzer support more useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128557 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
68af13f3ca39947e3f285f864fe3b76640fddf69 30-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> Fix IRGen issues related to using property-dot syntax
for prperty reference types. // rdar://9208606.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
1293cdac691975a57a0e8a4f1448b3ed9e293c50 29-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Checker Packages can now belong to a group. This requires llvm commit r128474.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128475 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/CheckerBase.td
969323239f16589329d091a2b8ef200fcfe7c9e9 29-Mar-2011 Daniel Dunbar <daniel@zuster.org> Integrated-As: Support -Wa,-L when using the integrated assembler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128433 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
402adc3bc0ddbbb46cb0b8d29812a9c2f605ec4f 29-Mar-2011 Daniel Dunbar <daniel@zuster.org> Frontend/cc1as: Add support for -L.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128432 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
7f3ad231bed2184694e407772689e8903068bdca 28-Mar-2011 Eli Friedman <eli.friedman@gmail.com> Remove stray null from the middle of a comment. (Found because my editor
was refusing to open the file.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
4147d307086cf024a40a080e2bf379e9725f6f41 27-Mar-2011 Francois Pichet <pichet2000@gmail.com> Improve recovery (error + fix-it) when parsing type dependent template name without the "template" keyword.

For example:
typename C1<T>:: /*template*/ Iterator<0> pos;

Also the error is downgraded to an ExtWarn in Microsoft mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
a7689efa25bf54452c758c672bd1a5608d5757cc 27-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Diagnose uninitialized uses of a variable within its own initializer.
This is basically the same idea as the warning on uninitialized uses of
fields within an initializer list. As such, it is on by default and
under -Wuninitialized.

Original patch by Richard Trieu, with some massaging from me on the
wording and grouping of the diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d06fea8580658470f92fb5d0d3d7ab5b475728dc 27-Mar-2011 Anton Yartsev <anton.yartsev@gmail.com> supported: AltiVec vector initialization with a single literal according to PIM section 2.5.1 - after initialization all elements have the value specified by the literal

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
abaca7a8be8e79cc01354676e3bcb26575640311 27-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Add an option to suppress include stack printing on note diagnostics.
These stacks are often less important than those on primary diagnostics.

As the number of notes grows, this becomes increasingly important. The
include stack printing is clever and doesn't print stacks for adjacent
diagnostics from the same file, but when a note is in between a sequence
of errors in a header file, and the notes all refer to some other file,
we end up getting a worst-case ping-pong of include stacks that take up
a great deal of vertical space.

Still, for now, the default behavior isn't changed. We can evaluate user
feedback with the flag.

Patch by Richard Trieu, a couple of style tweaks from me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128371 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
rontend/TextDiagnosticPrinter.h
5adb5a84bfb4f2e5f1ea28fdfc6ee1cd9b622c60 27-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Add -f[no-]strict-overflow to the Clang driver. Use it to set the
default for -fwrapv if that flag isn't specified explicitly. We always
prefer an explict setting of -fwrapv when present. Also adds support for
-fno-wrapv to allow disabling -fwrapv even when -fno-strict-overflow is
passed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128353 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
077f490d0a514dcc448475f33f799934252b85a7 26-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> More coherent diagnostic attempting to assign to a member of a const object returned
from an objective-c message: // rdar://9005189


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128348 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
3d9ce907a7a77dba1f81bfff6af05f7cbe31b115 26-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> Make diagnostic clearer.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128343 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4421d2b341d041df44013769f23c306308bbab83 26-Mar-2011 Douglas Gregor <dgregor@apple.com> On Mac OS X, the presence of an 'availability' attribute for that
platform implies default visibility. To achieve these, refactor our
lookup of explicit visibility so that we search for both an explicit
VisibilityAttr and an appropriate AvailabilityAttr, favoring the
VisibilityAttr if it is present.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b53e417ba487f4193ef3b0485b420e0fdae643a2 26-Mar-2011 Douglas Gregor <dgregor@apple.com> Extend the new 'availability' attribute with support for an
'unavailable' argument, which specifies that the declaration to which
the attribute appertains is unavailable on that platform.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/AttributeList.h
2234873111009eb8655d63362cedc422eb9fc517 26-Mar-2011 John McCall <rjmccall@apple.com> Allow GC qualifiers to be added/removed by conversions from/to void*
without a warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3812999df1a50e0804985c8845fcfa3fd7ffe14c 26-Mar-2011 Craig Silverstein <csilvers2000@yahoo.com> TraverseNestedNameSpecifier -> TraverseNestedNameSpecifierLoc in a few
places where we can, now. OK-ed by dgregor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
8a29ba0d66bce99014651f1e3351aef6c3361d3f 25-Mar-2011 Anders Carlsson <andersca@mac.com> Remove the last of ClassVirtSpecifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128279 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
2c3ee54e51d835a35bbf781c69e17f39e2ba0480 25-Mar-2011 Anders Carlsson <andersca@mac.com> Get rid of handling of the 'explicit' keyword from class-head. We still parse it though, although that will change shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
844c25d4383ccaf44765687cc4a7e591b3fe1472 25-Mar-2011 Anders Carlsson <andersca@mac.com> Remove warnings about using override control keywords in inline function definitions; they will be allowed in the next C++0x draft.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b1f39680a2e3bce508dba0600665860e5ba5fb70 25-Mar-2011 Anders Carlsson <andersca@mac.com> Remove 'new' from virt-specifier since it's going to be removed in the next C++0x draft

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128271 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
909a70d8a185f701c20bacc3c76f8f5979cbbc7c 25-Mar-2011 Nick Lewycky <nicholas@mxc.ca> Apply the nonnull attribute to constructor expressions too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128253 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0b7e678a11ece4288dc01aebb5b17e5eef8f8d2d 24-Mar-2011 John McCall <rjmccall@apple.com> Insomniac refactoring: change how the parser allocates attributes so that
AttributeLists do not accumulate over the lifetime of parsing, but are
instead reused. Also make the arguments array not require a separate
allocation, and make availability attributes store their stuff in
augmented memory, too.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128209 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/AttributeList.h
ema/DeclSpec.h
2b32dad701ef3e666e3b9cea02e1d094a1078c6f 24-Mar-2011 Anders Carlsson <andersca@mac.com> Add a new warning for exit-time destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c05a94b7accd4035bf5d5897c434c445b22da855 24-Mar-2011 John McCall <rjmccall@apple.com> Call out ObjC parameter types as a different kind of declarator context
from a normal type-spec, just for completeness.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128185 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DeclSpec.h
d97f558f48865aa96e7bdf9c1c9315790c3d77c9 23-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> Support for Transparent unions used as overloadable
function parameter. // rdar:// 9129552
and PR9406.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128159 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
29233802236f7fe1db20e00eca4f5cc8f3f64ade 23-Mar-2011 Douglas Gregor <dgregor@apple.com> Teach DelayedDiagnostic to copy its string, rather than hope that the
string itself lives longer than the DelayedDiagnostic. Fixes a recent
use-after-free regression due to my availability attribute work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128148 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
7f9fc3f7ce076645cb6aefc99c64d9446caf13d6 23-Mar-2011 Chris Lattner <sabre@nondot.org> switch a few Driver APIs to use llvm::ArrayRef, cleaning up code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128142 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
9d5a165d301cc9df68631e624322dd2a962f65b3 23-Mar-2011 Ted Kremenek <kremenek@apple.com> Fix crash in clang_getInstantiationLoc() when SourceManager::getInstantiationLoc() can return a SourceLocatin with an invalid
FileID on invalid code. Fixes <rdar://problem/9164623>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128139 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0a0d2b179085a52c10402feebeb6db8b4d96a140 23-Mar-2011 Douglas Gregor <dgregor@apple.com> Implement a new 'availability' attribute, that allows one to specify
which versions of an OS provide a certain facility. For example,

void foo()
__attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6)));

says that the function "foo" was introduced in 10.2, deprecated in
10.4, and completely obsoleted in 10.6. This attribute ties in with
the deployment targets (e.g., -mmacosx-version-min=10.1 specifies that
we want to deploy back to Mac OS X 10.1). There are several concrete
behaviors that this attribute enables, as illustrated with the
function foo() above:

- If we choose a deployment target >= Mac OS X 10.4, uses of "foo"
will result in a deprecation warning, as if we had placed
attribute((deprecated)) on it (but with a better diagnostic)
- If we choose a deployment target >= Mac OS X 10.6, uses of "foo"
will result in an "unavailable" warning (in C)/error (in C++), as
if we had placed attribute((unavailable)) on it
- If we choose a deployment target prior to 10.2, foo() is
weak-imported (if it is a kind of entity that can be weak
imported), as if we had placed the weak_import attribute on it.

Naturally, there can be multiple availability attributes on a
declaration, for different platforms; only the current platform
matters when checking availability attributes.

The only platforms this attribute currently works for are "ios" and
"macosx", since we already have -mxxxx-version-min flags for them and we
have experience there with macro tricks translating down to the
deprecated/unavailable/weak_import attributes. The end goal is to open
this up to other platforms, and even extension to other "platforms"
that are really libraries (say, through a #pragma clang
define_system), but that hasn't yet been designed and we may want to
shake out more issues with this narrower problem first.

Addresses <rdar://problem/6690412>.

As a drive-by bug-fix, if an entity is both deprecated and
unavailable, we only emit the "unavailable" diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
ST/Decl.h
ST/DeclBase.h
asic/Attr.td
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
asic/VersionTuple.h
arse/Parser.h
ema/AttributeList.h
ema/Sema.h
erialization/ASTReader.h
erialization/ASTWriter.h
ac4df2454d5462c3bf5f369d65c3ad651100fa40 23-Mar-2011 John McCall <rjmccall@apple.com> Warn about unused declaration-specifiers on tag declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128118 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3c66d30d513106bb794990c5e4ba36a31ac19f15 22-Mar-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Add a more explicit -backend-option flag for passing backend command
line options, instead of leveraging the blanket -mllvm option.
- This allows using the frontend itself without requiring the backend have
those options available (i.e., if the target wasn't built).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128087 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
97d2d2e368d3ead34d83c328383711c7dabab60a 22-Mar-2011 Logan Chien <tzuhsiang.chien@gmail.com> Merge with clang upstream r127980 (Mar 20th 2011)
e5a3ce6dd555788a49efaabc3bd46d704e5e9d65 22-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't clear OverloadCandidateSets on destruction, it has no effect anymore.

And clearing a SmallPtrSet can be an expensive operation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128081 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
614f96a7cf94805c2d336639300b62dc2f54e9e0 22-Mar-2011 Ted Kremenek <kremenek@apple.com> Migrate 'PrettySTackTraceParserEntry' object out of Parser, and have it constructed within ParseAST. This avoids double crashes
during crash recovery.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128056 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
da60885cb4ee85d167cf704061f10b758067cf5a 21-Mar-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Change CC_PRINT_HEADERS to not print header depth markers, these don't
really make any sense in this environment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128014 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
4f32786ac45210143654390177105eb749b614e9 21-Mar-2011 Ted Kremenek <kremenek@apple.com> Improve crash recovery cleanup to recovery CompilerInstances during crash recovery. This was a huge resource "root" during crashes.

This change requires making a bunch of fundamental Clang structures (optionally) reference counted to allow correct
ownership semantics of these objects (e.g., ASTContext) to play out between an active ASTUnit and CompilerInstance
object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128011 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/FileManager.h
asic/SourceManager.h
asic/TargetInfo.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
ex/Preprocessor.h
05e5930166333e382522b942f00d08abc6c0a28e 21-Mar-2011 Joerg Sonnenberger <joerg@bec.de> Memorize presence/absence of -nostdlib in Driver.
Drop program paths on NetBSD (unused). Only include lib dir, if
-nostdlib is absent. Use = to allow --sysroot to work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127995 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
8ab2bdcc4f397e100c684ede8e8ca6e226e1380a 21-Mar-2011 Joerg Sonnenberger <joerg@bec.de> Remember sysroot in Driver. Pass it down to ld for NetBSD, FreeBSD
and DragonFly. Use the --sysroot= form for Linux. Fix handling of =
prefix for -B.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127994 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
8e02635c9c276720a1e6f926b33303a53cebe9c7 18-Mar-2011 Logan Chien <tzuhsiang.chien@gmail.com> Merge with clang upstream r127869 (Mar 18th 2011)
eedd4670b2eb7e4d67d11b2f26ed1ad304b70596 20-Mar-2011 Francois Pichet <pichet2000@gmail.com> Downgrade err_mismatched_exception_spec to a ExtWarning in Microsoft mode. MSVC doesn't do any validation on exception specifications.

This remove 1 error when parsing MSVC stl lib with clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127961 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ba814e775e1ccaba7c729a651e004d6721e16c01 19-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Initialize FakeAddressSpaceMap flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e5da3e6e5671728007b720bd3afdef3332351358 19-Mar-2011 Anton Yartsev <anton.yartsev@gmail.com> makes vec_step operator work when AltiVec support is enabled

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127949 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
f899af662801ee6bb82be871eb0b8d19b61503ba 19-Mar-2011 Ken Dyck <kd@kendyck.com> Add pre- and post-increment/decrement operators to CharUnits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127937 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
af13d5b25b360e698cc1cf1055ad7d14e008e505 19-Mar-2011 Ted Kremenek <kremenek@apple.com> Rename class 'CFGReachabilityAnalysis' to 'CFGReverseBlockReachabilityAnalysis'.

This rename serves two purposes:

- It reflects the actual functionality of this analysis.
- We will have more than one reachability analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127930 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/CFGReachabilityAnalysis.h
nalysis/AnalysisContext.h
207f4d8543529221932af82836016a2ef066c917 18-Mar-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for language-specific address spaces. On top of that,
add support for the OpenCL __private, __local, __constant and
__global address spaces, as well as the __read_only, _read_write and
__write_only image access specifiers. Patch originally by ARM;
language-specific address space support by myself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127915 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/AddressSpaces.h
asic/LangOptions.h
asic/OpenCL.h
asic/TargetInfo.h
asic/TokenKinds.def
river/CC1Options.td
arse/Parser.h
ema/AttributeList.h
2ed42287b9b88a0bb08ab10e95e306da3f294ba9 18-Mar-2011 Daniel Dunbar <daniel@zuster.org> Lexer: Add extremely limited support for -traditional-cpp, ignoring BCPL
comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
ac0659ae4124156915eddf70e78065df224d34c8 18-Mar-2011 Daniel Dunbar <daniel@zuster.org> Driver: Give SelectTool access to the action inputs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127902 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
7dbafb3ade491a41100c97597209455ee10c537d 18-Mar-2011 Anders Carlsson <andersca@mac.com> Add FileManager::getNoncachedStatValue, which will resolve relative paths against the working directory specified in the file system options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
d6a49bb69fadcb04119433278c808797a87d2d31 18-Mar-2011 Douglas Gregor <dgregor@apple.com> Add an opt-in -Wheader-hygiene, which current diagnoses the use of
global using directives in C++ headers, from Elliot Glaysher!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127881 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
7f0a915eb546d353071be08c8adec155e5d9a0dc 18-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed inconsistency when adding TemplateParameterListsInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127876 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
32096695c76033a6b0b1747c439f7378a11e8312 18-Mar-2011 John McCall <rjmccall@apple.com> The Darwin kernel does not provide useful guard variable support.
Issue this as an IR-gen error; it's not really worthwhile doing this
"right", i.e. in Sema, because IR gen knows a lot of tricks beyond
what the constant evaluator knows.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127854 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
a085da86242c9b8e3466f8cf6f4397e9f248fd20 17-Mar-2011 Richard Smith <richard-llvm@metafoo.co.uk> Fix PR9488: 'auto' type substitution can fail (for instance, if it creates a reference-to-void type). Don't crash if it does.
Also fix an issue where type source information for the resulting type was being lost.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127811 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0a65f946721f1505e5577b1910f3193888696573 17-Mar-2011 Ted Kremenek <kremenek@apple.com> Rename -Wuninitialized-maybe to -Wconditional-uninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
0daaf32723ac78549c507c2a68a5300502703673 16-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Use ElaboratedType also for C.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127755 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
ema/DeclSpec.h
eef7ac5837ef3e0682ac0973121fff8edaa46ca4 16-Mar-2011 Douglas Gregor <dgregor@apple.com> Detect attempts to provide a specialization of a function within a
dependent scope and produce an error (rather than crashing). Fixes PR8979.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3cd0128ce49abe658d1858c541e836e57959e04a 16-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Having FileManager::getFile always open the file, brought much consternation and leaking of file descriptors.

Add 'openFile' bool to FileManager::getFile to specify whether we want to have the file opened or not, have it
false by default, and enable it only in HeaderSearch.cpp where the open+fstat optimization matters.

Fixes rdar://9139899.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
db2eae639d3b7ed61ceb56890b73168517ef57f1 16-Mar-2011 Douglas Gregor <dgregor@apple.com> Clean up our handling of template-ids that resolve down to a single
overload, so that we actually do the resolution for full expressions
and emit more consistent, useful diagnostics. Also fixes an IRGen
crasher, where Sema wouldn't diagnose a resolvable bound member
function template-id used in a full-expression (<rdar://problem/9108698>).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7839febe5839cf42d76b068b1d79400ad366262b 16-Mar-2011 Peter Collingbourne <peter@pcc.me.uk> Remove a duplicate language feature

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127743 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandards.def
b5142bb7af5c70fffd09f05172a1379a35a9c29a 16-Mar-2011 Chandler Carruth <chandlerc@gmail.com> Add a 'RawPath' parameter to the PPCallbacks interface. This allows
clients to observe the exact path through which an #included file was
located. This is very useful when trying to record and replay inclusion
operations without it beind influenced by the aggressive caching done
inside the FileManager to avoid redundant system calls and filesystem
operations.

The work to compute and return this is only done in the presence of
callbacks, so it should have no effect on normal compilation.

Patch by Manuel Klimek.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127742 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/PPCallbacks.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
c9977d09a2de7f7d2245973413d4caf86c736640 16-Mar-2011 Douglas Gregor <dgregor@apple.com> Make sure that we always pop a function's scope *before* we call
ActOnFinishFunctionBody/ActOnBlockStmtExpr. This way, we ensure that
we diagnose undefined labels before the jump-scope checker gets run,
since the jump-scope checker requires (as its invariant) that all of
the GotoStmts be wired up correctly.

Fixes PR9495.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127738 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
250e7a74d5a23db5bd7202ecb0bb4a8fef6016b4 16-Mar-2011 Douglas Gregor <dgregor@apple.com> When we're inserting a synthesized label declaration for a
forward-looking "goto" statement, make sure to insert it *after* the
last declaration in the identifier resolver's declaration chain that
is either outside of the function/block/method's scope or that is
declared in that function/block/method's specific scope. Previously,
we could end up inserting the label ahead of declarations in inner
scopes, confusing C++ name lookup.

Fixes PR9491/<rdar://problem/9140426> and <rdar://problem/9135994>.

Note that the crash-on-invalid PR9495 is *not* fixed. That's a
separate issue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127737 91177308-0d34-0410-b5e6-96231b3b80d8
ema/IdentifierResolver.h
24f4674e697fb53587f0e8485e9c6592f7021ef2 16-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Added missing methods to get Designators source range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
db9e9e61f8311d8852bd15730f78e56f3ffa0508 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Remove warning for null characters in CFString literals. Clang handles them just fine, and GCC 4.2 doesn't warn here either.

We added this warning back in 2007 when we were comparing against GCC 4.0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
99439d474e7cb48497a2da4c35f70cdc1d5b153f 15-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Implement a hack to work around the changing exception specification of operator new in C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127688 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d0956fcaecf3f5b7c5e849ca9a94a4ee2ccbc0e4 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Remove duplicate group definition that snuck in due to a merge conflict.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127671 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
908c09f64e50db64c935255089ffcf4615ca4b0e 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Take 2: merge -Wuninitialized-experimental into -Wuninitialized. Only *must-be-uninitialized* warnings are reported, with *maybe-uninitialized* under a separate flag. I await any fallout/comments/feedback, although hopefully this will produce no noise for users.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127670 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
76709bf816e5e1b70b859bb607cf3ee91db12b76 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Split warnings from -Wuninitialized-experimental into "must-be-initialized" and "may-be-initialized" warnings, each controlled by different flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f7bafc77ba12bb1beb665243a0334cd81e024728 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Split warnings from -Wuninitialized-experimental into "must-be-initialized" and "may-be-initialized" warnings, each controlled by different flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127666 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6f34213f8d6ae8c77685b53664527e39bfaaca3b 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Rename UninitializedValuesV2 to UninitializedValues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127657 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
nalysis/Analyses/UninitializedValuesV2.h
f3f5379f6da7f8f141a53e2945871a5aa5431e02 15-Mar-2011 Ted Kremenek <kremenek@apple.com> Remove old UninitializedValues analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127656 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
7cbc558ffda5877ec4d2e432534e3d3d4ac10050 14-Mar-2011 Douglas Gregor <dgregor@apple.com> When synthesizing a label declaration based on a goto statement that
cannot yet be resolved, be sure to push the new label declaration into
the right place within the identifier chain. Otherwise, name lookup in
C++ gets confused when searching for names that are lexically closer
than the label. Fixes PR9463.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127623 91177308-0d34-0410-b5e6-96231b3b80d8
ema/IdentifierResolver.h
9fc90c1bf7498dc53862156205ab95868b8b849f 14-Mar-2011 Ted Kremenek <kremenek@apple.com> Incorporate source ranges for RangeBugReport when coelescing reports into equivalence classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127604 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
a4fdbfad150ae37bddaa4094d3925a27a1a1cf3f 14-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> Block return type of the initialized must be
be more speciaclized than that of the initializer,
when matching protocol qualifier list.
// rdar:// 9118343.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2e2468e2d2ccbb9a38fe3b6b754009af7e5d39a9 14-Mar-2011 Anders Carlsson <andersca@mac.com> Get rid of the static FileManager::FixupRelativePath.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
d05c2006f2fca763be9680ab673f7c66adbf90a1 13-Mar-2011 Anders Carlsson <andersca@mac.com> Change GetNullarySelector and GetUnarySelector to take a StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8026f6d82f7fa544bc0453714fe94bca62a1196e 13-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Instead of storing an ASTContext* in FunctionProtoTypes with computed noexcept specifiers, unique FunctionProtoTypes with a ContextualFoldingSet, as suggested by John McCall.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/Type.h
90ba78c64d0c24cfbc1bf88728db9775d44d7f9f 12-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> Place duplicate argument declaration in in
method prototypes under the -Wduplicate-method-arg and
turn it off by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
arse/Parser.h
ema/Sema.h
caa35e4bbfccaaa6c4d69f29b3f1a8b544b3645e 12-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Revert "Disable inherited constructors for 2.9."
It is only meant for the release branch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a808c544f9df4d17cb189ba6aa167478cf17ad4a 12-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Disable inherited constructors for 2.9.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
60618fa7f88d5162bb5b40988b6b38d4d75d6fc6 12-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Propagate the new exception information to FunctionProtoType.
Change the interface to expose the new information and deal with the enormous fallout.
Introduce the new ExceptionSpecificationType value EST_DynamicNone to more easily deal with empty throw specifications.
Update the tests for noexcept and fix the various bugs uncovered, such as lack of tentative parsing support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127537 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
asic/ExceptionSpecificationType.h
ema/Sema.h
796aa443ab5ed036f42ef33fed629e1b4b34871b 12-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Forgotten part of previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ema/DeclSpec.h
06dec892b5300b43263d25c5476b506c9d6cfbad 12-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Renamed OffsetOfNode::getRange to getSourceRange for uniformity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127534 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fadb53b351977ca7f99a9a613596cba6531979a3 12-Mar-2011 Douglas Gregor <dgregor@apple.com> Fixes for some more expressions containing function templateids that
should be resolvable, from Faisal Vali!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127521 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6f4596cfb70ec706dd2da38db1be3663c214ff7a 12-Mar-2011 Douglas Gregor <dgregor@apple.com> Implement a hack intended to allow Clang to parse libstdc++ 4.5's
headers, which use C++0x generalized initializer lists. Per PR7069, it
appears that the only use is as the return type of a function, so this
commit enables this extension just in that narrow case. If it's enough
for libstdc++ 4.5, or if it can be trivially extended to work with
libstdc++ 4.5, we'll keep it. Otherwise, or if this breaks anything,
we'll revert and wait for the real feature.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f4f7cb814f8537606754b9eb8848094196e73214 11-Mar-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: if double precision floating point constant encountered
without cl_khr_fp64, warn and cast to single precision

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f4e3cfbe8abd124be6341ef5d714819b4fbd9082 11-Mar-2011 Peter Collingbourne <peter@pcc.me.uk> Add support for the OpenCL vec_step operator, by generalising and
extending the existing support for sizeof and alignof. Original
patch by Guy Benyei.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ST/Expr.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
asic/TokenKinds.def
asic/TypeTraits.h
arse/Parser.h
ema/Sema.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
c57c17dced5fb16a83a2ffb2b7e8c148df69ba5a 10-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Avoid do drop outer template parameter lists on the floor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127404 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0d28d360b5559abda755e50b855ba5e59727d9cd 10-Mar-2011 Ted Kremenek <kremenek@apple.com> When doing reachability analysis for warnings issued under DiagRuntimeBehavior, don't construct a ParentMap or CFGStmtMap.
Instead, create a small set of Stmt* -> CFGBlock* mappings during CFG construction for only the statements we care about
relating to the diagnostics we want to check for reachability.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127396 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
b8ad5ee345fa1fdd1fa9253f2d01f69becc88a04 10-Mar-2011 Ted Kremenek <kremenek@apple.com> Rework interaction between AnalysisContext and CFG::BuildOptions to keep a BuildOptions object around instead of keeping a copy of the flags.

Moreover, change AnalysisContext to use an OwningPtr for created analysis objects instead
of directly managing them.

Finally, add a 'forcedBlkExprs' entry to CFG::BuildOptions that will be used by the
CFGBuilder to force specific expressions to be block-level expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127385 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
975cc644d5d9dafdb4060aa31c9753d0554e1308 10-Mar-2011 Daniel Dunbar <daniel@zuster.org> Revert r127206 "Detect attempts to provide a specialization of a function within
a...", it appears to cause us to reject various valid codes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
61478065fbcafcf5295bb0fb796c9a92f2d861e0 09-Mar-2011 Fariborz Jahanian <fjahanian@apple.com> Lookup selector in protocol list of qualified objc type
to avoid a bogus warning. // rdar:// 9072298



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127355 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b0f4b9a558933b307073f7cd7753602f94354ae9 09-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce '-chain-include' option to specify headers that will be converted to chained PCHs in memory
without having to use multiple runs and intermediate files.

Intended for testing & debugging of chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127339 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
erialization/ASTReader.h
erialization/ChainedIncludesSource.h
ba877adeb49ed6dc17f27fa3a3bcd0cca713fd68 09-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed InnerLocStart.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
02b3774347158753dd72c1bb8a29eb78a16440ab 09-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang/Basic/BuiltinsX86.def: __builtin_ia32_crc32**() should be defined to take unsigned args and to return unsigned value.

mingw-w64's intrin.h declares __builtin_ia32_crc32**() as external.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
86f436f451ce5004b155d1f30495586dba6180b7 09-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> include/clang/Makefile: [PR2928] "make install" may install include files along explicit pattern, not to install CMake's building stuff.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127326 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
27d70656d3ce7c9e030b6dea468cfc96687010d5 09-Mar-2011 Logan Chien <tzuhsiang.chien@gmail.com> Merge with clang upstream (Nov 6th 2011)
eecf5fa12d5426637c47d7072f0c193a8d7ff68b 09-Mar-2011 John McCall <rjmccall@apple.com> Add a bit to ParmVarDecl indicating whether the parameter undergoes
K&R-style default argument promotion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127313 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
299a4a967b02c9f0d0d94ad8560e3ced893f9116 09-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add 'OverridenFilesKeepOriginalName' field in SourceManager which if true the SourceManager
should report the original file name for contents of files that were overriden by other files,
otherwise it should report the name of the new file. Default is true.

Also add similar field in PreprocessorOptions and pass similar parameter in ASTUnit::LoadFromCommandLine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
cf333339615da345c2ed6e873d94a501810d9f3f 09-Mar-2011 Ted Kremenek <kremenek@apple.com> static analyzer: Fix use-after-free bug in RegionStore involving LazyCompoundValueData not reference counting Store objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127288 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/StoreRef.h
b77cab97f17f946744c920629ca17271308d8ebf 08-Mar-2011 Douglas Gregor <dgregor@apple.com> Clarify the context in which an Objective-C type name is being parsed
by using an enumeration rather than a boolean value. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127259 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f52516038ab5d0b1b90a6dd32f46b7d6dabd04c8 08-Mar-2011 Douglas Gregor <dgregor@apple.com> Teach libclang's token-annotation logic about context-sensitive
keywords for Objective-C+ and C++0x.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127253 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/DeclSpec.h
a2026c96d3935e7909e049ad9096762844544ed6 08-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed source range for StaticAssertDecl and LinkageSpecDecl. Fixed source range for declarations using postfix types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ema/Sema.h
acba90f30876b4140b738f0d3dd0e50724053a96 08-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed NamespaceDecl source range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
f2cf562cec11dec926c0a29a71769a27fed02962 08-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed bitfields source range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ff676cb48fe8bf7be2feaa251dc7c5fb15af4730 08-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed source range for all DeclaratorDecl's.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ema/Sema.h
834e3f6c77d9ac03997a3f0c56934edcf406a355 08-Mar-2011 John McCall <rjmccall@apple.com> Fix my earlier commit to work with escaped newlines and leave breadcrumbs
in case we want to make a world where we can check intermediate instantiations
for this kind of breadcrumb.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127221 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
ema/Sema.h
2792fa5115c5de7cbe11d99d23663c569bfb4cae 08-Mar-2011 John McCall <rjmccall@apple.com> objc_gc wants a pointer type, not a function type; give it a more appropriate
diagnostic. Also, these attributes are commonly written with macros which we
actually pre-define, so instead of expanding the macro location, refer to the
instantiation location and name it using the macro loc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
30900dafbe972f4802c2663262b4393edab0d1cd 08-Mar-2011 John McCall <rjmccall@apple.com> Add an API call to retrieve the spelling data of a token from its SourceLocation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127216 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
db93fdee6c5a24e86ee5ed8c1d3b597e17d5893b 08-Mar-2011 Douglas Gregor <dgregor@apple.com> Detect attempts to provide a specialization of a function within a
dependent scope and produce an error (rather than crashing). Fixes PR8979.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127206 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d52e8b821a1a1cc58eec2f8446488566436eacc8 07-Mar-2011 Carl Norum <carl.norum@apple.com> Change diagnostic message from "Extension" to "ExtWarn" to find more problems with missing semicolons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
d97cec3deb6e34f0f9d4f5f8ec11b28e44812727 07-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> g++ is more permissive regarding flexible arrays.
It will accept flexible array in union and also as the sole element of a struct/class.

Fixes rdar://9065507.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127171 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc20945c787a56abe418947fc6a2c520bcec66c0 07-Mar-2011 Douglas Gregor <dgregor@apple.com> Support explicit template specialization and instantiation for members
of a C++0x inline namespace within enclosing namespaces, as noted in
C++0x [namespace.def]p8.

Fixes <rdar://problem/9006349>, a libc++ failure where Clang was
rejected an explicit specialization of std::swap (since libc++ puts it
into an inline, versioned namespace std::__1).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127162 91177308-0d34-0410-b5e6-96231b3b80d8
ema/IdentifierResolver.h
ema/Sema.h
c2f3e7f42c8bf9e8d4393a6e8c4762dafc4f28dd 07-Mar-2011 John McCall <rjmccall@apple.com> The conditional needs to be pushed before the branch. Make the test less
trivial to check this. Adjust for style.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
d47aad92ccfb6c2cf5921f8fefddd7e541dc9bb3 07-Mar-2011 Anders Carlsson <andersca@mac.com> Add a non-static FixupRelativePath to FileManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
65f7165676854bf75494f5b73a620d7237db5d41 07-Mar-2011 Joerg Sonnenberger <joerg@bec.de> Redo part of r127137:
Pass down the correct C->getArgs, but keep it with the original
DerivedArgList type. Slightly adjust the MakeIndex call for the
different base type. This unbreaks the handling of --no-mangle on Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127142 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
e6ec11aa15c7104d57009c6e036bf4ae29c35fb2 07-Mar-2011 Douglas Gregor <dgregor@apple.com> Remove the AST printer (-ast-print-xml), which is too incomplete and
too low-level to actually be useful but is just interesting enough for
people to try to use it (which won't actually work beyond toy examples).

To bring back the AST printer, it needs to be:
- Complete, covering all of C/C++/Objective-C
- Documented, with appropriate Schema against which we can validate
the output
- Designed for C/C++/Objective-C, not Clang's specific ASTs
- Stable across Clang versions
- Well-tested


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127141 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/DeclContextXML.def
rontend/DeclXML.def
rontend/DocumentXML.def
rontend/DocumentXML.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
rontend/StmtXML.def
rontend/TypeXML.def
9ade4ae4fb7ed1fcbd63835d9f8f53052f0657a2 07-Mar-2011 Joerg Sonnenberger <joerg@bec.de> If called as *cpp or *cpp-[^-]*, run only the preprocessor. If no
input is specified, use stdin implicitly. Based on a patch from
Roman Divacky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127137 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
af036a6c25f540a9daf51e721485ae6d0e645bd8 06-Mar-2011 Anders Carlsson <andersca@mac.com> Convert FileManager::FixupRelativePath over to using PathV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127133 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
eff1dbec93999bfc5406eb861efd8add9de23633 06-Mar-2011 Douglas Gregor <dgregor@apple.com> We may fail to map a declaration in a template to its instantiated
declaration because of interesting ordering dependencies while
instantiating a class template or member class thereof. Complain,
rather than asserting (+Asserts) or silently rejecting the code
(-Asserts).

Fixes the crash-on-invalid in PR8965.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
841b238087d6cdb21c2443b7429cb85bd1f9fce2 06-Mar-2011 Douglas Gregor <dgregor@apple.com> Rename the type argument for the iboutletcollection attribute to not
conflict with MinGW headers, from Kirk Beitz!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
c850578dbfa68cf2d2776f59a5cb0009134d970e 06-Mar-2011 Anders Carlsson <andersca@mac.com> Write CXX base specifier offsets for chained ASTs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127126 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
ec356c320a81062b1843f0dbe7fedf29ed947ece 06-Mar-2011 Douglas Gregor <dgregor@apple.com> xpose HeaderSearch::SearchDirs to tools,s, from Paul Holden

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127122 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
a868c3799b739781db325c1bd2c6afd182bc9bd6 06-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Completed source ranges fixes for all classes inheriting from TypeDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127120 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
344577e6b58f42d18dc8118c8903b49a85dc005e 06-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed TypedefDecl and TemplateTypeParameter source range.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
8b5b4099c61a136e9a1714c4d8a593febe942268 06-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Reinstate r127112, "Propagate new-style exception spec information to ExtProtoInfo.", this time with the missing header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/ExceptionSpecificationType.h
ema/DeclSpec.h
708a86690469474f0a8149abca71aa4c62bf9710 06-Mar-2011 NAKAMURA Takumi <geek4civic@gmail.com> Revert r127112, "Propagate new-style exception spec information to ExtProtoInfo."

It seems missing "clang/Basic/ExceptionSpecificationType.h".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/DeclSpec.h
06bfa84588658d721094f383d6950e75100c4c4c 05-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Propagate new-style exception spec information to ExtProtoInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/DeclSpec.h
6e5d319b671dbb0ecf70619834aa23c853d17621 05-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Propagate new-style exception spec information to Declarator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127111 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
6784304db526cde59046d613c4175ce2caf93e44 05-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed LabelDecl source range and cleaned creation code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
c494f77363f057dd8619fec4e885c4f80e3d1b66 05-Mar-2011 Douglas Gregor <dgregor@apple.com> When determining template instantiation arguments within a function
template (not a specialization!), use the "injected" function template
arguments, which correspond to the template parameters of the function
template. This is required when substituting into the default template
parameters of template template parameters within a function template.

Fixes PR9016.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
7acafd032e145dbdbbed9274ca57ec2c86b912bc 05-Mar-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for noexcept specifications.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127086 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/DeclSpec.h
b6ab6c1ca733fda2302a1c5066bdfc6218c89e41 05-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Improved MemberPointerType source locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127085 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
b1c86492f9a9bef01a4567408c22f961bbd604fe 05-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Currently we can only remap a file by creating a MemoryBuffer and replacing the file contents with it.
Allow remapping a file by specifying another filename whose contents should be loaded if the original
file gets loaded. This allows to override files without having to create & load buffers in advance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
15727ddb11405c45372150b5bfb07dbfa4c9960b 05-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce OwnsRemappedFileBuffers field in ASTUnit, indicating whether the ASTUnit should delete the remapped buffers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127051 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
4e43259267f1ca1cab95b40cbd324fb4e75252ac 05-Mar-2011 Nick Lewycky <nicholas@mxc.ca> Give warnings about static initializers of non-integral type their own warning
flag so it can be individually controlled. The new flag is
-Wc++0x-static-nonintegral-init.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cb710a4df50b79659399f0722ea29e90251ea834 04-Mar-2011 Douglas Gregor <dgregor@apple.com> Diagnose destructor templates. Fixes PR7904.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7ec1873d694cf870264694d2b61219a03492bc30 04-Mar-2011 Douglas Gregor <dgregor@apple.com> When clearing a LookupResult structure, clear out the naming class,
too. Fixes PR7900.

While I'm in this area, improve the diagnostic when the type being
destroyed doesn't match either of the types we found.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127041 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Lookup.h
6cd9d4aa13c2145c8b4398453974515b734bfe42 04-Mar-2011 Douglas Gregor <dgregor@apple.com> Teach Sema::ActOnCXXNestedNameSpecifier and Sema::CheckTemplateIdType
to cope with non-type templates by providing appropriate
errors. Previously, we would either assert, crash, or silently build a
dependent type when we shouldn't. Fixes PR9226.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127037 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
9a299e0575ce235f491014627c7267e2d2cd73de 04-Mar-2011 Douglas Gregor <dgregor@apple.com> Make sure to put template parameters into their owning template's
DeclContext once we've created it. This mirrors what we do for
function parameters, where the parameters start out with
translation-unit context and then are adopted by the appropriate
DeclContext when it is created. Also give template parameters public
access and make sure that they don't show up for the purposes of name
lookup.

Fixes PR9400, a regression introduced by r126920, which implemented
substitution of default template arguments provided in template
template parameters (C++ core issue 150).

How on earth could the DeclContext of a template parameter affect the
handling of default template arguments?

I'm so glad you asked! The link is
Sema::getTemplateInstantiationArgs(), which determines the outer
template argument lists that correspond to a given declaration. When
we're instantiating a default template argument for a template
template parameter within the body of a template definition (not it's
instantiation, per core issue 150), we weren't getting any outer
template arguments because the context of the template template
parameter was the translation unit. Now that the context of the
template template parameter is its owning template, we get the
template arguments from the injected-class-name of the owning
template, so substitution works as it should.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
4a85a73466bfb541cd9c7b57a99292a0b6900b9b 04-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed source range for ClassTemplateSpecializationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
77d4ee2bfc90b77ec8b818de985cd4aceeef757b 04-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Improved TemplateTypeParmDecl end location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
8fbb7628e9fc364bbfb65bdf2c2468b0d06a7e5b 04-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed end location of FriendDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
203548ba4b72e7e59320d352afc1eb0b5ab131de 03-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed source range for LabelDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126952 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
55a9637969260ca7eb66011732094b33f049c52a 03-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Removed left brace location from LinkageSpecDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126945 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5f6bcbebedb85ee745cbd9a3ca51ca8c766a6117 03-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed end source location for LinkageSpecDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
21e006e51a7f9889f55f5bc7b3ca8b50d17571ec 03-Mar-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed source range for FileScopeAsmDecl. Others source range fixes will follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
67714230a191bc3c01f33378f34f34ef377991a6 03-Mar-2011 Douglas Gregor <dgregor@apple.com> When we use the default template arguments of a template template
parameter, save the instantiated default template arguments along with
the explicitly-specified template argument list. That way, we prefer
the default template template arguments corresponding to the template
template parameter rather than those of its template template argument.

This addresses the likely direction of C++ core issue 150, and fixes
PR9353/<rdar://problem/9069136>, bringing us closer to the behavior of
EDG and GCC.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126920 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c5aff4497e5bfd7523e00b87560c1a5aa65136cc 03-Mar-2011 Ted Kremenek <kremenek@apple.com> Teach CFGImplicitDtor::getDestructorDecl() about arrays of objects with destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126910 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
0a9beb52baa6c990d45d638a177d9456e650282a 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Force CaseStmt to store its child statements in source-code order,
which is important for libclang's token-annotation and
where's-my-cursor functionality. Fixes <rdar://problem/9004439>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126887 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9c6082fe89c61af697f017aa80937581cc2128d8 02-Mar-2011 Tilmann Scheller <tilmann.scheller@googlemail.com> Revert "Add CC_Win64ThisCall and set it in the necessary places."

This reverts commit 126863.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TargetInfo.h
75e85048e73fcde2ce9d8a48dfdb1220e132eb59 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Fix the source range for a member access expression that includes a
nested-name-specifier and improve the detection of implicit 'this'
bases. Fixes <rdar://problem/8750392>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c9f8f5a726bbb562e4b2d4b19d66e6202dcb2657 02-Mar-2011 Ted Kremenek <kremenek@apple.com> Introduce CFGImplicitDtor::isNoReturn() to query whether a destructor actually returns. Use this for -Wreturn-type to prune false positives reported in PR 6884.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
88d117c2eedd7c5bec57ac983a98d5e12bdd2cc6 02-Mar-2011 Tilmann Scheller <tilmann.scheller@googlemail.com> Add CC_Win64ThisCall and set it in the necessary places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126863 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TargetInfo.h
9151c11836f5fbb36cedfe4d22df7e00e77a1d42 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Kill off TreeTransform::TransformNestedNameSpecifier() in favor of the
source-location-preserving
TreeTransform::TranformNestedNameSpecifierLoc(). No functionality
change: the victim had no callers (that themselves had callers) anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126853 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1d752d7d68359fd8f7701585d4658aa70e129261 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Kill off the TreeTransform::TransformTemplateName overload that has
poor source-location information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126852 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f1fe3759e6e8b1756c514f1181c86bd4b9d1666c 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Fix a thinko found by Craig Silverstein

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b6744efecba58792cce20d2d7b9ee39927c5422e 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into template
template arguments. I believe that this is the last place in the AST
where we were storing a source range for a nested-name-specifier
rather than a proper nested-name-specifier location structure. (Yay!)

There is still a lot of cleanup to do in the TreeTransform, which
doesn't take advantage of nested-name-specifiers with source-location
information everywhere it could.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126844 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
46bb4f1a3ac9517406887939612eb8df4b7be006 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Eliminate some unused getQualifierRange() member functions. We deal in nested-name-specifier locations now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126842 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
bdc49d360f98c1194d50b8bbb24885bf8d4c1ac4 02-Mar-2011 John McCall <rjmccall@apple.com> Pretty up the wrong-number-of-arguments-for-attribute diagnostic by
using a custom plural form. Split out the range diagnostics as their
own message.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126840 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d5313b0bbf3948fe7c63bf46a7da330c96d07309 02-Mar-2011 John McCall <rjmccall@apple.com> Provide an attribute, objc_method_family, to allow the inferred family
of an Objective-C method to be overridden on a case-by-case basis. This
is a higher-level tool than ns_returns_retained &c.; it lets users specify
that not only does a method have different retain/release semantics, but
that it semantically acts differently than one might assume from its name.
This in turn is quite useful to static analysis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126839 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
0ae927bdef0d0bd2838e8274938fac8aaa9035ee 02-Mar-2011 John McCall <rjmccall@apple.com> Split out a subgroup of -Wconversion called -Wsign-conversion. Note that
unlike GCC, this is simply a subset of -Wconversion in all languages; it
is not disabled by defualt in C++.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126836 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
21cf9770acb9de06c54289b9266f5948ae6592ab 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Re-work the handling of implicit 'this' arguments and silly GCC-style attribute argument indexes. This handles the offsets in a consistent manner for all of the attributes which I saw working with these concepts. I've also added tests for the attribute that motivated this: nonnull."
e05b5fd8bef9f2ee1379bbf1b94abde2c89da685 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Improve diagnostic for calling non-const method on const object. Fixes rdar://7743000"
ec9d42ee77dd46c7c3f33f256252a5eb3592615e 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Handle member initializer in C++ ctor. - Add a new Kind of ProgramPoint: PostInitializer. - Still use GRStmtNodeBuilder. But special handling PostInitializer in GRStmtNodeBuilder::GenerateAutoTransition(). - Someday we should clean up the interface of GRStmtNodeBuilder."
7c6e01a5715d9d517a45ca06b339e9c50f4cbfcb 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Have CXXDeleteExpr::getDestroyedType return the actual destroyed type in more situations. In particular, for code like"
e52e3c3380a571d449422ead558337abe0b4b70f 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Kill CK_Unknown and flesh out the documentation for the existing CastKinds."
751c539902cbabe6767371770cce8a54d85e9082 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Kill off the remaining places which generate CK_Unknown casts."
30aaf442cd6161653c1bdd440a0fa87ea0378ab5 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add an ExternalASTSource hook to complete a type on demand."
c043b86e565d76f0119c4b214d37fe64115ce212 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add support for "neon_vector_type" and "neon_polyvector_type" attributes to create the special Neon vector types. These are intended to be used in Clang's version of <arm_neon.h> to define special Neon vector types that will be mangled according to ARM's ABI."
c0cf3da593547ff937874d393899bd08d66786ad 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add another case to the whitelist of cast kinds that can convert to bool. Fixes PR8608."
db1c88bbdd8ab80940d40b65ff1b3f9ca2629f5f 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add a new expression kind, OpaqueValueExpr, which is useful for certain internal type-checking procedures as well as for representing certain implicitly-generated operations. Uses to follow."
1baa0f1eb1250a4d6c1b3da7ec99c6e6b91f9fc3 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add method ParentMap::addStmt()."
ca34b8f06d560b4f604934d57b2ad311c4228e32 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Assorted work leading towards the elimination of CK_Unknown."
9430f69c3790702dcbac2828c63c706a8b993e4d 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add skeleton for handling other kinds of CFGElements."
c8e86ec41fe0584c2957a1e6fd5e2d1e2fed48e2 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Revert r119045. It was failing on Windows."
ab2dac4023e636fcbc79ac6b38a4afa6953389b4 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Clean up initialization of LangOptions object by splitting part of it into a parent class 'LangOptionsBase' that default initializes all flags to 0. Now the ctor of LangOptions only initializes the flags that might be non-zero (significantly simplifying things)."
fc5395a116a4e92548f99875f5d82786c5ff82ba 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add a few more complex-related cast kinds that arise due to arbitrary implicit conversions; the last batch was specific to promotions. I think this is the full set we need. I do think dividing the cast kinds into floating and integral is probably a good idea."
9a9a3b6a98739e8a34cab6f3ba8dae36cfbedfaf 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "When complaining about ambiguous overload resolution for a unary or binary operator, provide the types."
38cf267adf22762494a72c82791a491f4ecb6db3 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Introduce five new cast kinds for various conversions into and between complex types."
7f10664133668045bf1bd7143b9cba7ffabc07f7 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Bring UsualArithmeticConversionsType back into Sema and cast the operands appropriately. There are a lot of missing complex-related cast kinds."
12823719d22e279719fd65410dd914c85ed84743 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add GRWorkList::VisitItemsInWorkList() to allow a client to introspect the contents of a worklist. This API required changing the BFS worklist to use a deque instead of a queue, but that is better for performance reasons anyway."
1472d24d9345f42fb9b4ddee26126599acde930f 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Introduce a null-to-pointer implicit cast kind."
cfe5a0619ec52cf5d0e4420314f0e3d4cba73679 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Generalize ASTContext::areCompatibleVectorTypes to handle new Neon vector types."
3c8dec3136c81c69094121b9890b7f443e4d5c56 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Increase VectorTypeBitfields::VecKind field from 2 to 3 bits. With the addition of 2 enum values for Neon vectors, this field must now hold 6 different values and so requires 3 bits. Make the NumElements field one bit smaller to compensate."
2c66aff116466318cc5959b55130cf54cc123578 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add a separate NeonPolyVector kind to distinguish polynomial vector types. Add support for mangling those types according to ARM's ABI."
377e99a861ca177cf1202cb4cb4e0210f12f1ec6 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "API enhancements to TypeLocBuilder."
5ecb0486de7ec68e806c3904727ef9080dbe2c03 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Make sure to always check the result of SourceManager::getPresumedLoc(), so that we don't try to make use of an invalid presumed location. Doing so can cause crashes."
9bcfacde28f00ff228afdad16189325074b42897 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Fix use of an uninitialized SourceLocation because DeclarationNameLoc failed to completely zero-initialize itself. Now we explicitly memset all of its values."
af3528825deebc581048e7c1a3f273fe2a8dc50a 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Remove some unnecessary reinterpret_cast."
a8708b28645ae32fbbc67bd9e9b44f6669fde3e1 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Extend the bitfield-truncation warning to initializations. rdar://problem/8652606"
8a73224f8ec3c2a7e9804643cf0b72dda027c540 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Improve ASTUnit's capture of diagnostics so that the diagnostic-capturing client lives as long as the ASTUnit itself does. Otherwise, we can end up with crashes when we get a diagnostic outside of parsing/code completion. The circumstances under which this happen are really hard to reproduce, because a file needs to change from under us."
026ae918949e2b3a1eddb04a534b72ed50621830 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Add a variant of GCC-style vector types for ARM NEON. NEON vector types need to be mangled in a special way to comply with ARM's ABI, similar to some of the AltiVec-specific vector types. This patch is mostly just renaming a bunch of "AltiVecSpecific" things, since they will no longer be specific to AltiVec. Besides that, it just adds the new "NeonVector" enum."
a552d061088897329a579c322f445af73a54c96b 02-Mar-2011 Shih-wei Liao <sliao@google.com> Merge "Instantiate class member template partial specialization declarations in the order they occur within the class template, delaying out-of-line member template partial specializations until after the class has been fully instantiated. This fixes a regression introduced by r118454 (itself a fix for PR8001)."
eca5d22c16eb784e5f35ca816fa22e0c0e060417 02-Mar-2011 John McCall <rjmccall@apple.com> Support a new InheritableAttr subclass, InheritableParamAttr, which is
used for attributes that are okay to inherit when written on a parameter.
Dependent on LLVM r126827.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/AttrKinds.h
ema/Sema.h
406f98f6a5a7bde5707085af8d66204e7e76af45 02-Mar-2011 Douglas Gregor <dgregor@apple.com> When we're substituting into a parameter-type-list nested inside the pattern
of an expansion, and we have a paramameter that is not a parameter
pack, don't suppress substitution of parameter packs within this
context.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126819 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
85f3d76c0ecfdefcf83ea44a57b7a16119c8a045 02-Mar-2011 John McCall <rjmccall@apple.com> Move some of the logic about classifying Objective-C methods into
conventional categories into Basic and AST. Update the self-init checker
to use this logic; CFRefCountChecker is complicated enough that I didn't
want to touch it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExprObjC.h
nalysis/DomainSpecific/CocoaConventions.h
asic/IdentifierTable.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
059101f922de6eb765601459925f4c8914420b23 02-Mar-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source-location information into dependent
template specialization types. This also required some parser tweaks,
since we were losing track of the nested-name-specifier's source
location information in several places in the parser. Other notable
changes this required:

- Sema::ActOnTagTemplateIdType now type-checks and forms the
appropriate type nodes (+ source-location information) for an
elaborated-type-specifier ending in a template-id. Previously, we
used a combination of ActOnTemplateIdType and
ActOnTagTemplateIdType that resulted in an ElaboratedType wrapped
around a DependentTemplateSpecializationType, which duplicated the
keyword ("class", "struct", etc.) and nested-name-specifier
storage.

- Sema::ActOnTemplateIdType now gets a nested-name-specifier, which
it places into the returned type-source location information.

- Sema::ActOnDependentTag now creates types with source-location
information.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126808 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/ParsedTemplate.h
ema/Sema.h
94fdffa4a572fc14ac296f5f1aae9db3734c72f1 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source-location information into dependent
template specialization types. There are still a few rough edges to
clean up with some of the parser actions dropping
nested-name-specifiers too early.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
bbe8e3eff56ac1d79f3668d706536e3cebe28c18 01-Mar-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Be bug compatible with GCC and ignore -pg on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126767 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
3aea4dac830cb03d883a13ab30c28a3a53beca58 01-Mar-2011 Ted Kremenek <kremenek@apple.com> For C++, enhance -Warray-bounds to recursively analyze array subscript accesses in ?: expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126766 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9e876876afc13aa671cc11a17c19907c599b9ab9 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Reinstate the introduction of source-location information for
nested-name-speciciers within elaborated type names, e.g.,

enum clang::NestedNameSpecifier::SpecifierKind

Fixes in this iteration include:

(1) Compute the type-source range properly for a dependent template
specialization type that starts with "template template-id ::", as
in a member access expression

dep->template f<T>::f()

This is a latent bug I triggered with this change (because now we're
checking the computed source ranges for dependent template
specialization types). But the real problem was...

(2) Make sure to set the qualifier range on a dependent template
specialization type appropriately. This will go away once we push
nested-name-specifier locations into dependent template
specialization types, but it was the source of the
valgrind errors on the buildbots.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126765 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ema/Sema.h
cfe9af250f466e7e38becea4428990448ae07737 01-Mar-2011 Roman Divacky <rdivacky@freebsd.org> Implement -mrtd which sets the StdCall calling convention to be the default
one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
2786864406af0f3ec65b300675c6f3c809c22fd7 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Revert r126748, my second attempt at nested-name-specifier source
location information for elaborated types. *sigh*


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ema/Sema.h
be38c5f5d8fa7c43c52fafddee054b8fe8c2b964 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Reinstate r126737, extending the generation of type-source location
information for qualifier type names throughout the parser to address
several problems.

The commit message from r126737:

Push nested-name-specifier source location information into elaborated
name types, e.g., "enum clang::NestedNameSpecifier::SpecifierKind".

Aside from the normal changes, this also required some tweaks to the
parser. Essentially, when we're looking at a type name (via
getTypeName()) specifically for the purpose of creating an annotation
token, we pass down the flag that asks for full type-source location
information to be stored within the returned type. That way, we retain
source-location information involving nested-name-specifiers rather
than trying to reconstruct that information later, long after it's
been lost in the parser.

With this change, test/Index/recursive-cxx-member-calls.cpp is showing
much improved results again, since that code has lots of
nested-name-specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ema/Sema.h
44cd9f9d686dfdb9ad16113c41c2dca1da35a646 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Revert r126737, the most recent nested-name-specifier location change, for buildbot breakage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ema/Sema.h
3c0349e87cdbd7316d06d2411d86ee1086e717a5 01-Mar-2011 Ted Kremenek <kremenek@apple.com> In preparation for fixing PR 6884, rework CFGElement to have getAs<> return pointers instead of fresh CFGElements.

- Also, consoldiate getDtorKind() and getKind() into one "kind".
- Add empty getDestructorDecl() method to CFGImplicitDtor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126738 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
239cbb023c8da689e7722f7146914eed9755e368 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into elaborated
name types, e.g., "enum clang::NestedNameSpecifier::SpecifierKind".

Aside from the normal changes, this also required some tweaks to the
parser. Essentially, when we're looking at a type name (via
getTypeName()) specifically for the purpose of creating an annotation
token, we pass down the flag that asks for full type-source location
information to be stored within the returned type. That way, we retain
source-location information involving nested-name-specifiers rather
than trying to reconstruct that information later, long after it's
been lost in the parser.

With this change, test/Index/recursive-cxx-member-calls.cpp is showing
much improved results again, since that code has lots of
nested-name-specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ema/Sema.h
25a792b0361d80337c75a14320f5be1b210066dc 01-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove SVal::getAsVarDecl() and reason about MemRegions, not Decls. Suggestion by Ted!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126734 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
2494dd024b392b8def58bf067cc94b51c214cf77 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into
DependentNameTypeLoc. Teach the recursive AST visitor and libclang how to
walk DependentNameTypeLoc nodes.

Also, teach libclang about TypedefDecl source ranges, so that we get
those. The massive churn in test/Index/recursive-cxx-member-calls.cpp
is a good thing: we're annotating a lot more of this test correctly
now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TypeLoc.h
ec8605f1d7ec846dbf51047bfd5c56d32d1ff91c 01-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Rename CheckerV2 -> Checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126726 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/Checker.h
taticAnalyzer/Core/CheckerV2.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/GRState.h
d26a475068535834bbebd87f429ec773d6227e41 01-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove Checker V1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126725 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Checker.h
taticAnalyzer/Core/PathSensitive/CheckerVisitor.def
taticAnalyzer/Core/PathSensitive/CheckerVisitor.h
eb48bd1dd4168ab206a330bf523659170291a6a0 01-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove checker V1 registration and running from ExprEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126724 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExprEngine.h
9f8862aa64300ef97b8fe85034ee93bbc03e3b7b 01-Mar-2011 Zhanyong Wan <wan@google.com> Improves the coding style in SValBuilder. This patch:

- renames evalCastNL and evalCastL to evalCastFromNonLoc and
evalCastFromLoc (avoid abbreviations that aren't well known).

- makes all function parameter names start with a lower case letter
for consistency and distinction from member variables.

- avoids abbreviations in function parameter names.

Reviewed by kremenek@apple.com.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126722 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
2cb4222338669a3e70b546ef264fbd5d3f96aef5 01-Mar-2011 Chris Lattner <sabre@nondot.org> -fwrapv should turn off the inbounds markers from geps used for pointer
arithmetic. This is part of PR9256, it would be great if someone else
wired up -fno-strict-overflow in the driver to -fwrapv.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
5f791bb44417ecc201ed57a85d0fe02001d8a615 01-Mar-2011 Douglas Gregor <dgregor@apple.com> Refactor the construction of nested-name-specifiers with
source-location information into a NestedNameSpecifierLocBuilder
class, which lives within the AST library and centralize all knowledge
of the format of nested-name-specifier location information here.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ema/DeclSpec.h
e29425bd22fbb9200bbec7b743197b9c6dad3e40 28-Feb-2011 Douglas Gregor <dgregor@apple.com> Teach Sema::CheckTypenameType to use nested-name-specifiers with
source-location information. We don't actually preserve this
information in any of the resulting TypeLocs (yet), so it doesn't
matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126693 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
40d96a69c0e1e8c10f92d450c305a7aae696ca9c 28-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier location information into DeclRefExpr and
MemberExpr, the last of the expressions with qualifiers!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126688 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
4c9be89bb615ec07eb3ed507c8fa9d0baa8a5ad7 28-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into
UnresolvedLookupExpr and UnresolvedMemberExpr.

Also, improve the computation that checks whether the base of a member
expression (either unresolved or dependent-scoped) is implicit. The
previous check didn't cover all of the cases we use in our
representation, which threw off source-location information for these
expressions (which, in turn, caused some breakage in libclang's token
annotation).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
c4d2c9074be6eb2091086eddd6c8f052f3b245c8 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126676 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
rontend/AnalyzerOptions.h
d655ab28fdf7c940d3f79f8f287954d7f76e0977 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Run the ExprEngine depending on the CheckerManager having path-sensitive checkers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126674 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
344500e3b78b95e2d911f45a64c5364d346ba799 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] The current UninitializedValuesChecker will go away, remove '-warn-uninit-values'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126673 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
a07992bb4a2c1d21ed7e4376fa6e79342be0fd18 28-Feb-2011 Douglas Gregor <dgregor@apple.com> Remove redundant friend declaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
7c3179cf463c3b3b8c21dbb955f933ba50b74f28 28-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into
CXXDependentScopeMemberExpr, and clean up instantiation of
nested-name-specifiers with dependent template specialization types in
the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
b3d74da3e1620c9a7a378afb5f244e4987e6713e 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate NSErrorChecker and DereferenceChecker to CheckerV2.

They cooperate in that NSErrorChecker listens for ImplicitNullDerefEvent events that
DereferenceChecker can dispatch.
ImplicitNullDerefEvent is when we dereferenced a location that may be null.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126659 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerV2.h
deb6447d0029bdb122397fafb5fa2a4e76f2e555 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Introduce "event" mechanism in CheckerManager.

A checker can register as receiver/listener of "events" (basically it registers a callback
with a function getting called with an argument of the event type) and other checkers can
register as "dispatchers" and can pass an event object to all the listeners.
This allows cooperation amongst checkers but with very loose coupling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126658 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
c304d9058ad69ff1fcbc6d19ca0be91acfa243a2 28-Feb-2011 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev:
* Add default implementations (no-op) for ExternalASTSource's pure virtual functions. There are valid use cases that can live with these defaults.
* Move ExternalASTSource's out of line implementations into separate source file.
* Whitespace, forward decl, #include cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
84021556baceb76eedf7d44be8ba71d9b8cfacce 28-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Rename tok::eom to tok::eod.

The previous name was inaccurate as this token in fact appears at
the end of every preprocessing directive, not just macro definitions.
No functionality change, except for a diagnostic tweak.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/TokenKinds.def
ex/Preprocessor.h
ex/PreprocessorLexer.h
15348aeb81285c75b2e92b5bf8d2db3445d147c2 28-Feb-2011 Anders Carlsson <andersca@mac.com> Add a -fcxx-exceptions flag to the frontend, which can be used to enable
C++ exceptions, even when exceptions have been turned off using -fno-exceptions.
Make the -fobjc-exceptions flag do the same thing, but for Objective-C exceptions.

C++ and Objective-C exceptions can also be disabled using -fno-cxx-excptions and
-fno-objc-exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126630 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d3bf3c0287a057eafe4b5d5588ebbb29f40ab6e1 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Introduce SVal::getAsVarDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126627 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SVals.h
cc05d511b26ac6dc80fcbcc78ac305d2755aa0b9 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate UndefBranchChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126616 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
05357018b2e5e66559ad0ce2147dc1db9af42b9d 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate ArrayBoundCheckerV2 to CheckerV2.

Turns -analyzer-check-buffer-overflows into -analyzer-checker=core.experimental.Overflow

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126609 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
58f2e7c3c3860e410fa3d8252862ef10be7cdc70 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Turn -analyzer-stats into -analyzer-checker=debug.Stats

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126608 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
6dd4dffe1090e820e9b5b25eee8ad3907a1aa679 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove '-analyzer-experimental-checks' flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126607 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Checkers/LocalCheckers.h
312dbec867f6b8d6b86fd562c53352cd4db27468 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate MallocChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126606 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
3fe71f445f76003649b5da24209e80225a7ee74f 28-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Have CheckerManager::registerChecker return a pointer to the checker object and
only allow a checker to be registered once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126605 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
7a17851eee37f933eb57a5af7e1a0eb455443f6a 28-Feb-2011 Anders Carlsson <andersca@mac.com> Get rid of the areExceptionsEnabled() getter from LangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
702e5474f570d0b83db9f354619b8ac5bc8ed743 28-Feb-2011 Chris Lattner <sabre@nondot.org> add a const version of this accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
aa2187de137e5b809dcbbe14f3b61ae907a3d8aa 28-Feb-2011 Douglas Gregor <dgregor@apple.com> When we encounter a dependent template name within a
nested-name-specifier, e.g.,

T::template apply<U>::

represent the dependent template name specialization as a
DependentTemplateSpecializationType, rather than a
TemplateSpecializationType with a dependent TemplateName.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126593 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a02411e4d58b1730bea2a990822858ecc31e8eb1 27-Feb-2011 Douglas Gregor <dgregor@apple.com> Eliminate a silly little Parse/Sema dance when parsing typename
specifiers such as

typename T::template apply<U>

Previously, we would turn T::template apply<U> into a
TemplateSpecializationType. Then, we'd reprocess that
TemplateSpecializationType and turn it into either a
TemplateSpecializationType wrapped in an ElaboratedType (when we could
resolve "apply" to a template declaration) or a
DependentTemplateSpecializationType. We now produce the same ASTs but
without generating the intermediate TemplateSpecializationType.

The end goal here is to avoid generating TemplateSpecializationTypes
with dependent template-names, ever. We're not there yet.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126589 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
053ec969e3023e4b4a666546476ff74e6bfdfd9a 27-Feb-2011 Logan <tzuhsiang.chien@gmail.com> Merge with clang upstream Nov 10th 2010.
4171766318a2564fbc9a739be0a2851f441c0d29 26-Feb-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement delegating constructors partially.

This successfully performs constructor lookup and verifies that a
delegating initializer is the only initializer present.

This does not perform loop detection in the initialization, but it also
doesn't codegen delegating constructors at all, so this won't cause
runtime infinite loops yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Initialization.h
ema/Sema.h
8e10f3b9cc1db43645bbc2999eb163af8997d468 26-Feb-2011 John McCall <rjmccall@apple.com> Provide a bit saying that a builtin undergoes custom type-checking, then
don't let calls to such functions go down the normal type-checking path.
Test this out with __builtin_classify_type and __builtin_constant_p.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126539 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
bfdfb5a4119e1c2b173be5d0ca8a91d8c246698f 25-Feb-2011 Matt Beaumont-Gay <matthewbg@google.com> ASTStmtReader is already a friend of DependentScopeDeclRefExpr, and GCC
doesn't like re-friending.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126524 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
5e24f2a4ad3a3623349f058e99c7c71e1c8d705f 25-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Sprinkle optional text of the "unavailable' attribute
where ever such attribute causes an error diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
00cf3cc2718671aa48e8da264a523b0058a8591e 25-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into
DependentScopeDeclRefExpr. Plus, give NestedNameSpecifierLoc == and !=
operators, since we're going to need 'em elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/RecursiveASTVisitor.h
25ca421a6049350a2748c8fd0c19a052eba6ae99 25-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Remove the FIXME I introduced last night, and pull the logic for
marking selected overloads into the callers. This allows a few callers
to skip it altogether (they would have anyways because they weren't
interested in successful overloads) or defer until after further checks
take place much like the check required for PR9323 to avoid marking
unused copy constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126503 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
2b982b778d265c337af5d1b4c74ce49479cbda7d 25-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Print optional message for attr(unavailable) in C++ mode.
// rdar://9046492


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f3db29fff6a583ecda823cf909ab7737d8d30129 25-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source-location information into
pseudo-destructor expressions. Also, clean up some
template-instantiation and type-checking issues with
pseudo-destructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
0cfaf6a270ecd0f5c7e541a8047c87948317548b 25-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into namespace
aliases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126496 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
db9924191092b4d426cc066637d81698211846aa 25-Feb-2011 Douglas Gregor <dgregor@apple.com> Push nested-name-specifier source location information into using directives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecursiveASTVisitor.h
30028234f38945981ebf9c8a2cb915fc2f9a63a4 25-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Rough fix for PR9323 that prevents Clang from marking copy constructor
declarations as referenced when in fact we're not going to even form
a call in the AST. This is significant because we attempt to allow as an
extension classes with intentionally private and undefined copy
constructors to have temporaries bound to references, and so shouldn't
warn about the lack of definition for that copy constructor when the
class is internal.

Doug, John wasn't really satisfied with the presence of overloading at
all. This is a stop-gap and there may be a better solution. If you can
give me some hints for how you'd prefer to see this solved, I'll happily
switch things over.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126480 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
79ac241f0b4b5a653adb7e07292d7b00c5cb92ff 25-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Give this warning a flag that can be used to turn it off in old, crufty,
legacy code that contains dead code paths referring to such
declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126478 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c22b5fff39a7520207f165fb16a27a34b944bd9c 25-Feb-2011 Douglas Gregor <dgregor@apple.com> Use NestedNameSpecifierLoc within out-of-line variables, function, and
tag definitions. Also, add support for template instantiation of
NestedNameSpecifierLocs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
ST/Decl.h
ST/NestedNameSpecifier.h
ema/DeclSpec.h
ema/Sema.h
7decebfc7b9dc841f228c93cc2e41e3e62911ff8 25-Feb-2011 Ted Kremenek <kremenek@apple.com> Teach TextDiagnosticPrinter to print out '-Werror' in addition to the warning flag for a warning mapped to an error.

For example:

t.c:7:9: error: using the result of an assignment as a condition without parentheses [-Werror,-Wparentheses]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126466 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
dc355713be51fcb4ee52d9fd6b4548ceff47fadf 25-Feb-2011 Douglas Gregor <dgregor@apple.com> Update UsingDecl, UnresolvedUsingTypenameDecl, and
UnresolvedUsingValueDecl to use NestedNameSpecifierLoc rather than the
extremely-lossy NestedNameSpecifier/SourceRange pair it used to use,
improving source-location information.

Various infrastructure updates to support NestedNameSpecifierLoc:
- AST/PCH (de-)serialization
- Recursive AST visitor
- libclang traversal (including the first tests of this
functionality)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126459 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/NestedNameSpecifier.h
ST/RecursiveASTVisitor.h
rontend/DeclXML.def
erialization/ASTReader.h
erialization/ASTWriter.h
116f3640daee424dfcdbe55e80be5a67476be4b0 25-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Intoduce '-analyzer-checker-help' flag which outputs a list of all available static analyzer checkers.

This is pretty basic for now, eventually checkers should be grouped according to package, hidden checkers should be indicated etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126454 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Core/CheckerProvider.h
taticAnalyzer/Frontend/FrontendActions.h
65d39251ff57b8e33cf6d3a7fcc6aa1c6f8cdc68 24-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove '-analyzer-experimental-internal-checks' flag, it doesn't have any checkers associated with it anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126440 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Checkers/LocalCheckers.h
c34348a7ef1a6b3f92a644a227953800cd1f9947 24-Feb-2011 Douglas Gregor <dgregor@apple.com> Retain complete source-location information for C++
nested-name-specifiers throughout the parser, and provide a new class
(NestedNameSpecifierLoc) that contains a nested-name-specifier along
with its type-source information.

Right now, this information is completely useless, because we don't
actually store the source-location information anywhere in the
AST. Call this Step 1/N.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ema/DeclSpec.h
ema/ParsedTemplate.h
ema/Sema.h
5fa05cb906e9ddd34ef2ae2a872014aeaf4bc04d 24-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Simplify messages as requested by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126389 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f8291a190cc6765630312911f441d9e23564eda2 24-Feb-2011 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev:
Add an interface for last resort, unqualified lookup. It can provide results for unqualified lookup when Sema fails to find anything itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126387 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
8be5b3aced37e1c7728741c60d47011f11649a58 24-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate ArrayBoundChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126371 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CheckerContext.h
9c0d6891b3ec4b0d20b8a295946c0dc5426d147c 24-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Don't pass a GRState to CheckerManager::runCheckersForLocation, terrible mistake.

If the state is new, make sure an ExplodedNode is associated with it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126370 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
14aba76042e041b2c5e439bf4ae353a0a3c7fd73 24-Feb-2011 Douglas Gregor <dgregor@apple.com> Teach NestedNameSpecifier to keep track of namespace aliases the same
way it keeps track of namespaces. Previously, we would map from the
namespace alias to its underlying namespace when building a
nested-name-specifier, losing source information in the process.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126358 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ST/RecursiveASTVisitor.h
ema/DeclSpec.h
64be13795a9b5b25de6b151551a2f5ef2bab353c 24-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove unused functions from CheckerManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126352 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
183ff98f425d470c2a0276880aaf43496c9dad14 24-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate CStringChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126350 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
9ddba32f25c0315cd3a6c7b63e0275b27cc1d973 24-Feb-2011 Douglas Gregor <dgregor@apple.com> Tweak the CXXScopeSpec API a bit, so that we require the
nested-name-specifier and source range to be set at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126347 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
2e4c34ac53d08633b9473df921db4c7e4c9cd577 24-Feb-2011 Douglas Gregor <dgregor@apple.com> Teach CXXScopeSpec to handle the extension of a nested-name-specifier
with another component in the nested-name-specifiers, updating its
representation (a NestedNameSpecifier) and source-location information
(currently a SourceRange) simultaneously. This is groundwork for
adding source-location information to nested-name-specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126346 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
ema/Sema.h
21206d5e3167d5e8066c005c1773afc80ff50ae6 24-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Implement a warning for known shift overflows on constant shift
expressions. Consider the code:

int64_t i = 10 << 30;

This compiles fine, but most developers expect it to produce the value
for 10 gigs, not -2 gigs. This is actually undefined behavior because
the LHS is a signed integer type.

The warning is currently gated behind -Wshift-overflow.

There is a special case where only the sign bit is overridden that gets
a custom error message and is by default ignored. This case is much less
likely to cause observed buggy behavior, it's just undefined behavior
according to the spec. This warning can be enabled with
-Wshift-sign-overflow.

Original patch by Oleg Slezberg, with style tweaks and some correctness
fixes by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126342 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
277a6e752512cff286190d35cb353ce717e86b18 23-Feb-2011 Nick Lewycky <nicholas@mxc.ca> Preserve what the user passed to -include when emitting .d files. Fixes PR8974!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126334 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
erialization/ASTReader.h
af5800a1e287990bb547e052f257adeeae5ab476 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate StackAddrLeakChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126333 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
f178ac8b68b29e44867777232ba8fee59edc4037 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Refactor EndOfFunctionNodeBuilder.

-Introduce EndOfFunctionNodeBuilder::withCheckerTag to allow it be "specialized" with a
checker tag and not require the checkers to pass a tag.
-For EndOfFunctionNodeBuilder::generateNode, reverse the order of tag/P parameters since
there are actual calls that assume the second parameter is ExplodedNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126332 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/CoreEngine.h
cd50e136ad7dc721822f5e6350769a37c216612d 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] const goodness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126326 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
e1bfb7ae0dd0762c88e1fd94746e973c37f2e04e 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate ChrootChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126324 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
2ea40c0db7d6e281fad49f8c34335ef04c5b9b84 23-Feb-2011 Matt Beaumont-Gay <matthewbg@google.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d067c07c6cbf099b25aba38bcb66f38e79d0c420 23-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Fix the behavior of -Wignored-qualifiers on return type qualifiers in
several ways. We now warn for more of the return types, and correctly
locate the ignored ones. Also adds fix-it hints to remove the ignored
qualifiers. Fixes much of PR9058, although not all of it.

Patch by Hans Wennborg, a couple of minor style tweaks from me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126321 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
30726c6baee1417307236e854f1474fdb3cedb98 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Migrate UnreachableCodeChecker to CheckerV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126308 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
2e471a3e476396be1ddca4ab8b9df721bcfc9437 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Add LangOptions in CheckerManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126306 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Frontend/CheckerRegistration.h
0761e44550f094633bbe7fd4ae1d79ec456fca69 23-Feb-2011 Anders Carlsson <andersca@mac.com> Add a -fcxx-exceptions flag to clang -cc1. This controls the newly added CXXExceptions flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126300 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
7da99b05aa9482e76b2954223b5652469004aec2 23-Feb-2011 Anders Carlsson <andersca@mac.com> Add a CXXExceptions flag to LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126299 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
79c42c88efa708d03caa109e3e2ec57a2e6abebe 23-Feb-2011 Ted Kremenek <kremenek@apple.com> Add doxygen comments to Sema::DiagRuntimeBehavior().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126296 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0423fc6149c9f11e8892ed903a5b68133797fba5 23-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Sema: diagnose kernel calls to non-global functions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126292 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
351ba91eaa6d30e523587b2d7ed676a5172c6e56 23-Feb-2011 Ted Kremenek <kremenek@apple.com> Enhance Sema::DiagRuntimeBehavior() to delay some diagnostics to see if the related code is reachable. This suppresses some
diagnostics that occur in unreachable code (e.g., -Warray-bound).

We only pay the cost of doing the reachability analysis when we issue one of these diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
ema/ScopeInfo.h
42461eecee98fff3671b3c14ce10f1a9e18cc95c 23-Feb-2011 Ted Kremenek <kremenek@apple.com> Migrate CFGReachabilityAnalysis out of the IdempotentOperationsChecker and into its own analysis file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126289 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/CFGReachabilityAnalysis.h
nalysis/AnalysisContext.h
283a358aecb75e30fcd486f2206f6c03c5e7f11d 23-Feb-2011 Ted Kremenek <kremenek@apple.com> Have IdempotentOperationsChecker pull its CFGStmtMap from AnalysisContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126288 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
ema/AnalysisBasedWarnings.h
3ed6fc08a9cd293d012fa49ab2a615e618d7c3fa 23-Feb-2011 Ted Kremenek <kremenek@apple.com> Issue AnalysisBasedWarnings as part of calling Sema::PopBlockOrFunctionScope(). No real functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126287 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
ema/Sema.h
762696fff298627b72b63dbb0becf57f689801ca 23-Feb-2011 Ted Kremenek <kremenek@apple.com> Update Sema::DiagRuntimeBehavior() to take an optional Stmt* to indicate the code the diagnostic is associated with.

This Stmt* is unused, but we will use it shortly for pruning diagnostics associated
with unreachable code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126286 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5ef04ee40c3332d31b6d1439f50d0ddb45812929 23-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Switch the VerifyDiagnosticsClient to use PresumedLocs now that they
exist. Cheat and do this by adding some wrappers around the PresumedLoc
machinery that directly return the line and column number.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
406c38e8c1f105acfd438f94dfbc17af817aa4a5 23-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> Fix PR9276: We were missing the checks for auto deducing to different types in the same declaration group in the template instantiation case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126279 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
fc26107870e0e450d863541179234bf9063a4da7 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Silence a MSVC warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126273 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
404fc3ad6bd844bf8ce70cbf9974ab297704a122 23-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Refactor BugTypes and their ownership model.

-In general, don't have the BugReporter deleting BugTypes, BugTypes will eventually become owned by checkers
and outlive the BugReporter. In the meantime, there will be some leaks since some checkers assume that
the BugTypes they create will be destroyed by the BugReporter.
-Have BugReporter::EmitBasicReport create BugTypes that are reused if the same name & category strings
are passed to EmitBasicReport. These BugTypes are owned and destroyed by the BugReporter.
This allows bugs reported through EmitBasicReport to be coalesced.
-Remove the llvm::FoldingSet<BugReportEquivClass> from BugType and move it into the BugReporter.
For uniquing BugReportEquivClass also use the BugType* so that we can iterate over all of them using only one set.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126272 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugType.h
b80f66847d103aee7988b791a380fc563bf89a19 23-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> DeclGroup's operator[] always returned the first Decl in the group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
65b34d7bc314c7d4b448164e1a889311bd30b375 23-Feb-2011 Matt Beaumont-Gay <matthewbg@google.com> Clean up the error recovery at the bottom of Sema::LookupMemberExpr. This
mostly just shuffles various possibilities for recovery into a more
straightforward order, but also unifies a couple of diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
12e3ecec906f65580059a9d8555849a272c2db81 23-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Provide Fixit warning when 'auto' is intended as storage
specifier in legacy code. Patch is reviewed offline by Doug.
// rdar://9036633.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126261 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
8178df3b39ab923ff5d24538812628abee33df79 22-Feb-2011 John McCall <rjmccall@apple.com> Emit the structure layout of the block literal parameter to a block
invocation function into the debug info. Rather than faking up a class,
which is tricky because of the custom layout we do, we just emit a struct
directly from the layout information we've already got.

Also, don't emit an unnecessarily parameter alloca for this "variable".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
201e519ad9cc2863bc94cf799e407a81ed29181f 22-Feb-2011 John McCall <rjmccall@apple.com> Give ImplicitParamDecl a public constructor so that it can be allocated on
the stack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
aab9e315184d344bbd733f13b68915d02db7b32b 22-Feb-2011 John McCall <rjmccall@apple.com> Provide a Decl::getNonClosureContext to look through any "closure" (i.e.
block and, eventually, C++ lambda) contexts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
86f208c1a112c3e8984e63daec15ccf0a1a84329 22-Feb-2011 Douglas Gregor <dgregor@apple.com> Enable enumeration types with a fixed underlying type, e.g.,

enum X : long { Value = 0x100000000 };

when in Microsoft-extension mode (-fms-extensions). This (now C++0x)
feature has been supported since Microsoft Visual Studio .NET 2003.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126243 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
cd9ec3b4fb3d042f89aa5b572de7df3ef9ee4a80 22-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement the GNU C extension which permits the initialization of an
array from a constant array compound literal. Fixes PR9261.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126230 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5 22-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Start moving the path-sensitive checkers to CheckerV2.

-Migrate ObjCSelfInitChecker to CheckerV2. In the process remove the 'preCallSelfFlags' field
from the checker class and use GRState for storing that info.
-Get ExprEngine to start delegating checker running to CheckerManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126229 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
6bcb48dc67e417e0ecce803f28d13bbea2ee0243 22-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Separate CheckerContext into its own include file. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126228 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/Checker.h
taticAnalyzer/Core/PathSensitive/CheckerContext.h
9fc8fdd79c5ecf30833ccc0dd5e14be7aa884470 22-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Fix GRStatePartialTrait<bool> and introduce GRStatePartialTrait<unsigned>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126227 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRStateTrait.h
0bb208c91e91e2fe91e0f487b00ff4b5b30c8cc2 22-Feb-2011 Joerg Sonnenberger <joerg@bec.de> Remove the storage for -cxx-system-include. Make libcxx toolchain
use -nostdinc++ and -cxx-isystem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126223 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
a5ef584fd3d18da0c98342b4b6453948b7eb30d3 22-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Reimplement __pragma support using a TokenLexer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126221 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
b2eb53d9fd973a1a02e05e67a3307b3efd12eff2 22-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Make TokenLexer capable of storing preprocessor directive tokens

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126220 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
b9075601840893a8f7a21918ac4c7e28dcb67f1a 22-Feb-2011 Douglas Gregor <dgregor@apple.com> Fix a little bug in the handling of enumeration types with a fixed
underlying type: we weren't parsing unnamed enumeration types with a
fixed underlying type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
284cc8d8a90ae6558e0a4b60b7dc1ddcfd220758 22-Feb-2011 Douglas Gregor <dgregor@apple.com> Warn about implicit conversions between values of different, named
enumeration types. Fixes <rdar://problem/8559831>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e9b801f7633b11b18d357a71442bd003435784e8 22-Feb-2011 Anders Carlsson <andersca@mac.com> Make clang -cc1 disable Objective-C exceptions by default, and add a -fobjc-exceptions flag to turn them on.

Update all tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126177 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
8110f04b39fd028496dd6bf9e3a78278c3e0a6ad 22-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> In Objective-C, there are no trailing return types, so don't produce diagnostics suggesting they are missing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126174 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2df6647847af283302834dadae5d9dcefa7e0ad4 22-Feb-2011 Joerg Sonnenberger <joerg@bec.de> Bug#8945: Add -cxx-isystem option to specify C++ system directories.
It works like -isystem and the search path keeps -isystem and
-cxx-isystem in order relative to each other. -cxx-isystem is only used
for C++ sources though. Drop the existing -cxx-system-include option for
cc1 as it is now redundant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126167 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/HeaderSearchOptions.h
e7397c6a1bb2b205c5fe678e26199eb26d22e38e 22-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> Fix a few auto-related issues:

* 'auto' was being rejected on abstract-declarators with trailing return
types and on typedefs with trailing return types. 'auto' is always
allowed in these cases. This was found while testing the fix for PR 9278.

* A very poor diagnostic was being issued for auto (f() -> int): "return
type must be 'auto', not 'auto'". This is closely related to PR 9060.

* Trailing return type handling was happening slightly too late,
resulting in the checks for functions returning arrays and functions
returning functions being missed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126166 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
21761c8378a493c32ab0f7d2b8880986a0ba73a3 22-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Warn when type modifiers on objc method declarations in
protocols do not match with method implementation.
// rdar://7076235


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126162 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
ddc83f9255834217f0559b09ff75a1c50b8ce457 22-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> C++0x's deduced auto is illegal in typedefs.

This actually rules out too much, since it also catches typedefs for pointers to functions with trailing return types:

typedef auto (*F)() -> int;

Fix for that (and the same issue in all abstract-declarators) to follow shortly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
935f0f01c1ed3c2052b797ac035d57a85b78adc4 21-Feb-2011 Chris Lattner <sabre@nondot.org> add one more case of mismatched input/output constraints.
When the mismatch is due to a larger input operand that is
a constant, truncate it down to the size of the output. This
allows us to accept some cases in the linux kernel and elsewhere.
Pedantically speaking, we generate different code than GCC, though
I can't imagine how it would matter:

Clang:
movb $-1, %al
frob %al

GCC:

movl $255, %eax
frob %al



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126148 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
483b9f3bc05c5409e2c6643f1c9d91e21c8ff9d2 21-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> Tweaks to C++0x deduced auto type support:
* Flag indicating 'we're parsing this auto typed variable's initializer' moved from VarDecl to Sema
* Temporary template parameter list for auto deduction is now allocated on the stack.
* Deduced 'auto' types are now uniqued.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ema/Sema.h
b0c2301a40a3e54ce7195f11a59d025ef60ebffb 21-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Remove warning on future change in ivar lookup rule
when doing the property default synthesis.
// rdar://9027673.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2882eca5a184c78f793188083f6ce539740a5cf2 21-Feb-2011 John McCall <rjmccall@apple.com> Pseudo-revirtualize CallExpr::getSourceRange by making it follow the
logic from CXXMemberCallExpr and by making it check for
CXXOperatorCallExpr in order to defer. This is not really an awesome solution,
but I don't have a better idea.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
751969957e4cbd4c8b5bf8508ab8620e24743005 21-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Allow -Wformat to be enabled without -Wformat-security. GCC gates
-Wformat-security on -Wformat, not vice-versa.

Fixes PR8486. Patch by Oleg Slezberg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c8da1ecaf58ff41b652dd53331aace948027039b 20-Feb-2011 Oscar Fuentes <ofv@wanadoo.es> New function for tablegenning: clang_tablegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
asic/CMakeLists.txt
river/CMakeLists.txt
ex/CMakeLists.txt
erialization/CMakeLists.txt
34b41d939a1328f484511c6002ba2456db879a29 20-Feb-2011 Richard Smith <richard-llvm@metafoo.co.uk> Implement the C++0x deduced 'auto' feature.

This fixes PR 8738, 9060 and 9132.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126069 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
asic/DiagnosticSemaKinds.td
ema/Sema.h
erialization/ASTBitCodes.h
bee5a79fc95e3003d755031e3d2bb4410a71e1c1 20-Feb-2011 Ken Dyck <kd@kendyck.com> Add const qualifier to getTypeInfoInChars().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126064 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c1cfdf8647a499b6b3024f4bd14a236cddb23988 20-Feb-2011 Anders Carlsson <andersca@mac.com> Add a LangOptions::areExceptionsEnabled and start using it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
da4b7cf09ebfd4e4098b516081fa9dae2f5c99e0 20-Feb-2011 Anders Carlsson <andersca@mac.com> Add a new ObjCExceptions member variable to LangOptions. This controls whether Objective-C exceptions are enabled or not (they are by default).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
4b93d660c6326ec79b5e369317d1051cf826c2f3 20-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Re-instate r125819 and r125820 with no functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/CodeGenAction.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
96b1d4b4eb6b18dd6df7a2c0833332b45840580f 19-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert 125820 and 125819 to fix PR9266.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/CodeGenAction.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
1be8eec3ddd2a23c19b453c2639226174eb5d4a8 19-Feb-2011 Douglas Gregor <dgregor@apple.com> Handle the resolution of a reference to a function template (which
includes explicitly-specified template arguments) to a function
template specialization in cases where no deduction is performed or
deduction fails. Patch by Faisal Vali, fixes PR7505!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6c948378154dc37e772e50f95033530d506fa912 19-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Reimplement Token::isAnnotation() using TokenKinds.def. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126045 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
7f11d9cf5df1f8ce82af46eabc4ec5cec7d580b0 19-Feb-2011 Anders Carlsson <andersca@mac.com> Disallow try/catch/throw when exceptions are disabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126039 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
da2142f2e2b3a02ee6eb5de9f9e6ed6f7eb5a0c0 19-Feb-2011 Douglas Gregor <dgregor@apple.com> Revert all of my commits that devirtualized the Decl hierarchy, which
lead to a serious slowdown (4%) on parsing of Cocoa.h. This memory
optimization should be revisited later, when we have time to look at
the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
8ac38d7b5d88d12f454a7cda1275bf429813151d 19-Feb-2011 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Support -Wl, with -Xarch_. This doesn't work naturally because of
the special way we model "linker input" arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126023 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
09fe4a55248bd28a950ec4ba19900e5892be42f6 19-Feb-2011 Ted Kremenek <kremenek@apple.com> Change 'StoreRef' back to 'Store' in GRState, shrinking the size of GRState back by one pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126020 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
15e310a3b970b64a84cb30f0005bc396b4d978cb 19-Feb-2011 John McCall <rjmccall@apple.com> Warn about code that uses variables and functions with internal linkage
without defining them. This should be an error, but I'm paranoid about
"uses" that end up not actually requiring a definition. I'll revisit later.

Also, teach IR generation to not set internal linkage on variable
declarations, just for safety's sake. Doing so produces an invalid module
if the variable is not ultimately defined.

Also, fix several places in the test suite where we were using internal
functions without definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126016 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
370e6e984cc32167228b66eaf9610c010da0d794 19-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Fix crash when analyzing C++ code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126013 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/SValBuilder.h
77a4d5687c2cb3199c689892c9d040a94ff270af 19-Feb-2011 Ted Kremenek <kremenek@apple.com> Add 'StoreRef' smart pointer to allow more fine-grain memory lifetime control of Store objects.

This yields a minor memory reduction (for larger functions) on Sqlite at the cost of slightly
higher memory usage on some functions because of the increased size of GRState (which can be optimized).

I expect the real memory savings from this enhancement will come when we aggressively
canabilize more of the ExplodedGraph.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126012 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/Store.h
45f11b78750590b1b1bcec6746c7639a256ce2a2 19-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Fix PR8767, improve diagnostic wording when allocating an object of an
abstract class type.

Patch by Stephen Hines, with a wording tweak from Doug applied by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125996 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
82214a80c0163e01e4d8dec1426023c89277dbb4 19-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Initial steps to improve diagnostics when there is a NULL and
a non-pointer on the two sides of a conditional expression.

Patch by Stephen Hines and Mihai Rusu.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
0656e5b9aa52f2a90fb38517e504b4eebbe53381 19-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Check for NULL child expressions before visiting them, as the first
thing the visit does is dyn_cast<>, which leads to a nasty segfault.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
5c722c7020b33da57090422b854072258a50b3f0 19-Feb-2011 Douglas Gregor <dgregor@apple.com> When code-completing a case statement for a switch on a value of
enumeration type, prioritize the enumeration constants and don't
provide completions for any other expressions. Fixes <rdar://problem/7283668>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125991 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
813d8346529bf094eb2b249648906ba7fd226688 18-Feb-2011 Douglas Gregor <dgregor@apple.com> Selector::getIdentifierInfoForSlot() can return NULL values, a fact
that was ignored in a few places (most notably, code
completion). Introduce Selector::getNameForSlot() for the common case
where we only care about the name. Audit all uses of
getIdentifierInfoForSlot(), switching many over to getNameForSlot(),
fixing a few crashers.

Fixed <rdar://problem/8939352>, a code-completion crasher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125977 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
febb5b884b1bb946b83800cb77cbea0119570d84 18-Feb-2011 Chris Lattner <sabre@nondot.org> fix rdar://9024687, a crash on invalid that we used to silently ignore.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f4699d14b03d805ad9ccaa6288836ac2a8612925 18-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Fix a crash when analyzing C++ code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125958 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
16f744beaaa30bf3847740ca8e8beb6f0d3a0b93 18-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTContext::getLogicalOperationType() to return bool or int, depending on language.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
906c73ffbc78542ad333becb6e013dd9efc299b6 18-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Move CompilerInstance::LLVMContext and LLVMContext ownership to CodeGenAction

This removes the final dependency edge from any lib outside of CodeGen
to core. As a result we can, and do, trim the dependency on core
from libclang, PrintFunctionNames, the unit tests and c-index-test.
While at it, review and trim other unneeded dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125820 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenAction.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
ef9a1d0e13662162aa8cdae8732c33b5d751d80c 18-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Move TargetInfo::adjustInlineAsmType to TargetCodeGenInfo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125819 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
4ae493cccbfbf122ec6ebac0e330232c22fa8489 18-Feb-2011 Chris Lattner <sabre@nondot.org> implement basic support for __label__. I wouldn't be shocked if there are
bugs from other clients that don't expect to see a LabelDecl in a DeclStmt,
but if so they should be easy to fix.

This implements most of PR3429 and rdar://8287027



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ema/Sema.h
eaca05b81b30251d3f32af9a6a6567d8e01f7cb2 18-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Handle UsingDecl in CFGRecStmtDeclVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125814 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
337e550218128e7d922c09bb354fbc71de90c568 18-Feb-2011 Chris Lattner <sabre@nondot.org> Switch labels over to using normal name lookup, instead of their
own weird little DenseMap. Hey look, we now emit unused label
warnings deterministically, amazing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125813 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Scope.h
ema/ScopeInfo.h
ema/Sema.h
380ebecb32993bf0426e25519eb78d7816b74b12 18-Feb-2011 Francois Pichet <pichet2000@gmail.com> Unbreak the MSVC build
std::make_pair is unreliable under MSVC 2010.

Ref: http://stackoverflow.com/questions/2691680/why-does-visual-studio-2010-throw-this-error-with-boost-1-42-0

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125811 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
e476bdce8cf3315c8ce852480503a8acc265bd54 18-Feb-2011 Chris Lattner <sabre@nondot.org> make block bodies handle undefined labels just like functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125799 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
2d67b90a21c9c1093e6598809c2cbc832919cfe6 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism for the debugging info "checks".

The relative checker package is 'debug':

'-dump-live-variables' is replaced by '-analyzer-checker=debug.DumpLiveVars'
'-cfg-view' is replaced by '-analyzer-checker=debug.ViewCFG'
'-cfg-dump' is replaced by '-analyzer-checker=debug.DumpCFG'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125780 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
7dd445ec20e704846cfbdb132e56539280d71311 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism on the non-path-sensitive-checkers:

DeadStoresChecker
ObjCMethSigsChecker
ObjCUnusedIvarsChecker
SizeofPointerChecker
ObjCDeallocChecker
SecuritySyntaxChecker

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125779 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
taticAnalyzer/Checkers/LocalCheckers.h
9fb9474c5b267400d4abfbff63c8b39f378235d4 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer]
-Introduce CheckerV2, a set of templates for convenient declaration & registration of checkers.
Currently useful just for checkers working on the AST not the path-sensitive ones.
-Enhance CheckerManager to actually collect the checkers and turn it into the entry point for
running the checkers.
-Use the new mechanism for the LLVMConventionsChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125778 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
taticAnalyzer/Checkers/LocalCheckers.h
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerV2.h
695fb502825a53ccd178ec1c85c77929d88acb71 17-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Pass CheckerManager to the registration functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125777 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/CheckerManager.h
3406458512c3cdfe2076c46b9aedb4621297efd5 17-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Clean up the style of this function to match the conventions in the rest
of Clang, and reflows the code a bit to make it easier to read.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125773 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
57ad37823e198f977cac605dbfbaefb4daf325e9 17-Feb-2011 Chris Lattner <sabre@nondot.org> Step #2/N of __label__ support: keep pushing LabelDecl forward,
making them be template instantiated in a more normal way and
make them handle attributes like other decls.

This fixes the used/unused label handling stuff, making it use
the same infrastructure as other decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/Template.h
d8e54990ade0dd5566f8e3aa2e62def08753d1e9 17-Feb-2011 Chris Lattner <sabre@nondot.org> Inline LocalInstantiationScope::getInstantiationOf into its one
client, making room for future hacking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125770 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
4d4f0db3b6bf73162e75541547e900e4248d49ef 17-Feb-2011 Chris Lattner <sabre@nondot.org> remove some dead overloads.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125768 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
91a230a15f2aca8f6a8b7fd492525ec372a98e6b 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Eliminate the internal command-line option for viewing inheritance in C++ classes, since it's only really worked for the trivial cases anyway due to lame pseudo-parsing of the class name. The viewInheritance() function is still available for use in the debugger, where this is far more useful

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125762 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
8c99d88a6cfa14fc2edab819d5e4325c973b2809 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Replace a FIXME with a comment describing why we did what we did

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125757 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f91d08712514fca6b1e66abf51a13f2d7041bb05 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Remove the last virtual member function from the Decl hierarchy,
reducing the size of all declarations by one pointer. For a 64-bit
Clang parsing Cocoa.h, this saves ~630k of memory (about 3.5% of
ASTContext's memory usage for this header).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
2ae442a8a0974aee1da389a69857a4b6f2823c1a 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize TagDecl::completeDefinition().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125755 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
afdfdc05fe8b2442713f0150a5985a9c6d852cee 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize DeclaratorDecl::getInnerLocStart() and TagDecl::getInnerLocStart().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
2a96bf5e66731bb54dff3e4aadfbbced83377530 17-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics on missing property decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125752 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ebe5a9bcc51bff434f38d94748b08e9160609ed9 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize NamedDecl::getNameForDiagnostic().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
9e6f2a8d70c3027e99c354edd9d31a37c102f30a 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize RedeclarableTemplateDecl::newCommon().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125750 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
a5b9332418f25338f118358e27303cd510d54107 17-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Implement a sub-group of -Wconversion: -Wliteral-conversion. This
specifically targets literals which are implicitly converted, a those
are more often unintended and trivial to fix. This can be especially
helpful for diagnosing what makes 'const int x = 1e6' not an ICE.

Original patch authored by Jim Meehan with contributions from other
Googlers and a few cleanups from myself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
56ca35d396d8692c384c785f9aeebcf22563fe1e 17-Feb-2011 John McCall <rjmccall@apple.com> Change the representation of GNU ?: expressions to use a different expression
class and to bind the shared value using OpaqueValueExpr. This fixes an
unnoticed problem with deserialization of these expressions where the
deserialized form would lose the vital pointer-equality trait; or rather,
it fixes it because this patch also does the right thing for deserializing
OVEs.

Change OVEs to not be a "temporary object" in the sense that copy elision is
permitted.

This new representation is not totally unawkward to work with, but I think
that's really part and parcel with the semantics we're modelling here. In
particular, it's much easier to fix things like the copy elision bug and to
make the CFG look right.

I've tried to update the analyzer to deal with this in at least some
obvious cases, and I think we get a much better CFG out, but the printing
of OpaqueValueExprs probably needs some work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
4c3e0ee8e6208eb42c4adb78a7d35b641fd85ae9 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize Decl::getNextRedeclaration().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125740 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/DeclTemplate.h
543cb655b174087f6c2d22009934c9fed6c32114 17-Feb-2011 Chandler Carruth <chandlerc@gmail.com> Implement -Wenum-compare, which warns when comparing two enums of
different types. We omit the warning when the enum types are anonymous.
Unlike GCC, this warning does not distinguish between C++ and C/ObjC for
controling whether it is on by default, it is always on by default.

Original patch contributed by Richard Trieu (@ Google), I fixed some
style issues, and cleaned it up for submission.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
770877fa855d1de462392e503ef08252614b0994 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize Decl::getSourceRange()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125736 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
0eccdcac47f0ee1d2081244ca714088779b09b98 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize Decl::getCanonicalDecl().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298 17-Feb-2011 Chris Lattner <sabre@nondot.org> Step #1/N of implementing support for __label__: split labels into
LabelDecl and LabelStmt. There is a 1-1 correspondence between the
two, but this simplifies a bunch of code by itself. This is because
labels are the only place where we previously had references to random
other statements, causing grief for AST serialization and other stuff.

This does cause one regression (attr(unused) doesn't silence unused
label warnings) which I'll address next.

This does fix some minor bugs:
1. "The only valid attribute " diagnostic was capitalized.
2. Various diagnostics printed as ''labelname'' instead of 'labelname'
3. This reduces duplication of label checking between functions and blocks.

Review appreciated, particularly for the cindex and template bits.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
asic/DeclNodes.td
asic/DiagnosticSemaKinds.td
ema/ScopeInfo.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
1aa3d81c6e63959ef149489eca42b1520c521af4 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Devirtualize Decl::getBody() and Decl::hasBody().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125731 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
f4a03cc2b022fab0ffac6c65449555c52036dece 17-Feb-2011 Douglas Gregor <dgregor@apple.com> De-virtualize Decl::isOutOfLine().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
e594db5c2db5ca2a03203af2915fa88619417110 17-Feb-2011 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125723 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AttributeList.h
26ae5dd9cfc561527eca418571323d90589a4b92 17-Feb-2011 Matt Beaumont-Gay <matthewbg@google.com> Fix PR9025 and add a diagnostic (and sometimes a fixit) for an overloaded
function name used as the base of a member expression. Early feedback from
Chandler Carruth, and code review from Nick Lewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125714 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c81ca9852806e75972bbb246fa916152e8fba541 17-Feb-2011 Ted Kremenek <kremenek@apple.com> Bump up IdentifierInfo::ObjCOrBuiltinID to use 11 bits instead of 10. Fixes PR 9231.

Apparently we can blow out the number of builtin IDs on FreeBSD with only 10 bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
41aadbc530f071fe5ccbfc2560899a4a2e74c057 17-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics when property names an object type of
a forward class. // rdar://8851803


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125699 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
577cdfdb20840350e841a483df630237326126d5 17-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement code completion results for the Objective-C Key-Value Coding
(KVC) and Key-Value Observing (KVO) protocols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125696 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
bac77374729b3bed72f41b66cd80d6e0d38ace3b 16-Feb-2011 Ted Kremenek <kremenek@apple.com> Placate Doug and change capitalization of diagnostic note.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125688 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7dfc9420babe83e236a47e752f8723bd06070d9d 16-Feb-2011 Zhanyong Wan <wan@google.com> Makes most methods in SVals.h conform to the naming guide. Reviewed
by kremenek.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125687 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
d24eda8ad42bea6b36400d5505f67a7917d65652 16-Feb-2011 Chandler Carruth <chandlerc@gmail.com> 3000 Sema diagnostics should be enough for anyone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticIDs.h
48601b32321496b07a18fb6631f8563275d8c5fb 16-Feb-2011 Douglas Gregor <dgregor@apple.com> Teach the CXCodeCompleteResults results structure, which stores
code-completion results accessed via libclang, to extend the lifetime
of the allocator used for cached global code-completion results at
least until these completion results are destroyed. Fixes
<rdar://problem/8997369>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125678 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
9b7db6200d366e4964d63ae1f33c7b9d7b9831cb 16-Feb-2011 Douglas Gregor <dgregor@apple.com> Improve the invalidation logic for the cache of global code
completions. We now compute a hash of the names of all top-level
declarations and macro definitions, and invalidate the cache when the
hash value changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125670 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
9c97ca091200311229ce3cb070f0ed8846687eda 16-Feb-2011 Douglas Gregor <dgregor@apple.com> Teach PPChainedCallbacks to forward the InclusionDirective() callback.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125669 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ca2442350a165f2587c2356009fd34d780fe3234 16-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Warning -> ExtWarn

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
e996ffd240f20a1048179d7727a6ee3227261921 16-Feb-2011 John McCall <rjmccall@apple.com> Save a copy expression for non-trivial copy constructions of catch variables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125661 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8fd0a5dfb025a51f48b7931b95efbf35d3c5dfc3 16-Feb-2011 Ted Kremenek <kremenek@apple.com> Tweak -Warray-bounds diagnostics based on feedback from Chandler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a0125d8520f65aca581378c235384e7affefa1fc 16-Feb-2011 Ted Kremenek <kremenek@apple.com> Add trivial buffer overflow checking in Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125640 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
0b1ba6227c67d5e04b589ed8a08afa2345a40666 16-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism on the apple checkers:

NilArgChecker
CFNumberCreateChecker
NSAutoreleasePoolChecker
CFRetainReleaseChecker
ClassReleaseChecker

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125636 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/LocalCheckers.h
8f457004a1fdfc9c70fb52c5bc2e9d4ea6780d8d 16-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Fix typo (per Chris's comment).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ff1ed985ede24b9a45e52d726db95767e35fe21e 16-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Warn for missing terminating " or ' instead of error for gcc compatibility. Fixed rdar://8914293.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
c9f2e0f286500c7e747849b3aa9c0e67a4dc90d7 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Use the new registration mechanism on the IdempotentOperationChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125611 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
afc4578f8e55d4377b291e2325b2e9bc2cd72e89 15-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement a special code-completion pattern for "IBAction". Fixes
<rdar://problem/8767704>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125604 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e9baa6b82625a6e55d21a32ca0227950d30ec57d 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove ObjCSelfInitCheck from AnalyzerOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125599 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalyzerOptions.h
68e3c2eef52701a178fbcc2bb424f31dd4b36931 15-Feb-2011 Douglas Gregor <dgregor@apple.com> When code-completing within a list of declaration specifiers,
separately handle the case of a local declaration-specifier list,
including all types in the set of options. Fixes
<rdar://problem/8790735> and <rdar://problem/8662831>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125594 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
84bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbc 15-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Serialization/deserialization support for floating point #pragma
options, enabled OpenCL extensions and default FP_CONTRACT setting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125589 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
39d3e7a26c1969fcb76bceb4ee0a410c60ea5954 15-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: semantic analysis support for cl_khr_fp64 extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8e3df4d0864f0a966c20088ca1a29c3398b7639d 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow resolving headers from a PCH even after headers+PCH were moved to another path.

Store in PCH the directory that the PCH was originally created in.
If a header file is not found at the path that we expect it to be and the PCH file
was moved from its original location, try to resolve the file by assuming that
header+PCH were moved together and the header is in the same place relative to the PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125576 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
27af04bcca46f8a3374586be1301477f9123f5e1 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the clang-wpa example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125565 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Frontend/CheckerRegistration.h
809dfe8ad390bdaf7db12af944a84e16111efbbe 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Initialize InlineCall in AnalyzerOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125564 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalyzerOptions.h
26c05b11dc91662820e7709bb22efe9903289d1f 15-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Reflect changes for tablegen'ing the checkers.

-Update tablegen files for checkers, use the tablegen class name for the checker class name.
-Update ClangSACheckersProvider to not look into hidden checker packages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125560 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Checkers/CheckerBase.td
dac54c124e302d6f028ea5723c425b7f66fc7c71 15-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::Alignment to CharUnits from bit units. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
b1224f69089815fd66b04ae33215b7fba10780aa 15-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Warn if method for a deprecated method is implemented.
Warn if class for a deprecated class is implemented.
Warn if category for a deprecated class is implemented.
All under control of -Wdeprecated-implementations.
// rdar://8973810.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d61df3d022835236656250565ee577a7b6f89775 15-Feb-2011 Ted Kremenek <kremenek@apple.com> Put "incomplete implementation" warning under a flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125535 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
79ab2c8104ef5df233d271560ccc734836738e56 14-Feb-2011 John McCall <rjmccall@apple.com> Provide overload diagnostics when explicit casts involving class types fail.
PR8626.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125506 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Initialization.h
43dee220252ef0b42c5f8a3bb1eca97f84f2565f 14-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Overhauling of the checker registration mechanism.

-Checkers will be defined in the tablegen file 'Checkers.td'.
-Apart from checkers, we can define checker "packages" that will contain a collection of checkers.
-Checkers can be enabled with -analyzer-checker=<name> and disabled with -analyzer-disable-checker=<name> e.g:
Enable checkers from 'cocoa' and 'corefoundation' packages except the self-initialization checker:
-analyzer-checker=cocoa -analyzer-checker=corefoundation -analyzer-disable-checker=cocoa.SelfInit
-Introduces CheckerManager and CheckerProvider. CheckerProviders get the set of checker names to enable/disable and
register them with the CheckerManager which will be the entry point for all checker-related functionality.

Currently only the self-initialization checker takes advantage of the new mechanism.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/Checkers/CheckerBase.td
taticAnalyzer/Core/CheckerManager.h
taticAnalyzer/Core/CheckerProvider.h
taticAnalyzer/Core/FrontendActions.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Frontend/FrontendActions.h
5f83d6f36a7308eef21d87104fd70c421e854448 14-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Remove ManagerRegistry which is not used. In the future we may load analyzer plugins dynamically but
registration through static constructors should be avoided.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125502 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/ManagerRegistry.h
e6348c336fecc8da9288ea367375a1b1cd2358d2 14-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Move include/clang/StaticAnalyzer/AnalysisConsumer.h -> lib/StaticAnalyzer/Frontend/AnalysisConsumer.h since
FrontendActions.cpp is the only user.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125501 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/AnalysisConsumer.h
840c083f7996ed34d74affe322c2c53af8fa5217 14-Feb-2011 Jeffrey Yasskin <jyasskin@google.com> Add support for the builtins used in gcc 4.4's <cmath> and <complex>
headers in C++0x mode. Fixes PR9138.

Patch by John Bytheway!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b8b07b171041561eb28024d5b4d07227c971c0f9 14-Feb-2011 Ted Kremenek <kremenek@apple.com> Handle 'UsingDirective' in CFGRecStmtDeclVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125491 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
eee1d5434ebfa955ffc3c493aecd68bb7b3f4838 14-Feb-2011 John McCall <rjmccall@apple.com> When parsing an out-of-line member function declaration, we must delay
access-control diagnostics which arise from the portion of the declarator
following the scope specifier, just in case access is granted by
friending the individual method. This can also happen with in-line
member function declarations of class templates due to templated-scope
friend declarations.

We were really playing fast-and-loose before with this sort of thing,
and it turned out to work because *most* friend functions are in file
scope. Making us delay regardless of context exposed several bugs with
how we were manipulating delay. I ended up needing a concept of a
context that's independent of the declarations in which it appears,
and then I actually had to make some things save contexts correctly,
but delay should be much cleaner now.

I also encapsulated all the delayed-diagnostics machinery in a single
subobject of Sema; this is a pattern we might want to consider rolling
out to other components of Sema.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125485 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/DelayedDiagnostic.h
ema/Sema.h
02690b22ad3f290002dc04e5ec8bafde4916eaa8 14-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Add missing file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125478 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OpenCLExtensions.def
f315fa81eef1977b3457fd7a7d4639e060fe7278 14-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> OpenCL: add support for __kernel, kernel keywords and EXTENSION,
FP_CONTRACT pragmas. Patch originally by ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125475 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticParseKinds.td
asic/LangOptions.h
asic/TokenKinds.def
arse/Parser.h
ema/AttributeList.h
ema/Sema.h
321b8179afaf803dcc56b2a19f7b0891a03c92c8 14-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Move support for "#pragma STDC FP_CONTRACT" to Parser; add Sema actions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
arse/Parser.h
ema/Sema.h
9d3f5f7550a2fab4178ed01425758c349b73a609 14-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Make LexOnOffSwitch a Preprocessor member function

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/TokenKinds.h
ex/Preprocessor.h
7502c1d3ce8bb97bcc4f7bebef507040bd93b26f 13-Feb-2011 John McCall <rjmccall@apple.com> Give some convenient idiomatic accessors to Stmt::child_range and
Stmt::const_child_range, then make a bunch of places use them instead
of the individual iterator accessors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ST/RecursiveASTVisitor.h
ST/StmtIterator.h
nalysis/Visitors/CFGStmtVisitor.h
taticAnalyzer/Core/PathSensitive/CheckerHelpers.h
0d70d71ccbc4f7f59cadb759f61b7172a149676c 13-Feb-2011 John McCall <rjmccall@apple.com> Look through array types when deciding whether a field requires non-trivial
destruction in the destructor-aliases logic. Fixes PR 9197.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e3c8c64e7735c3589e1a34e6000c93183a55920c 12-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Implement objective-c++'s block pointer type matching involving
types which are contravariance in argument types and covariance
in return types. // rdar://8979379.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125445 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
ema/Sema.h
0895d1513772eca5a20c552976209fd7f58b993f 12-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> When reading the AST, delay loading of the redeclaration chain to avoid deeply nested calls.
Temporarily set the first (canonical) declaration as the previous one, which is the one that
matters, and mark the real previous DeclID to be loaded & attached later on.

Fixes rdar://8956193.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125434 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
b715a7cef11664c1c47cfc3dcc503aadc58b6cac 12-Feb-2011 Ted Kremenek <kremenek@apple.com> Weaken the ObjCSelfInitChecker to only warn when one calls an 'init' method within an 'init' method. This is a temporary stop gap to avoid false positives while we investigate how to make it smarter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125427 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRStateTrait.h
f4e532b5a1683a9f6c842f361c7415bf3474315f 12-Feb-2011 Ted Kremenek <kremenek@apple.com> Don't emit a dead store for '++' operations unless it occurs with a return statement. We've never seen any other cases that were real bugs.

Fixes <rdar://problem/6962292>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
848ec83483ca4ba52ed72c7e29ebc330f8c87252 12-Feb-2011 Ted Kremenek <kremenek@apple.com> Don't report dead stores on unreachable code paths. Fixes <rdar://problem/8405222>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125415 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
e2f82f71385051ce5abfba317d2f592aa332c588 11-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Reject forbidden storage class specifiers in OpenCL. Patch by George Russell!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125399 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ema/DeclSpec.h
2534528c22260211a073e192c38d0db84c70c327 11-Feb-2011 Ted Kremenek <kremenek@apple.com> Rename 'InvalidateRegions()' to 'invalidateRegions()'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125395 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/Store.h
0a480293f726508ad9aed0be39e8c9779e84f2f2 11-Feb-2011 Douglas Gregor <dgregor@apple.com> Rename the operation that loads a preprocessed entity from a given offset to indicate that we're loading from an offset, not an index, lest one be confused. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125394 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
erialization/ASTReader.h
9b555ea217565ac0f8bf7255b29496916cb03476 11-Feb-2011 Zhanyong Wan <wan@google.com> Improves Clang's virtual file handling.

This patch contains:

- making some of the existing comments more accurate in the presence
of virtual files/directories.

- renaming some private data members of FileManager to match their roles better.

- creating 'DirectorEntry's for the parent directories of virtual
files, such that we can tell whether two virtual files are from the
same directory. This is useful for injecting virtual files whose
directories don't exist in the real file system.

- minor clean-ups and adding comments for class
FileManager::UniqueDirContainer and FileManager::UniqueFileContainer.

- adding statistics on virtual files to FileManager::PrintStats().

- adding unit tests to verify the existing and new behavior of FileManager.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
a9d5c30635729f076d77b4eb8d2f413b04301a89 11-Feb-2011 Ted Kremenek <kremenek@apple.com> Allow the 'Eng' entry in GRStateManager to be a (possibly null) pointer instead of a reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125362 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/GRState.h
f0be979bddb8baa28e77693a3dc931e487b2a9f2 11-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> For consistency, use llvm::raw_ostream in the rest of the mangle api.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125360 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
ec2990351335f163601b98e39b52425e2e9f931e 11-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::DataSize to CharUnits from bits, eliminating two
unnecessary calls to RoundUpToAlignment. No changes to functionality
intended.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
dd76a9ab9ea675671200f94b18ce95766841952b 11-Feb-2011 Ken Dyck <kd@kendyck.com> Add a helper function, ASTContext::toBits(), that converts sizes in
CharUnits to sizes in bits, and use it to tidy up the places where the
conversion was done explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0e376a0ca8372c9e809d08a9db2fae98394878b8 11-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Use raw_ostream instead of raw_svector_ostream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
040a804f852c45c8b8c371ce1d421fd4cd84b6fb 11-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement AST/PCH chaining support for macro definitions. Previously,
we would deserialize all of the macro definitions we knew about while
serializing the macro definitions at the end of the AST/PCH file. Even
though we skipped most of them (since they were unchanged), it's still
a performance problem.

Now, we do the standard AST/PCH chaining trick: watch what identifiers
are deserialized as macro names, and consider only those identifiers
(along with macro definitions that have been deserialized/written in
the source) when serializing the preprocessor state.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125324 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
c4850c2aa4c281a352e228aafc51fb1e30dcad02 11-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Use raw_svector_ostream in more places in the mangler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Mangle.h
cfbf1c7536e016dc275139dd842d4a5f059a749f 10-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement two related optimizations that make de-serialization of
AST/PCH files more lazy:
- Don't preload all of the file source-location entries when reading
the AST file. Instead, load them lazily, when needed.
- Only look up header-search information (whether a header was already
#import'd, how many times it's been included, etc.) when it's needed
by the preprocessor, rather than pre-populating it.

Previously, we would pre-load all of the file source-location entries,
which also populated the header-search information structure. This was
a relatively minor performance issue, since we would end up stat()'ing
all of the headers stored within a AST/PCH file when the AST/PCH file
was loaded. In the normal PCH use case, the stat()s were cached, so
the cost--of preloading ~860 source-location entries in the Cocoa.h
case---was relatively low.

However, the recent optimization that replaced stat+open with
open+fstat turned this into a major problem, since the preloading of
source-location entries would now end up opening those files. Worse,
those files wouldn't be closed until the file manager was destroyed,
so just opening a Cocoa.h PCH file would hold on to ~860 file
descriptors, and it was easy to blow through the process's limit on
the number of open file descriptors.

By eliminating the preloading of these files, we neither open nor stat
the headers stored in the PCH/AST file until they're actually needed
for something. Concretely, we went from

*** HeaderSearch Stats:
835 files tracked.
364 #import/#pragma once files.
823 included exactly once.
6 max times a file is included.
3 #include/#include_next/#import.
0 #includes skipped due to the multi-include optimization.
1 framework lookups.
0 subframework lookups.

*** Source Manager Stats:
835 files mapped, 3 mem buffers mapped.
37460 SLocEntry's allocated, 11215575B of Sloc address space used.
62 bytes of files mapped, 0 files with line #'s computed.

with a trivial program that uses a chained PCH including a Cocoa PCH
to

*** HeaderSearch Stats:
4 files tracked.
1 #import/#pragma once files.
3 included exactly once.
2 max times a file is included.
3 #include/#include_next/#import.
0 #includes skipped due to the multi-include optimization.
1 framework lookups.
0 subframework lookups.

*** Source Manager Stats:
3 files mapped, 3 mem buffers mapped.
37460 SLocEntry's allocated, 11215575B of Sloc address space used.
62 bytes of files mapped, 0 files with line #'s computed.

for the same program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/OnDiskHashTable.h
ex/HeaderSearch.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
be4c8705e499b55548467eb7adaa23cbc6edfef9 10-Feb-2011 Roman Divacky <rdivacky@freebsd.org> Implement mcount profiling, enabled via -pg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
river/CC1Options.td
rontend/CodeGenOptions.h
e40b69de464bc695afcaf7ef9602ad727d77b981 10-Feb-2011 Ted Kremenek <kremenek@apple.com> static analyzer: Make GRStates reference counted, with reference counts managed by ExplodedNodes.

This reduces memory usage of the analyzer on sqlite by another 5%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125260 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/GRState.h
9b663716449b618ba0390b1dbebc54fa8e971124 10-Feb-2011 Ted Kremenek <kremenek@apple.com> Split 'include/clang/StaticAnalyzer' into 'include/clang/StaticAnalyzer/Core' and 'include/clang/StaticAnalyzer/Checkers'.

This layout matches lib/StaticAnalyzer, which corresponds to two StaticAnalyzer libraries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125251 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/AnalysisConsumer.h
taticAnalyzer/BugReporter/BugReporter.h
taticAnalyzer/BugReporter/BugType.h
taticAnalyzer/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/AnalysisConsumer.h
taticAnalyzer/Core/BugReporter/BugReporter.h
taticAnalyzer/Core/BugReporter/BugType.h
taticAnalyzer/Core/BugReporter/PathDiagnostic.h
taticAnalyzer/Core/FrontendActions.h
taticAnalyzer/Core/ManagerRegistry.h
taticAnalyzer/Core/PathDiagnosticClients.h
taticAnalyzer/Core/PathSensitive/AnalysisManager.h
taticAnalyzer/Core/PathSensitive/BasicValueFactory.h
taticAnalyzer/Core/PathSensitive/BlockCounter.h
taticAnalyzer/Core/PathSensitive/Checker.h
taticAnalyzer/Core/PathSensitive/CheckerHelpers.h
taticAnalyzer/Core/PathSensitive/CheckerVisitor.def
taticAnalyzer/Core/PathSensitive/CheckerVisitor.h
taticAnalyzer/Core/PathSensitive/ConstraintManager.h
taticAnalyzer/Core/PathSensitive/CoreEngine.h
taticAnalyzer/Core/PathSensitive/Environment.h
taticAnalyzer/Core/PathSensitive/ExplodedGraph.h
taticAnalyzer/Core/PathSensitive/ExprEngine.h
taticAnalyzer/Core/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/Core/PathSensitive/GRState.h
taticAnalyzer/Core/PathSensitive/GRStateTrait.h
taticAnalyzer/Core/PathSensitive/MemRegion.h
taticAnalyzer/Core/PathSensitive/ObjCMessage.h
taticAnalyzer/Core/PathSensitive/SValBuilder.h
taticAnalyzer/Core/PathSensitive/SVals.h
taticAnalyzer/Core/PathSensitive/Store.h
taticAnalyzer/Core/PathSensitive/SubEngine.h
taticAnalyzer/Core/PathSensitive/SummaryManager.h
taticAnalyzer/Core/PathSensitive/SymbolManager.h
taticAnalyzer/Core/PathSensitive/TransferFuncs.h
taticAnalyzer/Core/PathSensitive/WorkList.h
taticAnalyzer/FrontendActions.h
taticAnalyzer/ManagerRegistry.h
taticAnalyzer/PathDiagnosticClients.h
taticAnalyzer/PathSensitive/AnalysisManager.h
taticAnalyzer/PathSensitive/BasicValueFactory.h
taticAnalyzer/PathSensitive/BlockCounter.h
taticAnalyzer/PathSensitive/Checker.h
taticAnalyzer/PathSensitive/CheckerHelpers.h
taticAnalyzer/PathSensitive/CheckerVisitor.def
taticAnalyzer/PathSensitive/CheckerVisitor.h
taticAnalyzer/PathSensitive/ConstraintManager.h
taticAnalyzer/PathSensitive/CoreEngine.h
taticAnalyzer/PathSensitive/Environment.h
taticAnalyzer/PathSensitive/ExplodedGraph.h
taticAnalyzer/PathSensitive/ExprEngine.h
taticAnalyzer/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/PathSensitive/GRState.h
taticAnalyzer/PathSensitive/GRStateTrait.h
taticAnalyzer/PathSensitive/MemRegion.h
taticAnalyzer/PathSensitive/ObjCMessage.h
taticAnalyzer/PathSensitive/SValBuilder.h
taticAnalyzer/PathSensitive/SVals.h
taticAnalyzer/PathSensitive/Store.h
taticAnalyzer/PathSensitive/SubEngine.h
taticAnalyzer/PathSensitive/SummaryManager.h
taticAnalyzer/PathSensitive/SymbolManager.h
taticAnalyzer/PathSensitive/TransferFuncs.h
taticAnalyzer/PathSensitive/WorkList.h
7f53253223b29d77f1e9c5c0ce93a19932761b77 09-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Fix scoping of method declarations and issue
warning when same parameter name used multiple times.
// rdar://8877730


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125229 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
ema/Sema.h
bf36e25224b959595af84337339103ebc542ff8c 09-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Parse: add support for parsing CUDA kernel calls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
1b791d6465d42a9763927be1dd8af229efcbbf5e 09-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> Lexer: add CUDA kernel call tokens

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125218 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
e08ce650a2b02410eddd1f60a4aa6b3d4be71e73 09-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> AST, Sema, Serialization: add CUDAKernelCallExpr and related semantic actions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
14b6ba77710d6431794d65c7d58c6f29c3dc956e 09-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> AST, Sema, Serialization: keep track of cudaConfigureCall

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticSemaKinds.td
erialization/ASTBitCodes.h
erialization/ASTReader.h
17d3fea677753e6e3e82ffe2cbdeccbf5f2e7497 09-Feb-2011 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Wire up -mregparm=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125201 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
63c00d7f35fa060c0a446c9df3a4402d9c7757fe 09-Feb-2011 John McCall <rjmccall@apple.com> Remove vtables from the Stmt hierarchy; this was pretty easy as
there were only three virtual methods of any significance.

The primary way to grab child iterators now is with
Stmt::child_range children();
Stmt::const_child_range children() const;
where a child_range is just a std::pair of iterators suitable for
being llvm::tie'd to some locals. I've left the old child_begin()
and child_end() accessors in place, but it's probably a substantial
penalty to grab the iterators individually now, since the
switch-based dispatch is kindof inherently slower than vtable
dispatch. Grabbing them together is probably a slight win over the
status quo, although of course we could've achieved that with vtables, too.

I also reclassified SwitchCase (correctly) as an abstract Stmt
class, which (as the first such class that wasn't an Expr subclass)
required some fiddling in a few places.

There are somewhat gross metaprogramming hooks in place to ensure
that new statements/expressions continue to implement
getSourceRange() and children(). I had to work around a recent clang
bug; dgregor actually fixed it already, but I didn't want to
introduce a selfhosting dependency on ToT.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125183 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtIterator.h
ST/StmtObjC.h
asic/StmtNodes.td
824c547dc5d4451b9dbacc56621592fa010878f4 09-Feb-2011 Ted Kremenek <kremenek@apple.com> Initialize 'reclaimNodes'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125179 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ExplodedGraph.h
dec5b63c200b108851bb6486bb10060bce276414 09-Feb-2011 Ken Dyck <kd@kendyck.com> Correct units in comments describing Size and getSize().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
5f022d82696c84e4d127c558871d68ac6273274e 09-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::Size to CharUnits from bits. No changes to
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
d767d81290288c030f3be0be1d3e62b9c8df51dc 09-Feb-2011 Ted Kremenek <kremenek@apple.com> static analyzer: Further reduce the analyzer's memory usage when analyzing sqlite3 by 7-10% by recylcing "uninteresting" ExplodedNodes.

The optimization involves eagerly pruning ExplodedNodes from the ExplodedGraph that contain
practically no difference between the predecessor and successor nodes. For example, if
the state is different between a predecessor and a node, the node is left in. Only for
the 'environment' component of the state do we not care if the ExplodedNodes are different.
This paves the way for future optimizations where we can reclaim the environment objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125154 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
taticAnalyzer/PathSensitive/AnalysisManager.h
taticAnalyzer/PathSensitive/ExplodedGraph.h
taticAnalyzer/PathSensitive/GRState.h
58465900ca10e53b8700a64e9265870de34e1aca 09-Feb-2011 Ted Kremenek <kremenek@apple.com> Make ProgramPoint::getTag() public.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125153 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
76a40219ee5624d78aba167dce02bdbaa930955f 09-Feb-2011 John McCall <rjmccall@apple.com> NonTypeTemplateParmDecl is just a DeclaratorDecl, not a VarDecl.

Also, reorganize and make very explicit the logic for determining
the value kind and type of a referenced declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
332bb2a2e3cd0a5af85758847a8050ae8ceee5f3 08-Feb-2011 John McCall <rjmccall@apple.com> When checking the 'weak' and 'weakref' attributes, look for non-external
linkage rather than the presence of the 'static' storage class specifier.
Fixes rdar://problem/8814626.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125126 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4800a5c79023271408af49797e09be32aca93232 08-Feb-2011 Douglas Gregor <dgregor@apple.com> Split the serialized representation for the detailed preprocessing
record away from the core processor record. The tangling of these two
data structures led to some inefficiencies (e.g., deserializing all
of the detailed preprocessing record when we didn't need it, such as
while performing code completion) along with some unnecessary
ugliness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125117 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
cc324ad80ab940efca006b0064f7ca70a6181816 08-Feb-2011 Peter Collingbourne <peter@pcc.me.uk> AST: support for pre-arg expressions on CallExpr subclasses

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
09982cec0029bc495591067fa89967b6b4d1fa19 08-Feb-2011 Benjamin Kramer <benny.kra@googlemail.com> Allow multiple -B prefixes. Patch by Joerg Sonnenberger.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125111 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
f76b092e1a6f0df4a5c64aae3c71d6e81e4b717c 08-Feb-2011 John McCall <rjmccall@apple.com> Clear the linkage cache recursively. Fixes PR8926.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1e52dfc648ce0b25ef57ae29ef1b4337d80011ef 08-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> Support for objextive-c++ use of property-dot syntax as receiver
in liu of a class method getter.
// rdar://8962253


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125094 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
68cf1a5a01ba43ed56a8624632fd65e0804430ac 08-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::NonVirtualAlign to CharUnits. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125069 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
1b528445016c2dba23babeea07e352ca8b816262 07-Feb-2011 Ted Kremenek <kremenek@apple.com> Move uninitialized variable checking back under -Wuninitialized-experimental. It is clear from user feedback that this warning is not quite ready.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125007 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6b5a61b6dc400027fd793dcadceeb9da944a37ea 07-Feb-2011 John McCall <rjmccall@apple.com> A few more tweaks to the blocks AST representation:
- BlockDeclRefExprs always store VarDecls
- BDREs no longer store copy expressions
- BlockDecls now store a list of captured variables, information about
how they're captured, and a copy expression if necessary

With that in hand, change IR generation to use the captures data in
blocks instead of walking the block independently.

Additionally, optimize block layout by emitting fields in descending
alignment order, with a heuristic for filling in words when alignment
of the end of the block header is insufficient for the most aligned
field.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ema/ScopeInfo.h
ab234decacef3cc7f87e2b073ed8229a6f4ca84d 06-Feb-2011 Chris Lattner <sabre@nondot.org> add some missing builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124981 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
8ef6c8cb6c5627240e2339fd7062c9873f821d7e 05-Feb-2011 Douglas Gregor <dgregor@apple.com> Improve our uniquing of file entries when files are re-saved or are
overridden via remapping. Thus, when we create a "virtual" file in the
file manager, we still stat() the real file that lives behind it so
that we can provide proper uniquing based on inodes. This helps keep
the file manager much more consistent.

To take advantage of this when reparsing files in libclang, we disable
the use of the stat() cache when reparsing or performing code
completion, since the stat() cache is very likely to be out of date in
this use case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124971 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
rontend/PreprocessorOptions.h
erialization/ASTReader.h
f677ea3cc9598d9952ad7ffab5fb322ba4c5be31 05-Feb-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Basic implementation of inherited constructors. Only generates declarations, and probably only works for very basic use cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
1de34dd8a6932fbb316e35304bf468ddb4a0841b 05-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> When the out-of-line definition differs from the declaration in the return type,
say "out-of-line definition differ from the declaration in the return type" instead of
the silly "functions that differ only in their return type cannot be overloaded".

Addresses rdar://7980179.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8b789139167d721e3ef1e3d433eabeb351c36fad 05-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> -Wselector should warn on implemented selectors only
when selector metadata is generated, which is triggered
by at least on class implementation. This is to match gcc's
behavior. // rdar://8851684.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fdc13a00a0077383eabf6d994de10203568415bb 04-Feb-2011 Douglas Gregor <dgregor@apple.com> When calling a bound pointer to member function, check the
cv-qualifiers on the object against the cv-qualifiers on the member
function. Fixes PR8315.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
def0354384d9c4431f7b58b664b59896d4623028 04-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement proper (de-)serialization for explicit template argument
lists with zero template arguments. Fixes some seriously scary
crashers in C++ PCH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
4ee2bb12dcb8f8b543a3581537a4bc5752106ce2 04-Feb-2011 Ted Kremenek <kremenek@apple.com> Downgrade error about attribute 'iboutlet' and 'ibaction' being applied to anything but a instance method to a warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124858 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d89d86fe4acaa4782b0ed8a684bbc1b32cb48b70 04-Feb-2011 Douglas Gregor <dgregor@apple.com> Tighten up the semantics of default template arguments, per C++0x
[temp.param]p9 and C++ DR226. Fixes PR8747.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124856 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ee5d21f63714459f39e0be28fec9dbecf0720505 04-Feb-2011 Douglas Gregor <dgregor@apple.com> When a function template's template parameter has a default argument,
it's okay for the following template parameters to not have default
arguments (since those template parameters can still be
deduced). Also, downgrade the error about default template arguments
in function templates to an extension warning, since this is a
harmless C++0x extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
398c610b16728b4398214367dd0effd9d2e61340 04-Feb-2011 Daniel Dunbar <daniel@zuster.org> build: Add support for DISABLE_DEFAULT_STRICT_ALIASING, which does what one
might expect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124848 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
f24fe4d1f1828251bcd160244a2393f2e990f1aa 04-Feb-2011 Daniel Dunbar <daniel@zuster.org> Fix 80-col violins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124847 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
142f9e99018a85105cee570133c111a52f2053ec 04-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> -fapple-kext cannot have 'weak' visibility in this
abi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
2100fe952a644134b1dca462f2e6330cf14ef47c 03-Feb-2011 Oscar Fuentes <ofv@wanadoo.es> Moved here from LLVM Clang's configuration options and related macros.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124825 91177308-0d34-0410-b5e6-96231b3b80d8
onfig/config.h.cmake
799ef666685d6c97d64d1970a6f68bf7923360c2 03-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -Woverloaded-virtual.

The difference with gcc is that it warns if you overload virtual methods only if
the method doesn't also override any method. This is to cut down on the number of warnings
and make it more useful like reported here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20423.
If we want to warn that not all overloads are overriden we can have an additional
warning like -Wpartial-override.

-Woverloaded-virtual, unlike gcc, is added to -Wmost. Addresses rdar://8757630.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
86a4d0dd6a630639aab7715323ed068940e650af 03-Feb-2011 Douglas Gregor <dgregor@apple.com> Teach SourceManager::getLocation() how to cope with a source file
whose inode has changed since the file was first created and that is
being seen through a different path name (e.g., due to symlinks or
relative path elements), such that its FileEntry pointer doesn't match
a known FileEntry pointer. Since this requires a system call (to
stat()), we only perform this deeper checking if we can't find the
file by comparing FileEntry pointers.

Also, add a micro-optimization where we don't bother to compute line
numbers when given the location (1, 1). This improves the
efficiency of clang_getLocationForOffset().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124800 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
26743b20e4a8c2a986e6453f0c38beba0afef633 03-Feb-2011 John McCall <rjmccall@apple.com> Capture a few implicit references to 'self'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5808ce43f8d7e71f5acacc9ca320268c4f37565a 03-Feb-2011 John McCall <rjmccall@apple.com> More capturing of 'this': implicit member expressions. Getting that
right for anonymous struct/union members led to me discovering some
seemingly broken code in that area of Sema, which I fixed, partly by
changing the representation of member pointer constants so that
IndirectFieldDecls aren't expanded. This led to assorted cleanups with
member pointers in CodeGen, and while I was doing that I saw some random
other things to clean up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124785 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
553304523bcce281aa3b1afe0f84ae34a90a3c86 03-Feb-2011 Ted Kremenek <kremenek@apple.com> Reenable -Wuninitialized warning for captured block variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f704c61b3c88659a0c9946ea26d1bbff99803792 03-Feb-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Switch -header-include-file output to use unbuffered raw_ostreams with
the atomic writes option, since the intent is that this option be set for an
entire build, which may have any number of compiler instances writing to the
same output file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124772 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
b51eee43676c2f4b7c4e1fa1648b438051b2b098 03-Feb-2011 Francois Pichet <pichet2000@gmail.com> Fix Microsoft bit field problem. This resolves the Index\complete-exprs.c regression on Win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124767 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
609e3170841dac81c3b7b6b9eccb9c520e42c9b2 03-Feb-2011 Ted Kremenek <kremenek@apple.com> Based on user feedback, swap -Wuninitialized diagnostics to have the warning refer to the bad use, and the note to the variable declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
322c29fefe7fa33f03273136eb5f8b7f5b4df7c0 02-Feb-2011 Daniel Dunbar <daniel@zuster.org> clang: Add support for a CC_PRINT_HEADERS environment variable, which mirrors
CC_PRINT_OPTIONS and can be used to get some out-of-band information on header
usage from a build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124751 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
b34d69b9292534c1c574f168f0ac10aea652adca 02-Feb-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Add -header-include-file option, for allowing saving header include
information to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124750 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/DependencyOutputOptions.h
b376e5e71aa3e608c0481a9a7facb5d8b29d3163 02-Feb-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Add support (unused) for showing all "interesting" headers, not just
ones outside the predefines buffer (which is what -H does).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124749 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
6159d0fe2d40708b5a3caab91c8292253894ebf3 02-Feb-2011 Douglas Gregor <dgregor@apple.com> Revert r124704, which uniqued code-completion strings. The space
savings of 25% sounds impressive, except that this amounted to only
about 360k in our standard "large" completion result set (40,000
results). Since code completion is performance-sensitive, the 4%
slowdown due to uniquing outweighs the 360k benefit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124737 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
8e50a96b387dca7525caa8a6add31420dd82a2cd 02-Feb-2011 Benjamin Kramer <benny.kra@googlemail.com> Add NetBSD target support. Patch by Joerg Sonnenberger.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124736 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
eef63e0997e0f6d6436736ea919b851cfe34955a 02-Feb-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Factor out header include dumping (-H) into its own preprocessor
callbacks class.
- Aside from being generally cleaner, this also allows -H to work correctly in
modes other than standard preprocessing (e.g., -c, -MM, etc.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124723 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DependencyOutputOptions.h
rontend/PreprocessorOutputOptions.h
rontend/Utils.h
469a1eb996e1cb0be54f9b210f836afbddcbb2cc 02-Feb-2011 John McCall <rjmccall@apple.com> An insomniac stab at making block declarations list the variables they close
on, as well as more reliably limiting invalid references to locals from
nested scopes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124721 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ema/ScopeInfo.h
e349d2c61256f11180b7112ab592b4ae700f3dcf 02-Feb-2011 Douglas Gregor <dgregor@apple.com> Unique code-completion strings. On Cocoa.h, this costs us about 4% in
speed but saves us about 25% of the memory usage for strings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124704 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
dae687575010c9c49a4b552f5eef82cd6279d9ac 01-Feb-2011 Douglas Gregor <dgregor@apple.com> Create a special allocator class for code completion, so that all of
the string copying goes through a single place that can have
associated state.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124698 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
218937c13ef5b0625a70aad41ca7a92da9278bd2 01-Feb-2011 Douglas Gregor <dgregor@apple.com> Allocate CodeCompletionString and all of its components in a
BumpPtrAllocator, rather than manually new/delete'ing them. This
optimization also allows us to avoid allocating memory for and copying
constant strings (e.g., "return", "class").

This also required embedding the priority and availability of results
within the code completion string, to avoid extra memory allocation
within libclang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124673 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
0e2dc3a1159806c8303b0979be1ce1526cc64ed3 01-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Warn for "if ((a == b))" where the equality expression is needlessly wrapped inside parentheses.
It's highly likely that the user intended an assignment used as condition.

Addresses rdar://8848646.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124668 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
d880f52be3e4a8ccad92ac31932eeae5e0870a93 01-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement access checking for the "delete" operator. Fixes PR9050,
from Alex Miller!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124663 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6f75550e40a9177db9979fc130ce3ece026b137d 01-Feb-2011 Douglas Gregor <dgregor@apple.com> Basic support for -mms-bitfields, from Carl Norum!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124661 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
2a7c12ccbecbf95840d073e3524e2d56e599913e 01-Feb-2011 Ken Dyck <kd@kendyck.com> Correct units in doxygen comment for NonVirtualSize.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
5c3633fa57f27b0909ab5767715c4e66b8920165 01-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::NonVirtualSize from bit units to CharUnits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
86c05f3f28bcf07c97dfb1881686fc43be2f47c2 01-Feb-2011 John McCall <rjmccall@apple.com> Perform the bad-address-space conversions check as part of
CheckPointerTypesForAssignment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124632 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
293a45e724a15fb58b8805a5791f9f3aee769cf6 01-Feb-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Improve the diagnostic for -Wcustom-atomic-properties. Suggestion by Fariborz!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e4be87eb661ff12524074184f43b9d11d06ad376 01-Feb-2011 John McCall <rjmccall@apple.com> Make Check*PointerTypesForAssignment private and tell them that they're
working on canonical types already.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124618 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4f5e21e24fb9e6ec473a13f83b5c9a2c41501a70 31-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach Diagnostic::setClient() to free the existing, owned
client. Fixes a libclang leak.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ff9cd968cd5b623e3ec7e5f862b598cd22f7ec79 31-Jan-2011 Daniel Dunbar <daniel@zuster.org> Frontend: Add an explicit RemoveFileOnSignal flag argument, to control the
automatic behavior (which is undesirable in a multithreaded context).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124612 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
94659e4bdb87534f591ae185812548c42d6efacb 31-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add -Wcustom-atomic-properties which warns if an atomic-by-default property has custom getter or setter.

The rationale is that it is highly likely that the user's getter/setter isn't atomically implemented. Off by default.
Addresses rdar://8782645.

-Wcustom-atomic-properties and -Wimplicit-atomic-properties are under the -Watomic-properties group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
683a81f4373cf1fa9d41a751dca6f7c36125b058 31-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement the suggested resolution to core issue 547, extended to also
allow ref-qualifiers on function types used as template type
arguments. GNU actually allows cv-qualifiers on function types in many
places where it shouldn't, so we currently categorize this as a GNU
extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/DeclSpec.h
def4e2a405a15eb8381ca305725285d27a4bab65 31-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Warn if the class has virtual methods but non-virtual destructor. Addresses rdar://8756445.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124582 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6684d85e9075e3c1750d911c69a517145a82a410 31-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Diagnose if extern local variable is followed by non-extern and vice-versa.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0413db4a26b0a1577b75c2979b0eb21f3490d17a 31-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Amazing that there are still issues with the fields of anonymous struct/unions..
Allow taking the address of such a field for a pointer-to-member constant. Fixes rdar://8818236.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124575 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f25649c74397d2620e6ac61f1045261644707c80 29-Jan-2011 Nico Weber <nicolasweber@gmx.de> Support for -plugin-arg- with -add-plugin

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124551 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
d89d30fdd9e3061fb100fb8f976aab5c6cf2c901 28-Jan-2011 John McCall <rjmccall@apple.com> Fix some corner cases in the __is_base_of logic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124505 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
4867347e82648d3baf09524b98b09c297a5a198f 28-Jan-2011 Nico Weber <nicolasweber@gmx.de> PR9037: Allow override, final, and new as an extension on inline members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124477 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/DeclSpec.h
b608b987718c6d841115464f79ab2d1820a63e17 28-Jan-2011 Douglas Gregor <dgregor@apple.com> Give OpaqueValueExpr a source location, because its source location
might be queried in places where we absolutely require a valid
location (e.g., for template instantiation). Fixes some major
brokenness in the use of __is_convertible_to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ema/Sema.h
1eee5dc0465c0ab4810e21d365e881152d7f53c0 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach the evaluation of the __is_convertible_to trait to translate
access control errors into SFINAE errors, so that the trait provides
enough support to implement the C++0x std::is_convertible type trait.

To get there, the SFINAETrap now knows how to set up a SFINAE context
independent of any template instantiations or template argument
deduction steps, and (separately) can set a Sema flag to translate
access control errors into SFINAE errors. The latter can also be
useful if we decide that access control errors during template argument
deduction should cause substitution failure (rather than a hard error)
as has been proposed for C++0x.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124446 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
418df343bb50802586d20aae3b83e2eb44c6c828 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Separate the access-control diagnostics from other diagnostics that do not have SFINAE behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124441 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.td
asic/DiagnosticIDs.h
asic/DiagnosticSemaKinds.td
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
9f3611365d0f2297a910cf246e056708726ed10a 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement the Microsoft __is_convertible_to type trait, modeling the
semantics after the C++0x is_convertible type trait. This
implementation is not 100% complete, because it allows access errors
to be hard errors (rather than just evaluating false).

Original patch by Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124425 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
asic/TypeTraits.h
63e7d25d2e6036616b42f744fd4a39cd5f911960 27-Jan-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed parameter names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124408 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b7ee2e5cc999a45ec4fd7b879477816714aabb7e 27-Jan-2011 Jeffrey Yasskin <jyasskin@google.com> Revert r124217 because it didn't catch the actual error case it was trying to
catch:

lock_guard(my_mutex);

declares a variable instead of creating a temporary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124398 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
8c29cfa09fa46387e90ecd74f4f5c447eab1c38f 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Clean up the diagnostic text for delegating constructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124393 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2a5c45b1ae4406459fbb39cb477951987c59cb0f 27-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow #pragma unused to be used on global variables like gcc. Fixes rdar://8793832.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124383 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1aa27307c462baaa9e5fda14ff6797dd39fe8b84 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach ASTUnit to save the specified target features, since
TargetInfo::CreateTargetInfo() mangles the target options in a way
that is not idempotent. Fixes <rdar://problem/8807535>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124382 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
9319b56154cfd9e3c781e54d2ee1c10c5858efed 27-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Fix crash when handling dot syntax on 'super'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124376 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ObjCMessage.h
6ec278d1a354517e20f13a877481453ee7940c78 27-Jan-2011 John McCall <rjmccall@apple.com> Do a proper recursive lookup when deciding whether a class's usual
deallocation function has a two-argument form. Store the result of this
check in new[] and delete[] nodes.

Fixes rdar://problem/8913519



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d0370f59e79702ac908c81bf556519f91e9ca297 27-Jan-2011 John McCall <rjmccall@apple.com> Provide Type::castAs<>, which is to getAs<> what cast<> is to dyn_cast<>.
Also provide a method to grab the base element type of a type without
stressing out over qualifiers (but give it a nice scary name).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124367 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
14d0aee957f11b9613fa4312919bec3cc5456a1c 27-Jan-2011 Douglas Gregor <dgregor@apple.com> Fix a horrible bug in our handling of C-style casting, where a C-style
derived-to-base cast that also casts away constness (one of the cases
for static_cast followed by const_cast) would be treated as a bit-cast
rather than a derived-to-base class, causing miscompiles and
heartburn.

Fixes <rdar://problem/8913298>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124340 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b145ee6cc7d7db42ca4351ff3fe91f04e86a2f67 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement the restriction that a function with a ref-qualifier cannot
overload a function without a ref-qualifier (C++0x
[over.load]p2). This, apparently, completes the implementation of
rvalue references for *this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124321 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1f3810623fc7adbff149585a49a3f174dafdea81 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Improve the extension warning for the use of ref-qualifiers, to
distinguish them from rvalue references. Using the rvalue-references
warning was weird when the ref-qualifier was '&'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fcab48b626b7ce43625958e857061d721a43a5bc 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Rvalue references for *this: explicitly keep track of whether a
reference binding is for the implicit object parameter of a member
function with a ref-qualifier. My previous comment, that we didn't
need to track this explicitly, was wrong: we do in fact get
rvalue-references-prefer-rvalues overloading with ref-qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124313 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
2c9a03f3b249e4d9d76eadf758a33142adc4d0a4 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Rvalue references for *this: implement the implicit conversion rules
for the implicit object argument to a non-static member function with
a ref-qualifier (C++0x [over.match.funcs]p4).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124311 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ema/Overload.h
ema/Sema.h
192e7f7e7f0493f7cdfda1d752e6de340d4e3ffe 26-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Move InheritableAttr::isInherited to Attr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
fa75e614683e94ff2e0bd651b1722935a2507758 26-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Remove Attr::isMerged; it is not used any more and redundant with
InheritableAttr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
0a9a6d68979619a621fedc5089674487f720f765 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Rvalue references for *this: add name mangling for ref-qualifiers,
using rules that I just made up this morning. This encoding has now
been proposed to the Itanium C++ ABI group for inclusion, but of
course it's still possible that the mangling will change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6b4df91dc4ed4a3fc78587c49a3ed3df96b65d9c 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Reference qualifiers for *this: implement C++0x [expr.mptr.oper]p6,
the restrictions on .* and ->* for ref-qualified pointer-to-member
functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124294 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c78e259a5fafd889f5945bc2c48fea48cb3ef9d0 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Clean up the C++0x __has_feature tests. Specifically:
- Don't publicize a C++0x feature through __has_feature if we aren't
in C++0x mode (even if the feature is available only with a
warning).
- "auto" is not implemented well enough for its __has_feature to be
turned on.
- Fix the test of C++0x __has_feature to actually test what we're
trying to test. Searching for the substring "foo" when our options
are "foo" and "no_foo" doesn't work :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124291 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
440a48318c53647d6416bcb1ff1af1452aa5d453 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Reinstate r124236 (tweaking the rvalue-reference overload resolution
rules), now that we've actually have a clean build for me to sully.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124290 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
c938c1668b4fd12af154e965dd935a89e4801a70 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Rvalue references for *this:

- Add ref-qualifiers to the type system; they are part of the
canonical type. Print & profile ref-qualifiers
- Translate the ref-qualifier from the Declarator chunk for
functions to the function type.
- Diagnose mis-uses of ref-qualifiers w.r.t. static member
functions, free functions, constructors, destructors, etc.
- Add serialization and deserialization of ref-qualifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
fd6b874f3af26bc64a1d5781833c197b314afb8b 26-Jan-2011 Ted Kremenek <kremenek@apple.com> Merge -Wuninitialized-experimental into -Wuninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
83f51722ed2b8134810cb178f39e44da811de7cd 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Rvalue references for *this: parse ref-qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124276 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
bd5a94e263137dc3ce7c100485626bae025cf58e 26-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Enable the self-init checker under command-line option '-analyzer-check-objc-self-init' which by default
is enabled by the driver for '--analyze'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124266 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
61d2ab0fa1827c43e5f9023a26c36102cd549f82 26-Jan-2011 Jeffrey Yasskin <jyasskin@google.com> Remove CompilerInstance::getOutputFileList because it is unimplemented and unused.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124256 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
4d4feead7e240bf24264658b5abb0b88d52ed684 26-Jan-2011 Douglas Gregor <dgregor@apple.com> Speculatively revert r124236

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124247 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
98650449dc769dd6217f183c846dcaf9e6f94930 26-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change error "function cannot return array type" -> "blocks cannot return array type" when blocks are involved.
Addresses rdar://8876238.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124242 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b7cd135215501a154eb4f68159f3af020783099e 25-Jan-2011 Douglas Gregor <dgregor@apple.com> Speculatively implement a tweak to the C++0x overload resolution rules
for reference binding (C++ [over.rank.ics]p3b1sb4), so that we prefer
the binding of an lvalue reference to a function lvalue over the
binding of an rvalue reference. This change resolves the ambiguity
with std::forward and lvalue references to function types in a way
that seems consistent with the original rvalue references proposal.

My proposed wording for this change is shown in
isBetterReferenceBindingKind(); we'll try to get this change adopted
in the C++0x working paper as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124236 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
5aa74affa5d61d04c4b034b3722ca41aec0cba6e 25-Jan-2011 Nico Weber <nicolasweber@gmx.de> Add -add-plugin flag, which runs plugins in addition to codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
odeGen/CodeGenAction.h
river/CC1Options.td
rontend/FrontendAction.h
rontend/FrontendOptions.h
rontend/MultiplexConsumer.h
c60e13aeff96515d27638129154b1308c15ded3d 25-Jan-2011 Jeffrey Yasskin <jyasskin@google.com> Add an attribute to forbid temporary instances of a type. This allows class
authors to write

class __attribute__((forbid_temporaries)) Name { ... };

when they want to force users to name all variables of the type. This protects
people from doing things like creating a scoped_lock that only lives for a
single statement instead of an entire scope.

The warning produced by this attribute can be disabled by
-Wno-forbid-temporaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124217 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
e3115e257163321ecde429aeae75f1702f099d4c 25-Jan-2011 Ted Kremenek <kremenek@apple.com> Recycle memory for GRStates that are never referenced
by ExplodedNodes. This leads to about a 4-8%
reduction in memory footprint when analyzing
functions in sqlite3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124214 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ExplodedGraph.h
taticAnalyzer/PathSensitive/GRState.h
a8c17a5babab35f2db26bf218e7571d1af4afedf 25-Jan-2011 Ted Kremenek <kremenek@apple.com> Teach -Wuninitialized-experimental to also warn
about uninitialized variables captured by blocks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124213 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValuesV2.h
asic/DiagnosticSemaKinds.td
c21c7e9c2cded68f91be15be6847c9649242dc17 25-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach TemplateSpecializationTypeLoc::initializeArgLocs() to actually
generate meaningful [*] template argument location information.

[*] Well, as meaningful as possible, given that this entire code path
is a hack for when we've lost type-source information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
d6b8de0e7b01196bd2bee207feb81bc409a5baf9 25-Jan-2011 John McCall <rjmccall@apple.com> Change the wording of the bad-decl-for-attribute warning and error
to make it clear that we're talking about the declarations and not the types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c7ad38168d329d778e884a8b6400bcbed8dc85ee 25-Jan-2011 John McCall <rjmccall@apple.com> Add the ns_consumes_self, ns_consumed, cf_consumed, and ns_returns_autoreleased
attributes for the benefit of the static analyzer.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124174 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
16cf8f5b6f582876b64e132715280fc473f876b9 25-Jan-2011 Douglas Gregor <dgregor@apple.com> Downgrade the error about rvalue references to an extension warning
and turn on __has_feature(cxx_rvalue_references). The core rvalue
references proposal seems to be fully implemented now, pending lots
more testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124169 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
14429b918bd2f4cb52abc75546a7fe37142054ca 25-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Handle the dot syntax for properties in the ExprEngine.

We translate property accesses to obj-c messages by simulating "loads" or "stores" to properties
using a pseudo-location SVal kind (ObjCPropRef).

Checkers can now reason about obj-c messages for both explicit message expressions and implicit
messages due to property accesses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124161 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ExprEngine.h
taticAnalyzer/PathSensitive/SVals.h
5286e2ddfd8332520de4c076e49991d6fe557adb 25-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Introduce ExprEngine::VisitObjCMessage for handling general ObjCMessages (both message expressions and property access)
and use it in ExprEngine::VisitObjCMessageExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124160 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ExprEngine.h
432424d67641d609e4990d791baa782fc161027e 25-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Introduce ObjCMessage which represents both explicit ObjC message expressions and implicit
messages that are sent for handling properties in dot syntax.

Replace all direct uses of ObjCMessageExpr in the checkers and checker interface with ObjCMessage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124159 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/Checker.h
taticAnalyzer/PathSensitive/CheckerVisitor.def
taticAnalyzer/PathSensitive/ExprEngine.h
taticAnalyzer/PathSensitive/ObjCMessage.h
taticAnalyzer/PathSensitive/TransferFuncs.h
5505c72695161e2fb55391d1453b82b7adbff923 24-Jan-2011 Douglas Gregor <dgregor@apple.com> Disallow function template partial specializations, from Hans
Wennborg! Fixes PR8295.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cb88a1f968c3d4eb451dafb421a8d9578edcbf1a 24-Jan-2011 Anders Carlsson <andersca@mac.com> Use attributes for all the override control specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/Attr.td
9ff2b13aee0f89d23ef4820218f9b88bb5e5c1c1 24-Jan-2011 Ken Dyck <kd@kendyck.com> Use CharUnits for the offset amount of RegionRawOffset.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124093 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/MemRegion.h
15e14a289583616e582a23b320933e846a742626 23-Jan-2011 Anders Carlsson <andersca@mac.com> Get rid of [[hiding]], [[override]] and [[base_check]].

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124087 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
f89e0424b8903438179f4a2f16dddd5e5bdc814e 23-Jan-2011 Anders Carlsson <andersca@mac.com> Get rid of the [[final]] C++0x attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124083 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
3176cca2fe2bb9ab061e8e5fc05b4d59403fcf19 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for the --noexecstack option. Fixes PR8762.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124078 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
e00909a6e997ec33d9baa5312e9d27b52a3da770 23-Jan-2011 Ted Kremenek <kremenek@apple.com> Tweak diagnostic:

error: no super class declared in @interface for 'XXX'

to be:

error: 'X' cannot use 'super' because it is a root class

The latter explains what the user actually did wrong.

Fixes: <rdar://problem/8904409>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ce93a7cee6c0ea979c12b278771a79c4d6a37fc0 23-Jan-2011 Anders Carlsson <andersca@mac.com> Accept the C++0x override control keywords as an extension in C++98. This is OK since the new syntax is unambiguous and can't be confused with C++98 syntax. If anyone disagrees, please shout!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ema/DeclSpec.h
dfc2f1035d23e294b298766a3cf51dfe249d53a2 22-Jan-2011 Anders Carlsson <andersca@mac.com> Mark classes as final or explicit. Diagnose when a class marked 'final' is used as a base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124039 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b76cc4d4445fd9e5b29722407ce870e3f5a64cca 22-Jan-2011 Anders Carlsson <andersca@mac.com> Add final/explicit getters and setters to CXXRecordDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cc54d594d4f6509c0e3a8e349e481d9b5d899df6 22-Jan-2011 Anders Carlsson <andersca@mac.com> Parse class-virt-specifier-seqs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124036 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/DeclSpec.h
46127a96b6dd6b93aa18d5f7a55bc2db8b52a2c9 22-Jan-2011 Anders Carlsson <andersca@mac.com> More work on ClassVirtSpecifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124035 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
c46bb7d098bf9e9f0258bf2bb97d8f0f7d382288 22-Jan-2011 Anders Carlsson <andersca@mac.com> Start stubbing out a ClassVirtSpecifiers class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124032 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
f1602a56f89ac48aa1b5bce42f07ee795e674a6f 22-Jan-2011 Anders Carlsson <andersca@mac.com> A member function template cannot be virtual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124031 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
07f402cff25354c5f06f307f19b0c57c09d964bd 21-Jan-2011 Douglas Gregor <dgregor@apple.com> Generalize the NRVO move-construction-based initialization routine. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123996 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
fbb178a0b47fca1b0fb78c5d41198614cf52aa70 21-Jan-2011 Ted Kremenek <kremenek@apple.com> Add basic fixits for -Wuninitialized-experimental
to suggest initializations for pointer and
ObjC pointer types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123995 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
94b1b4d785bc0f09f6af4be394e59d51f35dda60 21-Jan-2011 Ted Kremenek <kremenek@apple.com> Enhance -Wuninitialized-experimental diagnostics
to issue the warning at an uninitialized variable's
declaration, but to issue notes at possible
uninitialized uses (which could be multiple).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123994 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc15f010672a13b38104a32e3cefc7adc07ffbf7 21-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement the preference for move-construction over copy-construction
when returning an NRVO candidate expression. For example, this
properly picks the move constructor when dealing with code such as

MoveOnlyType f() { MoveOnlyType mot; return mot; }

The previously-XFAIL'd rvalue-references test case now works, and has
been moved into the appropriate paragraph-specific test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f5d8f466c3eebaffc51468812bdcbe7f0fe4891a 21-Jan-2011 Douglas Gregor <dgregor@apple.com> Promote the static getNRVOCandidate() function, which computed the
NRVO candidate for a return statement, to
Sema::getCopyElisionCandidate(), and teach it enough to also determine
the NRVO candidate for a throw expression. We still don't use the
latter information, however.

Along the way, implement core issue 1148, which eliminates copy
elision from catch parameters and clarifies that copy elision cannot
occur from function parameters (which we already implemented).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123982 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c80e8115278ba1537c8b517a083ecbd0a018b579 21-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Sema: process non-inheritable attributes on function declarations early

This allows us to simplify the handling for the overloadable attribute,
removing a number of FIXMEs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123961 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
60700390a787471d3396f380e0679a6d08c27f1f 21-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Sema: support for processing non-inheritable declaration attributes early

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123960 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a97d70b7ea9633e8cbf976510d7a9ea66f4ac96c 21-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Generalise support for non-inheritable attributes

Inheritable attributes on declarations may be inherited by any later
redeclaration at merge time. By contrast, a non-inheritable attribute
will not be inherited by later redeclarations. Non-inheritable
attributes may be semantically analysed early, allowing them to
influence the redeclaration/overloading process.

Before this change, the "overloadable" attribute received special
handling to be treated as non-inheritable, while all other attributes
were treated as inheritable. This patch generalises the concept,
while removing a FIXME. Some CUDA location attributes are also marked
as non-inheritable in order to support special overloading semantics
(to be introduced in a later patch).

The patch introduces a new Attr subclass, InheritableAttr, from
which all inheritable attributes derive. Non-inheritable attributes
simply derive from Attr.

N.B. I did not review every attribute to determine whether it should
be marked non-inheritable. This can be done later on an incremental
basis, as this change does not affect default functionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123959 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/AttrKinds.h
fb5d7efc279335bde2cdc0a73da525d6b28201e9 21-Jan-2011 Douglas Gregor <dgregor@apple.com> Improve the diagnostic that complains about binding an rvalue
reference to an lvalue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2e1c730167d2b978c66558c029d163ffe64b9656 20-Jan-2011 Anders Carlsson <andersca@mac.com> Diagnose when a virtual member function marked final is overridden.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123916 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ba4f5d5754c8291690d01ca9581926673d69b24c 20-Jan-2011 John McCall <rjmccall@apple.com> Fix the computation of alignment for fields of packed+aligned structs.
Part of the fix for PR8413.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4ebf1605166e0b6cc967a51429949a0722f79665 20-Jan-2011 Anders Carlsson <andersca@mac.com> Make CheckOverrideControl a member of Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123893 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9e682d9f567a51f26c3b0673837e23bafdb09c11 20-Jan-2011 Anders Carlsson <andersca@mac.com> Diagnose virtual member functions marked override but not overriding any virtual member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123888 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c0534b6cdc414aa86ef7e9ab37f7a81a79140f02 20-Jan-2011 Anders Carlsson <andersca@mac.com> Add IsMarkedOverride and IsMarkedFinal flags to FunctionDecl (to be used by CXXRecordDecl).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
98367f0322ac43fa5b0c7ccb33bab95f66b960f6 20-Jan-2011 Anders Carlsson <andersca@mac.com> Change the parser error to reflect that virt-specifiers are allowed on any class member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
aae5af24f031ad5f17872bd8b27ed5c175c0f90c 20-Jan-2011 Anders Carlsson <andersca@mac.com> Only allow virtual member functions to be marked 'override' and 'final'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
69a87357310260c4b2c5dce2cdcd10c3fd3a0a58 20-Jan-2011 Anders Carlsson <andersca@mac.com> Pass the VirtSpecifiers along to Sema::ActOnCXXMemberDeclarator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123878 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7eeb4ec11043d4860361348f2b19299d957d47a9 20-Jan-2011 Anders Carlsson <andersca@mac.com> Lazily initialize the 'final' and 'override' contextual keywords as suggested by Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123876 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3dbdb58e2e920ad69fecbd56c25b58577ab693e8 20-Jan-2011 Ken Dyck <kd@kendyck.com> Add CharUnits::RoundUpToAlignment() to simplify rounding in character units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
83eecbefa4931b95231c9f2a61fb7b9b15e00eec 20-Jan-2011 Douglas Gregor <dgregor@apple.com> When building a user-defined conversion sequence, keep track of the
declaration that name lookup actually found, so that we can use it for
access checking later on. Fixes <rdar://problem/8876150>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123867 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
f2ae52605a49e5fc7a581f2c1ae02f1811034578 20-Jan-2011 Douglas Gregor <dgregor@apple.com> Sema::BuildCXXMemberCallExpr() can fail due to access or ambiguities,
so allow it to propagate the failure outward. Fixes the crashing part
of <rdar://problem/8876150>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123863 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
dfc331e04d4c6a09fb693a15fc5a57d29a198c86 20-Jan-2011 Douglas Gregor <dgregor@apple.com> Explicitly track the number of call arguments provided when performing
overload resolution, so that we only use that number of call arguments
for partial ordering. Fixes PR9006, a recent regression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123861 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
4c9131ac2d0a65cb7c0179d438ae56f7978ab012 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Variadic templates are fully implemented.

Turn on the __has_feature switch for variadic templates, document
their completion, and put the ExtWarn into the c++0x-extensions
warning group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123854 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
5ce5f5221217b64193799c2a4d5aa84432d3fba4 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Downgrade the "variadic templates are a C++0x feature" error to an
ExtWarn. We want variadic templates to be usable in libc++/libstdc++
headers even when we're in C++98/03 mode, since it's the only clean
way to implement TR1 <functional>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123852 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
d967e31ee796efff24b84b704a063634f6b55627 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Refactor the dependence computation for DeclRefExpr so that we can
reuse it for BlockDeclRefExpr. Do so, fixing the dependence calculate
for BlockDeclRefExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
a779d9ca2fdf1247f65de0e6acf2870d8be53ccd 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement basic support for the use of variadic templates and blocks
together. In particular:
- Handle the use of captured parameter pack names within blocks
(BlockDeclRefExpr understands parameter packs now)
- Handle the declaration and expansion of parameter packs within a block's
parameter list, e.g., ^(Args ...args) { ... })
- Handle instantiation of blocks where the return type was not
explicitly specified. (unrelated, but necessary for my tests).

Together, these fixes should make blocks and variadic templates work
reasonably well together. Note that BlockDeclRefExpr is still broken
w.r.t. its computation of type and value dependence, which will still
cause problems for blocks in templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6952f1e4256c5b43aee5e98cea4e9b663bd1d413 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement support for non-type template parameter packs whose type is
a pack expansion, e.g., the parameter pack Values in:

template<typename ...Types>
struct Outer {
template<Types ...Values>
struct Inner;
};

This new implementation approach introduces the notion of an
"expanded" non-type template parameter pack, for which we have already
expanded the types of the parameter pack (to, say, "int*, float*",
for Outer<int*, float*>) but have not yet expanded the values. Aside
from creating these expanded non-type template parameter packs, this
patch updates template argument checking and non-type template
parameter pack instantiation to make use of the appropriate types in
the parameter pack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123845 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ema/Sema.h
erialization/ASTBitCodes.h
92c3a04f3ec683f279814b0eb6d6271b3fd3a219 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Warn about the use of unparenthesized |= in conditionals (which may be
a typo for !=). Fixes PR9001, from Hans Wennborg!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123836 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2998d6b0e6d5476c473f68012a851fe4a0f609c8 19-Jan-2011 John McCall <rjmccall@apple.com> When building the copy expression for a __block variable, make sure
there's a respectable point of instantiation. Also, make sure we do
this operation even when instantiating a dependently-typed variable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123818 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3b6575108a5b6d8b92ac3a9a7794bf6c3a210907 19-Jan-2011 John McCall <rjmccall@apple.com> Change the canonical representation of array types to store qualifiers on the
outermost array types and not on the element type. Move the CanonicalType
member from Type to ExtQualsTypeCommonBase; the canonical type on an ExtQuals
node includes the qualifiers on the ExtQuals. Assorted optimizations enabled
by this change.

getQualifiers(), hasQualifiers(), etc. should all now implicitly look through
array types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
f4c7371fb1d3cebcfb40abad4537bb82515704ea 19-Jan-2011 John McCall <rjmccall@apple.com> Change QualType::getTypePtr() to return a const pointer, then change a
thousand other things which were (generally inadvertantly) relying on that.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ASTImporter.h
ST/CanonicalType.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/ExprObjC.h
ST/NestedNameSpecifier.h
ST/RecursiveASTVisitor.h
ST/StmtIterator.h
ST/Type.h
ST/TypeLoc.h
ST/TypeVisitor.h
ema/Sema.h
69fc1b330090853ced40436805258fc9a0a70bdc 19-Jan-2011 Ken Dyck <kd@kendyck.com> Add a unary minus operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
0b53cf834346d78985aaa9e7300445a39c245614 19-Jan-2011 Douglas Gregor <dgregor@apple.com> Don't silently drop warning flags passed in to
clang_createTranslationUnitFromSourceFile().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123793 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ce8890371fcdb983ae487c87fa40606a34896ff7 18-Jan-2011 John McCall <rjmccall@apple.com> Fix some unnecessarily complicated code for canonicalizing variably-modified
parameter types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
62c28c831bbf207cc36e683e7c321fc33bf8928c 18-Jan-2011 John McCall <rjmccall@apple.com> Generalize some operations on qualifiers. QualType::getQualifiers() and
::getCVRQualifiers() now look through array types, like all the other
standard queries. Also, make a 'split' variant of getUnqualifiedType().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dbee3411a22b0dbb03267f5445f7b796104991bb 18-Jan-2011 Francois Pichet <pichet2000@gmail.com> Add support for explicit constructor calls in Microsoft mode.
For example:

class A{
public:
A& operator=(const A& that) {
if (this != &that) {
this->A::~A();
this->A::A(that); // <=== explicit constructor call.
}
return *this;
}
};

More work will be needed to support an explicit call to a template constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123735 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d8868a634d4fd362243dc646e58c3cf956c81dcd 18-Jan-2011 Douglas Gregor <dgregor@apple.com> Introduce the notion of a "minimal" import of ASTs, to better support LLDB.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123723 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
dec0984fce504a39a7f085774fb67cfd9957be58 18-Jan-2011 Jeffrey Yasskin <jyasskin@google.com> Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and
-Wint-to-pointer-cast.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123719 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
b918d0f5d8f147e1e26c34e6cf42a79af2d2ec41 17-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Convert "#pragma unused(...)" into tokens for the parser.
This allows us to cache a "#pragma unused" that occurs inside an inline C++ member function.
Fixes rdar://8829590&8770988.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
b971dbdb65149a7cf0c046380186d0204e5b411e 17-Jan-2011 Anders Carlsson <andersca@mac.com> Change ParseOptionalCXX0XVirtSpecifierSeq to take a VirtSpecifiers struct.

Enforce C++[class.mem]p8:
A virt-specifier-seq shall contain at most one of each virt-specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123611 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/DeclSpec.h
77a8184819f6aec673e0b90f5ba967f075063521 17-Jan-2011 Francois Pichet <pichet2000@gmail.com> Revert r123600.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1f3b6fdabbb10779a473d6315154d7325ce20aea 17-Jan-2011 Anders Carlsson <andersca@mac.com> Begin work on supporting "N3206: Override control: Eliminating Attributes", from

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm

This lands support for parsing virt-specifier-seq after member functions, including the
contextual keywords 'final', and 'override'. The keywords are not yet used for anything.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123606 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
04eeba43040969c05cfcb563195ef5b199297b62 16-Jan-2011 Anders Carlsson <andersca@mac.com> Add AnalysisContext::dumpCFG.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123602 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
e7108aba9b2428f141ee922179ee4aeafc0ca5d1 16-Jan-2011 Francois Pichet <pichet2000@gmail.com> Downgrade ext_enumerator_too_large from ExtWarn to Extension in Microsoft mode. Otherwise you can warnings flooding trying to selfhost clang with fms-extensions because of "unsigned int" -> "signed int" enumerator conversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2d75bbd36e273f7b958aefc766424220ad158bd9 16-Jan-2011 Douglas Gregor <dgregor@apple.com> Emit an extension diagnostic for C99 designated initializers that appear in C++ code

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123582 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eb6f5dc86531f794ba7746a2da4d28e37cf5da7e 15-Jan-2011 Ken Dyck <ken.dyck@onsemi.com> Add toCharUnitsInBits() to simplify the many calls to CharUnits::fromQuantity() of the form CharUnits::fromQuantity(bitSize, Context.getCharWidth()).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123542 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1aee05d08b2184acadeb36de300e216390780d6c 15-Jan-2011 Douglas Gregor <dgregor@apple.com> Introduce a new kind of TemplateName that captures a substituted
template template parameter pack that cannot be fully expanded because
its enclosing pack expansion could not be expanded. This form of
TemplateName plays the same role as SubstTemplateTypeParmPackType and
SubstNonTypeTemplateParmPackExpr do for template type parameter packs
and non-type template parameter packs, respectively.

We should now handle these multi-level pack expansion substitutions
anywhere. The largest remaining gap in our variadic-templates support
is that we cannot cope with non-type template parameter packs whose
type is a pack expansion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
asic/DiagnosticSemaKinds.td
erialization/ASTReader.h
610068c8cd2321f90e147b12cf794e1f840b6405 15-Jan-2011 Ted Kremenek <kremenek@apple.com> Add initial prototype for implementation of
-Wuninitialized based on CFG dataflow analysis. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123512 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValuesV2.h
asic/DiagnosticSemaKinds.td
200fbc877d50da9e53b9aa272b70ca3538ce3a66 15-Jan-2011 Ted Kremenek <kremenek@apple.com> Add const version if CFG::isBlkExpr().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123511 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
9c34ee65a61bbfb60ae76d4df674f49df1842e70 15-Jan-2011 Douglas Gregor <dgregor@apple.com> Tweak the storage mechanism for a set of overloaded template names in
the TemplateName class. Nothing actually changes, but I find this less
objectionable (and it will factor into an upcoming change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
c7793c73ba8a343de3f2552d984851985a46f159 15-Jan-2011 Douglas Gregor <dgregor@apple.com> Introduce a new expression kind, SubstNonTypeTemplateParmPackExpr,
that captures the substitution of a non-type template argument pack
for a non-type template parameter pack within a pack expansion that
cannot be fully expanded. This follows the approach taken by
SubstTemplateTypeParmPackType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123506 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
2be29f423acad3bbe39099a78db2805acb5bdf17 15-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach template template argument pack expansions to keep track of the
number of expansions, when we know it, and propagate that information
through Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
6a24bfda084f06a0b252b7befe8cbb17fce7f94e 14-Jan-2011 Douglas Gregor <dgregor@apple.com> Handle substitutions into function parameter packs whose patterns
contain multiple parameter packs at different levels.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123488 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
67fd1251aad51bb80d050b7fa5e506fef0ec8e02 14-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach PackExpansionExpr to keep track of the number of pack expansions
it will expand to, if known. Propagate this information throughout Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
3efd52cf8f4e57c5571bd8cc3168264c3bc46a1e 14-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Properly propagate #pragma diagnostic mappings from PCH but not command-line warning flags.
Addresses rdar://8435969&8852495

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
db0594bfc013131f88429add4eb653c285fa94fb 14-Jan-2011 Ted Kremenek <kremenek@apple.com> Rename 'RemoveDeadBindings()' to 'removeDeadBindings()'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123460 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ConstraintManager.h
taticAnalyzer/PathSensitive/Environment.h
taticAnalyzer/PathSensitive/GRState.h
taticAnalyzer/PathSensitive/Store.h
2ccf047adf877f5e821210b1ce1a2c8289acadc0 14-Jan-2011 Ted Kremenek <kremenek@apple.com> Rename 'EnterStackFrame()' to 'enterStackFrame()'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123459 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/GRState.h
taticAnalyzer/PathSensitive/Store.h
cded4f649cd4b7ba7d461c25c6482ef52b8d3a2a 14-Jan-2011 Douglas Gregor <dgregor@apple.com> Keep track of the number of expansions to be produced from a type pack
expansion, when it is known due to the substitution of an out
parameter pack. This allows us to properly handle substitution into
pack expansions that involve multiple parameter packs at different
template parameter levels, even when this substitution happens one
level at a time (as with partial specializations of member class
templates and the signatures of member function templates).

Note that the diagnostic we provide when there is an arity mismatch
between an outer parameter pack and an inner parameter pack in this
case isn't as clear as the normal diagnostic for an arity
mismatch. However, this doesn't matter because these cases are very,
very rare and (even then) only typically occur in a SFINAE context.

The other kinds of pack expansions (expression, template, etc.) still
need to support optional tracking of the number of expansions, and we
need the moral equivalent of SubstTemplateTypeParmPackType for
substituted argument packs of template template and non-type template
parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123448 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateBase.h
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
c3069d618f4661d923cb1b5c4525b082fce73b04 14-Jan-2011 Douglas Gregor <dgregor@apple.com> Start implementing support for substitution into pack expansions that
involve template parameter packs at multiple template levels that
occur within the signatures members of class templates (and partial
specializations thereof). This is a work-in-progress that is deficient
in several ways, notably:
- It only works for template type parameter packs, but we need to
also support non-type template parameter packs and template template
parameter packs.
- It doesn't keep track of the lengths of the substituted argument
packs in the expansion, so it can't properly diagnose length
mismatches.

However, this is a concrete step in the right direction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
erialization/ASTBitCodes.h
852f65beb12a7a735b17b60856e701be14d627d4 14-Jan-2011 Francois Pichet <pichet2000@gmail.com> Unbreak the MSVC build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123412 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ABI.h
14110477887e3dc168ffc6c191e72d705051f99e 13-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Move name mangling support from CodeGen to AST. In the
process, perform a number of refactorings:

- Move MiscNameMangler member functions to MangleContext
- Remove GlobalDecl dependency from MangleContext
- Make MangleContext abstract and move Itanium/Microsoft functionality
to their own classes/files
- Implement ASTContext::createMangleContext and have CodeGen use it

No (intended) functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Mangle.h
asic/ABI.h
d074441e027471a914cbb909a7aad1d43224950f 13-Jan-2011 Zhongxing Xu <xuzhongxing@gmail.com> Support inlining base initializers. We still haven't got it completely right,
since the bindings are purged after they are set up. Need to investigate
RemoveDeadBindings algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123374 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/MemRegion.h
bda1efd0daf6fca9f515c6ce38d1ed71a3cca5b7 13-Jan-2011 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123370 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ExplodedGraph.h
b4857264b8d3d861f688cdaa174aab30e0729a73 13-Jan-2011 Ted Kremenek <kremenek@apple.com> Rename 'HasGeneratedNode' to 'hasGeneratedNode'
and 'getBasePredecessor()' to 'getPredecessor()'.

Also remove a unneeded save-and-restore of
node builder's tag field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123363 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/Checker.h
taticAnalyzer/PathSensitive/CoreEngine.h
taticAnalyzer/PathSensitive/ExprEngineBuilders.h
4bac726dadb09ee38bab8147f1e706380368b362 13-Jan-2011 Ted Kremenek <kremenek@apple.com> Remove CheckerContext's dependence on setting
the node builder's "tag" ivar (which we would
like to remove).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123361 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/PathSensitive/Checker.h
taticAnalyzer/PathSensitive/CoreEngine.h
1d5d0b9df6d2a3df338bc3e63000536406e7666c 12-Jan-2011 Douglas Gregor <dgregor@apple.com> Add the location of the right parenthesis of a C++ named cast
(static_cast, dynamic_cast, reinterpret_cast, or const_cast) to
improve source-location information. Fixes PR8960.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
2fc1bb76e719d0620b4a6e2134413933b21ca6b6 12-Jan-2011 Douglas Gregor <dgregor@apple.com> Teach TreeTransform how to transform a pack expansion type into
another pack expansion type. This can happen when rebuilding types in
the current instantiation.

Fixes <rdar://problem/8848837> (Clang crashing on libc++ <functional>).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123316 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4ba2a17694148e16eaa8d3917f657ffcd3667be4 12-Jan-2011 Jay Foad <jay.foad@gmail.com> PR3558: mark "logically const" accessor methods in ASTContext as const,
and mark the fields they use as mutable. This allows us to remove a few
const_casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/Expr.h
ST/NestedNameSpecifier.h
ST/RecordLayout.h
ST/Stmt.h
ST/TemplateBase.h
ST/Type.h
5aff5e3d1f0417d75b508619438f976ed5747c3c 12-Jan-2011 Zhongxing Xu <xuzhongxing@gmail.com> Add cast expr kinds to CheckerVisitor.def.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123312 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/CheckerVisitor.def
ae278a3a57595349a411f6474938d4dd1b263a0e 12-Jan-2011 John McCall <rjmccall@apple.com> Slight bugfix to the attribute-distribution logic for GC attributes.
Slight optimization of getObjCGCAttrKind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
203e6a322ae29d577acafcb1572a57ec16e1e730 12-Jan-2011 Douglas Gregor <dgregor@apple.com> Add TemplateArgument::CreatePackCopy() to create a new parameter pack
in ASTContext-allocated memory, copying the provided template
arguments. Use this new routine where we can. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
bc6f0daca4676989116e9c6b8dafeb01ec34252d 11-Jan-2011 Eric Christopher <echristo@apple.com> Add back 122079 so we can ignore the argument some more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123271 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6547884b9c20096594bdc652669df82c322c5eb6 11-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Support post-visiting ObjCIvarRefExprs for checkers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123263 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/CheckerVisitor.def
5078d46af381b27be1c7e3c3e0c517e4cf7cc064 11-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Add 'bool ignorePrefix' parameter to cocoa::deriveNamingConvention to control whether
the prefix should be ignored.

E.g. if ignorePrefix is true, "_init" and "init" selectors will both be result in InitRule, but if
ignorePrefix is false, only "init" will return InitRule.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123262 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
f7fbbda62705352a53ac3b495a1128946a34ced3 11-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Add 'isLoad' parameter in Checker::visitLocation() to conveniently distinguish between loads/stores.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123261 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/Checker.h
5c7bf42ef16dc767615bed10f3b7b3c1265314e1 11-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement C++ [temp.func.order]p5 more directly, by passing down the
number of explicit call arguments. This actually fixes an erroneous
test for [temp.deduct.partial]p11, where we were considering
parameters corresponding to arguments beyond those that were
explicitly provided.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123244 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b6a2b08a6b3fbce1a6a4b69d4185165de970696c 11-Jan-2011 Ted Kremenek <kremenek@apple.com> Remove ProgramPoint parameter from GenericNodeBuilder::generateNode().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123240 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
taticAnalyzer/PathSensitive/CoreEngine.h
2b57aefea762f526405937b3c01901f8e1047edb 11-Jan-2011 Abramo Bagnara <abramo.bagnara@gmail.com> Added warning about invalid register specification for local variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123236 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27c54e57c4a012dcdf2b40cf985b70d0b9caa69e 11-Jan-2011 Ted Kremenek <kremenek@apple.com> Rework ExprEngine::processCFGBlockEntrance()
to use a node builder. This paves the way
for Checkers to interpose (via a "visit" method)
at the entrance to blocks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123217 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/CoreEngine.h
taticAnalyzer/PathSensitive/ExprEngine.h
taticAnalyzer/PathSensitive/SubEngine.h
7771406ac3c58d77468d9d176262ad7ae7ff5050 11-Jan-2011 Ted Kremenek <kremenek@apple.com> Remove several silly methods from ento::CoreEngine
that just forwarded to ento::SubEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123216 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/CoreEngine.h
21371ea7cf647f4f0f783faac325925cb8febb1c 11-Jan-2011 Douglas Gregor <dgregor@apple.com> When mapping from a function parameter pack to the set of function
parameters it expanded to, map exactly the number of function
parameters that were expanded rather than just running to the end of
the instantiated parameter list. This finishes the implementation of
the last sentence of C++0x [temp.deduct.call]p1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123213 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
55825aa2d88fe82bf3622f195046ae48532d3106 11-Jan-2011 Ted Kremenek <kremenek@apple.com> Rename misc. methods in ento::Worklist to start
with lowercase letter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123212 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/CoreEngine.h
taticAnalyzer/PathSensitive/WorkList.h
e36de1fe51c39d9161915dd3dbef880954af6476 11-Jan-2011 Ted Kremenek <kremenek@apple.com> Rename misc. methods in GRSubEngine to start
with a lower-case letter. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123211 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/Checker.h
taticAnalyzer/PathSensitive/CoreEngine.h
taticAnalyzer/PathSensitive/ExplodedGraph.h
taticAnalyzer/PathSensitive/ExprEngine.h
taticAnalyzer/PathSensitive/SubEngine.h
taticAnalyzer/PathSensitive/TransferFuncs.h
10ffc00e2177f042808f507c8dd50b744ed6f738 11-Jan-2011 Douglas Gregor <dgregor@apple.com> Add testing for unexpanded parameter packs in all of the C++
expression kinds. This is (indirectly) a test verifying that the
recursive AST visitor is visiting the children of these expression
nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123198 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
66cf92a9670d57da61842adb69f9b038ce29dca5 11-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Only traverse template argument locations if we actually have explicit
template arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
26c9cb55cb96643c0759c08d037c16c309864087 10-Jan-2011 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123168 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
d3731198193eee92796ddeb493973b7a598b003e 10-Jan-2011 Douglas Gregor <dgregor@apple.com> Work-in-progress implementation of C++0x [temp.arg.explicit]p9, which
allows an argument pack determines via explicit specification of
function template arguments to be extended by further, deduced
arguments. For example:

template<class ... Types> void f(Types ... values);
void g() {
f<int*, float*>(0, 0, 0); // Types is deduced to the sequence int*, float*, int
}

There are a number of FIXMEs in here that indicate places where we
need to implement + test retained expansions, plus a number of other
places in deduction where we need to correctly cope with the
explicitly-specified arguments when deducing an argument
pack. Furthermore, it appears that the RecursiveASTVisitor needs to be
auditied; it's missing some traversals (especially w.r.t. template
arguments) that cause it not to find unexpanded parameter packs when
it should.

The good news, however, is that the tr1::tuple implementation now
works fully, and the tr1::bind example (both from N2080) is actually
working now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
ema/Sema.h
ema/Template.h
50f6aca5d7c41c6a5db75838c6a4d670cbb9b4f3 10-Jan-2011 Zhongxing Xu <xuzhongxing@gmail.com> Add some expression kinds to CheckerVisitor.def.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123159 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/CheckerVisitor.def
taticAnalyzer/PathSensitive/CheckerVisitor.h
65423aeb996a296cf2964f136ce4a4a937bd1687 10-Jan-2011 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123147 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/ExprEngine.h
f51d0b6c2f5abd09d3a7ba907a3d9b7a43752f3d 09-Jan-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Rename CXXCtorInitializer::BaseOrMember to Initializee, since it will also be
used to store the CXXConstructorDecl in a delegating constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123095 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cbb67480094b3bcb5b715acd827cbad55e2a204c 08-Jan-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,
more accurate, and makes it make sense for it to hold a delegating constructor
call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123084 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclObjC.h
ST/RecursiveASTVisitor.h
nalysis/CFG.h
nalysis/ProgramPoint.h
arse/Parser.h
ema/Ownership.h
ema/Sema.h
erialization/ASTReader.h
erialization/ASTWriter.h
97fcc4977b21da43ab106607ad472149b7d4785a 08-Jan-2011 Sean Hunt <scshunt@csclub.uwaterloo.ca> Check for delegating constructors and (currently) return an error about them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
65197b4b0c55bb74af0450230d61ee9461223721 08-Jan-2011 Ted Kremenek <kremenek@apple.com> Add semantic checking that the "thousands grouping"
prefix in a printf format string is matched
with the appropriate conversion specifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123055 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
bd18d4584aae0ed6f7111ef5713784cf29fe663f 08-Jan-2011 Ted Kremenek <kremenek@apple.com> Add printf format string parsing support for '
prefix to format conversions (POSIX extension).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123054 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
91fc73e7ffb1fa1da0276518359d3bd4ed11c843 07-Jan-2011 Douglas Gregor <dgregor@apple.com> When instantiating the arguments to an initializer, use the
TreeTransform version of TransformExprs() rather than explicit loop,
so that we expand pack expansions properly. Test cast coming soon...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123014 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f84109ee6aeffb09366bd70c8593ce1b7818b1ad 07-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Update AST reader/writer to handle new AppleKext.
Fix an unexpected hickup caused by exceeding size of
generated table (and a misleading comment). Improve
on help message for -fapple-kext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/DiagnosticIDs.h
river/CC1Options.td
12c9c00024a01819e3a70ef6d951d32efaeb9312 07-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement substitution of a function parameter pack for its set of
instantiated function parameters, enabling instantiation of arbitrary
pack expansions involving function parameter packs. At this point, we
can now correctly compile a simple, variadic print() example:

#include <iostream>
#include <string>

void print() {}

template<typename Head, typename ...Tail>
void print(const Head &head, const Tail &...tail) {
std::cout << head;
print(tail...);
}

int main() {
std::string hello = "Hello";
print(hello, ", world!", " ", 2011, '\n');
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123000 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ema/Template.h
170464b7c0a2c0c86f2821f14a46f0d540cb5e94 07-Jan-2011 Francois Pichet <pichet2000@gmail.com> Prefix all attribute enumerators with attr_ for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3cd47e7883dbfce73189b583850cea81e1d1d261 07-Jan-2011 Francois Pichet <pichet2000@gmail.com> Do not use cdecl, fastcall, stdcall etc.. as identifier name. They are reserved keywords at least on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b466d01e464b21832c23eeed90112bc5c26c0236 07-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Add all options needed to support -fapple-kext. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
a009b59fc2c550a229b9146aabda8e33fe3a7771 07-Jan-2011 Douglas Gregor <dgregor@apple.com> Factor out the template transformation of a sequence of function
parameters into parameter types, so that substitution of
explicitly-specified function template arguments uses the same
path. This enables the use of explicitly-specified function template
arguments with variadic templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ema/Sema.h
f5c65ffbd7374b6c8d9f1e361041578640cab320 06-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement template argument deduction from a call to a function
template whose last parameter is a parameter pack. This allows us to
form a call to, e.g.,

template<typename ...Args1, typename ...Args2>
void f(std::pair<Args1, Args2> ...pairs);

given zero or more instances of "pair".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ebfde17d96960808fdc8d39098968818a18f2f42 06-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Put warning about makeing a string writable into
its own deprecated diagnostics group so it can be
turned off selectively. // rdar://8827606


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122967 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c81f2a2c7f83e64b3ef2b77030536290d0e2b350 06-Jan-2011 Roman Divacky <rdivacky@freebsd.org> PowerPC fixes.

Fix the width and align of bool type on Darwin to be 32bits
while keeping it 8 everywhere else.

Change the definition of va_list to default to SV4 ABI one
and let darwin subtarget override this.

Both changes submitted by Nathan Whitehorn and reviewed
by Rafael Espindola.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122956 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
914c9a61b7ef96ed259a464f20e51d166b5f68b0 06-Jan-2011 Chandler Carruth <chandlerc@gmail.com> Tweak the wording of this warning further based on a suggestion from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122951 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d156a7b1b2771e191f2f5a45a7b7a694129463b 06-Jan-2011 John McCall <rjmccall@apple.com> Introduce an AttributedType, but don't actually use it anywhere yet.
The initial TreeTransform is a cop-out, but it's more-or-less equivalent
to what we were doing before, or rather what we're doing now and might
eventually stop doing in favor of using this type.
I am simultaneously intrigued by the possibilities of rebuilding a
dependent Attri



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
erialization/ASTBitCodes.h
b0ddf3aeb2f119cac42468b029584e8839b354cc 06-Jan-2011 Douglas Gregor <dgregor@apple.com> When default-initializing a TemplateArgumentLocInfo, make sure that we
initialize *all* of the bits to zero. Also, when the pattern of a
template argument pack expansion, make sure to set the ellipsis
location along all paths.

This should clear up the valgrind failure that popped up in Clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLoc.h
603cfb4da2f7ba08a1c3452c2fbf70585b8e7621 06-Jan-2011 Douglas Gregor <dgregor@apple.com> Initial implementation of function parameter packs. This implementation allows:

1) Declaration of function parameter packs
2) Instantiation of function parameter packs within function types.
3) Template argument deduction of function parameter packs when
matching two function types.

We're missing all of the important template-instantiation logic for
function template definitions, along with template argument deduction
from the argument list of a function call, so don't even think of
trying to use these for real yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122926 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
1fe85ea697fb5c85acded3ac0ddbc19f89c2e181 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Add Decl::isParameterPack(), which covers both function and template
parameter packs, along with ParmVarDecl::isParameterPack(), which
looks for function parameter packs. Use these routines to fix some
obvious FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
b1fa3dc2f914aaa8b5a851c6b5115ec239d20495 05-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use the proper enum as parameter, instead of unsigned. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122900 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1d65ebba273e6797902dcfa93964bae5ca0fe8d2 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Eliminate two "unsupported" errors relating to variadic templates: one
for template template argument pack expansions (which was no longer
used) and another that was a placeholder for an llvm_unreachable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a7fc901a2e39bfe55bfcff5934b2d9fdf9656491 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Replace the representation of template template argument pack
expansions with something that is easier to use correctly: a new
template argment kind, rather than a bit on an existing kind. Update
all of the switch statements that deal with template arguments, fixing
a few latent bugs in the process. I"m happy with this representation,
now.

And, oh look! Template instantiation and deduction work for template
template argument pack expansions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122896 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
ba68eca7582a62e3e2ff4b0eba1b2b73a6b80895 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Add semantic analysis for the creation of and an AST representation
for template template argument pack expansions. This allows fun such
as:

template<template<class> class ...> struct apply_impl { /*...*/ };
template<template<class> class ...Metafunctions> struct apply {
typedef typename apply_impl<Metafunctions...>::type type;
};

However, neither template argument deduction nor template
instantiation is implemented for template template argument packs, so
this functionality isn't useful yet.

I'll probably replace the encoding of template template
argument pack expansions in TemplateArgument so that it's harder to
accidentally forget about the expansion. However, this is a step in
the right general direction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ema/ParsedTemplate.h
f457c1a0a46d11623c3d4594b57dff7f5a1151da 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement proper parameter pack matching for non-type template
parameters and template template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122875 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
61c4d28e36cd3f1be392cb77f07436d1fa6b0f9f 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement support for template template parameter packs, e.g.,

template<template<class> class ...Metafunctions>
struct apply_to_each;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122874 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ema/Sema.h
711c52bb20d0c69063b52a99826fb7d2835501f1 05-Jan-2011 John McCall <rjmccall@apple.com> Refactor the application of type attributes so that attributes from
the declaration-specifiers and on the declarator itself are moved
to the appropriate declarator chunk. This permits a greatly
simplified model for how to apply these attributes, as well as
allowing a much more efficient query for the GC attribute.
Now all qualifier queries follow the same basic strategy of
"local qualifiers, local qualifiers on the canonical type,
then look through arrays". This can be easily optimized by
changing the canonical qualified-array-type representation.

Do not process type attributes as decl attributes on declarations
with declarators.

When computing the type of a block, synthesize a prototype
function declarator chunk if the decl-spec type was not a
function. This simplifies the logic for building block signatures.

Change the logic which inserts an objc_read_weak on a block
literal to only fire if the block has a __weak __block variable,
rather than if the return type of the block is __weak qualified,
which is not actually a sensible thing to ask.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122871 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeLoc.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Sema.h
2fdc5e8199e1e239620f2faae88997153703e16f 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Many of the built-in operator candidates introduced into overload
resolution require that the pointed-to type be an object type, but we
weren't filtering out non-object types. Do so, fixing PR7851.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
54c53cca105ed595e12fecf04e415c3712bda936 05-Jan-2011 Douglas Gregor <dgregor@apple.com> Improve our handling of non-type template parameters in partial
specializations. We weren't dealing with any of the cases where the
type of the non-type template argument differs from the type of the
corresponding template parameter in the primary template. We would
think that the template parameter in the partial specialization was
not deducible (and warn about it, incorrectly), then fail to convert a
deduced parameter to the type of the template parameter in the partial
specialization (which may involve truncation, among other
things). Fixes PR8905.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122851 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
843cb8d425851a21c765114a1bbf049f0bb3e630 04-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Fix wording for err_invalid_use_of_bound_member_func


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122846 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
112c3307aaa9ae9ee6ff5c2b4f6a53b1ea3c6f19 04-Jan-2011 Fariborz Jahanian <fjahanian@apple.com> Fold -fobjc-nonfragile-abi2 into -fobjc-nonfragile-abi.
// rdar://8818375



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122831 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ee8aff06f6a96214731de17b2cb6df407c6c1820 04-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement the sizeof...(pack) expression to compute the length of a
parameter pack.

Note that we're missing proper libclang support for the new
SizeOfPackExpr expression node.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122813 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
9f7a6eeee441bcbb1b17208cb3abd65a0017525a 04-Jan-2011 Chandler Carruth <chandlerc@gmail.com> Implement -Wself-assign, which warns on code such as:

int x = 42;
x = x; // Warns here.

The warning avoids macro expansions, templates, user-defined assignment
operators, and volatile types, so false positives are expected to be low.

The common (mis-)use of this code pattern is to silence unused variable
warnings, but a more idiomatic way of doing that is '(void)x;'.
A follow-up to this will add a note and fix-it hint suggesting this
replacement in cases where the StmtExpr consists precisely of the self
assignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122804 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b2b5cc0cf908d516a107d373db963f692449a8a8 04-Jan-2011 Chandler Carruth <chandlerc@gmail.com> Enhance the diagnostic for negative array sizes to include the
declaration name of the array when present. This ensures that
a poor-man's C++03 static_assert will include the user error message
often embedded in the name.

Update all the tests to reflect the new wording, and add a test for the
name behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3fb9e4b89f72823f162096086f0f964e6dcf66d6 04-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement pack expansion of base initializers, so that we can
initialize those lovely mixins that come from pack expansions of base
specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
b162054ba8f5b64fe87fbc4837933ab23eebd52b 04-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename MaybeSkipFunctionBodyForCodeCompletion -> trySkippingFunctionBodyForCodeCompletion and check isCodeCompletionEnabled() before doing the call.
Suggestions by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122792 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1b21391b3b1b7dd829c35f9b69199ed2a67da25a 04-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122784 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f90b27ad077c3339b62befc892382845339f9490 03-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement pack expansions whose pattern is a base-specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
0fe5397b26695926a835fa99eceb7fc879b307af 03-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> When in code-completion, skip obj-c method bodies for speed up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122781 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bacb9493770ff19cfd8f7bc46a075f14b4d08159 03-Jan-2011 Douglas Gregor <dgregor@apple.com> Unwrap template argument packs when checking the template arguments of
a class template partial specialiation, and look through pack
expansions when checking the conditions of C++0x [temp.class.spec]p8.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122774 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
925910d488051cbd4e38f350c1e9d69c473f09a0 03-Jan-2011 Douglas Gregor <dgregor@apple.com> Diagnose the presence of unexpanded parameter packs within class
template partial specialization arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122769 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
af4bad23013532f4c94cdc27887623f45e6f7020 03-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove a couple of setters that have no callers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3437f1f1294499d4ef306c1089fcb3e29ec2aa68 03-Jan-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Speed up code-completion by skipping function bodies.

When we are in code-completion mode, skip parsing of all function bodies except the one where the
code-completion point resides.

For big .cpp files like 'SemaExpr.cpp' the improvement makes a huge difference, in some cases cutting down
code-completion time -62% !

We don't get diagnostics for the bodies though, so modify the code-completion tests that check for errors.

See rdar://8814203.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122765 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
arse/Parser.h
aa165f8458b51c546bebff947343e1a36f3594cb 03-Jan-2011 Douglas Gregor <dgregor@apple.com> Refactor the tree transform's many loops over sets of expressions
(transforming each in turn) into calls into one central routine
(TransformExprs) that transforms a list of expressions. This
refactoring is preparatory work for pack expansions whose in an
expression-list.

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122761 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
be230c36e32142cbdcdbe9c97511d097beeecbab 03-Jan-2011 Douglas Gregor <dgregor@apple.com> Implement support for pack expansions whose pattern is a non-type
template argument (described by an expression, of course). For
example:

template<int...> struct int_tuple { };

template<int ...Values>
struct square {
typedef int_tuple<(Values*Values)...> type;
};

It also lays the foundation for pack expansions in an initializer-list.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
6b9109e9d5446f213b12d2a6b76495bffb06b794 03-Jan-2011 Douglas Gregor <dgregor@apple.com> When we attempt to create a built-in that involves a library type we
don't have access to (e.g., fprintf, which needs the library type
FILE), fail with a warning and forget about the builtin
entirely. Previously, we would actually provide an error, which breaks
autoconf's super-lame checks for fprintf, longjmp, etc. Fixes PR8316.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122744 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
743b82bf3c500de45715498dbf25f0fb39e71462 02-Jan-2011 Peter Collingbourne <peter@pcc.me.uk> Unkown -> Unknown

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122708 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5389f48b24937ad7b4093307128b3cbf25235654 30-Dec-2010 David Chisnall <csdavec@swan.ac.uk> Expose Objective-C type encodings of declarations to libclang users. This also adds a method in ASTContext which encodes FunctionDecls using the same encoding format that is used for Objective-C methods.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3f59c975aa5d047f7edd1b900b5e885c38af0ef7 26-Dec-2010 Chris Lattner <sabre@nondot.org> The -fshort-wchar option causes wchar_t to become unsigned, in addition to being
16-bits in size. Implement this by splitting WChar into two enums, like we have
for char. This fixes a miscompmilation of XULRunner, PR8856.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122558 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TargetInfo.h
rontend/TypeXML.def
a6b0b96e5376cd9cf182a3e240e0537feed43cde 24-Dec-2010 Ted Kremenek <kremenek@apple.com> Add basic support for pointer arithmetic in
SimpleSValBuilder. This clears up some
false positives emitted by ArrayBoundCheckerV2
due to the lack of support for pointer arithmetic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122546 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/PathSensitive/MemRegion.h
taticAnalyzer/PathSensitive/Store.h
3252134192221e65c937124cc79b97d3b04389ae 24-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the EntoSA directories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122543 91177308-0d34-0410-b5e6-96231b3b80d8
taticAnalyzer/EntoSA/AnalysisConsumer.h
taticAnalyzer/EntoSA/BugReporter/BugReporter.h
taticAnalyzer/EntoSA/BugReporter/BugType.h
taticAnalyzer/EntoSA/BugReporter/PathDiagnostic.h
taticAnalyzer/EntoSA/Checkers/DereferenceChecker.h
taticAnalyzer/EntoSA/Checkers/LocalCheckers.h
taticAnalyzer/EntoSA/FrontendActions.h
taticAnalyzer/EntoSA/ManagerRegistry.h
taticAnalyzer/EntoSA/PathDiagnosticClients.h
taticAnalyzer/EntoSA/PathSensitive/AnalysisManager.h
taticAnalyzer/EntoSA/PathSensitive/BasicValueFactory.h
taticAnalyzer/EntoSA/PathSensitive/BlockCounter.h
taticAnalyzer/EntoSA/PathSensitive/Checker.h
taticAnalyzer/EntoSA/PathSensitive/CheckerHelpers.h
taticAnalyzer/EntoSA/PathSensitive/CheckerVisitor.def
taticAnalyzer/EntoSA/PathSensitive/CheckerVisitor.h
taticAnalyzer/EntoSA/PathSensitive/ConstraintManager.h
taticAnalyzer/EntoSA/PathSensitive/CoreEngine.h
taticAnalyzer/EntoSA/PathSensitive/Environment.h
taticAnalyzer/EntoSA/PathSensitive/ExplodedGraph.h
taticAnalyzer/EntoSA/PathSensitive/ExprEngine.h
taticAnalyzer/EntoSA/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/EntoSA/PathSensitive/GRState.h
taticAnalyzer/EntoSA/PathSensitive/GRStateTrait.h
taticAnalyzer/EntoSA/PathSensitive/MemRegion.h
taticAnalyzer/EntoSA/PathSensitive/SValBuilder.h
taticAnalyzer/EntoSA/PathSensitive/SVals.h
taticAnalyzer/EntoSA/PathSensitive/Store.h
taticAnalyzer/EntoSA/PathSensitive/SubEngine.h
taticAnalyzer/EntoSA/PathSensitive/SummaryManager.h
taticAnalyzer/EntoSA/PathSensitive/SymbolManager.h
taticAnalyzer/EntoSA/PathSensitive/TransferFuncs.h
taticAnalyzer/EntoSA/PathSensitive/WorkList.h
194252d41408b4e765bbaadfe77b5c4502489454 24-Dec-2010 Chris Lattner <sabre@nondot.org> don't use #pragma mark, it isn't portable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122540 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1a3942a18b1ca2f9c00ebdd016bea0ef15a0f9a0 24-Dec-2010 Michael J. Spencer <bigcheesegs@gmail.com> ifndef _MSC_VER out #pragma mark on MSVC. It still tries to parse the text even
though it doesn't know what it is, and complains about invalid tokens ;/.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122538 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7f040a9d817cd1c72b565e92abff473510bf9e1d 24-Dec-2010 John McCall <rjmccall@apple.com> Refactor how we collect attributes during parsing, and add slots for attributes
on array and function declarators. This is pretty far from complete, and I'll
revisit it later if someone doesn't beat me to it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122535 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/AttributeList.h
ema/DeclSpec.h
10738d36b150aa65206890c1c845cdba076e4200 24-Dec-2010 Douglas Gregor <dgregor@apple.com> Add an AST representation for non-type template parameter
packs, e.g.,

template<typename T, unsigned ...Dims> struct multi_array;

along with semantic analysis support for finding unexpanded non-type
template parameter packs in types, expressions, and so on.

Template instantiation involving non-type template parameter packs
probably doesn't work yet. That'll come soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122527 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/Expr.h
asic/DiagnosticCommonKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
a8bc8c9e9ba5bffebde00340786fe8542469c435 23-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement parsing of function parameter packs and non-type template
parameter packs (C++0x [dcl.fct]p13), including disambiguation between
unnamed function parameter packs and varargs (C++0x [dcl.fct]p14) for
cases like

void f(T...)

where T may or may not contain unexpanded parameter packs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122520 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
ema/Sema.h
c32647d111e516593b9ba242cad7b8ff4016c155 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Add -fobjc-default-synthesized-properties flag
to allow us to explicitly control whether or
not Objective-C properties are default synthesized.
Currently this feature only works when using
the -fobjc-non-fragile-abi2 flag (so there is
no functionality change), but we can now turn
off this feature without turning off all the features
coupled with -fobjc-non-fragile-abi2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122519 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
river/ToolChain.h
21142581d55918beed544a757e4af3bb865b1812 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Chris Lattner has strong opinions about directory
layout. :)

Rename the 'EntoSA' directories to 'StaticAnalyzer'.

Internally we will still use the 'ento' namespace
for the analyzer engine (unless there are further
sabre rattlings...).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122514 91177308-0d34-0410-b5e6-96231b3b80d8
ntoSA/AnalysisConsumer.h
ntoSA/BugReporter/BugReporter.h
ntoSA/BugReporter/BugType.h
ntoSA/BugReporter/PathDiagnostic.h
ntoSA/Checkers/DereferenceChecker.h
ntoSA/Checkers/LocalCheckers.h
ntoSA/FrontendActions.h
ntoSA/ManagerRegistry.h
ntoSA/PathDiagnosticClients.h
ntoSA/PathSensitive/AnalysisManager.h
ntoSA/PathSensitive/BasicValueFactory.h
ntoSA/PathSensitive/BlockCounter.h
ntoSA/PathSensitive/Checker.h
ntoSA/PathSensitive/CheckerHelpers.h
ntoSA/PathSensitive/CheckerVisitor.def
ntoSA/PathSensitive/CheckerVisitor.h
ntoSA/PathSensitive/ConstraintManager.h
ntoSA/PathSensitive/CoreEngine.h
ntoSA/PathSensitive/Environment.h
ntoSA/PathSensitive/ExplodedGraph.h
ntoSA/PathSensitive/ExprEngine.h
ntoSA/PathSensitive/ExprEngineBuilders.h
ntoSA/PathSensitive/GRState.h
ntoSA/PathSensitive/GRStateTrait.h
ntoSA/PathSensitive/MemRegion.h
ntoSA/PathSensitive/SValBuilder.h
ntoSA/PathSensitive/SVals.h
ntoSA/PathSensitive/Store.h
ntoSA/PathSensitive/SubEngine.h
ntoSA/PathSensitive/SummaryManager.h
ntoSA/PathSensitive/SymbolManager.h
ntoSA/PathSensitive/TransferFuncs.h
ntoSA/PathSensitive/WorkList.h
taticAnalyzer/AnalysisConsumer.h
taticAnalyzer/BugReporter/BugReporter.h
taticAnalyzer/BugReporter/BugType.h
taticAnalyzer/BugReporter/PathDiagnostic.h
taticAnalyzer/Checkers/DereferenceChecker.h
taticAnalyzer/Checkers/LocalCheckers.h
taticAnalyzer/EntoSA/AnalysisConsumer.h
taticAnalyzer/EntoSA/BugReporter/BugReporter.h
taticAnalyzer/EntoSA/BugReporter/BugType.h
taticAnalyzer/EntoSA/BugReporter/PathDiagnostic.h
taticAnalyzer/EntoSA/Checkers/DereferenceChecker.h
taticAnalyzer/EntoSA/Checkers/LocalCheckers.h
taticAnalyzer/EntoSA/FrontendActions.h
taticAnalyzer/EntoSA/ManagerRegistry.h
taticAnalyzer/EntoSA/PathDiagnosticClients.h
taticAnalyzer/EntoSA/PathSensitive/AnalysisManager.h
taticAnalyzer/EntoSA/PathSensitive/BasicValueFactory.h
taticAnalyzer/EntoSA/PathSensitive/BlockCounter.h
taticAnalyzer/EntoSA/PathSensitive/Checker.h
taticAnalyzer/EntoSA/PathSensitive/CheckerHelpers.h
taticAnalyzer/EntoSA/PathSensitive/CheckerVisitor.def
taticAnalyzer/EntoSA/PathSensitive/CheckerVisitor.h
taticAnalyzer/EntoSA/PathSensitive/ConstraintManager.h
taticAnalyzer/EntoSA/PathSensitive/CoreEngine.h
taticAnalyzer/EntoSA/PathSensitive/Environment.h
taticAnalyzer/EntoSA/PathSensitive/ExplodedGraph.h
taticAnalyzer/EntoSA/PathSensitive/ExprEngine.h
taticAnalyzer/EntoSA/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/EntoSA/PathSensitive/GRState.h
taticAnalyzer/EntoSA/PathSensitive/GRStateTrait.h
taticAnalyzer/EntoSA/PathSensitive/MemRegion.h
taticAnalyzer/EntoSA/PathSensitive/SValBuilder.h
taticAnalyzer/EntoSA/PathSensitive/SVals.h
taticAnalyzer/EntoSA/PathSensitive/Store.h
taticAnalyzer/EntoSA/PathSensitive/SubEngine.h
taticAnalyzer/EntoSA/PathSensitive/SummaryManager.h
taticAnalyzer/EntoSA/PathSensitive/SymbolManager.h
taticAnalyzer/EntoSA/PathSensitive/TransferFuncs.h
taticAnalyzer/EntoSA/PathSensitive/WorkList.h
taticAnalyzer/FrontendActions.h
taticAnalyzer/ManagerRegistry.h
taticAnalyzer/PathDiagnosticClients.h
taticAnalyzer/PathSensitive/AnalysisManager.h
taticAnalyzer/PathSensitive/BasicValueFactory.h
taticAnalyzer/PathSensitive/BlockCounter.h
taticAnalyzer/PathSensitive/Checker.h
taticAnalyzer/PathSensitive/CheckerHelpers.h
taticAnalyzer/PathSensitive/CheckerVisitor.def
taticAnalyzer/PathSensitive/CheckerVisitor.h
taticAnalyzer/PathSensitive/ConstraintManager.h
taticAnalyzer/PathSensitive/CoreEngine.h
taticAnalyzer/PathSensitive/Environment.h
taticAnalyzer/PathSensitive/ExplodedGraph.h
taticAnalyzer/PathSensitive/ExprEngine.h
taticAnalyzer/PathSensitive/ExprEngineBuilders.h
taticAnalyzer/PathSensitive/GRState.h
taticAnalyzer/PathSensitive/GRStateTrait.h
taticAnalyzer/PathSensitive/MemRegion.h
taticAnalyzer/PathSensitive/SValBuilder.h
taticAnalyzer/PathSensitive/SVals.h
taticAnalyzer/PathSensitive/Store.h
taticAnalyzer/PathSensitive/SubEngine.h
taticAnalyzer/PathSensitive/SummaryManager.h
taticAnalyzer/PathSensitive/SymbolManager.h
taticAnalyzer/PathSensitive/TransferFuncs.h
taticAnalyzer/PathSensitive/WorkList.h
fd03843f0597de5eeced69ca9ae45c478fb2b153 23-Dec-2010 John McCall <rjmccall@apple.com> Kill RecordType::getAddressSpace() and its fixme; that's just not how
address spaces work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
b9c6631941619fb8c74f1056fbc56270629201c1 23-Dec-2010 Douglas Gregor <dgregor@apple.com> Reimplement the comparison of a class template partial
specialization's template arguments against the primary template's
template arguments using the obvious, correct method of checking the
injected-class-name type (C++ [temp.class.spec]p9b3). The previous
incarnation of this comparison attempted to use its own formulation of
the injected-class-name, which is redudant and, with the introduction
of variadic templates, became wrong (again).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122508 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3a8f40ed5e86a97e07d255976a95d2f3ad792b6d 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename headers: 'clang/GR' 'clang/EntoSA' and
update Makefile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122493 91177308-0d34-0410-b5e6-96231b3b80d8
ntoSA/AnalysisConsumer.h
ntoSA/BugReporter/BugReporter.h
ntoSA/BugReporter/BugType.h
ntoSA/BugReporter/PathDiagnostic.h
ntoSA/Checkers/DereferenceChecker.h
ntoSA/Checkers/LocalCheckers.h
ntoSA/FrontendActions.h
ntoSA/ManagerRegistry.h
ntoSA/PathDiagnosticClients.h
ntoSA/PathSensitive/AnalysisManager.h
ntoSA/PathSensitive/BasicValueFactory.h
ntoSA/PathSensitive/BlockCounter.h
ntoSA/PathSensitive/Checker.h
ntoSA/PathSensitive/CheckerHelpers.h
ntoSA/PathSensitive/CheckerVisitor.def
ntoSA/PathSensitive/CheckerVisitor.h
ntoSA/PathSensitive/ConstraintManager.h
ntoSA/PathSensitive/CoreEngine.h
ntoSA/PathSensitive/Environment.h
ntoSA/PathSensitive/ExplodedGraph.h
ntoSA/PathSensitive/ExprEngine.h
ntoSA/PathSensitive/ExprEngineBuilders.h
ntoSA/PathSensitive/GRState.h
ntoSA/PathSensitive/GRStateTrait.h
ntoSA/PathSensitive/MemRegion.h
ntoSA/PathSensitive/SValBuilder.h
ntoSA/PathSensitive/SVals.h
ntoSA/PathSensitive/Store.h
ntoSA/PathSensitive/SubEngine.h
ntoSA/PathSensitive/SummaryManager.h
ntoSA/PathSensitive/SymbolManager.h
ntoSA/PathSensitive/TransferFuncs.h
ntoSA/PathSensitive/WorkList.h
R/AnalysisConsumer.h
R/BugReporter/BugReporter.h
R/BugReporter/BugType.h
R/BugReporter/PathDiagnostic.h
R/Checkers/DereferenceChecker.h
R/Checkers/LocalCheckers.h
R/FrontendActions.h
R/ManagerRegistry.h
R/PathDiagnosticClients.h
R/PathSensitive/AnalysisManager.h
R/PathSensitive/BasicValueFactory.h
R/PathSensitive/BlockCounter.h
R/PathSensitive/Checker.h
R/PathSensitive/CheckerHelpers.h
R/PathSensitive/CheckerVisitor.def
R/PathSensitive/CheckerVisitor.h
R/PathSensitive/ConstraintManager.h
R/PathSensitive/CoreEngine.h
R/PathSensitive/Environment.h
R/PathSensitive/ExplodedGraph.h
R/PathSensitive/ExprEngine.h
R/PathSensitive/ExprEngineBuilders.h
R/PathSensitive/GRState.h
R/PathSensitive/GRStateTrait.h
R/PathSensitive/MemRegion.h
R/PathSensitive/SValBuilder.h
R/PathSensitive/SVals.h
R/PathSensitive/Store.h
R/PathSensitive/SubEngine.h
R/PathSensitive/SummaryManager.h
R/PathSensitive/SymbolManager.h
R/PathSensitive/TransferFuncs.h
R/PathSensitive/WorkList.h
9ef6537a894c33003359b1f9b9676e9178e028b7 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename static analyzer namespace 'GR' to 'ento'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122492 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
R/AnalysisConsumer.h
R/BugReporter/BugReporter.h
R/BugReporter/BugType.h
R/BugReporter/PathDiagnostic.h
R/Checkers/DereferenceChecker.h
R/Checkers/LocalCheckers.h
R/FrontendActions.h
R/ManagerRegistry.h
R/PathDiagnosticClients.h
R/PathSensitive/AnalysisManager.h
R/PathSensitive/BasicValueFactory.h
R/PathSensitive/BlockCounter.h
R/PathSensitive/Checker.h
R/PathSensitive/CheckerHelpers.h
R/PathSensitive/CheckerVisitor.h
R/PathSensitive/ConstraintManager.h
R/PathSensitive/CoreEngine.h
R/PathSensitive/Environment.h
R/PathSensitive/ExplodedGraph.h
R/PathSensitive/ExprEngine.h
R/PathSensitive/ExprEngineBuilders.h
R/PathSensitive/GRState.h
R/PathSensitive/GRStateTrait.h
R/PathSensitive/MemRegion.h
R/PathSensitive/SValBuilder.h
R/PathSensitive/SVals.h
R/PathSensitive/Store.h
R/PathSensitive/SubEngine.h
R/PathSensitive/SummaryManager.h
R/PathSensitive/SymbolManager.h
R/PathSensitive/TransferFuncs.h
R/PathSensitive/WorkList.h
c478a1425c055e517169220ea1c1efd857e65f52 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Add WIP prototype of a new buffer overflow
checker based on using raw (symbolic) byte offsets
from a base region.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122469 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
6bd8124f53d6694ef0de1713f06325893c0ea2ca 23-Dec-2010 Ted Kremenek <kremenek@apple.com> Add 'getConditionType()' and 'getArrayIndexType()'
to SValBuilder. These two query methods are useful
for constructing SVals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122467 91177308-0d34-0410-b5e6-96231b3b80d8
R/PathSensitive/SValBuilder.h
c6ed729f669044f5072a49d79041f455d971ece3 23-Dec-2010 Jeffrey Yasskin <jyasskin@google.com> Change all self assignments X=X to (void)X, so that we can turn on a
new gcc warning that complains on self-assignments and
self-initializations. Fix one bug found by the warning, in which one
clang::OverloadCandidate constructor failed to initialize its
FunctionTemplate member.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122459 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0d80abc3b7fb0dca26fb6b272d2c3484f86fb7e7 23-Dec-2010 Douglas Gregor <dgregor@apple.com> Unify the consistency checking for deduced template arguments into a
single routine. Extend that routine to handle consistency
checking for template argument packs, so that we can compare the
deduced packs for template parameter packs across different pack
expansions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e02e26293cf8e3bad1059b39cea75c6582896da6 22-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement template argument deduction for pack expansions whose
pattern is a template argument, which involves repeatedly deducing
template arguments using the pattern of the pack expansion, then
bundling the resulting deductions into an argument pack.

We can now handle a variety of simple list-handling metaprograms using
variadic templates. See, e.g., the new "count" metaprogram.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
99130e5a02e93282cb393d2cba0d3dffc10abc01 22-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Complain on missing property getter method only
if property-dot expression is decidedly
an rvalue. // rdar://8155806.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122430 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d2592a34a059e7cbb2b11dc53649ac4912422909 22-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Refactoring: Drop the 'GR' prefix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122424 91177308-0d34-0410-b5e6-96231b3b80d8
R/BugReporter/BugReporter.h
R/BugReporter/BugType.h
R/Checkers/DereferenceChecker.h
R/Checkers/LocalCheckers.h
R/PathSensitive/BasicValueFactory.h
R/PathSensitive/BlockCounter.h
R/PathSensitive/Checker.h
R/PathSensitive/ConstraintManager.h
R/PathSensitive/CoreEngine.h
R/PathSensitive/ExplodedGraph.h
R/PathSensitive/ExprEngine.h
R/PathSensitive/ExprEngineBuilders.h
R/PathSensitive/GRBlockCounter.h
R/PathSensitive/GRCoreEngine.h
R/PathSensitive/GRExprEngine.h
R/PathSensitive/GRExprEngineBuilders.h
R/PathSensitive/GRState.h
R/PathSensitive/GRSubEngine.h
R/PathSensitive/GRTransferFuncs.h
R/PathSensitive/GRWorkList.h
R/PathSensitive/Store.h
R/PathSensitive/SubEngine.h
R/PathSensitive/SymbolManager.h
R/PathSensitive/TransferFuncs.h
R/PathSensitive/WorkList.h
5a4f98ff943e6a501b0fe47ade007c9bbf96cb88 22-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Refactoring: Move stuff into namespace 'GR'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122423 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
R/AnalysisConsumer.h
R/BugReporter/BugReporter.h
R/BugReporter/BugType.h
R/BugReporter/PathDiagnostic.h
R/Checkers/DereferenceChecker.h
R/Checkers/LocalCheckers.h
R/FrontendActions.h
R/ManagerRegistry.h
R/PathDiagnosticClients.h
R/PathSensitive/AnalysisManager.h
R/PathSensitive/BasicValueFactory.h
R/PathSensitive/Checker.h
R/PathSensitive/CheckerHelpers.h
R/PathSensitive/CheckerVisitor.h
R/PathSensitive/ConstraintManager.h
R/PathSensitive/Environment.h
R/PathSensitive/ExplodedGraph.h
R/PathSensitive/GRBlockCounter.h
R/PathSensitive/GRCoreEngine.h
R/PathSensitive/GRExprEngine.h
R/PathSensitive/GRExprEngineBuilders.h
R/PathSensitive/GRState.h
R/PathSensitive/GRStateTrait.h
R/PathSensitive/GRSubEngine.h
R/PathSensitive/GRTransferFuncs.h
R/PathSensitive/GRWorkList.h
R/PathSensitive/MemRegion.h
R/PathSensitive/SValBuilder.h
R/PathSensitive/SVals.h
R/PathSensitive/Store.h
R/PathSensitive/SummaryManager.h
R/PathSensitive/SymbolManager.h
98cabbad47a4d9db6b7e95c950d3302c110d1b02 22-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> [analyzer] Refactoring: include/clang/Checker -> include/clang/GR

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122420 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/AnalysisConsumer.h
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/BugReporter/PathDiagnostic.h
hecker/Checkers/DereferenceChecker.h
hecker/Checkers/LocalCheckers.h
hecker/FrontendActions.h
hecker/ManagerRegistry.h
hecker/PathDiagnosticClients.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerHelpers.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRExprEngineBuilders.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRStateTrait.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SValBuilder.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SummaryManager.h
hecker/PathSensitive/SymbolManager.h
R/AnalysisConsumer.h
R/BugReporter/BugReporter.h
R/BugReporter/BugType.h
R/BugReporter/PathDiagnostic.h
R/Checkers/DereferenceChecker.h
R/Checkers/LocalCheckers.h
R/FrontendActions.h
R/ManagerRegistry.h
R/PathDiagnosticClients.h
R/PathSensitive/AnalysisManager.h
R/PathSensitive/BasicValueFactory.h
R/PathSensitive/Checker.h
R/PathSensitive/CheckerHelpers.h
R/PathSensitive/CheckerVisitor.def
R/PathSensitive/CheckerVisitor.h
R/PathSensitive/ConstraintManager.h
R/PathSensitive/Environment.h
R/PathSensitive/ExplodedGraph.h
R/PathSensitive/GRBlockCounter.h
R/PathSensitive/GRCoreEngine.h
R/PathSensitive/GRExprEngine.h
R/PathSensitive/GRExprEngineBuilders.h
R/PathSensitive/GRState.h
R/PathSensitive/GRStateTrait.h
R/PathSensitive/GRSubEngine.h
R/PathSensitive/GRTransferFuncs.h
R/PathSensitive/GRWorkList.h
R/PathSensitive/MemRegion.h
R/PathSensitive/SValBuilder.h
R/PathSensitive/SVals.h
R/PathSensitive/Store.h
R/PathSensitive/SummaryManager.h
R/PathSensitive/SymbolManager.h
20a55e2515ce89ddf9993941f9b5d0f3a6c91b4f 22-Dec-2010 Douglas Gregor <dgregor@apple.com> Implicitly expand argument packs when performing template argument
deduction. Unify all of the looping over template arguments for
deduction purposes into a single place, where argument pack expansion
occurs; this is also the hook for deducing from pack expansions, which
itself is not yet implemented.

For now, at least we can handle a basic "count" metafunction written
with variadics. See the new test for the formulation that works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122418 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c4bf2b9afb7d47445a9dc6bc848657098a4e3851 22-Dec-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Introduced raw_identifier token kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Preprocessor.h
ex/Token.h
a0e27f00158c9306d53b0003b94182e415380ea9 22-Dec-2010 Francois Pichet <pichet2000@gmail.com> Redesign the way anonymous fields are handled in designated-initializers.
Previously designated anonymous fields were found via name lookup. This redesign uses the fact that an IndirectFieldDecl declaration will always follow an anonymous implicit field to remove the special case of name lookup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122387 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/RecursiveASTVisitor.h
b68e39930d06ed81a2b431dc09e4cb97e5c0d57a 21-Dec-2010 Douglas Gregor <dgregor@apple.com> In C++, if the user redeclares a builtin function with a type that is
inconsistent with the type that the builtin *should* have, forget
about the builtin altogether: we don't want subsequence analyses,
CodeGen, etc., to think that we have a proper builtin function.

C is protected from errors here because it allows one to use a
library builtin without having a declaration, and detects inconsistent
(re-)declarations of builtins during declaration merging. C++ was
unprotected, and therefore would crash.

Fixes PR8839.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122351 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
bdb2d5056fd675c27307b34efd371bbba6839e92 21-Dec-2010 Douglas Gregor <dgregor@apple.com> Fix a major inconsistency in the representation of Objective-C
classes, categories, protocols, and class extensions, where the
methods and properties of these entities would be inserted into the
DeclContext in an ordering that doesn't necessarily reflect source
order. The culprits were Sema::ActOnMethodDeclaration(), which did not
perform the insertion of the just-created method declaration into
the DeclContext for these Objective-C entities, and
Sema::ActOnAtEnd(), which inserted all method declarations at the
*end* of the DeclContext.

With this fix in hand, clean up the code-completion actions for
property setters/getters that worked around this brokenness in the AST.

Fixes <rdar://problem/8062781>, where this problem manifested as poor
token-annotation information, but this would have struck again in many
other places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122347 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
2fcbceff97e065cff499e6cc563ca25c762bf547 21-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement BlockDecl::getSourceRange(). The bogus source-range
information caused token-annotation to fail in funny ways. Fixes
<rdar://problem/8595386>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122338 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b0ee93cf945744569b82b8a07361061f2963264a 21-Dec-2010 Douglas Gregor <dgregor@apple.com> A class template partial specialization cannot be a friend. Fixes PR8649.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122325 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
786e61717c67b513ed43e6e057a5ff550287ca47 21-Dec-2010 Douglas Gregor <dgregor@apple.com> Initialize LangOptions::MSCVersion. Thanks to Csaba Raduly for noting the omission

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
b99268b3083c882103bd1bd08bdcc9a76a2b4795 21-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement instantiation of pack expansions whose pattern is a type-id
in an exception specification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122297 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
00ccbefcffeb88ea3e2e6323e594fa968753ad14 21-Dec-2010 John McCall <rjmccall@apple.com> Fix the noreturn conversion to only strip off a single level of indirection.
Apply the noreturn attribute while creating a builtin function's type.
Remove the getNoReturnType() API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8e5fc9be37c6828ad008f22730e3baac1bef1686 21-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Warn when message is sent to receiver of
unknown type and there is a possibility that
at runtime method is resolved to a deprecated or
unavailable method. Addreses // rdar://8769853


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122294 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a40bc724849f9cdc6a7706bc5d230685c3bdf63c 21-Dec-2010 Douglas Gregor <dgregor@apple.com> Give the RecursiveASTVisitor a configuration function
shouldWalkTypesOfTypeLocs() that determines whether it should walk the
Types within TypeLocs. This walk is redundant, but perhaps required
for some clients. Disabling this redundant walk in the unexpanded
parameter pack finder produces better results, because we get
parameter packs with source location info *unless* such source
location information isn't available.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122287 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
dace95b13e2ceb0c3ec8de6babd926dc5114e1e5 20-Dec-2010 Douglas Gregor <dgregor@apple.com> Clean up the printing of template argument packs; previously, we were
getting extra "<>" delimiters around template argument packs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8491ffe86c50241b47c6d7ef8cd9ee00f5e675da 20-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement basic support for template instantiation of pack expansions
whose patterns are template arguments. We can now instantiate, e.g.,

typedef tuple<pair<OuterTypes, InnerTypes>...> type;

where OuterTypes and InnerTypes are template type parameter packs.

There is a horrible inefficiency in
TemplateArgumentLoc::getPackExpansionPattern(), where we need to
create copies of TypeLoc data because our interfaces traffic in
TypeSourceInfo pointers where they should traffic in TypeLocs
instead. I've isolated in efficiency in this one routine; once we
refactor our interfaces to traffic in TypeLocs, we can eliminate it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122278 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/Template.h
342e907d72c1644ca294115dabd5ed8e852bc4ed 20-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename 'VisitLocation' to 'visitLocation'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122271 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
d048c6ef5b6cfaa0cecb8cc1d4bdace32ed21d07 20-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename 'Generate[Node,Sink]' to 'generate[Node,Sink]'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122270 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
87dd697dcc8ecb64df73ae64d61b8c80ff0c157c 20-Dec-2010 Douglas Gregor <dgregor@apple.com> Clean up the handling of template argument packs, especially in the
area of printing template arguments. The functionality changes here
are limited to cases of variadic templates that aren't yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122250 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
913b7bf8c40454641588611b7bbad981dc53c882 20-Dec-2010 Francois Pichet <pichet2000@gmail.com> Emit an error if operator __uuidof() is called on a type with no associated GUID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7536dd5e6c99584481b7dab68b7e7d8df9c54054 20-Dec-2010 Douglas Gregor <dgregor@apple.com> Introduce a new type, PackExpansionType, to capture types that are
pack expansions, e.g. given

template<typename... Types> struct tuple;

template<typename... Types>
struct tuple_of_refs {
typedef tuple<Types&...> types;
};

the type of the "types" typedef is a PackExpansionType whose pattern
is Types&.

This commit introduces support for creating pack expansions for
template type arguments, as above, but not for any other kind of pack
expansion, nor for any form of instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
asic/DiagnosticSemaKinds.td
ema/ParsedTemplate.h
ema/Sema.h
erialization/ASTBitCodes.h
d3d3be9bc717b37366324e9711f1ea22dea42caa 20-Dec-2010 Francois Pichet <pichet2000@gmail.com> Validate Microsoft's uuid attribute string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
403ba3522d1b1c97ae5fad81c1a2c4b3a754e1c1 19-Dec-2010 Nick Lewycky <nicholas@mxc.ca> Add missing standard includes. Patch by Joerg Sonnenberger!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
nalysis/CFG.h
nalysis/Support/BumpVector.h
asic/IdentifierTable.h
ex/LiteralSupport.h
276fdf408050d205f3a7f34c1e788224a67d2098 19-Dec-2010 Wesley Peck <peckw@wesleypeck.com> 1. Add some ABI information for the Microblaze.
2. Add attibutes "interrupt_handler" and "save_volatiles" for the Microblaze target.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
11542141e385859df6b4f1a8f1f01856ad193b5b 19-Dec-2010 Francois Pichet <pichet2000@gmail.com> Add support for the Microsoft uuid attribute:

example:
struct __declspec(uuid("6d5140c1-7436-11ce-8034-00aa006009fa"))
test { };


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122173 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
e6a365d772a6b455f1e23ac9ae5f40d65a55a18c 19-Dec-2010 John McCall <rjmccall@apple.com> Motions towards simplifying how we deal with attribute-qualified function types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
df344dfb663f99184e734f5d14b5fc9b2725aec2 17-Dec-2010 Eric Christopher <echristo@apple.com> Going back to the drawing board with these two awful hacks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
river/Options.td
dd4430e596fac34e9ce44228a249f71e73effd4a 17-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Warn when synthesizing a property which is
implicitly atomic under -Wimplicit-atomic-properties
flag. // rdar://8774580


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122095 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/DeclSpec.h
854fc56c95845660fccb1cb165fbf33fb9ae09a8 17-Dec-2010 Bill Wendling <isanbard@gmail.com> Initialize variables in the correct order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122084 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
2bde8273eb5730324f823945d0c2389badf325e6 17-Dec-2010 Douglas Gregor <dgregor@apple.com> Encapsulate TemplateArgument::Kind

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
2c5c3135286a8cb27406dc6dcecfbd16e7c898fa 17-Dec-2010 Eric Christopher <echristo@apple.com> Horrible hack for systems that use -dumpversion with clang to expect versions
that match gcc versions. Eew.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122080 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
154f251c6f47c68ba7c19ed1d5fb873de9fdece2 17-Dec-2010 Eric Christopher <echristo@apple.com> Nom nom nom, tasty unused option with an argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122079 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c7b5ed6da7410849b51ba9a9ea04d2cc7b720f48 17-Dec-2010 Douglas Gregor <dgregor@apple.com> Swap the order of the condition and body of a do-while statement in
the AST, so that we visit them in source order. Fixes <rdar://problem/8779113>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122062 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b321c0c0ba957d78475e72cebde4028fdaa00f8f 17-Dec-2010 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122041 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
bb8fef382ad89b4bc202a1dbd4cd52ced7734479 17-Dec-2010 Ted Kremenek <kremenek@apple.com> Move CocoaConventions.[h,cpp] from libChecker
to libAnalysis. Similar to Format (format string checking),
CocoaConventions has the
potential to serve clients other than the
static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122040 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DomainSpecific/CocoaConventions.h
hecker/DomainSpecific/CocoaConventions.h
0a3ed3143b00f237decb1288c1ff574ae09eba4e 17-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename several methods/functions in the analyzer
to start with lowercase characters. No
functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122035 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
2e219b8d253dbb901206b14e5643cc9d0edd662b 17-Dec-2010 Francois Pichet <pichet2000@gmail.com> Microsoft's __uuidof operator returns a lvalue. Part 2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122030 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a669c534cf414339060868d70d2348fea9ce6c7d 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Add tests checking for unexpanded parameter packs in declarations that
occur within statements. Teach Sema::ActOnExceptionDeclarator() to
check for unexpanded parameter packs in the exception type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121984 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
781def075d4a486a5b367c6730fe77cb1f721ac1 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in non-type template parameter types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6f52675ec400a0ee89ec6214c4845b8ee274304a 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in default arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121962 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
892697dd2287caf7c29aaaa82909b0e90b8b63fe 16-Dec-2010 Ted Kremenek <kremenek@apple.com> Start migration of static analyzer to using the
implicit lvalue-to-rvalue casts that John McCall
recently introduced. This causes a whole bunch
of logic in the analyzer for handling lvalues
to vanish. It does, however, raise a few issues
in the analyzer w.r.t to modeling various constructs
(e.g., field accesses to compound literals).

The .c/.m analysis test cases that fail are
due to a missing lvalue-to-rvalue cast that
will get introduced into the AST. The .cpp
failures were more than I could investigate in
one go, and the patch was already getting huge.
I have XFAILED some of these tests, and they
should obviously be further investigated.

Some highlights of this patch include:

- CFG no longer requires an lvalue bit for
CFGElements
- StackFrameContext doesn't need an 'asLValue'
flag
- The "VisitLValue" path from GRExprEngine has
been eliminated.

Besides the test case failures (XFAILed), there
are surely other bugs that are fallout from
this change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121960 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/GRExprEngine.h
a31040f16604849b3b1dc36015056c81bae68ad1 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs within variable initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
6ccab97c17c17f38eb92c7fe02c766508875bd97 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in friend declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
8b1aba495744bea7093899a65f08c3987263061c 16-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics when property being looked up
in a forward @class object. // rdar://8774513


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
56c04588ef3cfa1bbc968fd68de2480a4e66971d 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in using declarations. As a
drive-by, make sure to check for unexpanded parameter packs within the
name of a declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
0c9e4799fd78d350a037498b2c797f2b2558791c 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in enumeration types and enumerators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
399ad970a25efcbfa7111e17f48285a70fba2731 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in static assertion expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121922 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
46e392ae6d09979b087d7b1aca3b816ba4199b89 16-Dec-2010 Bob Wilson <bob.wilson@apple.com> Implement builtins for Neon half-precision float conversions.
Also tweak the VCVT_F32_F16 entry in arm_neon.td to be more consistent with
the other floating-point conversion builtins. Radar 8068427.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121916 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
e186269a8a41dbff1ebea2c251048892979d1078 16-Dec-2010 Douglas Gregor <dgregor@apple.com> Check for unexpanded parameter packs in various kinds of
declarations. This is a work in progress, as I go through the C++
declaration grammar to identify where unexpanded parameter packs can
occur.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
c11e1d7f1eff113b8a4b2a6370975eb1dc7c9205 15-Dec-2010 Douglas Gregor <dgregor@apple.com> Teach the RecursiveASTVisitor to traverse the type-location
information for all of the explicit casts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
9ef75899bae6dd9a4be1252ae9cadcb619c170ff 15-Dec-2010 Douglas Gregor <dgregor@apple.com> Introduce a RecursiveASTVisitor subclass that finds all unexpanded
parameter packs within a statement, type, etc. Use this visitor to
provide improved diagnostics for the presence of unexpanded parameter
packs in a full expression, base type, declaration type, etc., by
highlighting the unexpanded parameter packs and providing their names,
e.g.,

test/CXX/temp/temp.decls/temp.variadic/p5.cpp:28:85: error: declaration type
contains unexpanded parameter packs 'VeryInnerTypes',
'OuterTypes', ...
...VeryInnerTypes, OuterTypes>, pair<InnerTypes, OuterTypes> > types;
~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0827408865e32789e0ec4b8113a302ccdc531423 15-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix diagnostic pragmas.

Diagnostic pragmas are broken because we don't keep track of the diagnostic state changes and we only check the current/latest state.
Problems manifest if a diagnostic is emitted for a source line that has different diagnostic state than the current state; this can affect
a lot of places, like C++ inline methods, template instantiations, the lexer, etc.

Fix the issue by having the Diagnostic object keep track of the source location of the pragmas so that it is able to know what is the diagnostic state at any given source location.

Fixes rdar://8365684.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/SourceLocation.h
ex/MacroInfo.h
ex/Preprocessor.h
dda0c0dd63bb1ff4a057f1275497e844f99b7909 15-Dec-2010 Nico Weber <nicolasweber@gmx.de> Fix gcc warning: 'clang::ASTStmtReader' is already a friend of 'clang::OverloadExpr'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121852 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
bfdcdc8e26097c9dbb4c40d78296f6ccc3e6684c 15-Dec-2010 John McCall <rjmccall@apple.com> Set the "implicitly inline" bit on a method as soon as we see a definition
within the class. Teach IR gen to look for function definitions in record
lexical contexts when deciding whether to emit a function whose address
was taken. Fixes PR8789.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bebbe0d9b7568ce43a464286bee49429489ef483 15-Dec-2010 Douglas Gregor <dgregor@apple.com> Variadic templates: extend the Expr class with a bit that specifies
whether the expression contains an unexpanded parameter pack, in the
same vein as the changes to the Type hierarchy. Compute this bit
within all of the Expr subclasses.

This change required a bunch of reshuffling of dependency
calculations, mainly to consolidate them inside the constructors and
to fuse multiple loops that iterate over arguments to determine type
dependence, value dependence, and (now) containment of unexpanded
parameter packs.

Again, testing is painfully sparse, because all of the diagnostics
will change and it is more important to test the to-be-written visitor
that collects unexpanded parameter packs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
ST/TemplateBase.h
723df245307a530da5433dfb43accf187dc3e243 14-Dec-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added missing IgnoreParens().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeLoc.h
373920bd733b1d28fe7bf209945a62eb9248d948 14-Dec-2010 John McCall <rjmccall@apple.com> Improve some comments, shrink FunctionType::ExtInfo, and fix a bug found
by valgrind where we were doing the wrong thing in the presence of invalid
exception specs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e23cf437fe76b1ed02d63c3f61b456fd48a915f5 14-Dec-2010 John McCall <rjmccall@apple.com> Restore r121752 without modification.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/Type.h
ema/Sema.h
5bfe232d1f07a6fd160fcf82c277c055a412a1c0 14-Dec-2010 John McCall <rjmccall@apple.com> Pull out r121752 in case it's causing the selfhost breakage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121759 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/Type.h
ema/Sema.h
0e88aa7100da32acc63bc8a4dcb946ed517868f1 14-Dec-2010 John McCall <rjmccall@apple.com> Factor out most of the extra state in a FunctionProtoType into a separate
class to be passed around. The line between argument and return types and
everything else is kindof vague, but I think it's justifiable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121752 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/Type.h
ema/Sema.h
d0937224f383c7cc72c947119380f9713a070c73 13-Dec-2010 Douglas Gregor <dgregor@apple.com> Variadic templates: extend Type, NestedNameSpecifier, TemplateName,
and TemplateArgument with an operation that determines whether there
are any unexpanded parameter packs within that construct. Use this
information to diagnose the appearance of the names of parameter packs
that have not been expanded (C++ [temp.variadic]p5). Since this
property is checked often (every declaration, ever expression
statement, etc.), we extend Type and Expr with a bit storing the
result of this computation, rather than walking the AST each time to
determine whether any unexpanded parameter packs occur.

This commit is deficient in several ways, which will be remedied with
future commits:
- Expr has a bit to store the presence of an unexpanded parameter
pack, but it is never set.
- The error messages don't point out where the unexpanded parameter
packs were named in the type/expression, but they should.
- We don't check for unexpanded parameter packs in all of the places
where we should.
- Testing is sparse, pending the resolution of the above three
issues.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/Expr.h
ST/NestedNameSpecifier.h
ST/Stmt.h
ST/TemplateBase.h
ST/TemplateName.h
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
140a2bd77539b4537010d8cd6a0a3805ce724b3e 13-Dec-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Skip ParenType on function instantiations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121720 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e7f85047d0dd5ebb03d851fab0afa9db07ec2925 13-Dec-2010 Chandler Carruth <chandlerc@gmail.com> Fix PR8774 by restricting when hasInit returns true. Previously, it
would return true if the initializer pointer union had *any* non-null
pointer in it, even if the pointer wasn't one that would actually be
returned via getInit(). This makes it more accurately model the logic of
'getInit() != NULL'.

This still isn't completely satisfying. From a principled stance,
I suspect we should make hasInit() and getInit() *always* return false
and NULL (resp.) for ParmVarDecl. We shouldn't at the API level treat
initializers and default arguments as the same thing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121692 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7b381985353304a7723acb05911ff91634fa1f27 13-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Basic, Sema: add support for CUDA launch_bounds attribute

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121654 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
2c2c8dd0acb2a51067299bfcec9ff2145f2031c8 13-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Sema: diagnose kernel functions with non-void return type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121653 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e005d19456e6fb73ace33f25e02ac10e22dd063f 10-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ObjCMessageExpr::getReceiverRange() to get the source range of the receiver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
f40f0d5a382395e0301d7dcbeaa2b8e90b8973b1 10-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep the source location of the selector in ObjCMessageExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121516 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ema/Sema.h
5e362102f8bac7a46cf8ff4394ea29548a4c1ab0 10-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make RecursiveASTVisitor traverse a ObjCMethodDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
5aea91b09bdb36fba4e36c2766f3d5f9127d1e61 10-Dec-2010 Douglas Gregor <dgregor@apple.com> Silence a GCC unitialized-value warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121504 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DeclSpec.h
4472fc641ea3069463798fb56a04043c28ea2910 10-Dec-2010 Douglas Gregor <dgregor@apple.com> Replace two QualType::getTypePtrOrNull() calls with
QualType::getTypePtr(). It turns out that
cast_or_null/dyn_cast_or_null don't actually use simplify_type, so
they're guaranteed to operator on non-NULL QualType or CanQualType
objects.

Good for a 0.6% win on 403.gcc's combine.c with -emit-llvm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121495 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
1ab55e9bb87d98bff1d42c7a0ee502c64755d9f5 10-Dec-2010 Douglas Gregor <dgregor@apple.com> Eliminate the branching in QualType::getTypePtr() by providing a
common base for ExtQuals and Type that stores the underlying type
pointer. This results in a 2% performance win for -emit-llvm on a
typical C file, with 1% memory growth in the AST.

Note that there is an API change in this optimization:
QualType::getTypePtr() can no longer be invoked on a NULL
QualType. If the QualType might be NULL, use
QualType::getTypePtrOrNull(). I've audited all uses of getTypePtr() in
the code base and changed the appropriate uses over to
getTypePtrOrNull().

A future optimization opportunity would be to distinguish between
cast/dyn_cast and cast_or_null/dyn_cast_or_null; for the former, we
could use getTypePtr() rather than getTypePtrOrNull(), to take another
branch out of the cast/dyn_cast implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
hecker/PathSensitive/MemRegion.h
075f8f1b6bed4d1b224c74f87508534cc6392ce6 10-Dec-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added ParenType type node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
ema/DeclSpec.h
ema/Sema.h
erialization/ASTBitCodes.h
c3c0af36bac3d71f61dd758585ab307892545de4 10-Dec-2010 Douglas Gregor <dgregor@apple.com> Silence GCC warning about comparisons between enumerators of different types

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121486 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
49f4e1cbd839da27ff4814b4ea6d85a79f786cbd 10-Dec-2010 John McCall <rjmccall@apple.com> It's kindof silly that ExtQuals has an ASTContext&, and we can use that
space better. Remove this reference. To make that work, change some APIs
(most importantly, getDesugaredType()) to take an ASTContext& if they
need to return a QualType. Simultaneously, diminish the need to return a
QualType by introducing some useful APIs on SplitQualType, which is
just a std::pair<const Type *, Qualifiers>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121478 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
hecker/PathSensitive/MemRegion.h
55270e4bde91bd30d16086ae71f0f65caf3b8a51 10-Dec-2010 Douglas Gregor <dgregor@apple.com> Update ExtQuals comment to reflect the expansion of the fast qualifiers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
34e80e94a21eb1ac2a9405d918e711e8b12256a9 10-Dec-2010 John McCall <rjmccall@apple.com> Optimize memory usage of FunctionProtoType on MSVC.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f7616b9067790757f4e12e834b216c53c8c04ebe 10-Dec-2010 Douglas Gregor <dgregor@apple.com> Move the "volatile" bit into QualType's "fast" qualifier set,
increasing the required type alignment from 8 to 16. This provides a
2.5% speedup for -fsyntax-only on a token-cached Cocoa.h, while only
increasing memory consumption in the ASTContext by 0.8%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
90f1450c109fbbd333001165bbd986061f7c4513 10-Dec-2010 John McCall <rjmccall@apple.com> Treat visibility on an enclosing namespace as a non-explicit source of
visibility. Fixes PR8713.

I've disabled a test which was testing that you can #pragma pop visibility
to get out of a namespace's visibility attribute. We should probably just
diagnose that as an error unless it's instrumental to someone's system
headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121459 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ad616eb3bc86fbeecae343cdd9b28fb3fd136fd0 10-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Added remaining objective-c library builtins (as in gcc) to
clang. // rdar://8735023


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c3dcdc1d5d2e9f33fd7f7209fe62e1e87193b3ac 10-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add Neon vreinterpret intrinsics for half-float (f16) types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
2427dbfa880a72fa3dcba700cf587fb5d8b3cf57 09-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix type of last vector operand of Neon quad-register multiple-lane intrinsics.
The sensible thing would be to have these intrinsics take all quad-register
vector operands, but that's not what ARM did. They made the last vector
operand always be a double-register type. Since the lane number
must be a constant, the user can know which half of a quad-register contains
that lane, extract the high or low half of the vector, and adjust the lane
number accordingly. The only advantage I can see for this is that it works
better when you want to multiply a quad-register value by a lane from a
double-register value, but I wouldn't have expected that to be the common
case. Oh well -- at this point we just need to follow the spec.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121397 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
c9ccad380f858c511756e2d8cd55058d8fc6fbcb 09-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix the names of the v[r]addhn and v[r]subhn Neon intrinsics.
Their suffixes are supposed to reflect the source operand element type,
not the destination element type. Radar 8746481.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
8f1509446fc51db0473ea1241910c06353a153b8 09-Dec-2010 Douglas Gregor <dgregor@apple.com> When an "inline" declaration was followed by a definition not marked
"inline", we weren't giving the definition weak linkage because the
"inline" bit wasn't propagated. This was a longstanding FIXME that,
somehow, hadn't triggered a bug in the wild. Fix this problem by
tracking whether any declaration was marked "inline", and clean up the
semantics of GNU's "extern inline" semantics calculation based on this
change.

Fixes <rdar://problem/8740363>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c66b516707a73b026cd34f3c0bfcaaf4409155c7 09-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add missing "s32" and "u32" variants of Neon vzip intrinsic.
Radar 8446277.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121360 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
327ce7064bed7e37ae9902ffbaf043463a914a82 09-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add missing "p16" type variants for the Neon VREV32 intrinsics.
Radar 8446277.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
d95450421ee3b7cebfb18ce1312310d6c703431c 09-Dec-2010 Douglas Gregor <dgregor@apple.com> A typename specifier can end up referring to a unresolved using
declaration that is a value in ill-formed code. Instead of crashing,
treat this as a dependent typename specifier and suggest that the
using add "typename" into the using declaration. Fixes <rdar://problem/8740998>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
db3d4d036037f379f12643e067b229862d61e932 08-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using builtins for the "_lane" variants of saturating multiply intrinsics.
Remove the "splat" parameter from the EmitNeonCall function, since it is no
longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
f187237d916afa97c491ac32fe98be7d335c5b63 08-Dec-2010 Francois Pichet <pichet2000@gmail.com> Remove the TypesCompatibleExprClass AST node. Merge its functionality into BinaryTypeTraitExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
asic/TypeTraits.h
rontend/StmtXML.def
ema/Sema.h
erialization/ASTBitCodes.h
259461d46a4f9505e1b609b0d4a25e1d54b39f79 08-Dec-2010 Douglas Gregor <dgregor@apple.com> Put the "'typename' occurs outside of a template" and "'template'
keyword occurs outside of a template" diagnostics under
-WC++0x-extensions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a4cc79994b2f12663143dc31ceaf198e703fb914 08-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using clang builtins for Neon vabdl and vabal intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
a8b988f6ec8e2355c7081b31578843be33027033 08-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using clang builtins for Neon vaba intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
c46233d7775469c25af186c386fedfa6982a69d1 08-Dec-2010 Douglas Gregor <dgregor@apple.com> Fix BinaryOperator dispatch for RecursiveASTVisitor, from Benoit Perrot!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
f203344728f604b7b95cbc093854d97da411dc6f 08-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using clang builtins for Neon vadd[lw] and vsub[lw] intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121214 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
4064127e722070967289d02f27ee6a6d42cdba63 08-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using clang builtins for Neon vmlal{_n,_lane} and vmlsl{_n,_lane}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
cf55652cf668c1402eee0b12edd2e5a1bc34d7a1 07-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using a clang builtin for Neon vdup_lane intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121191 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
c92b7721603484ddf337034c6f291d1b419a0528 07-Dec-2010 Bob Wilson <bob.wilson@apple.com> Stop using a clang builtin for Neon vmull_lane intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
468acf9e29b8b9bcefd227d0a0e65356678b43cd 07-Dec-2010 Bob Wilson <bob.wilson@apple.com> Implement vmull and vmull_n intrinsics without using clang builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121174 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
954e0c75c42f321945aff8b9ee96da43cd90c752 07-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement AST import for Objective-C property implementations
(@synthesize and @dynamic).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121159 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
f5fe2925b87cf382f2f13983c81679e38067122b 07-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR8720 by printing an error message with a substring that the gcc testsuite searches for.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121137 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9407444a159731b85b3d6d54f3a158d7341fc9f8 07-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add Neon vreinterpret intrinsics.
Radar 8681774.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121089 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
0d3f3ffe0b8567501c27ef6963d9335ecbc6e249 07-Dec-2010 Bob Wilson <bob.wilson@apple.com> Make whitespace more consistent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
6f18fca241bf060bccbea52e5e436e17562bc9b3 07-Dec-2010 John McCall <rjmccall@apple.com> Kill FullExpr, as it was not, in fact, used anywhere in the code base.
I'm not opposed to the idea in concept, but there's no point in preserving
abortive experiments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
ST/Stmt.h
ema/Sema.h
7ee90d0d9ecd6010bb6c7ad252d04b32f07877d5 07-Dec-2010 Francois Pichet <pichet2000@gmail.com> Fix compile error: comma at end of enumerator list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121075 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TypeTraits.h
6ad6f2848d7652ab2991286eb48be440d3493b28 07-Dec-2010 Francois Pichet <pichet2000@gmail.com> Type traits intrinsic implementation: __is_base_of(T, U)
New AST node introduced: BinaryTypeTraitExpr; to be reused for more intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
asic/TypeTraits.h
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
409fa9ab9579de04c5d68fb6a6a8d094545b1e77 06-Dec-2010 John McCall <rjmccall@apple.com> Split out a function to do lvalue conversion on objects; this is basically
FunctionArrayLvalueConversion but without the function/array decay. Generally
this is only appropriate for use sites that know the type of the expression
and thus that it can't be subject to the decays.

Also make sure we do lvalue-to-rvalue on the bases of ivar references.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121035 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
381d34e0b205ca27bcc7e7c1652561941c437965 06-Dec-2010 Douglas Gregor <dgregor@apple.com> Re-implement caching for the linkage calculation of declarations.

My previous attempt at solving the compile-time problem with many
redeclarations of the same entity cached both linkage and visibility,
while this patch only tackles linkage. There are several reasons for
this difference:

- Linkage is a language concept, and is evaluated many times during
semantic analysis and codegen, while visibility is only a
code-generation concept that is evaluated only once per (unique)
declaration. Hence, we *must* optimize linkage calculations but
don't need to optimize visibility computation.
- Once we know the linkage of a declaration, subsequent
redeclarations can't change that linkage. Hence, cache
invalidation is far simpler than for visibility, where a later
redeclaration can completely change the visibility.
- We have 3 spare bits in Decl to store the linkage cache, so the
cache doesn't increase the size of declarations. With the
visibility+linkage cache, NamedDecl got larger.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Redeclarable.h
f0b0ccce127857e7e4fb829e017dbcb7487884c4 06-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use the source location of the parameter, when it makes sense, for diagnostics in HandleCleanupAttr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121013 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AttributeList.h
b5f35bae05f1ce3ae62ca52b266a086fd019e89b 06-Dec-2010 Douglas Gregor <dgregor@apple.com> Revert r120808, my previous implementation of caching for the linkage
and visibility of declarations, because it was extremely messy and it
increased the size of NamedDecl.

An improved implementation is forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121012 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclTemplate.h
ST/Redeclarable.h
894aed964fae942b62326881dc106801dabfd04c 06-Dec-2010 Chandler Carruth <chandlerc@gmail.com> Un-templatetize this method. It's definition is out of line in the .cpp file,
so that's not a valid thing to do at all. Instead, switch to a ValueDecl
argument, the template isn't really necessary here.

When handling the types explicitly in the code, it becomes awkward to cerate
the CXXBaseOrMemberInitializer object in so many places. Re-flow the code to
calculate the Init expression first, and then create the initializer. If this
is too gross, we can factor the init expression logic into helper functions,
but it's not past my threshold yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120997 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4765fa05b5652fcc4356371c2f481d0ea9a1b007 06-Dec-2010 John McCall <rjmccall@apple.com> Rename CXXExprWithTemporaries -> ExprWithCleanups; there's no theoretical
reason this is limited to C++, and it's certainly not limited to temporaries.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
0074b48fb8ea5040de546c79be43916efe0c1f76 06-Dec-2010 Ted Kremenek <kremenek@apple.com> Mark SVal constructors 'explicit'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120970 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SVals.h
465846324f412055dd1ce270d757bfeead0811dc 06-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename Environment::LookupExpr() to
Environment::lookupExpr() and move its implementation
out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120969 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
d7365e103c3466792d05c046a8b1108178e41959 06-Dec-2010 Ted Kremenek <kremenek@apple.com> Remove unused method GRState::LookupExpr().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120968 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
00eb3f9c5b33e3d99aee1f8b75dd9c9678fdd66b 04-Dec-2010 Francois Pichet <pichet2000@gmail.com> More anonymous struct/union redesign. This one deals with anonymous field used in a constructor initializer list:

struct X {
X() : au_i1(123) {}
union {
int au_i1;
float au_f1;
};
};

clang will now deal with au_i1 explicitly as an IndirectFieldDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Initialization.h
ema/Sema.h
ec276bf91627058a61adc9ba9175dd10d4c1a5aa 04-Dec-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence "comparison between signed and unsigned integer expressions" warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
0e800c9c20d1a658a91096c756c4a4a9e90264fc 04-Dec-2010 John McCall <rjmccall@apple.com> Remove some defensive calls to EmitLoadOfPropertyRefLValue that shouldn't
be required, and then fix up some missing loads on overloaded-operator
paths which that exposed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120896 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f6a1648197562e0b133440d612d9af297d0a86cc 04-Dec-2010 John McCall <rjmccall@apple.com> Although we currently have explicit lvalue-to-rvalue conversions, they're
not actually frequently used, because ImpCastExprToType only creates a node
if the types differ. So explicitly create an ICE in the lvalue-to-rvalue
conversion code in DefaultFunctionArrayLvalueConversion() as well as several
other new places, and consistently deal with the consequences throughout the
compiler.

In addition, introduce a new cast kind for loading an ObjCProperty l-value,
and make sure we emit those nodes whenever an ObjCProperty l-value appears
that's not on the LHS of an assignment operator.

This breaks a couple of rewriter tests, which I've x-failed until future
development occurs on the rewriter.

Ted Kremenek kindly contributed the analyzer workarounds in this patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ema/Sema.h
91252d115bdb6f937192a8dbc86c5abe00101436 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-std=

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120882 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
4400cb8c548a90c472444b57690117563f4be195 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-mad-enable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120881 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
f0840820b4e28fd0cc04d737382811d7372cb832 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-fast-relaxed-math

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120880 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
5f67e13fcdc3c33e9cd5d027bfbb677b726c6f6a 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-unsafe-math-optimizations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120879 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
5d729a3d8eeba59ed97119998f2135ad6d45e876 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-finite-math-only

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120878 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
0982136cb748f4a842141bf199d133126d6be882 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-single-precision-constant

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120877 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
61e07861dd3a70c31f658bad8c4b911994e4933b 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Implement -cl-opt-disable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120876 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
53c92be3b233cede6114702a5f86f146f55d6c6e 04-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Introduce CompilerInvocation::setLangDefaults function

This patch refactors the CompilerInvocation code to introduce a
CompilerInvocation::setLangDefaults function, which can set up a
LangOptions with the defaults for a given language and language
standard. This function is useful for non-command line based Clang
clients which need to set up a CompilerInvocation manually for a
specific language.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120874 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
640ccf071076e684713cc3c3276bb51982bff607 04-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Minor refactoring; have BugReport::getRanges return a pair of iterator, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120873 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
74b2756bc1f1f5f7c189996fe7e4cd3efef70263 04-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose when accessing property in a class method and
no property accessor class method to be found, instead of
crashing in IRGen. // rdar://8703553


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a88cefd266c428be33cc06f7e8b00ff8fc97c1ff 03-Dec-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added struct/class syntactic info for c++0x scoped enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/Sema.h
4740dabd14c8660d641228d75ed91bf7e6753b77 03-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add missing vext_f32 and vextq_f32 Neon intrinsics (Radar 8592601).
For some reason these were not included in the list of Neon intrinsics in
ARM's documentation, so they didn't make it into Clang either.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120815 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
953d513c7ee79b3d9e37597e64317e75c0fbf7f6 03-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add support for vmul_p8 Neon intrinsic. Radar 8446141.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120812 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
2357207a5753547740c70a12c3b37f71afa93f8a 03-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement caching for the linkage and visibility calculations of
declarations.

The motivation for this patch is that linkage/visibility computations
are linear in the number of redeclarations of an entity, and we've run
into a case where a single translation unit has > 6500 redeclarations
of the same (unused!) external variable. Since each redeclaration
involves a linkage check, the resulting quadratic behavior makes Clang
slow to a crawl. With this change, a simple test with 512
redeclarations of a variable syntax-checks ~20x faster than
before.

That said, I hate this change, and will probably end up reverting it
in a few hours. Reasons to hate it:
- It makes NamedDecl larger, since we don't have enough free bits in
Decl to squeeze in the extra information about caching.
- There are way too many places where we need to invalidate this
cache, because the visibility of a declaration can change due to
redeclarations (!). Despite self-hosting and passing the testsuite,
I have no confidence that I've found all of places where this cache
needs to be invalidated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120808 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclTemplate.h
ST/Redeclarable.h
96bfa6249fe65eaaaba795845c0f92f94d2b8a0d 03-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add a separate name field to the Neon intrinsic table.
This is currently the same as a lowercase version of the record name, but
it will allow us to have multiple records with the same name, which is
needed for intrinsics (e.g., vmul and vmull) that are implemented
differently depending on the type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120807 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
40406fe63df2b932d6e9fd021f77f097f9d33afb 03-Dec-2010 Ted Kremenek <kremenek@apple.com> Fix an insidious bug in BugReporter where
a node in the trimmed graph might not always
correctly map back to the original error node.
This could cause a crash in some cases when
flagging memory leaks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120795 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
a427b49f99bd2416731de0d4f8bdec12b4807e7c 03-Dec-2010 Nick Lewycky <nicholas@mxc.ca> Add a flag to control the "indirection of non-volatile null pointer will be
deleted, not trap" warning. Fixed PR8729. Patch by Elias Pipping!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ebd4f52093b93fed57dcab6fa3a9033e3850ca4b 03-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce TextPathDiagnostics, a simple PathDiagnosticClient that outputs as diagnostic notes
the sequence of events; useful for testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120770 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathDiagnosticClients.h
rontend/Analyses.def
f928dca56542cf8f981a684f090d2c79bdcb2a10 03-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename Create[*]DiagnosticClient -> create[*]DiagnosticClient.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120768 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathDiagnosticClients.h
rontend/Analyses.def
96c105c8c3f4a9f39fdd4f967226f14c8e3face8 03-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add support for "_lane" variants of VMUL, VMLA, and VMLS Neon intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
a9e9144f481111255c8a45731d3266ccd7660e95 02-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on objc diagnostics. // rdar://8721692


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120737 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a44724d0d6d03568ec9acadc0781d612163008e1 02-Dec-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed source range for MS asm statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120724 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
830937bc1100fba7682f7c32c40512085870f50c 02-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> IR Gen. part of API support for __block cxx
objects imported into blocks. //rdar://8594790.
Will have a test case coming (as well as one
sent to llvm test suite).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fce5656f752199bb99a80fdff9184f9ddb470fc3 02-Dec-2010 Douglas Gregor <dgregor@apple.com> Do not change the size of LookupResult::Filter based on the NDEBUG
macri; the extra bool fits into padding anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120708 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
6939fff69a3dfff2552261a1d7f1f609380fe6b0 02-Dec-2010 Douglas Gregor <dgregor@apple.com> Remove NDEBUG-controlled extra data from
TemplateArgumentLocInfo. Unfortunately, this means that we lose some
internal consistency checking when building a debug Clang. However,
having data structures change size/layout depending on NDEBUG causes
pain for clients of the Clang API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLoc.h
c8413fd03f73084a5c93028f8b4db619fc388087 02-Dec-2010 Ted Kremenek <kremenek@apple.com> Merge ValueManager into SValBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120696 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SValBuilder.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/ValueManager.h
a6cf1e709b96865210b81bd611d41e9a2d41500a 02-Dec-2010 Eric Christopher <echristo@apple.com> Add support for the common and nocommon attributes.

rdar://8560647


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
12f78a6741a4cb3d904340f8d3d2714568b50e7a 02-Dec-2010 John McCall <rjmccall@apple.com> Simplify the ASTs by consolidating ObjCImplicitGetterSetterExpr and ObjCPropertyRefExpr
into the latter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
3a1c36c099df4dcc94d1d24516a8a2c809c764d4 02-Dec-2010 Douglas Gregor <dgregor@apple.com> Eliminate two uses of NDEBUG in headers that cause different symbols
to be available in debug vs. release builds.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
7e44e3fcd75147f229f42e6912898ce62d6b4d08 02-Dec-2010 Douglas Gregor <dgregor@apple.com> Make TypeLocBuilder an implementation detail of Sema. Nobody else should be using it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocBuilder.h
26ac3f30ecef21749c00a4b1a08dd15d772dd5aa 02-Dec-2010 Douglas Gregor <dgregor@apple.com> Extend ExternalASTSource with the ability to lazily complete the
definition of an Objective-C class. Unlike with C/C++ classes, we
don't have a well-defined point in Sema where Objective-C classes are
checked for completeness, nor do we need to involve Sema when
completing a class. Therefore, we take the appropriate of having the
external AST source mark a particular Objective-C class as having an
external declaration; when using one of the accessors of an
Objective-C class that has an external declaration, we request that
the external AST source fill in the Objective-C class definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExternalASTSource.h
1ceee5c42d5c410217f67d384eecc6ea4a2bba9b 01-Dec-2010 Fariborz Jahanian <fjahanian@apple.com> Sema/AST work for capturing copy init expression
to be used in copy helper synthesis of __block
variables. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
28f47b92e760ccf641ac91cb0fe1c12d9ca89795 01-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename all 'AssumeXXX' methods in libChecker
to 'assumeXXX'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120614 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/GRState.h
9c14953d0c84f7cf5adfb4cd3c0f05a9b1723c1c 01-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename all 'EvalXXX' methods in libChecker to
'evalXXX'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120609 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/SValBuilder.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
846eabd187be4bfe992e8bca131166b734d86e0d 01-Dec-2010 Ted Kremenek <kremenek@apple.com> Rename 'SValuator' to 'SValBuilder'. The new name
reflects what the class actually does.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120605 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/SValBuilder.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/ValueManager.h
7306ebfacfa51ba5270fd20f162f62d2ed813485 01-Dec-2010 Douglas Gregor <dgregor@apple.com> Not content to implement just "extern" explicit template
instantiations, GCC also supports "inline" and "static" explicit
template instantiations. Parse and warn about such constructs, but
don't implement the semantics of either "inline" or "static". They
don't seem to be widely used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e343583370ba7465273645a300b9a829e3a95d82 01-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add some comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
08a53269b1f8241e2e6797e845abbe640fb18253 01-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Serialization: support for CUDA language extensions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
a61b3e7443056f8d05b24ca4cbea90fe66235d6b 01-Dec-2010 Douglas Gregor <dgregor@apple.com> After parsing a ':' in an enum-specifier within class context,
disambiguate between an expression (for a bit-field width) and a type
(for a fixed underlying type). Since the disambiguation can be
expensive (due to tentative parsing), we perform a simplistic
disambiguation based on one-token lookahead before going into the
full-blown tentative parsing. Based on a patch by Daniel Wallin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120582 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d11617f6e0622bbf843d6f8d60c441f844e46e9a 01-Dec-2010 Douglas Gregor <dgregor@apple.com> Improve the diagnostic when the fixed underlying type of a
redeclaration of an enum type differs from that of the original
declaration, from Daniel Wallin


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b7b2688bab0eac053d3e2938b329c8e523fd252b 01-Dec-2010 John McCall <rjmccall@apple.com> Eliminate vtables from the Type hierarchy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0ae287a498b8cec2086fe6b7e753cbb3df63e74a 01-Dec-2010 John McCall <rjmccall@apple.com> Restore the lvalue-to-rvalue conversion patch with a minimal fix.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ced7671c18e115ac3c3f54abfaaafcc6d33edc4c 01-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Basic, Sema: add support for CUDA location attributes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
895fcca55a6d52a71639f2472a6623ab2dd9f628 01-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Driver, Frontend: add CUDA language support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120544 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
rontend/FrontendAction.h
rontend/LangStandards.def
e2dd6c8cca05494b27f2ad2a86dedf832ac4514f 01-Dec-2010 Peter Collingbourne <peter@pcc.me.uk> Basic: Add CUDA language option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
d5dc83a85c1b9aa32f8262126183df5d71c357ae 01-Dec-2010 Douglas Gregor <dgregor@apple.com> Implement AST import support for class template specializations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
26e10bea3d2e9d2979194890e51b98ecea165a96 30-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Follow through references to catch returned stack addresses, local blocks, label addresses or references to temporaries, e.g:

const int& g2() {
int s1;
int &s2 = s1; // expected-note {{binding reference variable 's2' here}}
return s2; // expected-warning {{reference to stack memory associated with local variable 's1' returned}}
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120483 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
040afaeea2313dc69fd532995ac88cccdd62da56 30-Nov-2010 Douglas Gregor <dgregor@apple.com> Implement basic AST importing and merging support for class template
declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
d7e40f02af203e44a46c95276b3e260bf20cf18f 30-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Add objc_getClass as an objc builtin function
(// rdar://8592641). Also rename LANGUAGEID to
LanguageID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
20fbe7c4772d537c1f779b1ff89cbb57d1d9afff 30-Nov-2010 John McCall <rjmccall@apple.com> L-value to r-value conversion is not ready for prime-time.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
67aba816901503d9cf7ba699525fa62cc7f8e5e4 30-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Such function decls,as objc's objc_msgSend, builtins in
a specific language. We are adding such language info. by
extensing Builtins.def and via a language flag added
to LIBBUILTIN/BUILTIN and check for that when deciding
a name is builtin or not. Implements //rdar://8689273.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120429 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
7e4857931bfe27bb355275bc7ec1eaa44612dfff 30-Nov-2010 John McCall <rjmccall@apple.com> Introduce an r-value to l-value cast kind. I'm not promising anything
about the reliability of this yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
32b5fe77a6db48b0213901c4aaf55deb5ae5ce70 30-Nov-2010 Duncan Sands <baldrick@free.fr> System was renamed Support. Fix the build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120414 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTSerializationListener.h
bbc8175c39f85465475c9f96048d8107848e3e6f 30-Nov-2010 Douglas Gregor <dgregor@apple.com> Add missing file from last commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120397 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTSerializationListener.h
89d9980bbc2e4a4ac86673e6ec16fb9f5babb63b 30-Nov-2010 Douglas Gregor <dgregor@apple.com> When using a precompiled preamble with detailed preprocessing records,
trap the serialized preprocessing records (macro definitions, macro
instantiations, macro definitions) from the generation of the
precompiled preamble, then replay those when walking the list of
preprocessed entities. This eliminates a bug where clang_getCursor()
wasn't able to find preprocessed-entity cursors in the preamble.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120396 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/PreprocessingRecord.h
erialization/ASTReader.h
erialization/ASTWriter.h
414cb64f09ce48a36377458ce5e5a90c3ad41d00 30-Nov-2010 Douglas Gregor <dgregor@apple.com> When loading a precompiled preamble, use the file ID of the
precompiled preamble as the "main" source file's file ID within the
source manager. This makes compiling with a precompiled preamble
produce the same source locations as when compiling without the
precompiled preamble; prior to this change, we ended up with different
file IDs for source locations within the precompiled preamble
vs. those after the precompiled preamble, even for entities (e.g.,
preprocessing entities) in the same file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d976ca4fcacdd965446bcfbe8cb03b4ee67cd827 30-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r120331 since it causes spurious warnings and a possible assertion hit when self-host.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120351 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8b2f01b56209f4bb7331292225c5300753880044 29-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Emit warnings if we are returning a reference to a local temporary.
The issue was brought to our attention by Matthieu Monrocq.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
03013fa9a0bf1ef4b907f5fec006c8f4000fdd21 29-Nov-2010 Michael J. Spencer <bigcheesegs@gmail.com> Merge System into Support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
ST/DeclGroup.h
ST/RecordLayout.h
ST/StmtIterator.h
nalysis/ProgramPoint.h
asic/OnDiskHashTable.h
asic/PartialDiagnostic.h
asic/SourceManager.h
asic/TargetInfo.h
hecker/PathSensitive/SymbolManager.h
river/Driver.h
river/ToolChain.h
rontend/ASTUnit.h
ex/LiteralSupport.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
e4fed47acee9e7ca9c9cfa77c3920eec4639d7d0 28-Nov-2010 Chris Lattner <sabre@nondot.org> tighten up operator= to ensure we don't get multiple owners with the same FD.
wouldn't move ctors be nice? :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
02fe28c8a6da29d4ad88d0900c133dcf22d24a75 26-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Rename CXXObjectRegion to CXXTempObjectRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120176 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
755f6bcfd7ee68b7d51589e9bb259ebbe60add72 26-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> fix a bug introduced in r120173.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120175 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
4fd56816e0925c04f2c92e75399f5c9018d5d6fb 26-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Regionstore: support derived-to-base cast by creating a CXXBaseObjectRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120173 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
f564289d3b117f2d268ca34e1e3b7d98857e1978 25-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> OpaquePtrs are POD-like.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120148 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Ownership.h
e1aeb13251a4858724d2b7ad1925d25076f23d08 25-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add dump method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120141 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
dae0cb52e4e3d46bbfc9a4510909522197a92e54 25-Nov-2010 Anders Carlsson <andersca@mac.com> Move isNearlyEmpty out into the ASTContext so it can be called from CodeGen as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
15441eb11e2f0e6dbaf9252ccfdf00dfe5d9e266 25-Nov-2010 Peter Collingbourne <peter@pcc.me.uk> Basic: add log2{,f,l}, round{,f,l} builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120136 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
2a5f99eb4e2af771faacfceb9f78e230129c5e5a 25-Nov-2010 Nick Lewycky <nicholas@mxc.ca> Tie DefineVTablesUsed() in with recursive function instantiation so that we emit
a useful template instantiation stack. Fixes PR8640.

This also causes a slight change to where the "instantianted from" note shows up
in truly esoteric cases (see the change to test/SemaCXX/destructor.cpp), but
that isn't directly the fault of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120135 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0b9fb2f6b4845bfe5e25b576ae8f2ffa284f9cb1 25-Nov-2010 Anders Carlsson <andersca@mac.com> Remove the PrimaryBaseInfo class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
c9e814ba193f38a7b08268612248f63beb279bb3 25-Nov-2010 Anders Carlsson <andersca@mac.com> Rename RecordLayout::getPrimaryBaseWasVirtual to isPrimaryBaseVirtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
46170f9c7d561d0f94af34a4b5da909d2584370a 24-Nov-2010 Anders Carlsson <andersca@mac.com> Add CXXRecordDecl::getIndirectPrimaryBases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
32303020d0f1a21cbcab65ae0c69a4218dc8f0fb 24-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> When getting CXXThisRegion from CXXMethodDecl, use the qualifiers. This is
to be consistent with the type of 'this' expr in the method.
此行及以下内容将会被忽略--

M test/Analysis/method-call.cpp
M include/clang/Checker/PathSensitive/GRExprEngine.h
M lib/Checker/GRCXXExprEngine.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120094 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
d706434b0231c76fd9acf30060646a7aa8f69aef 24-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Let StackFrameContext represent if the call expr is evaluated as lvalue.
This is required for supporting const reference to temporary objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120093 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRExprEngine.h
f35142413974e9dfe2c5f202084db4bd1c2073e9 24-Nov-2010 John McCall <rjmccall@apple.com> Add -cc1 -ast-dump-xml, an excessively detailed XML dump of the internals
of the ASTs. Only available in assertions builds. No stability guarantee.

This is intended solely as a debugging tool. I'm not sure if the goals
are sufficiently aligned with the XML printer to allow a common
implementation.

Currently just falls back on the StmtDumper to display statements,
which means it doesn't produce valid XML in those cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
19b78d9e3dbbc27bbcbdd8c3017a00fe88849ecd 24-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Use StackFrameContext directly in CallEnter program point. Then we don't need
to remake the stackframe everytime in GRExprEngine::ProcessCallEnter().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120087 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
7eb0a9eb0cde8444b97f9c5b713d9be7a6f1e607 24-Nov-2010 John McCall <rjmccall@apple.com> Switch a lot of call-sites over to using the new value-kind calculations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120084 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
834f9de3d3d76986d09f41725a70ba45a3e2aecd 24-Nov-2010 Zhanyong Wan <wan@google.com> Improve comments in Clang static analyzer, based on kremenek's
explanation on how things work there. Reviewed by kremenek.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120081 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/Store.h
0d4739abf60372abdbafabd8ed59acc5d01729b5 24-Nov-2010 Francois Pichet <pichet2000@gmail.com> Fix 2 problems with Chris Lattner's FileManager redesign on Windows.

- FileEntry::operator= is needed on Win32.
- There was an error in the S_ISDIR() macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120079 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
3baf672378f105602d2b12f03f00277ae1936fe9 24-Nov-2010 Ted Kremenek <kremenek@apple.com> Adjust method calls to reflect name changes in
ImmutableSet/ImmtuableMap/ImmutableList APIs.

Along the way, clean up some method names in
the static analyzer so that they are more
descriptive and/or start with lowercase letters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120071 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRStateTrait.h
5cc1c738b0c51af55cbfe7672c284c19f8e30eb2 23-Nov-2010 Chris Lattner <sabre@nondot.org> The final result of all this refactoring: instead of doing stat immediately
followed by an open for every source file we open, probe the file system with
'open' and then do an fstat when it succeeds. open+fstat is faster than
stat+open because the kernel only has to perform the string->inode mapping
once. Presumably it gets faster the deeper in your filesystem a lookup
happens.

For -Eonly on cocoa.h, this reduces system time from 0.042s to 0.039s on
my machine, a 7.7% speedup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
898a061f69e1145bf89a987c08203132b9922a3c 23-Nov-2010 Chris Lattner <sabre@nondot.org> change the 'is directory' indicator to be a null-or-not
pointer that is passed down through the APIs, and make
FileSystemStatCache::get be the one that filters out
directory lookups that hit files. This also paves the
way to have stat queries be able to return opened files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/FileSystemStatCache.h
f9f7766846a205bc900b578f944567e679b221aa 23-Nov-2010 Chris Lattner <sabre@nondot.org> pull "is directory" handling into FileManager::getStatValue
which simplifies clients and is important for future directions.
Add a FD member to FileEntry which isn't used but will be shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
dfa1edbebeda7ec3a7a9c45e4317de9241aa9883 23-Nov-2010 John McCall <rjmccall@apple.com> A few tweaks to the value-kind computation:
- Default argument expressions pick up the value kind of the incoming
expression, not the value kind of the parameter it initializes.
- When building a template argument for substitution, A::x is an rvalue
if x is an instance method.
- Anonymous struct/union paths pick up value kind the same way that
normal member accesses do; extract out a common code path for this.

Enable the value-kind assertion, now that it passes self-host.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d6f611198089b78e32d3a15fe8bc986204aee1aa 23-Nov-2010 Chris Lattner <sabre@nondot.org> simplify the cache miss handling code, eliminating CacheMissing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileSystemStatCache.h
11aa4b03b054cb9d3c201bba5632241145865e29 23-Nov-2010 Chris Lattner <sabre@nondot.org> factor the "cache miss" handling code out of FM into a static
method in FileSystemStatCache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120037 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileSystemStatCache.h
74e976ba4b0d407bb798ea26476f618e256fc8c7 23-Nov-2010 Chris Lattner <sabre@nondot.org> PCH files only cache successful stats. Remove the code that reads/writes
the result code of the stat to/from the PCH file since it is always 0.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120031 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileSystemStatCache.h
10e286aa8d39fb51a21412850265d9dae74613ee 23-Nov-2010 Chris Lattner <sabre@nondot.org> rework the stat cache, pulling it out of FileManager.h into
its own header and giving it some more structure. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120030 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/FileSystemStatCache.h
ex/PTHManager.h
75dfb65c38d51772df9a00ce2d2feeefd55667ad 23-Nov-2010 Chris Lattner <sabre@nondot.org> tidy up. Split FileManager::getBufferForFile into
two copies, since they are fundamentally different
operations and the StringRef one should go away
(it shouldn't be part of FileManager at least).

Remove some dead arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/ASTUnit.h
681c74afe6a81161aa13291c6c114e5240b23865 23-Nov-2010 Chris Lattner <sabre@nondot.org> don't allow remapping PTH file paths with -fworking-directory, the
client should just pass in absolute paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120012 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
39b49bcaaddb1049234fca9500c0ac02c088e23d 23-Nov-2010 Chris Lattner <sabre@nondot.org> now the FileManager has a FileSystemOpts ivar, stop threading
FileSystemOpts through a ton of apis, simplifying a lot of code.
This also fixes a latent bug in ASTUnit where it would invoke
methods on FileManager without creating one in some code paths
in cindextext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120010 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/FileManager.h
asic/SourceManager.h
rontend/CompilerInstance.h
rontend/Utils.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/PTHManager.h
ex/Preprocessor.h
erialization/ASTReader.h
458b5e25052a1052eb873f9145298e0f0aa75cd1 23-Nov-2010 Chris Lattner <sabre@nondot.org> make this file be self contained.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120008 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileSystemOptions.h
7ad97ffa631af6ad678c79b38341ac995f347ce9 23-Nov-2010 Chris Lattner <sabre@nondot.org> give FileManager a 'FileSystemOptions' ivar, which will be used
to simplify a bunch of code in it. It should ultimately get inlined
into FileManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120007 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
cc7bd10c0de9449b795bda3c5dcc6d83cc48436b 23-Nov-2010 Zhanyong Wan <wan@google.com> Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
151466a18671df9cfd9abd59ba53df35b1d687da 23-Nov-2010 Chris Lattner <sabre@nondot.org> Partially revert Doug's PCH validation patch (r98585).

This patch completely defeated the "passing in a prestat'd size
to MemoryBuffer" optimization, leading to an extra fstat call for
every buffer opened, in order to find out if the datestamp and size
of the file on disk matches what is in the stat cache.

I fully admit that I don't completely understand what is going on here:
why punish code when a stat cache isn't in use? what is the point of a
stat cache if you have to turn around and stat stuff to validate it?

To resolve both these issues, just drop the modtime check and check the
file size, which is the important thing anyway. This should also resolve
PR6812, because presumably windows is stable when it comes to file sizes.
If the modtime is actually important, we should get it and keep it on the
first stat.

This eliminates 833 fstat syscalls when processing Cocoa.h, speeding up
system time on -Eonly Cocoa.h from 0.041 to 0.038s.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120001 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/ASTUnit.h
8e161ed8e63bd9d3783a987d837b72b2b96c4512 23-Nov-2010 Francois Pichet <pichet2000@gmail.com> Microsoft C anonymous struct implementation.
Documentation: http://msdn.microsoft.com/en-us/library/z2cx9y4f.aspx

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120000 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
67452f51aec1ad8a3e4c6622c0c57c5d8dc1b6a3 23-Nov-2010 Chris Lattner <sabre@nondot.org> stringref'ize API


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
d98114647e16796a976b04af79975b4f0eacf22b 21-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix a bunch of IndirectFieldDecl-related warnings.

- Negative ChainingSize doesn't make sense, make it unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6538227d51df249b07c8ab80ae376f5c1d14403c 21-Nov-2010 Chris Lattner <sabre@nondot.org> remove old compatibility APIs, use StringRef versions instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119935 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
f69a1f319bd3c846c4a9ab84ea615e4e37dfd359 21-Nov-2010 Chris Lattner <sabre@nondot.org> change the various getFile routines to use StringRef as their implementation form.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
d18857d1ae40a661f5b92d7a7a46ba81e94d4a35 21-Nov-2010 Francois Pichet <pichet2000@gmail.com> Compilation error: remove extra comma.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119921 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
87c2e121cf0522fc266efe2922b58091cd2e0182 21-Nov-2010 Francois Pichet <pichet2000@gmail.com> Major anonymous union/struct redesign.
A new AST node is introduced:
def IndirectField : DDecl<Value>;
IndirectFields are injected into the anonymous's parent scope and chain back to
the original field. Name lookup for anonymous entities now result in an
IndirectFieldDecl instead of a FieldDecl.
There is no functionality change, the code generated should be the same.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/RecursiveASTVisitor.h
asic/DeclNodes.td
ema/Sema.h
ema/Template.h
erialization/ASTBitCodes.h
a4c2475961184a4bad6f6f087eeb1038bb784cad 21-Nov-2010 Anders Carlsson <andersca@mac.com> Forward the -fno-elide-constructor argument to clang -cc1. Fixes PR8652.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119915 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b13453bd8a91f331d0910ca95ad52aa41b52f648 20-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Handle CFGAutomaticObjDtor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119897 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
44aa1f397855f130e88e62ffc1029f7f83bb5d2e 20-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r119838 "Don't warn for empty 'if' body if there is a macro that expands to nothing"
and use a better and more general approach, where NullStmt has a flag to indicate whether it was preceded by an empty macro.

Thanks to Abramo Bagnara for the hint!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119887 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ex/Preprocessor.h
ex/Token.h
arse/Parser.h
ema/Sema.h
7663f396651716c82280f8fdcf97ad8e27c1ce5a 20-Nov-2010 Nick Lewycky <nicholas@mxc.ca> A bundle of whitespace changes, separated out from the functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119886 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2aa9267cf193e5eceb9fd24a51b51c031b606fe9 19-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Several PPCallbacks take an SourceLocation + IdentifierInfo, rather
than a Token that holds the same information all in one easy-to-use
package. There's no technical reason to prefer the former -- the
information comes from a Token originally -- and it's clumsier to use,
so I've changed the code to use tokens everywhere.

Approved by clattner


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119845 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
a25b6a4b43e8b9611f7506e5fe1b448833b10a46 19-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't warn for empty 'if' body if there is a macro that expands to nothing, e.g:

if (condition)
CALL(0); // empty macro but don't warn for empty body.

Fixes rdar://8436021.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119838 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ex/Preprocessor.h
arse/Parser.h
ema/Sema.h
46f936e055d763437accd1e5a1bc49e7e5dbc0a3 19-Nov-2010 Douglas Gregor <dgregor@apple.com> When parsing something that looks like an ill-formed
protocol-qualifier list without a leading type (e.g., <#blah#>), don't
complain about it being an archaic protocol-qualifier list unless it
actually parses as one.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119805 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
aa5f135f8db82b5e5fb1640fd51f8078e0b2d82d 19-Nov-2010 Douglas Gregor <dgregor@apple.com> Extend the libclang diagnostic API to provide information about the
option name, category ID, and category name corresponding to a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3ffe6293123b8fe59bd9d6ed8e3ec755d68e7fac 19-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove Diagnostic's get/setNumErrors() and getNumErrorsSuppressed().

Anyone wanting to use it should probably use DiagnosticClient's getNumErrors() instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
8fc32d272bd57b0a59f61c874cb7b56d9005e89e 19-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactoring. Get FunctionScopeInfo to use DiagnosticErrorTrap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119764 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
9c4eb1f3438370355f51dc8c62f2ca4803e3338d 19-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactoring.
Move ErrorTrap from clang/Sema to clang/Basic as DiagnosticErrorTrap and use it in Scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119763 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ema/Scope.h
ema/Sema.h
bce8d4b0abc22c59d8a5d1537df22b0d13f25db8 18-Nov-2010 Bob Wilson <bob.wilson@apple.com> Use a signed vector type for the shift amount operand of unsigned shifts.
Neon shifts allow a mix of positive and negative shift amounts to shift
left or right, respectively, so the shift amount vector should always be
signed. PR8482 (Radar 8603521).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
ab41b97c3cddf1bcdd8bf82ab09ed3ceafcd05b1 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the hack where, to get the return status, we had special case for VerifyDiagnosticsClient
and just check the number of errors from the DiagnosticClient.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/VerifyDiagnosticsClient.h
f2224d89a6ae65a3839529e26d0f6d025d83d6bb 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Since multiple diagnostics can share one diagnostic client, have the client keeping track
of the total number of warnings/errors reported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119731 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
33e4e70c8c0a17e0ccb7465d96556b077a68ecb1 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactoring of Diagnostic class.

-Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class.
-DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units.
-The rest of the state in Diagnostic object is considered related and tied to one translation unit.
-Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a
SourceLocation instead of a FullSourceLoc.
-Reflect the changes to various interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/Diagnostic.h
asic/DiagnosticIDs.h
asic/SourceManager.h
ex/Preprocessor.h
ewrite/FixItRewriter.h
9313aac61d425f14fa0b82c3dfe1eb2c3626d38c 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Copy the LangOptions in PrintingPolicy to avoid pointing to a LangOptions that is long gone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
0943168ac126b8047f30f6bd215fbe7db14d61ba 18-Nov-2010 John McCall <rjmccall@apple.com> Add an assertion, fix a whole bunch of bugs, comment the assertion
out because there are still bugs left.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119722 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ema/Sema.h
45ab4b5f8961dadcef6545ed6956da5daf95c6cb 18-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> In some situations, TemplateArgumentLoc wasn't setting TypeSourceLoc (see
http://llvm.org/bugs/show_bug.cgi?id=8558). This patch fixes it. Thanks to
rjmccall for all the coaching!

Approved by rjmccall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119697 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ema/Sema.h
f89e55ab1bfb3ea997f8b02997c611a02254eb2d 18-Nov-2010 John McCall <rjmccall@apple.com> Calculate the value kind of an expression when it's created and
store it on the expression node. Also store an "object kind",
which distinguishes ordinary "addressed" l-values (like
variable references and pointer dereferences) and bitfield,
@property, and vector-component l-values.

Currently we're not using these for much, but I aim to switch
pretty much everything calculating l-valueness over to them.
For now they shouldn't necessarily be trusted.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
asic/Specifiers.h
ema/Sema.h
6a02b609c2e23b28d24f9db4c8006137c6b55ae4 18-Nov-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added method for handling CXXOperatorCallExpr differently from CallExpr if CXXOperatorCallExpr represents method call.
Also fixed returning ExpolodedNodeSet from VisitCXXMethodCallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119684 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
cdba6595a61a7bd31f504260abf63c900a759d0f 18-Nov-2010 Ted Kremenek <kremenek@apple.com> CursorVisitor: switch remaining expressions over
to the data-recursion algorithm. CursorVisitor
now no longer subclasses StmtVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119596 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1380a147d4578b619c215b23aa79ce17036d3c46 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Rename -Wargument-larger-than -> -Wlarge-by-value-copy
-Improve the diagnostic message
-Add some comments

Suggestions by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119594 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
ema/Sema.h
3532fdd1db8ff6f353f2a5b215cebe3e0e2ff3c2 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce option -Wargument-larger-than[=N] which warns about function definitions if they take by-value
or return by-value any POD that is larger than some threshold (default is 64 bytes).

Implements rdar://8548050.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
ema/Sema.h
fdda17179047ff0b5e28cc777dc89ebc42f083cf 17-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Implement -pie.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119577 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
82c63bfa0c5130e0cf274c1974b6157ebefc04fe 17-Nov-2010 Marcin Swiderski <marcin.sfider@gmail.com> In EvalArguments allow for evaluation of first argument always as a lvalue. Will be used for CXXOperatorCallExpr that represents method call.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119567 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
de2676076ba218b5c09a88ac26dd86cc97a9d02e 17-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Warn if direct accessing synthesized ivar backing the property in
nonofragile-abi2. Fixes //rdar://8673791



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
75fd3f98d1b10fbd5bb996e08873e7c6995ce2f0 17-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put warn_logical_and_in_logical_or warning in new warning group "logical-op-parentheses" member of "parentheses".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119532 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
4ffcb9974c6b7142c4a1483abfcb1f88b6371c45 17-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton for handling various cfg dtors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119491 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
08f92e3a5dead1f1ee656678a7f06e43279d6e50 17-Nov-2010 Chris Lattner <sabre@nondot.org> a metric ton of refactoring later, Sema::getLocationOfStringLiteralByte
no longer depends on Preprocessor, so we can move it out of Sema into
a nice new StringLiteral::getLocationOfByte method that can be used by
any AST client.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119481 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b0607279cb98bbf2bbfe0db170aed39ef91e86a2 17-Nov-2010 Chris Lattner <sabre@nondot.org> move getSpelling from Preprocessor to Lexer, which it is more conceptually related to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119479 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
0833dd0675c25cbb35671c7a2006d511d5c77ce3 17-Nov-2010 Chris Lattner <sabre@nondot.org> propagate preprocessor out of StringLiteralParser. It is now
possible to create one without a preprocessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119476 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
a95880d6513c617bb96634bcc1f16c6bdb80dedc 17-Nov-2010 Chris Lattner <sabre@nondot.org> push the preprocessor out of EncodeUCNEscape



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119475 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7ef5c27eb6e8ebe58b52013246c06753c3613263 17-Nov-2010 Chris Lattner <sabre@nondot.org> move AdvanceToTokenCharacter and getLocForEndOfToken from
Preprocessor to Lexer where they make more sense.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ex/Lexer.h
ex/Preprocessor.h
872a45e91778eb0b706ff57272fe547d4512eb19 17-Nov-2010 Chris Lattner <sabre@nondot.org> add a static version of PP::AdvanceToTokenCharacter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119472 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6c66f07854c1334a1ce9eae1428d61d54182a6e1 17-Nov-2010 Chris Lattner <sabre@nondot.org> push use of Preprocessor out farther.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119471 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
ca1475ea0e76da6b852796610139ed9b49c8d4a6 17-Nov-2010 Chris Lattner <sabre@nondot.org> push use of Preprocessor out of getOffsetOfStringByte


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119470 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
48cf9824fbad42995f4d91d59d08d2620effd683 17-Nov-2010 Chris Lattner <sabre@nondot.org> add a static form of the efficient PP::getSpelling method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119469 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
91f54ce93bec136fb9e18740b895cf1c1339524b 17-Nov-2010 Chris Lattner <sabre@nondot.org> refactor the interface to StringLiteralParser::getOffsetOfStringByte,
pushing the dependency on the preprocessor out a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119468 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
a4ffd85a6684e42f900aad5459e58ad91bb88755 17-Nov-2010 Douglas Gregor <dgregor@apple.com> For an Objective-C @synthesize statement, e.g.,

@synthesize foo = _foo;

keep track of the location of the ivar ("_foo"). Teach libclang to
visit the ivar as a member reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ema/Sema.h
e3c60a7ce9e0f42c7ca2344b33203266aceca1db 17-Nov-2010 Douglas Gregor <dgregor@apple.com> Fix source-range information for Objective-C properties. Previously,
we were just getting a range covering only the property name, which is
certainly not correct (and broke token annotation, among other
things).

Also, teach libclang about the relationship between
@synthesize/@dynamic and @property, so we get property name and
cursor-reference information for @synthesize and @dynamic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119409 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
34c26300b384286c544e0b9fd45e7a3648ac79e3 17-Nov-2010 Dan Gohman <gohman@apple.com> Front-end support for __attribute__((may_alias)). This is not
yet hooked up to anything yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
bee77f75358a5aaf2e2e01ab9cfd37ffc514ed7a 16-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Warn about arg1 && arg2 || arg3, as GCC 4.3+ does. Fixes rdar://8659922

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e19df1839992d54d37624e617f410ac7dda87f07 16-Nov-2010 Anton Yartsev <anton.yartsev@gmail.com> turned pointers into pointers to const in function parameters in all functions/builtins accepting pointers to a const-qualified type according to PIM and "Language Extensions for CBEA"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsPPC.def
4383e18fc3d79fd536c6992432e180a11bcb657d 16-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Emit a specific diagnostic when typedefing C++ bool, mirroring gcc.
Fixes rdar://8365458

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b756fdb0a7d17bff4a8bc1a7c18ecec343b70046 16-Nov-2010 Chandler Carruth <chandlerc@gmail.com> Re-work the handling of implicit 'this' arguments and silly GCC-style attribute
argument indexes. This handles the offsets in a consistent manner for all of
the attributes which I saw working with these concepts. I've also added tests
for the attribute that motivated this: nonnull.

I consolidated the tests for format attributes into one file, and fleshed them
out a bit to trigger more of the warning cases. Also improved the quality of
some of the diagnostics that occur with invalid argument indices.

The only really questionable change here is supporting the implicit this
argument for the ownership attribute. I'm not sure it's really a sensible
concept there, but implemented the logic for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
07d7e7a6b10f798459f350b792713db2fb3e9365 16-Nov-2010 Chandler Carruth <chandlerc@gmail.com> Re-work the handling of implicit 'this' arguments and silly GCC-style attribute
argument indexes. This handles the offsets in a consistent manner for all of
the attributes which I saw working with these concepts. I've also added tests
for the attribute that motivated this: nonnull.

I consolidated the tests for format attributes into one file, and fleshed them
out a bit to trigger more of the warning cases. Also improved the quality of
some of the diagnostics that occur with invalid argument indices.

The only really questionable change here is supporting the implicit this
argument for the ownership attribute. I'm not sure it's really a sensible
concept there, but implemented the logic for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
87f3cbf94b22286fcfdf0df502e9174d5fa781e3 16-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Improve diagnostic for calling non-const method on const object. Fixes rdar://7743000

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119336 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
64ccf2480609f4b5c27b31f6beaa157e6ec4f065 16-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Improve diagnostic for calling non-const method on const object. Fixes rdar://7743000

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119336 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b7afb38c3b7aa5700f76817994066aaa379c2731 16-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Handle member initializer in C++ ctor.
- Add a new Kind of ProgramPoint: PostInitializer.
- Still use GRStmtNodeBuilder. But special handling PostInitializer in
GRStmtNodeBuilder::GenerateAutoTransition().
- Someday we should clean up the interface of GRStmtNodeBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119335 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
nalysis/ProgramPoint.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
9dc84c9455df2a77195147d0210c915dc1775a88 16-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Handle member initializer in C++ ctor.
- Add a new Kind of ProgramPoint: PostInitializer.
- Still use GRStmtNodeBuilder. But special handling PostInitializer in
GRStmtNodeBuilder::GenerateAutoTransition().
- Someday we should clean up the interface of GRStmtNodeBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119335 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
nalysis/ProgramPoint.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
ee970edb9d20980454c749019f46ef9573e26c5c 16-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Have CXXDeleteExpr::getDestroyedType return the actual destroyed type
in more situations. In particular, for code like

template<class T> void Fn() { T* x; delete x; }

getDestroyedType() will now return T rather than T*, as it would
before this change. On the other hand, for code like this:

template<class T> void Fn() { T x; delete x; }

getDestroyedType() will return an empty QualType(), since it doesn't
know what the actual destroyed type would be. Previously, it would
return T.

OKed by rjmccall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119334 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a437ad3ec5b407ede394d74e6f9f463fa3657dbe 16-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Have CXXDeleteExpr::getDestroyedType return the actual destroyed type
in more situations. In particular, for code like

template<class T> void Fn() { T* x; delete x; }

getDestroyedType() will now return T rather than T*, as it would
before this change. On the other hand, for code like this:

template<class T> void Fn() { T x; delete x; }

getDestroyedType() will return an empty QualType(), since it doesn't
know what the actual destroyed type would be. Previously, it would
return T.

OKed by rjmccall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119334 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a4ffbd8c8f55681d39dd2be1efa60b9870f6ae34 16-Nov-2010 John McCall <rjmccall@apple.com> Kill CK_Unknown and flesh out the documentation for the existing CastKinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
e2b768877b77fa4e00171ee6e6443722e0f3d111 16-Nov-2010 John McCall <rjmccall@apple.com> Kill CK_Unknown and flesh out the documentation for the existing CastKinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
24ad73d3f087b316dffa4f2076bd4910b057b99d 16-Nov-2010 John McCall <rjmccall@apple.com> Kill off the remaining places which generate CK_Unknown casts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119326 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1c23e91ef66688d20868b6bab3b5589a119eb603 16-Nov-2010 John McCall <rjmccall@apple.com> Kill off the remaining places which generate CK_Unknown casts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119326 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5599487add6698c95a8d9b53531045805c3c26b6 16-Nov-2010 John McCall <rjmccall@apple.com> Add an ExternalASTSource hook to complete a type on demand.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
916c870442978db40404d51348cdf5524e506faa 16-Nov-2010 John McCall <rjmccall@apple.com> Add an ExternalASTSource hook to complete a type on demand.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
597073dafeab044fd295ea021d341b5f31357c2b 16-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for "neon_vector_type" and "neon_polyvector_type" attributes
to create the special Neon vector types. These are intended to be used in
Clang's version of <arm_neon.h> to define special Neon vector types that will
be mangled according to ARM's ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
4211bb68cff1f310be280f66a59520548ef99d8f 16-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for "neon_vector_type" and "neon_polyvector_type" attributes
to create the special Neon vector types. These are intended to be used in
Clang's version of <arm_neon.h> to define special Neon vector types that will
be mangled according to ARM's ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/AttributeList.h
f8d6c4b289bdf14d7206e8394f9ca1ef589804b0 16-Nov-2010 John McCall <rjmccall@apple.com> Add another case to the whitelist of cast kinds that can convert to bool.
Fixes PR8608.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5082d34e4107a44ac7f07b62f7a6c917e0e6e71e 16-Nov-2010 John McCall <rjmccall@apple.com> Add another case to the whitelist of cast kinds that can convert to bool.
Fixes PR8608.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1ebdd533402ce4e115e3a588754032ced20855a3 16-Nov-2010 John McCall <rjmccall@apple.com> Add a new expression kind, OpaqueValueExpr, which is useful for
certain internal type-checking procedures as well as for representing
certain implicitly-generated operations. Uses to follow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
7cd7d1ad33fdf49eef83942e8855fe20d95aa1b9 16-Nov-2010 John McCall <rjmccall@apple.com> Add a new expression kind, OpaqueValueExpr, which is useful for
certain internal type-checking procedures as well as for representing
certain implicitly-generated operations. Uses to follow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
92e8526fdbca4eeecc924f7ce667d00551098f9e 15-Nov-2010 Ted Kremenek <kremenek@apple.com> Add method ParentMap::addStmt().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119181 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
d6543f8bbac18cdb678a67da2a676c30c2941eca 15-Nov-2010 Ted Kremenek <kremenek@apple.com> Add method ParentMap::addStmt().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119181 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
6b4052d120c3ef414a822b3cff063432a1df3186 15-Nov-2010 John McCall <rjmccall@apple.com> Assorted work leading towards the elimination of CK_Unknown.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ST/Type.h
ema/Sema.h
daa8e4e888758d55a7a759dd4a91b83921cef222 15-Nov-2010 John McCall <rjmccall@apple.com> Assorted work leading towards the elimination of CK_Unknown.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ST/Type.h
ema/Sema.h
e5a28f467bb8d1a92e7368419be21c2f464b8a7b 15-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton for handling other kinds of CFGElements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119135 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
9c6cd67ea416bace666d614c84d5531124287653 15-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton for handling other kinds of CFGElements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119135 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
121b18599331ac542a936764a9966343475afb82 14-Nov-2010 Ted Kremenek <kremenek@apple.com> Revert r119045. It was failing on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1b27ab31526b91b165f153a8ca3928c59e1b13c9 14-Nov-2010 Ted Kremenek <kremenek@apple.com> Revert r119045. It was failing on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
0aa218740d54e8e65c06558a09066c97290ecd19 14-Nov-2010 Ted Kremenek <kremenek@apple.com> Clean up initialization of LangOptions object by splitting part of it into a parent class
'LangOptionsBase' that default initializes all flags to 0. Now the ctor of LangOptions
only initializes the flags that might be non-zero (significantly simplifying things).

This also appeases Valgrind on Mac OS X, which no longer reports that one of the flags
may be uninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
b9ce6567580e950898b8c2834468178e30805a73 14-Nov-2010 Ted Kremenek <kremenek@apple.com> Clean up initialization of LangOptions object by splitting part of it into a parent class
'LangOptionsBase' that default initializes all flags to 0. Now the ctor of LangOptions
only initializes the flags that might be non-zero (significantly simplifying things).

This also appeases Valgrind on Mac OS X, which no longer reports that one of the flags
may be uninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
c948dee3af99fe58d4f94a6727b2a7c9f98434fc 14-Nov-2010 John McCall <rjmccall@apple.com> Add a few more complex-related cast kinds that arise due to arbitrary
implicit conversions; the last batch was specific to promotions.
I think this is the full set we need. I do think dividing the cast
kinds into floating and integral is probably a good idea.

Annotate a *lot* more C casts with useful cast kinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119036 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
f3ea8cfe6b1c2ef0702efe130561e9e66708d799 14-Nov-2010 John McCall <rjmccall@apple.com> Add a few more complex-related cast kinds that arise due to arbitrary
implicit conversions; the last batch was specific to promotions.
I think this is the full set we need. I do think dividing the cast
kinds into floating and integral is probably a good idea.

Annotate a *lot* more C casts with useful cast kinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119036 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
9be0a77e91cbfa4ef6af18680fb81fe9574adab3 13-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> When complaining about ambiguous overload resolution for a unary or
binary operator, provide the types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119008 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ae2cf767de457df939d07c44b162de5fe0b5e607 13-Nov-2010 Douglas Gregor <dgregor@apple.com> When complaining about ambiguous overload resolution for a unary or
binary operator, provide the types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119008 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0bf22e6c0c3413f491ea179db51a45bcf2381391 13-Nov-2010 John McCall <rjmccall@apple.com> Introduce five new cast kinds for various conversions into and
between complex types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ST/Stmt.h
2bb5d00fcf71a7b4d478d478be778fff0494aff6 13-Nov-2010 John McCall <rjmccall@apple.com> Introduce five new cast kinds for various conversions into and
between complex types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
ST/Stmt.h
0e4ca01531c7c2a854c10e8dc47b857125513f67 13-Nov-2010 John McCall <rjmccall@apple.com> Bring UsualArithmeticConversionsType back into Sema and cast the
operands appropriately. There are a lot of missing complex-related
cast kinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cf33b24441798f538fb5ab089edbba2ac3ba819c 13-Nov-2010 John McCall <rjmccall@apple.com> Bring UsualArithmeticConversionsType back into Sema and cast the
operands appropriately. There are a lot of missing complex-related
cast kinds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
001e040b55064721c4decd8d7e1be3b566b2693d 13-Nov-2010 Ted Kremenek <kremenek@apple.com> Add GRWorkList::VisitItemsInWorkList() to allow a client to introspect the contents of a worklist.
This API required changing the BFS worklist to use a deque instead of a queue, but that is better
for performance reasons anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118982 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRWorkList.h
3e47b486f200d2b4cfb069c6f0d20fe5cf189fcd 13-Nov-2010 Ted Kremenek <kremenek@apple.com> Add GRWorkList::VisitItemsInWorkList() to allow a client to introspect the contents of a worklist.
This API required changing the BFS worklist to use a deque instead of a queue, but that is better
for performance reasons anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118982 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRWorkList.h
4f6199189cdc8acb40d76c24122f57672485baec 13-Nov-2010 John McCall <rjmccall@apple.com> Introduce a null-to-pointer implicit cast kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
404cd1669c3ba138a9ae0a619bd689cce5aae271 13-Nov-2010 John McCall <rjmccall@apple.com> Introduce a null-to-pointer implicit cast kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
2fea9955b4496cdcc4356b103236f7b93a261f70 12-Nov-2010 Bob Wilson <bob.wilson@apple.com> Generalize ASTContext::areCompatibleVectorTypes to handle new Neon vector types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f69eb7cf8e616b5aad7911ec6f79b24b0a009227 12-Nov-2010 Bob Wilson <bob.wilson@apple.com> Generalize ASTContext::areCompatibleVectorTypes to handle new Neon vector types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
87fa7564c1e8b7894c1a9f646cb1294c8c2a7f9d 12-Nov-2010 Bob Wilson <bob.wilson@apple.com> Increase VectorTypeBitfields::VecKind field from 2 to 3 bits.
With the addition of 2 enum values for Neon vectors, this field must now
hold 6 different values and so requires 3 bits. Make the NumElements field
one bit smaller to compensate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
cc3b946c35c4372272034e6f0663089477a9a5bd 12-Nov-2010 Bob Wilson <bob.wilson@apple.com> Increase VectorTypeBitfields::VecKind field from 2 to 3 bits.
With the addition of 2 enum values for Neon vectors, this field must now
hold 6 different values and so requires 3 bits. Make the NumElements field
one bit smaller to compensate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1ab6481f698c0995cb294ac1a29d21bfb970c41c 12-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add a separate NeonPolyVector kind to distinguish polynomial vector types.
Add support for mangling those types according to ARM's ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118898 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
491328c90c00ecad6ad27fa0ab3cdf9195a4a820 12-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add a separate NeonPolyVector kind to distinguish polynomial vector types.
Add support for mangling those types according to ARM's ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118898 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b0390a66dec06795d64924b4410753cc97ce0659 12-Nov-2010 John McCall <rjmccall@apple.com> API enhancements to TypeLocBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocBuilder.h
41bafb1b62dfb2577c5aa7ba7fbd6ba5bebdbfee 12-Nov-2010 John McCall <rjmccall@apple.com> API enhancements to TypeLocBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocBuilder.h
70eddbfa09174de7d44b6a5cf7ecd55c4b97bee0 12-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Make sure to always check the result of
SourceManager::getPresumedLoc(), so that we don't try to make use of
an invalid presumed location. Doing so can cause crashes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
cb7b1e17b63967317ab5cc55682168cf0380519a 12-Nov-2010 Douglas Gregor <dgregor@apple.com> Make sure to always check the result of
SourceManager::getPresumedLoc(), so that we don't try to make use of
an invalid presumed location. Doing so can cause crashes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
1aec9552fd13c5a289c41e217e849e29ed2e56b5 12-Nov-2010 Ted Kremenek <kremenek@apple.com> Fix use of an uninitialized SourceLocation because DeclarationNameLoc failed to completely zero-initialize itself.
Now we explicitly memset all of its values.

This bug was uncovered by the 'Index/recursive-cxx-member-calls.cpp', which exhibited an assertion
on an i386 darwin build of clang. Adding this test case back since the assertion is now resolved.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
8f0889ce457db51d3af1eb1245bceee272d4dc7d 12-Nov-2010 Ted Kremenek <kremenek@apple.com> Fix use of an uninitialized SourceLocation because DeclarationNameLoc failed to completely zero-initialize itself.
Now we explicitly memset all of its values.

This bug was uncovered by the 'Index/recursive-cxx-member-calls.cpp', which exhibited an assertion
on an i386 darwin build of clang. Adding this test case back since the assertion is now resolved.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
8afa31096d44da0b862406fbcf6e9ef10fce5c2c 11-Nov-2010 Francois Pichet <pichet2000@gmail.com> Remove some unnecessary reinterpret_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118775 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
606f65665421d594458e1409b4413005fb521c25 11-Nov-2010 Francois Pichet <pichet2000@gmail.com> Remove some unnecessary reinterpret_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118775 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
cf9507fcdc135c2be831d9e6e8a8bb051af763a2 11-Nov-2010 John McCall <rjmccall@apple.com> Extend the bitfield-truncation warning to initializations.
rdar://problem/8652606



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118773 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
15d7d12226f83de24f96f4bf4e27ebba30fef51e 11-Nov-2010 John McCall <rjmccall@apple.com> Extend the bitfield-truncation warning to initializations.
rdar://problem/8652606



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118773 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8b9e7cba1096fe0c447828dd55688e824b3a80ac 11-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Improve ASTUnit's capture of diagnostics so that the
diagnostic-capturing client lives as long as the ASTUnit itself
does. Otherwise, we can end up with crashes when we get a diagnostic
outside of parsing/code completion. The circumstances under which this
happen are really hard to reproduce, because a file needs to change
from under us.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118751 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
e47be3e9682e82da15059006f43c7f3c021e4fff 11-Nov-2010 Douglas Gregor <dgregor@apple.com> Improve ASTUnit's capture of diagnostics so that the
diagnostic-capturing client lives as long as the ASTUnit itself
does. Otherwise, we can end up with crashes when we get a diagnostic
outside of parsing/code completion. The circumstances under which this
happen are really hard to reproduce, because a file needs to change
from under us.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118751 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/CompilerInstance.h
b3e547db227afec80fd921b4dbff66bd91da992f 10-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add a variant of GCC-style vector types for ARM NEON.
NEON vector types need to be mangled in a special way to comply with ARM's ABI,
similar to some of the AltiVec-specific vector types. This patch is mostly
just renaming a bunch of "AltiVecSpecific" things, since they will no longer
be specific to AltiVec. Besides that, it just adds the new "NeonVector" enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
e86d78cf4754a6aef2cf9a33d847aa15338e276f 10-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add a variant of GCC-style vector types for ARM NEON.
NEON vector types need to be mangled in a special way to comply with ARM's ABI,
similar to some of the AltiVec-specific vector types. This patch is mostly
just renaming a bunch of "AltiVecSpecific" things, since they will no longer
be specific to AltiVec. Besides that, it just adds the new "NeonVector" enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
5e2891651c53c2a313b7d6f6321c405ed5a7d1e3 10-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Instantiate class member template partial specialization declarations
in the order they occur within the class template, delaying
out-of-line member template partial specializations until after the
class has been fully instantiated. This fixes a regression introduced
by r118454 (itself a fix for PR8001).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118704 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
d65587f7a6d38965fa37158d3f57990a7faf3836 10-Nov-2010 Douglas Gregor <dgregor@apple.com> Instantiate class member template partial specialization declarations
in the order they occur within the class template, delaying
out-of-line member template partial specializations until after the
class has been fully instantiated. This fixes a regression introduced
by r118454 (itself a fix for PR8001).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118704 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Template.h
34dd352b2835602dafce70491f02c66a40fefb06 10-Nov-2010 Ted Kremenek <kremenek@apple.com> Region-allocate all AttributeList objects from a factory object instead of manually managing them
using new/delete and OwningPtrs. After memory profiling Clang, I witnessed periodic leaks of these
objects; digging deeper into the code, it was clear that our management of these objects was a mess. The ownership rules were murky at best, and not always followed. Worse, there are plenty of error paths where we could screw up.

This patch introduces AttributeList::Factory, which is a factory class that creates AttributeList
objects and then blows them away all at once. While conceptually simple, most of the changes in
this patch just have to do with migrating over to the new interface. Most of the changes have resulted in some nice simplifications.

This new strategy currently holds on to all AttributeList objects during the lifetime of the Parser
object. This is easily tunable. If we desire to have more bound the lifetime of AttributeList
objects more precisely, we can have the AttributeList::Factory object (in Parser) push/pop its
underlying allocator as we enter/leave key methods in the Parser. This means that we get
simple memory management while still having the ability to finely control memory use if necessary.

Note that because AttributeList objects are now BumpPtrAllocated, we may reduce malloc() traffic
in many large files with attributes.

This fixes the leak reported in: <rdar://problem/8650003>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118675 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/AttributeList.h
ema/DeclSpec.h
8113ecfa4e41e2c888b1794389dfe3bce6386493 10-Nov-2010 Ted Kremenek <kremenek@apple.com> Region-allocate all AttributeList objects from a factory object instead of manually managing them
using new/delete and OwningPtrs. After memory profiling Clang, I witnessed periodic leaks of these
objects; digging deeper into the code, it was clear that our management of these objects was a mess. The ownership rules were murky at best, and not always followed. Worse, there are plenty of error paths where we could screw up.

This patch introduces AttributeList::Factory, which is a factory class that creates AttributeList
objects and then blows them away all at once. While conceptually simple, most of the changes in
this patch just have to do with migrating over to the new interface. Most of the changes have resulted in some nice simplifications.

This new strategy currently holds on to all AttributeList objects during the lifetime of the Parser
object. This is easily tunable. If we desire to have more bound the lifetime of AttributeList
objects more precisely, we can have the AttributeList::Factory object (in Parser) push/pop its
underlying allocator as we enter/leave key methods in the Parser. This means that we get
simple memory management while still having the ability to finely control memory use if necessary.

Note that because AttributeList objects are now BumpPtrAllocated, we may reduce malloc() traffic
in many large files with attributes.

This fixes the leak reported in: <rdar://problem/8650003>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118675 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/AttributeList.h
ema/DeclSpec.h
929f496b833d84f048809a496cd3449401047628 10-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Replace UsingDecl's SmallPtrSet of UsingShadowDecls with a linked list to avoid leaking memory.
Fixes rdar://8649963.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
826faa22bae112e01293a58534a40711043cce65 10-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Replace UsingDecl's SmallPtrSet of UsingShadowDecls with a linked list to avoid leaking memory.
Fixes rdar://8649963.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a84a8537fe56300cc3b9a9edb2244518c587cab0 10-Nov-2010 John McCall <rjmccall@apple.com> Diagnose attempst to template using declarations and using directives.
Recover from the latter and fail early for the former. Fixes PR8022.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/ParsedTemplate.h
78b810559d89e996e00684335407443936ce34a1 10-Nov-2010 John McCall <rjmccall@apple.com> Diagnose attempst to template using declarations and using directives.
Recover from the latter and fail early for the former. Fixes PR8022.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/ParsedTemplate.h
7d12dec762127522e05edded420b88079e6da6d3 10-Nov-2010 John McCall <rjmccall@apple.com> Add a warning for implicit truncation of constant values due to
bitfield assignment.

Implements rdar://problem/7809123



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
beb22aaa22e255241d6a81e8b0a9239f5fa584f3 10-Nov-2010 John McCall <rjmccall@apple.com> Add a warning for implicit truncation of constant values due to
bitfield assignment.

Implements rdar://problem/7809123



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8f015ffc4e7f0af60ed699737565beae79599b43 09-Nov-2010 John McCall <rjmccall@apple.com> Split out -Wconversion warnings about constant precision into their
own subcategory, -Wconstant-conversion, which is on by default.

Tweak the constant folder to give better results in the invalid
case of a negative shift amount.

Implements rdar://problem/6792488



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118636 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
091f23f1d6d4bcffd6641cda72a6831e08c02ea7 09-Nov-2010 John McCall <rjmccall@apple.com> Split out -Wconversion warnings about constant precision into their
own subcategory, -Wconstant-conversion, which is on by default.

Tweak the constant folder to give better results in the invalid
case of a negative shift amount.

Implements rdar://problem/6792488



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118636 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
28a226b02fd749c9b6d6cf43aac0e32c7c7da449 09-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Restore patch reversed in r118475. Fixes
// rdar://8632525


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ba8bda05fefd3bb2f1ef201784b685f715bdde29 09-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Restore patch reversed in r118475. Fixes
// rdar://8632525


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d22d23d26ea72e9f68804cce92133ce3a4e61adc 09-Nov-2010 Charles Davis <cdavis@mines.edu> Use the right calling convention when mangling names in the Microsoft C++
mangler. Now member functions and pointers thereof have their calling
convention mangled as __thiscall if they have the default CC (even though,
they technically still have the __cdecl CC).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ee743f903858e337434ac0335f147f4de4ecae05 09-Nov-2010 Charles Davis <cdavis@mines.edu> Use the right calling convention when mangling names in the Microsoft C++
mangler. Now member functions and pointers thereof have their calling
convention mangled as __thiscall if they have the default CC (even though,
they technically still have the __cdecl CC).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a7bdfdd3b9d77383ec221dd48a169d088f88e81c 09-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Include System/DataTypes.h in Diagnostic.h to get intptr_t.
Set Haiku's UserLabelPrefix to "".
Patch by Paul Davey.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118510 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
19ddda83f9c3a7f1029740047b06035bda5fbb81 09-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Include System/DataTypes.h in Diagnostic.h to get intptr_t.
Set Haiku's UserLabelPrefix to "".
Patch by Paul Davey.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118510 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
f6a1611ca5f04de4116a2ecae3e2c3cd451c4cb7 09-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Add __nullptr as a C++0x nullptr literal, available in C++98

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
b2d57ae3086bb87216c76f89400f5935c3b47f86 09-Nov-2010 Douglas Gregor <dgregor@apple.com> Add __nullptr as a C++0x nullptr literal, available in C++98

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
81d3ee953415297592892daee8ad1381706875d8 09-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Reverse patch for // rdar://8632525. It might
has broken a build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118475 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c8c62c4075688b206dc9ac2c5b24a362018b718b 09-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Reverse patch for // rdar://8632525. It might
has broken a build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118475 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
012a8e0d85b51fa90c3d2efba7fc6f2a197a132d 09-Nov-2010 Ted Kremenek <kremenek@apple.com> Fix InitListExpr::getSourceRange() to work in the case of no locations for '(' and ')'. This can happen
in the case of transparent unions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118472 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c4ba51f365a3cd3374b3ef87272a9b3e517cd5d3 09-Nov-2010 Ted Kremenek <kremenek@apple.com> Fix InitListExpr::getSourceRange() to work in the case of no locations for '(' and ')'. This can happen
in the case of transparent unions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118472 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ec49003352e31056fd5edabc9bad0b18d20029a5 08-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Provide a precise builtin declaration for objc_msgSend
to avoid a bogus warning. Fixes //rdar: //8632525


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118451 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ed171b80e49c1ef3dcb9c2aa238cc50340ac6e90 08-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Provide a precise builtin declaration for objc_msgSend
to avoid a bogus warning. Fixes //rdar: //8632525


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118451 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
f640c64c62d3883121b8da0502ce75aecc6ba524 08-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> 1) Fix a typo in PPCallbacks: It's elif, not elfif. :-) This is
contentful, since the typo was in the method-name...

2) Clarify some comments in RecursiveASTVisitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118448 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ex/PPCallbacks.h
b5b38adbe29cd82711595bd184d6123125bd9a9b 08-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> 1) Fix a typo in PPCallbacks: It's elif, not elfif. :-) This is
contentful, since the typo was in the method-name...

2) Clarify some comments in RecursiveASTVisitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118448 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ex/PPCallbacks.h
49faccdf4e9532c5c1e80581aab8ee622cf26a07 08-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Improve our handling of C++ [class.copy]p3, which specifies that a
constructor template will not be used to copy a class object to a
value of its own type. We were eliminating all constructor templates
whose specializations look like a copy constructor, which eliminated
important candidates. Fixes PR8182.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6493cc50b66c2d097b3e22514bbe303048c4a8ff 08-Nov-2010 Douglas Gregor <dgregor@apple.com> Improve our handling of C++ [class.copy]p3, which specifies that a
constructor template will not be used to copy a class object to a
value of its own type. We were eliminating all constructor templates
whose specializations look like a copy constructor, which eliminated
important candidates. Fixes PR8182.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5754a0ff32686682ab664ffdc5dcc6074086c1aa 08-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Properly diagnose invalid casts to function references. Patch by
Faisal Vali, tweaked by me. Fixes PR8230.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118400 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8e960435696b4ccf6a8ad0ed0530e3280b77af8b 08-Nov-2010 Douglas Gregor <dgregor@apple.com> Properly diagnose invalid casts to function references. Patch by
Faisal Vali, tweaked by me. Fixes PR8230.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118400 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
99cb76d06906fd6c126da9c22f7af15c8658457b 08-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Remove broken support for variadic templates, along with the various
abstractions (e.g., TemplateArgumentListBuilder) that were designed to
support variadic templates. Only a few remnants of variadic templates
remain, in the parser (parsing template type parameter packs), AST
(template type parameter pack bits and TemplateArgument::Pack), and
Sema; these are expected to be used in a future implementation of
variadic templates.

But don't get too excited about that happening now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/Template.h
910f8008fea79120489a53593fe971b0b8a4a740 08-Nov-2010 Douglas Gregor <dgregor@apple.com> Remove broken support for variadic templates, along with the various
abstractions (e.g., TemplateArgumentListBuilder) that were designed to
support variadic templates. Only a few remnants of variadic templates
remain, in the parser (parsing template type parameter packs), AST
(template type parameter pack bits and TemplateArgument::Pack), and
Sema; these are expected to be used in a future implementation of
variadic templates.

But don't get too excited about that happening now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
ema/Template.h
26afabc95023782c267a8ba59e29efc666bec3c7 07-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for -rdynamic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118384 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
dc1b76ddfc687c713a55cc9e3e054e9a0de1aa74 07-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for -rdynamic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118384 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
4857d6c6b44999ee9951a649c2a021b605f798c4 07-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Use ld directly on linux. Changes from the previous try:
*) Try to detect as much as possible from the system itself, not the distro.
This should make it easier to port to a new distro and more likely to
work on a unknown one.
*) The distro enum now doesn't include the arch. Just use the existing
host detection support in LLVM.
*) Correctly handle --sysroot.

A small regression is that now clang will pass bitcode file to the linker.
This is necessary for the gold plugin support to work.

It might be better to detect this at configure/cmake time, but doing it in
c++ first is a lot easier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118382 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c1da981bba867681004004b2d54ec2fdf3c08913 07-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Use ld directly on linux. Changes from the previous try:
*) Try to detect as much as possible from the system itself, not the distro.
This should make it easier to port to a new distro and more likely to
work on a unknown one.
*) The distro enum now doesn't include the arch. Just use the existing
host detection support in LLVM.
*) Correctly handle --sysroot.

A small regression is that now clang will pass bitcode file to the linker.
This is necessary for the gold plugin support to work.

It might be better to detect this at configure/cmake time, but doing it in
c++ first is a lot easier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118382 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
dcdac090356c2408cae49942db7e71bf97149bca 07-Nov-2010 Anders Carlsson <andersca@mac.com> A union cannot contain static data members or data members of reference type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118381 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
dfdfc584f2a8d9f1eebd6e6eaa9b1bbff519d8f9 07-Nov-2010 Anders Carlsson <andersca@mac.com> A union cannot contain static data members or data members of reference type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118381 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
799cb2237c0fa5c7627d333d8eca8ff0c02e9c0d 06-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118345 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
bdacf3c64867a132917386ac1c8df77e617d41fc 06-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118345 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
f44cc6d7d3cf92c195a4fa306b22042d66530395 06-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix a bug where we were recursing on friend decls for friend
functions, but not for friend types.

Reviewed by wan


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
bb6afcb7f5f9c2e9121a548726d6d03283cb52bc 06-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix a bug where we were recursing on friend decls for friend
functions, but not for friend types.

Reviewed by wan


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
1b542fb4ebf416727dd699351e8e5a040fbd8286 06-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Add PPCallbacks for #if/#ifdef/etc.

The callback info for #if/#elif is not great -- ideally it would give
us a list of tokens in the #if, or even better, a little parse tree.
But that's a lot more work. Instead, clients can retokenize using
Lexer::LexFromRawLexer().

Reviewed by nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118318 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
08985b91e5a87e7731ba24c675f2dc9f9cb645d4 06-Nov-2010 Craig Silverstein <csilvers2000@yahoo.com> Add PPCallbacks for #if/#ifdef/etc.

The callback info for #if/#elif is not great -- ideally it would give
us a list of tokens in the #if, or even better, a little parse tree.
But that's a lot more work. Instead, clients can retokenize using
Lexer::LexFromRawLexer().

Reviewed by nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118318 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
db58b96bf23e4be2fd194fe1d4576df68b92b86d 05-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write from/to PCH the diagnostic mappings that the user set so that e.g. #pragma clang diagnostic can be used in a PCH.
Fixes rdar://8435969.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
f41d3be39980d40849850d3fb90403623cc8459e 05-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write from/to PCH the diagnostic mappings that the user set so that e.g. #pragma clang diagnostic can be used in a PCH.
Fixes rdar://8435969.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
1a698fc2dbd5988d1d143ce54e2b4a22532cad39 05-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Initialize the array with the "C++ way".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2e57494445747c911f48b853015b784e292fefe4 05-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Initialize the array with the "C++ way".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6dbcbbcfcdcc44c8f7641dc788d2523cf1a09b5b 03-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Implement -working-directory.

When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.

--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
file operations will be abstracted in the future for the reproduction mechanism.

FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.

Addresses rdar://8583824.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/FileManager.h
asic/FileSystemOptions.h
asic/SourceManager.h
river/CC1Options.td
river/Options.td
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/Utils.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/PTHManager.h
ex/Preprocessor.h
erialization/ASTReader.h
389db16c63eec6ecfa9b235155252d8da766e94e 03-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -working-directory.

When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.

--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
file operations will be abstracted in the future for the reproduction mechanism.

FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.

Addresses rdar://8583824.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/FileManager.h
asic/FileSystemOptions.h
asic/SourceManager.h
river/CC1Options.td
river/Options.td
rontend/ASTUnit.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/Utils.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/PTHManager.h
ex/Preprocessor.h
erialization/ASTReader.h
1ecda74bf22dbfbdf7c7c62b9b13c9011464d11a 03-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118202 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
f1410802d1c9e7ff72b2818ad91fd85283abc6bf 03-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118202 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
c844b586a2dc182b3012400216bdae6cdcc07a3b 03-Nov-2010 Nick Lewycky <nicholas@mxc.ca> Make this error less specific but also less likely to cause confusion. Fixes
PR7702.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9fa8e569407e02148888136609431a3fe083096d 03-Nov-2010 Nick Lewycky <nicholas@mxc.ca> Make this error less specific but also less likely to cause confusion. Fixes
PR7702.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e762d6951d6f6fd21f38acdb47c83b8cfe67ef70 03-Nov-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added generating destructors for temporary objects. Two cases I know of, that are not handled properly:
1. For statement: const C& c = C(0) ?: C(1) destructors generated for condition will not differ from those generated for case without prolonged lifetime of temporary,
2. There will be no destructor for constant reference member bound to temporary at the exit from constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118158 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
8599e7677e067fd01d3b2ee4c0875747d367fd8e 03-Nov-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added generating destructors for temporary objects. Two cases I know of, that are not handled properly:
1. For statement: const C& c = C(0) ?: C(1) destructors generated for condition will not differ from those generated for case without prolonged lifetime of temporary,
2. There will be no destructor for constant reference member bound to temporary at the exit from constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118158 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
eccf1109ec2ebd80d3a2f8b89749f3302ed4de71 03-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert while I debug test failures :-(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118150 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
138e66ffa8008b95121580f5459af45487df9803 03-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert while I debug test failures :-(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118150 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b3cca134f96969a4325fb633c26fa328b69530f2 03-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Switch clang to run ld directly on linux. I tested this on all the linux
distros listed by running

gcc main.o -o main
g++ main.o -o main
gcc main.o -o main -static
g++ main.o -o main -static
gcc f.o -o f.so -shared
g++ f.o -o f.so -shared

and comparing the ld line with the one created by clang. I also added
-m32/m64 in distros that support it.

While I tested many distros, there will always be more. If you are hit by this
it should be somewhat easy to add your distro. If you are in a hurry, do
revert this, but please inform how to detect you distro and the ld command
lines produced by the above gcc invocations. Most distros have some patches
on gcc :-(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118149 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
29a88f441fb9d82cfa898774cf6711e54bcba2ff 03-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Switch clang to run ld directly on linux. I tested this on all the linux
distros listed by running

gcc main.o -o main
g++ main.o -o main
gcc main.o -o main -static
g++ main.o -o main -static
gcc f.o -o f.so -shared
g++ f.o -o f.so -shared

and comparing the ld line with the one created by clang. I also added
-m32/m64 in distros that support it.

While I tested many distros, there will always be more. If you are hit by this
it should be somewhat easy to add your distro. If you are in a hurry, do
revert this, but please inform how to detect you distro and the ld command
lines produced by the above gcc invocations. Most distros have some patches
on gcc :-(

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118149 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
098bd2b151e9d566b66af2b069e006e41338716d 03-Nov-2010 Sean Hunt <rideau3@gmail.com> Provide an error when a non-identifier name (such as an operator) is used as a
parameter name.

Fixes PR8012.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7533a5b65f81a4eed1e0f0afeb859e26bc0c056b 03-Nov-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Provide an error when a non-identifier name (such as an operator) is used as a
parameter name.

Fixes PR8012.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4d14fa6708bd93e3c177cddd267fc440a85d2aeb 02-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes an assertion violation when bind to temporary
expression is a dependent expression.
// rdar: // 8620524 and PR7851


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118066 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
b8e39236f05b2f71fb2632673948499fd54e2a34 02-Nov-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes an assertion violation when bind to temporary
expression is a dependent expression.
// rdar: // 8620524 and PR7851


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118066 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
42d2b2fd1ce4d109872b86213dbe45192f62c1bc 02-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Teach code completion to provide property results when the property
can be used to automatically synthesize an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118052 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ca45da0c6da20d9c0c903370f99af5e9a186e0da 02-Nov-2010 Douglas Gregor <dgregor@apple.com> Teach code completion to provide property results when the property
can be used to automatically synthesize an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118052 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
35bed2aa27b645a1a39efeff3256c4c4148c73dd 02-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Properly handle temporaries that are created in a AsmStmt.

Previously the temporaries would get destroyed before the asm call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118001 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
bf8cafadb9d4e0d7a90fe78fc175efb80ae34d42 02-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Properly handle temporaries that are created in a AsmStmt.

Previously the temporaries would get destroyed before the asm call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118001 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
908200b4754e1544a13c602c412e66ce32d74635 01-Nov-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Emit error when using a bound member function for something other than calling it.

Also avoids IRGen crashes due to accepting invalid code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
11ab79030938209f50691acae0ddb65e72a58ca9 01-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Emit error when using a bound member function for something other than calling it.

Also avoids IRGen crashes due to accepting invalid code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
d1f3fdb1fbed5e91c55cea66ec7c4edd9b805fdc 01-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Require that the types of the parameters of a block literal are complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117942 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
82aa713bcda99f388836c2a30bb868d9c9974817 01-Nov-2010 Douglas Gregor <dgregor@apple.com> Require that the types of the parameters of a block literal are complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117942 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
651b3b119eebb05415f83678e32dc782e11146f6 01-Nov-2010 Douglas Gregor <doug.gregor@gmail.com> Plug a leak in the preprocessing record's handling of inclusion
directives. We had a std::string in an object that was allocated via a
BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117912 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
4ab829c2a229dc20ecb9f35e7337bbfa95bf4026 01-Nov-2010 Douglas Gregor <dgregor@apple.com> Plug a leak in the preprocessing record's handling of inclusion
directives. We had a std::string in an object that was allocated via a
BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117912 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
a217be5986b12cf3a923cb1a3cc9269682e9dee8 01-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Now initializer of C++ record type is visited as block-level expr.
Let the destination of AggExprVisitor be an explicit MemRegion.
Reenable the test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117908 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
7ce351db56fbce162a3b650518ce05b5c61ebf36 01-Nov-2010 Zhongxing Xu <xuzhongxing@gmail.com> Now initializer of C++ record type is visited as block-level expr.
Let the destination of AggExprVisitor be an explicit MemRegion.
Reenable the test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117908 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
aa82a0ca2a1b5376ba2301990e284249e6b57dd7 01-Nov-2010 Anders Carlsson <andersca@mac.com> Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
a14f5979572aa25c03d24750ee4724d2031d4ede 01-Nov-2010 Anders Carlsson <andersca@mac.com> Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
fc502c1b203e67b1f9a9e364425b6dc89a0a49e9 31-Oct-2010 Anders Carlsson <andersca@mac.com> EmptyObjectMap now uses CharUnits wherever possible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
a3d4380d6662a373bc78f915947e5bc06e985e91 31-Oct-2010 Anders Carlsson <andersca@mac.com> EmptyObjectMap now uses CharUnits wherever possible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
70d7531c1bcf9740dc2a19dd722eae3860ad5fcc 31-Oct-2010 Anders Carlsson <andersca@mac.com> Add a DenseMapInfo specializaiton for CharUnits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
94ac122610ec875760c4b41e7376b79223a0de20 31-Oct-2010 Anders Carlsson <andersca@mac.com> Add a DenseMapInfo specializaiton for CharUnits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
f643e555af0aca6ee353bb39e39a92860ea4155c 31-Oct-2010 Nick Lewycky <nicholas@mxc.ca> Fix typo spotted by Nico Weber.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117870 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/ASTConsumers.h
aa81908f7a649ade93036b5f30b91307e20cb464 31-Oct-2010 Nick Lewycky <nicholas@mxc.ca> Fix typo spotted by Nico Weber.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117870 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/ASTConsumers.h
ba90dab5280f08052d52c0aea7fa06b5e91f324f 31-Oct-2010 Anders Carlsson <andersca@mac.com> Baby steps towards using only CharUnits for base class offsets in ASTRecordLayout. Start by storing the offsets in CharUnits in the ASTRecordLayout object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
376bda924ac92462a22d6a22ea65d8c1bb8f26f3 31-Oct-2010 Anders Carlsson <andersca@mac.com> Baby steps towards using only CharUnits for base class offsets in ASTRecordLayout. Start by storing the offsets in CharUnits in the ASTRecordLayout object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
e15d2ab3c0ff08d09527eb9cb8da54c0e3832c25 31-Oct-2010 Anders Carlsson <andersca@mac.com> Teach the constant expr evaluator about derived-to-base casts when no virtual bases are involved. Fixes PR5974.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
5c5a764fcd256df6f6cfbce5cdd2a2dfb2c45e95 31-Oct-2010 Anders Carlsson <andersca@mac.com> Teach the constant expr evaluator about derived-to-base casts when no virtual bases are involved. Fixes PR5974.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
2de759ee4804419e8a58cf81eb4d4fd256f7635d 30-Oct-2010 John McCall <rjmccall@apple.com> Better solution: calculate the visibility of functions and variables
independently of whether they're definitions, then teach IR generation to
ignore non-explicit visibility when emitting declarations. Use this to
make sure that RTTI, vtables, and VTTs get the right visibility.

More of rdar://problem/8613093



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
af14603ca61757cf4361b583b45639a04c57e651 30-Oct-2010 John McCall <rjmccall@apple.com> Better solution: calculate the visibility of functions and variables
independently of whether they're definitions, then teach IR generation to
ignore non-explicit visibility when emitting declarations. Use this to
make sure that RTTI, vtables, and VTTs get the right visibility.

More of rdar://problem/8613093



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3b8ff1bdfb85628ed3bdf870f911811432114316 30-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Make the deserialization of macro definitions lazy, so that we can
load identifiers without loading their corresponding macro
definitions. This is likely to improve PCH performance slightly, and
reduces deserialization stack depth considerably when using
preprocessor metaprogramming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/ExternalPreprocessorSource.h
ex/Preprocessor.h
erialization/ASTReader.h
295a2a617ac335f590e430ab7fcd98f8ce109251 30-Oct-2010 Douglas Gregor <dgregor@apple.com> Make the deserialization of macro definitions lazy, so that we can
load identifiers without loading their corresponding macro
definitions. This is likely to improve PCH performance slightly, and
reduces deserialization stack depth considerably when using
preprocessor metaprogramming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/ExternalPreprocessorSource.h
ex/Preprocessor.h
erialization/ASTReader.h
8fa024cad01e38f1b16477c838ad7400ea1b1756 30-Oct-2010 Dale Johannesen <dalej@apple.com> Handle Type.h a better way.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1e592cba6bc1930e7a01dde8370e5345cef05723 30-Oct-2010 Dale Johannesen <dalej@apple.com> Handle Type.h a better way.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1bfa059effa6b3cf3cf4b2f377a8f8e2f7d2cd12 30-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics reporting of un-implemented
methods in protocols when protocols are in system
headers and thus ignored. //rdar: //8227199


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
61c8d3ecac8d565136ac82e9ea06c351227c9c5a 30-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics reporting of un-implemented
methods in protocols when protocols are in system
headers and thus ignored. //rdar: //8227199


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3a161e5ca07ca0c35ad2b0f73e21ed3b1ea43171 30-Oct-2010 Dale Johannesen <dalej@apple.com> Generate bitcasts going in and out of MMX parameters
in asm's. PR 8501, 8602988.
I don't like including Type.h where it is; the idea was
to get references to X86_MMXTy out of the common code.
Maybe there's a better way?



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f6e2c2039f76fa58799f6d155892d54fc95755e1 30-Oct-2010 Dale Johannesen <dalej@apple.com> Generate bitcasts going in and out of MMX parameters
in asm's. PR 8501, 8602988.
I don't like including Type.h where it is; the idea was
to get references to X86_MMXTy out of the common code.
Maybe there's a better way?



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c4c06ff08b812b1149b45c766e052b33688aa58f 30-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Make the deserialization of C++ base class specifiers lazy, improving
the performance of C++ PCH and reducing stack depth in the reader.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExternalASTSource.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
7c789c1a3f77f24032aa0bed2afacdb9e094e952 30-Oct-2010 Douglas Gregor <dgregor@apple.com> Make the deserialization of C++ base class specifiers lazy, improving
the performance of C++ PCH and reducing stack depth in the reader.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExternalASTSource.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
555a1dc275adafe74fd7606617cea0270b242d94 30-Oct-2010 John McCall <rjmccall@apple.com> Restore r117644, this time properly ignoring -fvisibility and type visibility
for namespace-scope variable declarations.

Apply visibility in IR gen to variables that are merely declared
and never defined. We were previously emitting these with default
visibility unless they were declared with private_extern.

Ignore global visibility settings when computing visibility for
a declaration's context, and key several conditions on whether a
visibility attribute exists anywhere in the hierarchy as opposed
to whether it exists at the current level.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
110e8e56af30363072c140285961592b0107f789 30-Oct-2010 John McCall <rjmccall@apple.com> Restore r117644, this time properly ignoring -fvisibility and type visibility
for namespace-scope variable declarations.

Apply visibility in IR gen to variables that are merely declared
and never defined. We were previously emitting these with default
visibility unless they were declared with private_extern.

Ignore global visibility settings when computing visibility for
a declaration's context, and key several conditions on whether a
visibility attribute exists anywhere in the hierarchy as opposed
to whether it exists at the current level.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2acc42b71d70979dd16122d5636d3660da5f0856 29-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added CFGTerminator class, that holds information about CFGBlock terminator statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117642 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
4ba72a0b28135209c435630682febe1f854ccfa6 29-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added CFGTerminator class, that holds information about CFGBlock terminator statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117642 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
126848ffc24253763e84cb10e82b64717d7f1f7f 28-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver/IA: Ignore -L for now, which users shouldn't be using for semantic effect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
b14eed0ed44ed3af881219dab7dc6464cad5303b 28-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver/IA: Ignore -L for now, which users shouldn't be using for semantic effect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
c7a1e90f74d23e3eef15a83fd845a683973816ac 28-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Simplify ASTUnit's internal timers, by not trying to keep a pile of
timers to be dumped whenever the ASTUnit is destroyed. Instead, just
print the time elapsed for each operation after we perform the
operation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117550 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
213f18b3d654de7d1c7cf4a329ea9d3db1c50b6a 28-Oct-2010 Douglas Gregor <dgregor@apple.com> Simplify ASTUnit's internal timers, by not trying to keep a pile of
timers to be dumped whenever the ASTUnit is destroyed. Instead, just
print the time elapsed for each operation after we perform the
operation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117550 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
eb16fce12cc2e47a537f6e39fb6d953c2b4ca7a6 28-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Switch case IDs conflict between chained PCHs; since there is no need to be global, make them local to a decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117540 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
e09a275444576deb2c8d9e2255554242f65d7c00 28-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Switch case IDs conflict between chained PCHs; since there is no need to be global, make them local to a decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117540 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
erialization/ASTWriter.h
ed022b71b0e1d96d924ad681fd591f65f669503e 28-Oct-2010 John McCall <rjmccall@apple.com> Implement an indirect-goto optimization for goto *&&lbl and respect this
in the scope checker. With that done, turn an indirect goto into a
protected scope into a hard error; otherwise IR generation has to start
worrying about declarations not dominating their scopes, as exemplified
in PR8473.

If this really affects anyone, I can probably adjust this to only hard-error
on possible indirect gotos into VLA scopes rather than arbitrary scopes.
But we'll see how people cope with the aggressive change on the marginal
feature.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117539 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
95c225de9fa3d79f70ef5008c0279580a7d9dcad 28-Oct-2010 John McCall <rjmccall@apple.com> Implement an indirect-goto optimization for goto *&&lbl and respect this
in the scope checker. With that done, turn an indirect goto into a
protected scope into a hard error; otherwise IR generation has to start
worrying about declarations not dominating their scopes, as exemplified
in PR8473.

If this really affects anyone, I can probably adjust this to only hard-error
on possible indirect gotos into VLA scopes rather than arbitrary scopes.
But we'll see how people cope with the aggressive change on the marginal
feature.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117539 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
e25e6d31745f808a600c5c5b20ef7511f27cd28e 28-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Use the ASTMutationListener to track when a named decl gets added to a DeclContext,
meaning we need to rewrite its name lookup table in a chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
100050bf643bcfe2d06bdcef491e387171249260 28-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use the ASTMutationListener to track when a named decl gets added to a DeclContext,
meaning we need to rewrite its name lookup table in a chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
feef73b988c81f1a5572125a55890580b14c1e3e 28-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix the re-serializing decls in a chained PCH mechanism.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117534 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
d3d0755a4220d3fa6c125eb3f8ce29fc1424eac3 28-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the re-serializing decls in a chained PCH mechanism.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117534 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
162ab3200fb02522f07c2b51f8d87b7fd473b72d 28-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Use the ASTMutationListener to track added template specializations in a chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
ST/DeclTemplate.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
bef1a7b9c175d37e4a727e6ce68bd05232fa6970 28-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use the ASTMutationListener to track added template specializations in a chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
ST/DeclTemplate.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
18cadfc6c150f2a41c0a0282daa970c4acbc6e2e 28-Oct-2010 John McCall <rjmccall@apple.com> Implement the newest status quo for method override checking. The idea now
is that we need more information to decide the exact conditions for whether
one ObjCObjectPointer is an acceptable return/parameter override for another,
so we're going to disable that entire class of warning for now. The
"forward developement" warning category, -Wmethod-signatures, can receive
unrestricted feature work, and when we're happy with how it acts, we'll
turn it on by default.

This is a pretty conservative change, and nobody's totally content with it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
10302c01e8ceffd86c1a2b1bb15466e852ca8898 28-Oct-2010 John McCall <rjmccall@apple.com> Implement the newest status quo for method override checking. The idea now
is that we need more information to decide the exact conditions for whether
one ObjCObjectPointer is an acceptable return/parameter override for another,
so we're going to disable that entire class of warning for now. The
"forward developement" warning category, -Wmethod-signatures, can receive
unrestricted feature work, and when we're happy with how it acts, we'll
turn it on by default.

This is a pretty conservative change, and nobody's totally content with it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6a708e29f59d5c3c60ad3c707ed7d8deac19da7d 28-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Make AST deserialization for class template specializations lazier, by
not loading the specializations of a class template until some AST
consumer needs them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
c8e5cf8f725e111965debb7130ef7466c0c73884 28-Oct-2010 Douglas Gregor <dgregor@apple.com> Make AST deserialization for class template specializations lazier, by
not loading the specializations of a class template until some AST
consumer needs them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
45ecd0d8067ed9723d5ad996da74641026fd15de 27-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Lazily load the next friend in the chain of FriendDecls, to eliminate
some excessive recursion and deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117480 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
69aecc6252bf4a5ee59f9b51c3728ea07b6342bf 27-Oct-2010 Douglas Gregor <dgregor@apple.com> Lazily load the next friend in the chain of FriendDecls, to eliminate
some excessive recursion and deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117480 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
5c893f7845f175b6a7b00483595f7db9e8d16852 27-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Lazily load the "next" namespace in the chain of NamespaceDecls, to
eliminate some excessive recursion and deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
06c919300ce39e50ed7f6dff5025c8ed96dcf221 27-Oct-2010 Douglas Gregor <dgregor@apple.com> Lazily load the "next" namespace in the chain of NamespaceDecls, to
eliminate some excessive recursion and deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
875ce536a468f0a958f8667d29acf8da433c69ff 27-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce libclang-level options for C++ precompiled preambles,
separating out chaining precompiled preambles from non-chaining ones.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117457 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
99ba202f659e1885fa5ee114f97c97cf6a857491 27-Oct-2010 Douglas Gregor <dgregor@apple.com> Introduce libclang-level options for C++ precompiled preambles,
separating out chaining precompiled preambles from non-chaining ones.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117457 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
8d333e150526172be006c30636c568e582d5e4f3 27-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Add helper for extracting the CXXRecordDecl for the implicit argument to
a member call expression. This has proved to be a common pattern for users of
RecursiveASTVisitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
007a9b1c632bfaac20e41c60cbe07fdc6d0e647c 27-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Add helper for extracting the CXXRecordDecl for the implicit argument to
a member call expression. This has proved to be a common pattern for users of
RecursiveASTVisitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
675414e4f7c3431aa0c68409d879297805865173 27-Oct-2010 Dan Gohman <gohman@apple.com> Add support for code completion on stdin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117414 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
90d9081cacb4b0163f2c7527f666d6515257067c 27-Oct-2010 Dan Gohman <gohman@apple.com> Add support for code completion on stdin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117414 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
1ee1609094e240771c62e9d6b85103f37b7a6270 26-Oct-2010 Dan Gohman <gohman@apple.com> getOrCreateContentCache never returns null, so overrideFileContents
doesn't need its return value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117393 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0d06e998910934e5ef070f53f4c272e7c6b846c6 26-Oct-2010 Dan Gohman <gohman@apple.com> getOrCreateContentCache never returns null, so overrideFileContents
doesn't need its return value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117393 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c6a530df661d6811cbb10897fb88bdaa60d4478e 26-Oct-2010 John McCall <rjmccall@apple.com> Optimize field space usage in CompoundStmt, LabelStmt, Expr, and CastExpr.
There's probably still significant padding waste on x86-64 UNIXen, but
the difference in 32-bit compiles should be significant.

There are a lot of Expr nodes left that could lose a word this way.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117359 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
8e6285af719adc6f86d6faa235d22a08eb68ee3a 26-Oct-2010 John McCall <rjmccall@apple.com> Optimize field space usage in CompoundStmt, LabelStmt, Expr, and CastExpr.
There's probably still significant padding waste on x86-64 UNIXen, but
the difference in 32-bit compiles should be significant.

There are a lot of Expr nodes left that could lose a word this way.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117359 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
c8149b0df721d5ec08cb73021aa69e0b429d9a3f 26-Oct-2010 John McCall <rjmccall@apple.com> No really, we don't have a retain/release system for statements/expressions
anymore.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
3fa5cae9b3812cab9fab6c042c3329bb70a3d046 26-Oct-2010 John McCall <rjmccall@apple.com> No really, we don't have a retain/release system for statements/expressions
anymore.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
2243560c1b13d7746210c710dd8b39c0b9867981 26-Oct-2010 John McCall <rjmccall@apple.com> A couple of tweaks to the visibility rules:
- tags with C linkage should ignore visibility=hidden
- functions and variables with explicit visibility attributes should
ignore the linkage of their types
Either of these should be sufficient to fix PR8457.

Also, FileCheck-ize a test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117351 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ac65c6208d48b0f9b4661c30c28997a280ac5ba6 26-Oct-2010 John McCall <rjmccall@apple.com> A couple of tweaks to the visibility rules:
- tags with C linkage should ignore visibility=hidden
- functions and variables with explicit visibility attributes should
ignore the linkage of their types
Either of these should be sufficient to fix PR8457.

Also, FileCheck-ize a test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117351 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3e4a1e889180a2f6c33ee083bd42b614b39430fa 26-Oct-2010 John McCall <rjmccall@apple.com> Pending further discussion, re-enable warnings for Objective C
covariant/contravariant overrides and implementations, but do so under
control of a new flag (-Wno-objc-covariant-overrides, which yes does cover
contravariance too).

*At least* the covariance cases will probably be enabled by default shortly,
but that's not totally uncontroversial.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1235b0ebb16618bf41a9e7234d5e2690faf97d37 26-Oct-2010 John McCall <rjmccall@apple.com> Pending further discussion, re-enable warnings for Objective C
covariant/contravariant overrides and implementations, but do so under
control of a new flag (-Wno-objc-covariant-overrides, which yes does cover
contravariance too).

*At least* the covariance cases will probably be enabled by default shortly,
but that's not totally uncontroversial.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
626161ecc7e10b432e2b293fe806ba314c1f4aa7 26-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch for mis-compile of statement expressions with
non-trivial copy constructors. // rdar: //8540501.
A test will be added to llvm nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117324 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e946fc833d8592aa2890bfd9839f1ad839b3d284 26-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch for mis-compile of statement expressions with
non-trivial copy constructors. // rdar: //8540501.
A test will be added to llvm nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117324 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
fe1419904bce9fcd0423c0735ccee25445fecd61 25-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Improve the tracking of source locations for parentheses in constructor calls.
This adds them where missing, and traces them through PCH. We fix at least one
bug in the extents found by the Index library, and make a lot of refactoring
tools which care about the exact formulation of a constructor call easier to
write. Also some minor cleanups to more consistently follow the friend pattern
instead of the setter pattern when rebuilding a serialized AST.

Patch originally by Samuel Benzaquen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
428edafa9eb80e01dd40aab31d4166a787a741e1 25-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Improve the tracking of source locations for parentheses in constructor calls.
This adds them where missing, and traces them through PCH. We fix at least one
bug in the extents found by the Index library, and make a lot of refactoring
tools which care about the exact formulation of a constructor call easier to
write. Also some minor cleanups to more consistently follow the friend pattern
instead of the setter pattern when rebuilding a serialized AST.

Patch originally by Samuel Benzaquen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
83bf722acb37fcbd0468a782dcc219575ed48dd8 24-Oct-2010 Peter Collingbourne <peter@pcc.me.uk> Implement GNU C extension: two types are compatible if they appear
as a function argument, one of the types is a transparent union type
and the other type is compatible with a union member

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117243 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4846675e0e42d1802b0ffd8972a45e72aeb3758d 24-Oct-2010 Peter Collingbourne <peter@pcc.me.uk> Implement GNU C extension: two types are compatible if they appear
as a function argument, one of the types is a transparent union type
and the other type is compatible with a union member

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117243 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
094028ba7d3fd22d7d186f68b8c0b470f74260cb 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Keep track in chained PCH of implicit members that were added after the definition was completed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117240 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
b6cc0e1a789c3f33e3f4b1ee768e679a9beab941 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep track in chained PCH of implicit members that were added after the definition was completed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117240 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
60eadb6557fb19d5e83521a4834e56b2b849e164 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Start fleshing out ASTMutationListener; notify when a tag definition is completed.

In that case a chained PCH will record the updates to the DefinitionData pointer of forward references.
If a forward reference mutated into a definition re-write it into the chained PCH, this is too big of a change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117239 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
565bf30bf5607b9740d288d8d9c45cf38ea75298 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Start fleshing out ASTMutationListener; notify when a tag definition is completed.

In that case a chained PCH will record the updates to the DefinitionData pointer of forward references.
If a forward reference mutated into a definition re-write it into the chained PCH, this is too big of a change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117239 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTMutationListener.h
erialization/ASTWriter.h
597fb383b3bacbf98e34a6127acfa5a5805f8c10 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce a DeclsToRewrite field in ASTWrite, used for collecting the decls that will be replaced in the chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117238 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
ba901b507fc36408fe6f8478e8ac90b554f1d230 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a DeclsToRewrite field in ASTWrite, used for collecting the decls that will be replaced in the chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117238 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
29d3a8eea971c7ce0b6d56ff5c9cfbf9d54ea3e5 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Some method renaming, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117237 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
aacdd02e5865aa410c1418d7ef77f445b5bb5cba 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Some method renaming, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117237 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
66038abe0b53d93378f014e0306f1b3c2af07177 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Refactoring.
- Pass around RecordDataImpl instead of the concrete RecordData so that any SmallVector can be used.
- Move ASTDeclWriter::WriteCXXDefinitionData to ASTWriter::AddCXXDefinitionData.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
erialization/ASTWriter.h
89eaf3af92c72c0c1aae807644e39cabc461d685 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactoring.
- Pass around RecordDataImpl instead of the concrete RecordData so that any SmallVector can be used.
- Move ASTDeclWriter::WriteCXXDefinitionData to ASTWriter::AddCXXDefinitionData.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
erialization/ASTWriter.h
d9f2c76d28b9f8b2c58282666fc18f592c722496 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Put the mechanism in place to track modifications in an AST entity that were committed after
its initial creation/deserialization and store the changes in a chained PCH.

The idea is that the AST entities call methods on the ASTMutationListener to give notifications
of changes; the PCHWriter implements the ASTMutationListener interface and stores the incremental changes
of the updated entity. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTMutationListener.h
ST/DeclBase.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
7b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put the mechanism in place to track modifications in an AST entity that were committed after
its initial creation/deserialization and store the changes in a chained PCH.

The idea is that the AST entities call methods on the ASTMutationListener to give notifications
of changes; the PCHWriter implements the ASTMutationListener interface and stores the incremental changes
of the updated entity. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTMutationListener.h
ST/DeclBase.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
9a38d95650238c0f09437da901230d0b0803fc04 24-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Simplify and "robust-ify" the way that CXXRecord references point to the definition data when loaded from PCH.

Temporary disable 'test/PCH/chain-cxx.cpp' until a better way to fix it is in place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117234 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
134db1fff5653c164ef41c898943521c49f6ebab 24-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Simplify and "robust-ify" the way that CXXRecord references point to the definition data when loaded from PCH.

Temporary disable 'test/PCH/chain-cxx.cpp' until a better way to fix it is in place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117234 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
dd3f519c82a8e53c1f223c5721785608e3c36f42 24-Oct-2010 Anders Carlsson <andersca@mac.com> Fix tyop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117225 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
951455d14e8b0a733a05fff2f42841d0d3d14bf7 24-Oct-2010 Anders Carlsson <andersca@mac.com> Fix tyop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117225 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
4f956031c1f13fcceb5f49e09d16be040ef83f1b 24-Oct-2010 Anders Carlsson <andersca@mac.com> Move the "used but marked unused" warning behind a special warning flag for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cd1af3d68b00aa729e382fe2cde186f237630804 24-Oct-2010 Anders Carlsson <andersca@mac.com> Move the "used but marked unused" warning behind a special warning flag for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
fd22f9db9eb1ca89fd30a994c4771220b52dd3e8 23-Oct-2010 Anders Carlsson <andersca@mac.com> Warn if a variable marked with the "unused" attribute is used. Patch by Darin Adler!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2127eccbe15fd3b1b29aa53ccedd2e0f55ad27f9 23-Oct-2010 Anders Carlsson <andersca@mac.com> Warn if a variable marked with the "unused" attribute is used. Patch by Darin Adler!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc9bc4e9207eea7bd59beacb95c73f2d3cfbe77b 23-Oct-2010 John McCall <rjmccall@apple.com> Parse attributes on enumerators and instantiate attributes on enum decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117182 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5b629aa86c987f276d00453b6c9ab8424f7903fe 23-Oct-2010 John McCall <rjmccall@apple.com> Parse attributes on enumerators and instantiate attributes on enum decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117182 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e1cbd4a33bdc4000b9274d49d06f83c9a3bc9b48 23-Oct-2010 Ted Kremenek <kremenek@apple.com> Fix a horrible bug in all dataflow analyses that use CFGRecStmtVisitor (including live variables analysis).
We shouldn't recurse into CompoundStmts since they are already inlined in the CFG. This could result in
bogus dead stores warnings (among other things).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117162 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
f50595df931bde89e3acd3ec18e4c7e41aa80852 23-Oct-2010 Ted Kremenek <kremenek@apple.com> Fix a horrible bug in all dataflow analyses that use CFGRecStmtVisitor (including live variables analysis).
We shouldn't recurse into CompoundStmts since they are already inlined in the CFG. This could result in
bogus dead stores warnings (among other things).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117162 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
a49254ea13f795120b78c810f98e5977bdafc9b0 22-Oct-2010 Dale Johannesen <dalej@apple.com> Change handling of inline asm 'p' constraint to match llvm-gcc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117149 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
cee55018570c0c46262c6e4ef7beaa707c93fc86 22-Oct-2010 Dale Johannesen <dalej@apple.com> Change handling of inline asm 'p' constraint to match llvm-gcc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117149 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
82254439b368de855d1e66440071017a1f2d4f0a 22-Oct-2010 John McCall <rjmccall@apple.com> Substantially revise how clang computes the visibility of a declaration to
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/LangOptions.h
asic/Visibility.h
1fb0caaa7bef765b85972274e3b434af2572c141 22-Oct-2010 John McCall <rjmccall@apple.com> Substantially revise how clang computes the visibility of a declaration to
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/LangOptions.h
asic/Visibility.h
50a1e03fa8e7f6c9dc4e2371675ac85126fce0ab 22-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> When we perform name lookup for a template, we may end up finding an
ambiguous name where none of the declarations found are actually
templates. In this case, make sure we clear out the ambiguous-path
data when recomputing the lookup result kind. Fixes PR8439.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117112 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
dd8c10fbd87f171e361a53c5835800369170123b 22-Oct-2010 Douglas Gregor <dgregor@apple.com> When we perform name lookup for a template, we may end up finding an
ambiguous name where none of the declarations found are actually
templates. In this case, make sure we clear out the ambiguous-path
data when recomputing the lookup result kind. Fixes PR8439.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117112 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
01c6e7fc0e480253e92e0ef4c292b5e5191d955b 22-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Teach the C++ simple-type-specifier parser and tentative parses about
protocol-qualified types such as id<Protocol>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9bd1d8d174a9d15ae343246c8322299248b9e92a 22-Oct-2010 Douglas Gregor <dgregor@apple.com> Teach the C++ simple-type-specifier parser and tentative parses about
protocol-qualified types such as id<Protocol>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9da3fb28306b09ca9a6f2cafc46fd45612b69549 21-Oct-2010 Ted Kremenek <kremenek@apple.com> Tweak diagnostics for redeclaration of a @property in a class extension where the redelcaration and original
declaration have the 'readwrite' attribute. This is a common case, and we can issue a more lucid diagnostic.

Fixes <rdar://problem/7629420>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
788f489a37bf1150deb9378cec6a6eb902d0d1b2 21-Oct-2010 Ted Kremenek <kremenek@apple.com> Tweak diagnostics for redeclaration of a @property in a class extension where the redelcaration and original
declaration have the 'readwrite' attribute. This is a common case, and we can issue a more lucid diagnostic.

Fixes <rdar://problem/7629420>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f9cd9b022cc53a706f3da31f4b7c8a0702477c80 21-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose the declaration of template template parameters that
themselves have no template parameters. This is actually a restriction
due to the grammar of template template parameters, but we choose to
diagnose it in Sema to provide better recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117032 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
369ea27b56b89379023366ff1b8ab362b5709e4e 21-Oct-2010 Douglas Gregor <dgregor@apple.com> Diagnose the declaration of template template parameters that
themselves have no template parameters. This is actually a restriction
due to the grammar of template template parameters, but we choose to
diagnose it in Sema to provide better recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117032 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
91d4578cba8b8bba891056b8b96583ec71023aac 21-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Always treat 'main' as an extern "C" function, so that we detect
redeclarations of main appropriately rather than allowing it to be
overloaded. Also, disallowing declaring main as a template.

Fixes GCC DejaGNU g++.old-deja/g++.other/main1.C.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117029 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
0bab54cf82cd679152197c7a2eb938f8aa9f07dd 21-Oct-2010 Douglas Gregor <dgregor@apple.com> Always treat 'main' as an extern "C" function, so that we detect
redeclarations of main appropriately rather than allowing it to be
overloaded. Also, disallowing declaring main as a template.

Fixes GCC DejaGNU g++.old-deja/g++.other/main1.C.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117029 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
01e70084f5d9ddfbb09dcecb498ddce71a5c70ae 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Reorganize predefined macros for all Windows targets.

This adds an option to set the _MSC_VER macro without
recompiling. This is very useful when testing compatibility
with the Windows SDK and c++stdlib headers.

-fmsc-version=<version> (defaults to VS2003 (1300))

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
dae4ac4fe56ec60fc93b3e3c9f51e79e682084b9 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Reorganize predefined macros for all Windows targets.

This adds an option to set the _MSC_VER macro without
recompiling. This is very useful when testing compatibility
with the Windows SDK and c++stdlib headers.

-fmsc-version=<version> (defaults to VS2003 (1300))

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
d5513a31553eeb274a7dd16500a01a440297e7a5 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116990 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
20249a1af2e462dcafdd6a350f1c7967b264ff25 21-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116990 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
0fc35a77b2a5843fd536a5ad566e5f7779e9bb8c 21-Oct-2010 Craig Silverstein <csilvers2000@yahoo.com> Pass TInfo to CXXDestructorDecl::Create(), just like we do for other
function decls.

Reviewed by rjmccall and nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b41d899a6023385c00a61eb9dd3e44db9dc7994e 21-Oct-2010 Craig Silverstein <csilvers2000@yahoo.com> Pass TInfo to CXXDestructorDecl::Create(), just like we do for other
function decls.

Reviewed by rjmccall and nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
02674d29f57fddd07f4d6c987402d06b3697ddfa 21-Oct-2010 Ted Kremenek <kremenek@apple.com> Remove obsolete GRAuditor and GRSimpleAPICheck, which have been completely subsumed by the Checker interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116973 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSimpleAPICheck.h
f093350f76320909a015c82de60a500fdcaf5b8f 21-Oct-2010 Ted Kremenek <kremenek@apple.com> Remove obsolete GRAuditor and GRSimpleAPICheck, which have been completely subsumed by the Checker interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116973 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSimpleAPICheck.h
50ba139cfa4be3440baab636eca4a0c23c909ef3 21-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Extend the preprocessing record and libclang with support for
inclusion directives, keeping track of every #include, #import,
etc. in the translation unit. We keep track of the source location and
kind of the inclusion, how the file name was spelled, and the
underlying file to which the inclusion resolved.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116952 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
ecdcb883cbc6bb4a2445dc6f02d58d9bdb54a0ed 21-Oct-2010 Douglas Gregor <dgregor@apple.com> Extend the preprocessing record and libclang with support for
inclusion directives, keeping track of every #include, #import,
etc. in the translation unit. We keep track of the source location and
kind of the inclusion, how the file name was spelled, and the
underlying file to which the inclusion resolved.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116952 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
f88466fb54e64d00906b04ab603c29ab02330551 20-Oct-2010 Craig Silverstein <csilvers2000@yahoo.com> Get FunctionDecl to recurse on FunctionTypeLoc rather than
FunctionType! I didn't realize it was available, until rjmccall
pointed out that DeclaratorDecl made the typeloc available. This
makes FunctionDecl recursion *much* easier, because the typeloc can
take care of default parameters, so we no longer have to do that
separately, which means we can just do a normal type traversal instead
of this special-case WalkUp stuff we did before.

The only downside -- and it's minor -- is that because the TypeLoc
handles both the return type and the argument types, we can't recurse
on the explicit template args in the right place (which would be
between them). I do it beforehand instead. So for
int MyFunc<float>(char x);
we get callbacks in the order: float, int, char.

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116945 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
536bab452fa38692834233187ed3d49b83722cb3 20-Oct-2010 Craig Silverstein <csilvers2000@yahoo.com> Get FunctionDecl to recurse on FunctionTypeLoc rather than
FunctionType! I didn't realize it was available, until rjmccall
pointed out that DeclaratorDecl made the typeloc available. This
makes FunctionDecl recursion *much* easier, because the typeloc can
take care of default parameters, so we no longer have to do that
separately, which means we can just do a normal type traversal instead
of this special-case WalkUp stuff we did before.

The only downside -- and it's minor -- is that because the TypeLoc
handles both the return type and the argument types, we can't recurse
on the explicit template args in the right place (which would be
between them). I do it beforehand instead. So for
int MyFunc<float>(char x);
we get callbacks in the order: float, int, char.

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116945 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
99b6f9ef71b7c888dabb5b0f0669e5ca2c70ddc3 20-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Fix handling of property and ivar lookup in typo correction; the two
kinds of lookup into Objective-C classes were tangled together, a
situation that was compounded by automatically synthesized ivars.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116907 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9a632eaa0ee73e4db701a8df74e92909d1fa350e 20-Oct-2010 Douglas Gregor <dgregor@apple.com> Fix handling of property and ivar lookup in typo correction; the two
kinds of lookup into Objective-C classes were tangled together, a
situation that was compounded by automatically synthesized ivars.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116907 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
37ab30b1f7b9bf082b18d682753c2a549f9d99b5 20-Oct-2010 Anders Carlsson <andersca@mac.com> Add a __has_attribute macro that works much like __has_feature and __has_builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116906 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ex/CMakeLists.txt
ex/Makefile
ex/Preprocessor.h
akefile
cae5095c116c29a4e52c91fa0ad88df09dd2b45f 20-Oct-2010 Anders Carlsson <andersca@mac.com> Add a __has_attribute macro that works much like __has_feature and __has_builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116906 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ex/CMakeLists.txt
ex/Makefile
ex/Preprocessor.h
akefile
8c6a3fd44ea5d50dd977323a6f36da1d4d12515a 20-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a simple cache for unqualified typo corrections, so that we
don't repeatedly loop through identifiers, correcting the same typo'd
identifier over and over again.

We still bail out after 20 typo corrections, but this should help
improve performance in the common case where we're typo-correcting
because the user forgot to include a header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116901 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3eedbb06dd35b021bb614250585d4a6a5b7936e7 20-Oct-2010 Douglas Gregor <dgregor@apple.com> Introduce a simple cache for unqualified typo corrections, so that we
don't repeatedly loop through identifiers, correcting the same typo'd
identifier over and over again.

We still bail out after 20 typo corrections, but this should help
improve performance in the common case where we're typo-correcting
because the user forgot to include a header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116901 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
2f4f836275f21a0ad8b3bc0419acd1b3c3eedadb 20-Oct-2010 Ted Kremenek <kremenek@apple.com> Really^2 fix <rdar://problem/8361834>, this time without crashing.

Now MICache is a linked list (per the FIXME), where we tradeoff between MacroInfo objects being in MICache
and MIChainHead. MacroInfo objects in the MICache chain are already "Destroy()'ed", so they can be reused. When
inserting into MICache, we need to remove them from the regular linked list so that they aren't destroyed more than
once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116869 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
9714a2385cb66b6efa373fc668641de602dd9adb 20-Oct-2010 Ted Kremenek <kremenek@apple.com> Really^2 fix <rdar://problem/8361834>, this time without crashing.

Now MICache is a linked list (per the FIXME), where we tradeoff between MacroInfo objects being in MICache
and MIChainHead. MacroInfo objects in the MICache chain are already "Destroy()'ed", so they can be reused. When
inserting into MICache, we need to remove them from the regular linked list so that they aren't destroyed more than
once.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116869 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
5735d6cabe1ecd06c0e4c220b37c7e955b9131c7 19-Oct-2010 Ted Kremenek <kremenek@apple.com> Simplify lifetime management of MacroInfo objects in Preprocessor by having the Preprocessor maintain them in a linked
list of allocated MacroInfos. This requires only 1 extra pointer per MacroInfo object, and allows us to blow them
away in one place. This fixes an elusive memory leak with MacroInfos (whose exact location I couldn't still figure
out despite substantial digging).

Fixes <rdar://problem/8361834>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116842 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
af8fa25c0d4e0540952a50bbd06dc1558954ccd9 19-Oct-2010 Ted Kremenek <kremenek@apple.com> Simplify lifetime management of MacroInfo objects in Preprocessor by having the Preprocessor maintain them in a linked
list of allocated MacroInfos. This requires only 1 extra pointer per MacroInfo object, and allows us to blow them
away in one place. This fixes an elusive memory leak with MacroInfos (whose exact location I couldn't still figure
out despite substantial digging).

Fixes <rdar://problem/8361834>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116842 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
87546e52faba58df3b4cf9f206ba7087371f4a9f 19-Oct-2010 John McCall <rjmccall@apple.com> MSVC space optimization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
35043e56150dc4eda882acd5ddfe0f8e3c0a8cb1 19-Oct-2010 John McCall <rjmccall@apple.com> MSVC space optimization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1e75edda2f03c9416845f86c8f69dfaff6eb262b 19-Oct-2010 John McCall <rjmccall@apple.com> Petty space optimizations in ElaboratedType and DependentNameType.
Petty time optimization in TemplateTypeParmType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116796 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
77be2b485f65ad134b3804a6930d5df9d0d974ce 19-Oct-2010 John McCall <rjmccall@apple.com> Petty space optimizations in ElaboratedType and DependentNameType.
Petty time optimization in TemplateTypeParmType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116796 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c31bd773bd43aa091aaf00e58e787deca354583f 19-Oct-2010 John McCall <rjmccall@apple.com> Redirect templated friend class decls to a new Sema callback and
construct an unsupported friend when there's a friend with a templated
scope specifier. Fixes a consistency crash, rdar://problem/8540527


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
9a34edb710917798aa30263374f624f13b594605 19-Oct-2010 John McCall <rjmccall@apple.com> Redirect templated friend class decls to a new Sema callback and
construct an unsupported friend when there's a friend with a templated
scope specifier. Fixes a consistency crash, rdar://problem/8540527


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
503fd9a22ff1fa9467e05f023fe4085671ed3204 19-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Tweak code-completion result priorities, so that exact and similar
type matches have a bigger impact. The impetus for this change was
that, when initializing an enumeration value, we want enumerators of
that enumeration type to have a higher priority than, e.g., unrelated
local variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116774 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
8ec904c151abf7ed0dc911258574a904ed97ff15 19-Oct-2010 Douglas Gregor <dgregor@apple.com> Tweak code-completion result priorities, so that exact and similar
type matches have a bigger impact. The impetus for this change was
that, when initializing an enumeration value, we want enumerators of
that enumeration type to have a higher priority than, e.g., unrelated
local variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116774 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
64303d028a514f286f44d9712cd15da96fd73538 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver: Reject -fasm-blocks except on X86 (where we just ignore it, since
passing it is very prevalent in some circles).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116761 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
25b26ebdebe46bb4576247e0c64d1c11410a8e9d 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver: Reject -fasm-blocks except on X86 (where we just ignore it, since
passing it is very prevalent in some circles).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116761 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
7bfeddd7b9c9426aa431e3b95b33a2d9ca4c6b85 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver/IA: Accept and ignore -force_cpusubtype_ALL, as in 'clang -c
-Wa,-force_cpusubtype_ALL t.c'.
- Tweaks -Wa, and -Xassembler handling to only accept an explicit short list of
arguments and give an obvious unsupported error on others.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
fcec10bded7b9b9268af5232fa17617db0df68ed 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver/IA: Accept and ignore -force_cpusubtype_ALL, as in 'clang -c
-Wa,-force_cpusubtype_ALL t.c'.
- Tweaks -Wa, and -Xassembler handling to only accept an explicit short list of
arguments and give an obvious unsupported error on others.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
7860004b4236a74a77ad6accf007dcaf96f3e325 18-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write declaration attributes from/to PCH properly. Embed them in the declaration block instead of trying to create another block.

The new block was messing with the assumption that after decls block comes the stmts block.
Fixes http://llvm.org/PR8406

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116737 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
4eb9fc0449ddbd5239ddc3ae6b6e52880f47dcf7 18-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write declaration attributes from/to PCH properly. Embed them in the declaration block instead of trying to create another block.

The new block was messing with the assumption that after decls block comes the stmts block.
Fixes http://llvm.org/PR8406

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116737 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
c7ac90f6529e272e5f9c76d6f8d5697edbadcf04 18-Oct-2010 Anders Carlsson <andersca@mac.com> Implement the first half of [dcl.attr.override]p6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116709 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
693d467ed44ecb754762aff129accce30c306422 18-Oct-2010 Anders Carlsson <andersca@mac.com> Implement the first half of [dcl.attr.override]p6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116709 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
32977822e1dd3ca3c74a9b93c58058f013138dd1 18-Oct-2010 Francois Pichet <pichet2000@gmail.com> Microsoft enum extensions. 2 things will change on -fms-extensions:
1. enum underlying type is int by default.
2. Error "enumerator value is not representable in the underlying type"is a ExtWarning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
842e7a22c6a0fbf0ccdb4bb9308d92ca9e9621f6 18-Oct-2010 Francois Pichet <pichet2000@gmail.com> Microsoft enum extensions. 2 things will change on -fms-extensions:
1. enum underlying type is int by default.
2. Error "enumerator value is not representable in the underlying type"is a ExtWarning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
794f42061ab1c80ddda685139040110d8f7f234b 18-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Add iteration over the preprocessor conditional stack to PreprocessorLexer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116703 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
6f2d1b111ed6d3c686303746e3949e3cbc9f3870 18-Oct-2010 Douglas Gregor <dgregor@apple.com> Add iteration over the preprocessor conditional stack to PreprocessorLexer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116703 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
1cb88d1b71caeca401d8412bc21e70adcaa4f6bb 18-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Add declarations nested in a linkage specification to the output of
-ast-print-xml, from Martin Vejnar!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116702 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
cf1123b648403f159aeb705e2b8b088258a277ff 18-Oct-2010 Douglas Gregor <dgregor@apple.com> Add declarations nested in a linkage specification to the output of
-ast-print-xml, from Martin Vejnar!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116702 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
3d796930a1057d682dd5f9b719f9f1a42c0d1377 18-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116699 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
237cf582b89bbcc22640cea15426ddc7ada8412b 18-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116699 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f3b5f4c9d263179521c3a87af3c595dcac078928 18-Oct-2010 Anders Carlsson <andersca@mac.com> Implement [dcl.attr.override]p2 and add tests for p1 and p2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4d09e84fbb0305372efc778a6770f0c3a5b5b2ae 18-Oct-2010 Anders Carlsson <andersca@mac.com> Implement [dcl.attr.override]p2 and add tests for p1 and p2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0a3d65c147e28d6d96bd64d454f8f0cfaf20c9c6 16-Oct-2010 John McCall <rjmccall@apple.com> White-listing templated-scope friend decls is a good idea, but doing it
by marking the decl invalid isn't. Make some steps towards supporting these
and then hastily shut them down at the last second by marking them as
unsupported.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116661 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
6102ca1d490836096678d7d934f0b2b78f9293ec 16-Oct-2010 John McCall <rjmccall@apple.com> White-listing templated-scope friend decls is a good idea, but doing it
by marking the decl invalid isn't. Make some steps towards supporting these
and then hastily shut them down at the last second by marking them as
unsupported.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116661 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
cb51bfe16c8176f9be54ea71eb294913306f81a6 16-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver: Error on -fno-for-scope, which we have no intention of supporting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116627 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
06205ca78ca2fd4384b237f120ec66614df0d9fc 16-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver: Error on -fno-for-scope, which we have no intention of supporting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116627 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b366986ba90b62e13a9562822179f488c1febcc5 15-Oct-2010 Francois Pichet <pichet2000@gmail.com> bool bit fields are causing problems with MSVC. Replace them with unsigned bit fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
bdb5b0e8ad8ed297ad01eb2ccd0d6d5ed6058033 15-Oct-2010 Francois Pichet <pichet2000@gmail.com> bool bit fields are causing problems with MSVC. Replace them with unsigned bit fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7ff72d413fc56a322f731667dc84608d2654f335 15-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Again, add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116608 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
2a8fe339fbcd92993a0e9568696ba165c2519fba 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Again, add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116608 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
fc2f8a26879d9748cfc1b8dc91677786bed35faa 15-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Revert r116605, a lot more were committed by mistake.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
63d907bc55ccb6abfc57b409cab3cfa7c0d1f38a 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r116605, a lot more were committed by mistake.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
736ecd779eeb123a1371ad43e4158896adbefccb 15-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
721f38c7f866259e1472af775239a83d8f06f6a8 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
c5507c6d7ca95f7668c8fedaa405b7a51693335a 15-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Eradicate IsSuper field from ObjCImplicitSetterGetterRefExprClass
AST node. (finishing off radar 8525788).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
c44d91c446f6d59722da53dba9d686560e81b762 15-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Eradicate IsSuper field from ObjCImplicitSetterGetterRefExprClass
AST node. (finishing off radar 8525788).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
e269fb9a54077307f5f07171eaafe55749770e4e 15-Oct-2010 Devang Patel <dpatel@apple.com> TBAA = Type Based Alias Analysis


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116599 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
be570121a6da523020c3b11eb15aba97becb5d2f 15-Oct-2010 Devang Patel <dpatel@apple.com> TBAA = Type Based Alias Analysis


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116599 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
7c7c1621dac8ca1e33a61e34084718f7bba146d9 15-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write to/from PCH DeclarationNameLocs, DeclarationNameInfos and QualifierInfos (rdar://8513756).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/Expr.h
ST/ExprCXX.h
erialization/ASTReader.h
erialization/ASTWriter.h
4045107b7384fd68eed5e3e2f06fc2a47e7be0a6 15-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write to/from PCH DeclarationNameLocs, DeclarationNameInfos and QualifierInfos (rdar://8513756).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/Expr.h
ST/ExprCXX.h
erialization/ASTReader.h
erialization/ASTWriter.h
c2141810fbe4f332b6f4627216cdd268c5b90ee2 15-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose C++ [class.mem]p13-14, where a class member has the same name
as the class itself. Fixes PR7082.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a6e937ce32474934778346f4d51c3beec40e77ec 15-Oct-2010 Douglas Gregor <dgregor@apple.com> Diagnose C++ [class.mem]p13-14, where a class member has the same name
as the class itself. Fixes PR7082.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c0b7e94662d5aa0a2628940f9c43fbac84f7b008 15-Oct-2010 Craig Silverstein <csilvers2000@yahoo.com> Recurse on a TypeLoc rather than a Type for TypedefDecl, now that the
typloc information is available (I don't think it was, originally).
Submitted as a 'trivial' change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
84a8e0a846d658d784090c4f378cc1c6c6b0ef3f 15-Oct-2010 Craig Silverstein <csilvers2000@yahoo.com> Recurse on a TypeLoc rather than a Type for TypedefDecl, now that the
typloc information is available (I don't think it was, originally).
Submitted as a 'trivial' change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
68790944c3bb21baf8d3d28c9d4da5027f1bd229 15-Oct-2010 John McCall <rjmccall@apple.com> Death to blocks, or at least the word "block" in one particular obnoxiously
ambiguous context.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b6bbcc9995186799a60ce17d0c1acff31601653a 15-Oct-2010 John McCall <rjmccall@apple.com> Death to blocks, or at least the word "block" in one particular obnoxiously
ambiguous context.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
279a5508dec94431facaacc94ca54f44a04cdaf7 15-Oct-2010 Dan Gohman <gohman@apple.com> Wire up the -fstrict-aliasing and -fno-strict-aliasing options
to CodeGenOption flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116530 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
4d5625e15bb215c2241c022df8dc7b04438970c6 15-Oct-2010 Dan Gohman <gohman@apple.com> Wire up the -fstrict-aliasing and -fno-strict-aliasing options
to CodeGenOption flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116530 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
b9d1dba5986d9b5cd4e1a5ff93759b3704593829 15-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> When performing typo correction, look through the set of known
identifiers to determine good typo-correction candidates. Once we've
identified those candidates, we perform name lookup on each of them
and the consider the results.

This optimization makes typo correction > 2x faster on a benchmark
example using a single typo (NSstring) in a tiny file that includes
Cocoa.h from a precompiled header, since we are deserializing far less
information now during typo correction.

There is a semantic change here, which is interesting. The presence of
a similarly-named entity that is not visible can now affect typo
correction. This is both good (you won't get weird corrections if the
thing you wanted isn't in scope) and bad (you won't get good
corrections if there is a similarly-named-but-completely-unrelated
thing). Time will tell whether it was a good choice or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116528 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/OnDiskHashTable.h
erialization/ASTReader.h
95f4292cc526c629fead321c7fcfd4fe0f3bc66e 15-Oct-2010 Douglas Gregor <dgregor@apple.com> When performing typo correction, look through the set of known
identifiers to determine good typo-correction candidates. Once we've
identified those candidates, we perform name lookup on each of them
and the consider the results.

This optimization makes typo correction > 2x faster on a benchmark
example using a single typo (NSstring) in a tiny file that includes
Cocoa.h from a precompiled header, since we are deserializing far less
information now during typo correction.

There is a semantic change here, which is interesting. The presence of
a similarly-named entity that is not visible can now affect typo
correction. This is both good (you won't get weird corrections if the
thing you wanted isn't in scope) and bad (you won't get good
corrections if there is a similarly-named-but-completely-unrelated
thing). Time will tell whether it was a good choice or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116528 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/OnDiskHashTable.h
erialization/ASTReader.h
084ff0118a8a97513e725202a9ee4b35ed78a36c 14-Oct-2010 John McCall <rjmccall@apple.com> At Fariborz's request, a somewhat cleaner bit-combining hack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116524 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b870b88df784c2940efce448ebfaf54dece14666 14-Oct-2010 John McCall <rjmccall@apple.com> At Fariborz's request, a somewhat cleaner bit-combining hack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116524 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2d0ea41b33bb439ce5abcb1fcf7f217558b03644 14-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix compiler error that clang didn't report (probably same problem as rdar://8552377).

It's more stress-free without access checking though..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0f96abb17e21846fcd309a8002c6c91f95762b48 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix compiler error that clang didn't report (probably same problem as rdar://8552377).

It's more stress-free without access checking though..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b43819e11870c7e1f9fb8572c2b62a1c446c66ae 14-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Store in PCH the key function of C++ class to avoid deserializing the complete declaration context in order to compute it.
Progress for rdar://7260160.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
36d2fd44bfeec417bbd7465218353abb8bf7e95d 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Store in PCH the key function of C++ class to avoid deserializing the complete declaration context in order to compute it.
Progress for rdar://7260160.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
eba7248ef9edc233d7e1ed89347c4cf2d5c2b89b 14-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Allow deserialization of just the fields of a record, when we want to iterate over them,
instead of deserializing the complete declaration context of the record.

Iterating over the fields of a record is very common (e.g to determine the layout), unfortunately we needlessly deserialize every declaration
that the declaration context of the record contains; this can be bad for large C++ classes that contain a lot of methods.
Fix this by allow deserialization of just the fields when we want to iterate over them.
Progress for rdar://7260160.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/ExternalASTSource.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
eb5e9986e577b1e2bff3cca5973a2494fb593fbb 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow deserialization of just the fields of a record, when we want to iterate over them,
instead of deserializing the complete declaration context of the record.

Iterating over the fields of a record is very common (e.g to determine the layout), unfortunately we needlessly deserialize every declaration
that the declaration context of the record contains; this can be bad for large C++ classes that contain a lot of methods.
Fix this by allow deserialization of just the fields when we want to iterate over them.
Progress for rdar://7260160.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/ExternalASTSource.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
1d30f193b7bbcd697a26d68697fae3585453317a 14-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Give a default implementation for ASTDeserializationListener's methods, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116506 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
336d43a368cee30549dc21a94e25fb03f887a27e 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Give a default implementation for ASTDeserializationListener's methods, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116506 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
2d602ab01fe1ee87df29961b7b1bde328c8ef6a0 14-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce command line option -error-on-deserialized-decl that is accompanied by a name
and emits an error if a declaration with this name is deserialized from PCH.

This is for testing, to make sure that we don't deserialize stuff needlessly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116505 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/PreprocessorOptions.h
3e78593b1ced32b7e0a97da044213014ee0f6f7c 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce command line option -error-on-deserialized-decl that is accompanied by a name
and emits an error if a declaration with this name is deserialized from PCH.

This is for testing, to make sure that we don't deserialize stuff needlessly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116505 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/PreprocessorOptions.h
d5af1962ea1a1d9856e69ade6e1351180fce2719 14-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce command line option -dump-deserialized-decls which is used to print the PCH decls that got deserialized, for testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116503 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/PreprocessorOptions.h
b972858068d2ea77f72a1e7b1812b196afd6be2e 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce command line option -dump-deserialized-decls which is used to print the PCH decls that got deserialized, for testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116503 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/PreprocessorOptions.h
7241e85cb216e6d122511c74cd96d98d0fd77e30 14-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Eliminate usage of ObjCSuperExpr used for
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
8ac2d449820fd0df00fcbde5bf82165c1f49854d 14-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Eliminate usage of ObjCSuperExpr used for
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
erialization/ASTBitCodes.h
f11e7f7a1d04438e9bacdcfb04a110ea01dcadee 14-Oct-2010 John McCall <rjmccall@apple.com> Compress bit fields / enums from ReferenceType, BuiltinType, FunctionType, and
ObjCObjectType into Type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116472 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
71c3673d1e3756d8ef3cbc559fcad1d0b2f18a1f 14-Oct-2010 John McCall <rjmccall@apple.com> Compress bit fields / enums from ReferenceType, BuiltinType, FunctionType, and
ObjCObjectType into Type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116472 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
8e6f2f55803397d4336538bed6f3f0972336ac9f 14-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose when a 'static' member function overrides a virtual function
in a base class. Fixes PR8168.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
a6c1e3a56afb76876cd06e3646fd7ca57a38d4bb 14-Oct-2010 Douglas Gregor <dgregor@apple.com> Diagnose when a 'static' member function overrides a virtual function
in a base class. Fixes PR8168.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
b8362891592542e17e04c727e5a3a8a0dd02a493 14-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Generalize the checking for qualification of (non-friend) class
members. Provide a hard error when the qualification doesn't match the
current class type, or a warning + Fix-it if it does match the current
class type. Fixes PR8159.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116445 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
922fff2c9ef458fc04839e45a79552513f41ec7e 14-Oct-2010 Douglas Gregor <dgregor@apple.com> Generalize the checking for qualification of (non-friend) class
members. Provide a hard error when the qualification doesn't match the
current class type, or a warning + Fix-it if it does match the current
class type. Fixes PR8159.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116445 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b7a3be5b188370142ec5ee75bb69bfa5b2f87f3c 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the use of ObjCSuperExpr in code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116436 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
6b0656a7c386662e1bec5f23a3bd0bf2687a9635 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Eliminate the use of ObjCSuperExpr in code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116436 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
435c73e3d72449bd1d8c791f14550caf38a393aa 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Update Type::BitsRemainingInType

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
43c0a4cae05cf78225d5996cf7d62d7a133d665c 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Update Type::BitsRemainingInType

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
581d2676f51f135e8a5c259cf3552f65cf321163 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> _Bool is not a keyword in C++. Fixes PR7388 and PR8349.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
3a43d8df596a0af13379c3d2a78e2f7e7b156f30 13-Oct-2010 Douglas Gregor <dgregor@apple.com> _Bool is not a keyword in C++. Fixes PR7388 and PR8349.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
db8039cddb29011414bee8cb01266e221262abf5 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Place conversion warnings for non-type template arguments under the
control of -Wconversion, and ignore them by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
171dcdb092232e5561152c334ce6d2836be33f0c 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Place conversion warnings for non-type template arguments under the
control of -Wconversion, and ignore them by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b0efb27f8928c8cdfd4b94b547ec9d87e31066cd 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a bit into Type that keeps track of whether there are any
unnamed or local types within that type. This bit is cached along with
the linkage of a type, so that it can be recomputed (e.g., when we see
that a typedef has given a name to an anonymous declaration).

Use this bit when checking C++03 [temp.arg.type]p2, so that we don't
walk template argument types repeatedly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
db4d4bb03df52920cf379797a7ff5c9900f938a6 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Introduce a bit into Type that keeps track of whether there are any
unnamed or local types within that type. This bit is cached along with
the linkage of a type, so that it can be recomputed (e.g., when we see
that a typedef has given a name to an anonymous declaration).

Use this bit when checking C++03 [temp.arg.type]p2, so that we don't
walk template argument types repeatedly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7ad91b430acfc5360cf8dad23763b69f25855ff9 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Fix a silly bug in the suppression of non-error diagnostics in a
SFINAE context, where we weren't getting the right diagnostic argument
count. I blame DiagnosticBuilder's weirdness. Fixes PR8372.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b535041ee33c5eff255832bc5541c8d52aae8254 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Fix a silly bug in the suppression of non-error diagnostics in a
SFINAE context, where we weren't getting the right diagnostic argument
count. I blame DiagnosticBuilder's weirdness. Fixes PR8372.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
e5ab6f7366103282ac9d851bd66b4a0d5e8e6819 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Compute whether a type is variably modified as we build the type,
rather than walking the type's structure every time we request this
information. Performance optimization; no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116409 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
35495eb14f22c4e96956912e23ca2a433227ad8c 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Compute whether a type is variably modified as we build the type,
rather than walking the type's structure every time we request this
information. Performance optimization; no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116409 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ema/Sema.h
f69637ac15ea0a34a1e7df28d6f7b6e908eccbce 13-Oct-2010 John McCall <rjmccall@apple.com> Support friend function declarations in local classes correctly.
Fixes a crash and diagnoses the error condition of an unqualified
friend which doesn't resolve to something. I'm still not certain how
this is useful.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116393 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
29ae6e5fb001deddd831e66faf143ecd9e50f67c 13-Oct-2010 John McCall <rjmccall@apple.com> Support friend function declarations in local classes correctly.
Fixes a crash and diagnoses the error condition of an unqualified
friend which doesn't resolve to something. I'm still not certain how
this is useful.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116393 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5e513042ca50f0c19e8fa66ced95d8043415b31c 13-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce support for emitting diagnostics (warnings + their notes)
that are suppressed during template argument deduction. This change
queues diagnostics computed during template argument deduction. Then,
if the resulting function template specialization or partial
specialization is chosen by overload resolution or partial ordering
(respectively), we will emit the queued diagnostics at that point.

This addresses most of PR6784. However, the check for unnamed/local
template arguments (which existed before this change) is still only
skin-deep, and needs to be extended to look deeper into types. It must
be improved to finish PR6784.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
ema/Sema.h
ema/TemplateDeduction.h
9b623639378d53a675921ddfa7316034d571881e 13-Oct-2010 Douglas Gregor <dgregor@apple.com> Introduce support for emitting diagnostics (warnings + their notes)
that are suppressed during template argument deduction. This change
queues diagnostics computed during template argument deduction. Then,
if the resulting function template specialization or partial
specialization is chosen by overload resolution or partial ordering
(respectively), we will emit the queued diagnostics at that point.

This addresses most of PR6784. However, the check for unnamed/local
template arguments (which existed before this change) is still only
skin-deep, and needs to be extended to look deeper into types. It must
be improved to finish PR6784.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
ema/Sema.h
ema/TemplateDeduction.h
3012d21880276c87377e9cee335f5c6a15e0000d 12-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> If we end up instantiating a function parameter whose default argument
has not yet been parsed, note that the default argument hasn't been
parsed and keep track of all of the instantiations of that function
parameter. When its default argument does get parsed, imbue the
instantiations with that default argument. Fixes PR8245.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116324 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8cfb7a39caa44797522773cf417ad9c1a6ffbc6f 12-Oct-2010 Douglas Gregor <dgregor@apple.com> If we end up instantiating a function parameter whose default argument
has not yet been parsed, note that the default argument hasn't been
parsed and keep track of all of the instantiations of that function
parameter. When its default argument does get parsed, imbue the
instantiations with that default argument. Fixes PR8245.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116324 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
d86fe478c3784909989d0a26ed7cb7f40e8168d1 12-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Parse default arguments within member functions in source order, from
Manuel Klimek! Fixes PR7715.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116311 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d54eb4410330383f48d3cc22b2ad8d23f120836b 12-Oct-2010 Douglas Gregor <dgregor@apple.com> Parse default arguments within member functions in source order, from
Manuel Klimek! Fixes PR7715.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116311 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bbe88fcc15e071148c2a56d554d4f1f0ddcf0a53 12-Oct-2010 Chris Lattner <sabre@nondot.org> fix the definition of __builtin_constant_p, the first arg isn't a short.
Patch by the "pax team"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
12e9c6db87d58bfe23197e358864218624e27f41 12-Oct-2010 Chris Lattner <sabre@nondot.org> fix the definition of __builtin_constant_p, the first arg isn't a short.
Patch by the "pax team"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
e623a9ee0ecf0983949e4b627d4221e303dce876 12-Oct-2010 John McCall <rjmccall@apple.com> Progress.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2cd11fefb62c580651e4269e1488381c2d6d07ad 12-Oct-2010 John McCall <rjmccall@apple.com> Progress.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
708b5b01a614e256fb0a9c50d0b1d31f138cf2d4 12-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> When we load an ASTUnit from command-line arguments, hold on to the
diagnostics produced by the driver itself. Previously, we were
allowing these to either be dropped or to slip through to stderr.

Fixes <rdar://problem/7595339>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116285 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
4cd912aa94656697a44c3ebb159f05060300524e 12-Oct-2010 Douglas Gregor <dgregor@apple.com> When we load an ASTUnit from command-line arguments, hold on to the
diagnostics produced by the driver itself. Previously, we were
allowing these to either be dropped or to slip through to stderr.

Fixes <rdar://problem/7595339>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116285 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
13e47eecb1470d59e399952280e68c16e302c75d 12-Oct-2010 John McCall <rjmccall@apple.com> Add some infrastructure for dealing with expressions of 'placeholder' type,
i.e. expressions with an internally-convenient type which should not be
appearing in generally valid, complete ASTs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
2a984cad5ac3fdceeff2bd99daa7b90979313475 12-Oct-2010 John McCall <rjmccall@apple.com> Add some infrastructure for dealing with expressions of 'placeholder' type,
i.e. expressions with an internally-convenient type which should not be
appearing in generally valid, complete ASTs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
98002be420a4fe9548d7dcc48527ce76716d7021 12-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Remove a useless warning about missing runtime libraries. These
are almost never needed, so the warning isn't very useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
362ed7052071245c6c1b15d59c1973f8c80b0b2a 12-Oct-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Remove a useless warning about missing runtime libraries. These
are almost never needed, so the warning isn't very useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
2c3a26e07309d71be7686e744191fa77fb1fe468 12-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the (de-)serialization of code completion results, now that
libclang does not support out-of-process code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116253 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
a9f4f620daf073805b89e893afcdc5eb7a9bdc50 12-Oct-2010 Douglas Gregor <dgregor@apple.com> Eliminate the (de-)serialization of code completion results, now that
libclang does not support out-of-process code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116253 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
4b8b94dd61d94ab477667c57b4e5222a09336f08 12-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate -fdiagnostics-binary and all of the infrastructure for
emitting diagnostics in a binary form to be consumed by libclang,
since libclang no longer does any of its work out-of-process, making
this code dead. Besides, this stuff never worked at 100% anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
d3ab63e0f66429abf2a3e4cde889e420e41e8790 12-Oct-2010 Douglas Gregor <dgregor@apple.com> Eliminate -fdiagnostics-binary and all of the infrastructure for
emitting diagnostics in a binary form to be consumed by libclang,
since libclang no longer does any of its work out-of-process, making
this code dead. Besides, this stuff never worked at 100% anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
0c9397b58fe69d34f3111c8ffdd450b061eab8f6 11-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Switch c-index-test from clang_codeComplete() over to
clang_codeCompleteAt(). This uncovered a few issues with the latter:

- ASTUnit wasn't saving/restoring diagnostic state appropriately between
reparses and code completions.
- "Overload" completions weren't being passed through to the client



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116241 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
32be4a588fbb87d0d163ead49c42f5438bf0b2b7 11-Oct-2010 Douglas Gregor <dgregor@apple.com> Switch c-index-test from clang_codeComplete() over to
clang_codeCompleteAt(). This uncovered a few issues with the latter:

- ASTUnit wasn't saving/restoring diagnostic state appropriately between
reparses and code completions.
- "Overload" completions weren't being passed through to the client



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116241 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
dd312b31f9f1cc912df819cba0dd2b11d3f87879 11-Oct-2010 Francois Pichet <pichet2000@gmail.com> Add parsing support for Microsoft attributes. MS attributes will just be skipped and not inserted into the AST for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116203 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
334d47e92e9f241576fdeb7477b69a03136ba854 11-Oct-2010 Francois Pichet <pichet2000@gmail.com> Add parsing support for Microsoft attributes. MS attributes will just be skipped and not inserted into the AST for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116203 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bfc3e4cea94b98fd5b05a63f1d8ea4eb4ff99197 11-Oct-2010 Francois Pichet <pichet2000@gmail.com> Add 2 Microsoft compiler intrinsics that don't require prototypes:
__assume
__noop

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116202 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b2419466892e5445fec6ce30f97784ae8b99f134 11-Oct-2010 Francois Pichet <pichet2000@gmail.com> Add 2 Microsoft compiler intrinsics that don't require prototypes:
__assume
__noop

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116202 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
75e0b8e039854095621567470b9c847b27cd9b51 11-Oct-2010 Axel Naumann <Axel.Naumann@cern.ch> Declare argv parameters as const char* const* instead of to char** to clarify that they are not modified, and to allow for string literals as arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116200 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptTable.h
rontend/CompilerInvocation.h
9d520c5ae802fc175c61032b289ddd6968e6ddd2 11-Oct-2010 Axel Naumann <Axel.Naumann@cern.ch> Declare argv parameters as const char* const* instead of to char** to clarify that they are not modified, and to allow for string literals as arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116200 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptTable.h
rontend/CompilerInvocation.h
fdb96458f6712b119e3d2a92df7a8e6221f5c012 11-Oct-2010 Axel Naumann <Axel.Naumann@cern.ch> Tighten up constness of argv parameters to allow for string literals as argumants and to reflect actual (non-modifying) use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116199 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
7d0c4ccd65b4549283c55e4923602e234f3811c5 11-Oct-2010 Axel Naumann <Axel.Naumann@cern.ch> Tighten up constness of argv parameters to allow for string literals as argumants and to reflect actual (non-modifying) use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116199 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
f6d9c70dad1e3e2f68bc39a496ff18c5fa82229d 10-Oct-2010 Chris Lattner <sabre@nondot.org> fix PR8217, a silent miscompilation of invalid code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
16c5dea6c2d3e4cf529de9d9b37f6a40441acb2c 10-Oct-2010 Chris Lattner <sabre@nondot.org> fix PR8217, a silent miscompilation of invalid code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
542fd21af294934cdc7135f0ef4e57c4b554f460 09-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Don't rely on a StringRef being null-terminated (it's not) for deprecation messages.
Store pointer and length of the message in DelayedDiagnostic and hide the gory union details.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116153 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ce2d186a421526e94d9e417ced141ae6c891cf48 09-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Don't rely on a StringRef being null-terminated (it's not) for deprecation messages.
Store pointer and length of the message in DelayedDiagnostic and hide the gory union details.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116153 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
90205eb6e89e394165077b3b11a28b5939b571dc 09-Oct-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed __builtin_constant_p return type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116145 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
83a1c5c8996a68d9be4e54de27565ce037785df1 09-Oct-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed __builtin_constant_p return type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116145 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
df8e391abb083ea901108528cbd505980dccf695 09-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
bit by me).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
1274ccd90aec0b205fc838c3d504821ccfb55482 09-Oct-2010 Douglas Gregor <dgregor@apple.com> Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
bit by me).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
6479c5ffc1243ff87b9eeaf4b76f74ca9837e15e 08-Oct-2010 Zonr Chang <zonr@google.com> Include files in include/clang/Basic/Attr.td don't need to be modified from now on.
asic/Attr.td
da6e31859c8cf689235f63a2a5d71a2c62be8e53 08-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> When we encounter a '==' in a context expecting a '=', assume the user made a typo:

t.c:1:7: error: invalid '==' at end of declaration; did you mean '='?
int x == 0;
^~
=

Implements rdar://8488464.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116035 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
a6eb5f81d13bacac01faff70a947047725b4413f 08-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> When we encounter a '==' in a context expecting a '=', assume the user made a typo:

t.c:1:7: error: invalid '==' at end of declaration; did you mean '='?
int x == 0;
^~
=

Implements rdar://8488464.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116035 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
5a037ddb6945de3984afe3d0b14ae7cd71c75430 08-Oct-2010 John McCall <rjmccall@apple.com> Track the location of the context requiring an implicit conversion and use it
to white-list conversions required by system headers. rdar://problem/8232669



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116029 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
b4eb64d8426c0eaa58d398961e0e74ff85063d7c 08-Oct-2010 John McCall <rjmccall@apple.com> Track the location of the context requiring an implicit conversion and use it
to white-list conversions required by system headers. rdar://problem/8232669



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116029 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5775b4da486d47faac404597c46705ad007a3fb3 08-Oct-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Implement -fshort-enums (rdar://8490496).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
9a2b9d794bdf349b517ff799170f4409f45d147c 08-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -fshort-enums (rdar://8490496).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
6505cf576a0c7d347a60758420d8d0e341a30086 07-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch for adding message to unavailable attribute.
And its documentation.
Finishes off // rdar: // 6734520.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115862 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
c784dc1caf0df288a383700f7b57772103b3adab 07-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Patch for adding message to unavailable attribute.
And its documentation.
Finishes off // rdar: // 6734520.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115862 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
d3f30b30e27d2e7ec55aa9c9127a90d41434feaf 06-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Add message to attribute(deprecated).
attribute(unavailable) to do next.
// rdar:// 6734520.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115842 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/DelayedDiagnostic.h
ema/Sema.h
c4b35cfdb977f6427fe0d5725bf104e1b425d72e 06-Oct-2010 Fariborz Jahanian <fjahanian@apple.com> Add message to attribute(deprecated).
attribute(unavailable) to do next.
// rdar:// 6734520.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115842 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
asic/DiagnosticSemaKinds.td
ema/DelayedDiagnostic.h
ema/Sema.h
df45c23a0a56459d8953de0602a36286abc182aa 06-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Reject the allocation of variably-modified types in C++ 'new'
expressions. Fixes PR8209 in the narrowest way possible. I'm still
considering whether I want to implement the extension that permits the
use of VLA types in a 'new' expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a0750768718bb5d05150641b5bba74847a21bc09 06-Oct-2010 Douglas Gregor <dgregor@apple.com> Reject the allocation of variably-modified types in C++ 'new'
expressions. Fixes PR8209 in the narrowest way possible. I'm still
considering whether I want to implement the extension that permits the
use of VLA types in a 'new' expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3ddf19e02a3c785afd01b517ca5a6be5ef875b88 06-Oct-2010 Francois Pichet <pichet2000@gmail.com> _inline is an alias for inline in MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
229ca4a04cd1f94ca5ce907638c699fd024a6347 06-Oct-2010 Francois Pichet <pichet2000@gmail.com> _inline is an alias for inline in MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
78cbead8031bc1e01a6734468e58dff1733159b7 06-Oct-2010 Nico Weber <nicolasweber@gmx.de> Add support for 4-byte UCNs like \U12345678. Warn about UCNs in c90 mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
a0f15b0848405ae16d63bd5d78c862a6526b338a 06-Oct-2010 Nico Weber <nicolasweber@gmx.de> Add support for 4-byte UCNs like \U12345678. Warn about UCNs in c90 mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
d4ec6719c325f215119826a8770b2459bb8e828f 06-Oct-2010 John McCall <rjmccall@apple.com> Provide a slightly specialized diagnostic for tautological comparisons
of an enum value.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
372e103dab4239ec52b65b9eda69fd43c0b348d4 06-Oct-2010 John McCall <rjmccall@apple.com> Provide a slightly specialized diagnostic for tautological comparisons
of an enum value.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
14b135ed28e79e44f1e3237209d24cac3af9e91b 06-Oct-2010 John McCall <rjmccall@apple.com> Use a more conventional/efficient implementation for isEnumeralType()
and isBuiltinType().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3ff83dd534ccc828203670ce3f5125a4eb4199f8 06-Oct-2010 John McCall <rjmccall@apple.com> Use a more conventional/efficient implementation for isEnumeralType()
and isBuiltinType().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ede69352f84b6dcbd643be99c036ed1df1827333 05-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Give every file that ASTReader loads a type: module, PCH, precompiled preamble or main file. Base Decls' PCHLevel on this to make it more sane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115626 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
erialization/ASTReader.h
1d9f1fe7173e3084325f43c78af812a36d8a2a7c 05-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Give every file that ASTReader loads a type: module, PCH, precompiled preamble or main file. Base Decls' PCHLevel on this to make it more sane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115626 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
erialization/ASTReader.h
c4b6d1b78d5bd753e4fb252354462299fe6cd7d7 05-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Thread PerFileData through the ASTReader again, this time with the LLVM changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115625 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
c3632730cc83ed7b51f0ab5c38997ae5a9439b0c 05-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Thread PerFileData through the ASTReader again, this time with the LLVM changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115625 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
5155f7f9b875f422a7cc25d9d66b12c3492a22df 05-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Register the __builtin_va_list_type node when we parse it, rather than
waiting until we think we need it: we didn't catch all of the places
where we actually needed it, and we probably wouldn't ever. Fixes a
C++ PCH crasher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
ema/Sema.h
4a1bb8c4d708d5594e62c9ec7e25e273cae8a1ed 05-Oct-2010 Douglas Gregor <dgregor@apple.com> Register the __builtin_va_list_type node when we parse it, rather than
waiting until we think we need it: we didn't catch all of the places
where we actually needed it, and we probably wouldn't ever. Fixes a
C++ PCH crasher.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
ema/Sema.h
f2132ecf6389e72d23742103303e8f89bfd7dc4c 05-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added support for base and member destructors in destructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115592 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
7c625d8ffc20b92fff9e1690cd2484fcb6498183 05-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added support for base and member destructors in destructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115592 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
0c96a062ccfa67c646bb7d19d90fe43670aaec5c 04-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added support for C++ initializers in CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
82bc3fd823d85ee3ef9a641c0975b6ad25f55047 04-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added support for C++ initializers in CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
1297519aa63b7bd545c0561304aaf54b3648b14e 03-Oct-2010 Chris Lattner <sabre@nondot.org> Change to match 115473.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
374677ce3f4b09678c711b8ce4e7722a0898f048 03-Oct-2010 Chris Lattner <sabre@nondot.org> Change to match 115473.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
8a5f0a71d1ed5488a15dfdd0b3e06f317cc151bb 02-Oct-2010 Chris Lattner <sabre@nondot.org> the mmx intrinsic for pshufw should map to the IR intrinsic, not
to a shufflevector. Otherwise it doesn't turn into a pshufw.
This bug was introduced in the mmx rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115423 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
69993392d2e9e0560a184e65bdbe64527de3046f 02-Oct-2010 Chris Lattner <sabre@nondot.org> the mmx intrinsic for pshufw should map to the IR intrinsic, not
to a shufflevector. Otherwise it doesn't turn into a pshufw.
This bug was introduced in the mmx rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115423 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
883e084ba4d2e295b8ee514da32de0b6fc214599 02-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> When we insert a category (or class extension) into an interface, mark
the interface as having changed since it was originally
serialized. This ensures that we see class extensions/categories in
chained PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115421 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5e9888c2786bfffa6879a08ff40f5a11545eec23 02-Oct-2010 Douglas Gregor <dgregor@apple.com> When we insert a category (or class extension) into an interface, mark
the interface as having changed since it was originally
serialized. This ensures that we see class extensions/categories in
chained PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115421 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a7ec0ba3eb635ca4d3ab134e974304e2eef0ce02 02-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Implement chained PCH support for the macro definitions stored within
the "detailed" preprocessing record.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115417 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
77424bc3794f569816dba52e423b57486a98e5ba 02-Oct-2010 Douglas Gregor <dgregor@apple.com> Implement chained PCH support for the macro definitions stored within
the "detailed" preprocessing record.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115417 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
7fc77a62f0ce5557946ef7bb552297571c26dcf3 02-Oct-2010 Anders Carlsson <andersca@mac.com> Use ParseObjCSelectorPiece for parsing getter and setter names in @property declarations. Fixes PR8169.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
42499be29b620d2eae34beb0f4d0f9da5a9584da 02-Oct-2010 Anders Carlsson <andersca@mac.com> Use ParseObjCSelectorPiece for parsing getter and setter names in @property declarations. Fixes PR8169.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
dac1e18dbd52db48af6a22074eaaccb91e640582 02-Oct-2010 Chris Lattner <sabre@nondot.org> kill off CheckX86BuiltinFunctionCall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115382 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
57a4087b349702062cd7c93735106270964be0d5 02-Oct-2010 Chris Lattner <sabre@nondot.org> kill off CheckX86BuiltinFunctionCall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115382 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c23313b4f417481cb24fc5286841bb8e62f82b0d 02-Oct-2010 Chris Lattner <sabre@nondot.org> move imperative code to declarative definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b803c66ae4deedfdc62ad63c1d2ed9e2616529b5 02-Oct-2010 Chris Lattner <sabre@nondot.org> move imperative code to declarative definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
22d14e8ce25f73ad06931bbff0213882249829a3 02-Oct-2010 Chris Lattner <sabre@nondot.org> enhance ASTContext::GetBuiltinType to return a bitmask indicating which arguments
are required to be ICE's. No clients of this new functionality yet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
14e0e7436cf6650a72052baea1f8ebe644cef489 02-Oct-2010 Chris Lattner <sabre@nondot.org> enhance ASTContext::GetBuiltinType to return a bitmask indicating which arguments
are required to be ICE's. No clients of this new functionality yet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
aa36ba1eced17c88538ecd7aa24ed7b984f24330 01-Oct-2010 Francois Pichet <pichet2000@gmail.com> Better diagnostic for superfluous scope specifier inside a class definition for member functions. + Fixit.

Example:
class A {
void A::foo(); //warning: extra qualification on member 'foo'
};


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c71d8eb6592ae3ef498fc57db3563d1dfae48dff 01-Oct-2010 Francois Pichet <pichet2000@gmail.com> Better diagnostic for superfluous scope specifier inside a class definition for member functions. + Fixit.

Example:
class A {
void A::foo(); //warning: extra qualification on member 'foo'
};


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ee01aab5a30071b665fdb540a15010d5fc412fbe 01-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Revert r115336 ("Thread PerFileData through everything."), because
we're missing the corresponding changes in the LLVM repository.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115340 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
b1a7d9a21bcfc295d1d899a42c0d14d617058c29 01-Oct-2010 Douglas Gregor <dgregor@apple.com> Revert r115336 ("Thread PerFileData through everything."), because
we're missing the corresponding changes in the LLVM repository.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115340 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
527da7f067bb9cda02778ca440812859e1ca2ae7 01-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Thread PerFileData through everything. This allows us to remap stuff later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115336 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
dc928191a33be17f3b921c0616e6463312f439db 01-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Thread PerFileData through everything. This allows us to remap stuff later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115336 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
b136efcba2d5dc7fbe0bd0b334b5bc2c689eaf89 01-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Record module loaders and module source order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115334 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
a866e652875c61f09ac29c2f44009ce9f2a25cf2 01-Oct-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Record module loaders and module source order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115334 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
0c44dc7b280e169e50be910abc1b2c44fc8d035b 01-Oct-2010 Chris Lattner <sabre@nondot.org> fix a bogus "I" that I added to the per-function attribute list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ae8f9fa5337236e7882bce0bba09bddc521b658c 01-Oct-2010 Chris Lattner <sabre@nondot.org> fix a bogus "I" that I added to the per-function attribute list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b5288692a4e585568459261b8aa1ab5aa1aff524 01-Oct-2010 Douglas Gregor <doug.gregor@gmail.com> Implement the C++0x "trailing return type" feature, e.g.,

auto f(int) -> int

from Daniel Wallin!

(With a few minor bug fixes from me).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/DeclSpec.h
dab60ad68a3a98d687305941a3852e793705f945 01-Oct-2010 Douglas Gregor <dgregor@apple.com> Implement the C++0x "trailing return type" feature, e.g.,

auto f(int) -> int

from Daniel Wallin!

(With a few minor bug fixes from me).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/DeclSpec.h
968488bc2b43e040122e0a074daf1e078d9b8f8a 01-Oct-2010 Chris Lattner <sabre@nondot.org> Various builtins a require an integer constant. Not providing
one results in an obscure error from the backend that doesn't make
sense. Capture this information in the .def files for builtins with
a new "I" modifier letter indicating the an argument needs to be an ICE.

Nothing uses this yet, but sema will eventually enforce this (eliminating
some special cases from semachecking.cpp) and codegen will use this to
force an ICE value, preventing backend error messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/BuiltinsX86.def
393bd8e185692a451b2ba16bdfc9e7d3543b4217 01-Oct-2010 Chris Lattner <sabre@nondot.org> Various builtins a require an integer constant. Not providing
one results in an obscure error from the backend that doesn't make
sense. Capture this information in the .def files for builtins with
a new "I" modifier letter indicating the an argument needs to be an ICE.

Nothing uses this yet, but sema will eventually enforce this (eliminating
some special cases from semachecking.cpp) and codegen will use this to
force an ICE value, preventing backend error messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/BuiltinsX86.def
971b75de8647f4bbce6b7580899eb0e222453409 01-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added methods for inserting CFGAutomaticObjDtors to CFGBlocks,
Fixed some misspells in comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115236 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
53de134e7b4686eed40bc031438d8a4560a2cda4 01-Oct-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added methods for inserting CFGAutomaticObjDtors to CFGBlocks,
Fixed some misspells in comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115236 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
20bbddf97ff0fbaa171310567b9bee78155d50f9 30-Sep-2010 Devang Patel <dpatel@apple.com> Introduce -flimit-debug-info.
In this experimental mode try avoiding debug info emission for classes as much as possible. The goal is to reduce size of produced debuginfo without reducing quality of debug info in general. This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115188 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
c69e1cf04323f2e786d40e8a5ba84e77ee1c6827 30-Sep-2010 Devang Patel <dpatel@apple.com> Introduce -flimit-debug-info.
In this experimental mode try avoiding debug info emission for classes as much as possible. The goal is to reduce size of produced debuginfo without reducing quality of debug info in general. This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115188 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
cc2be05b3c5d4e654fb9e3fe67625f46c6da9480 30-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Driver: Ignore the found PCH file if its '-include' is not the first one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
990142a23e41392ef7c0f14db4c0fcac67311cdf 30-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Driver: Ignore the found PCH file if its '-include' is not the first one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
6629b7e6af6beb90d8838d8af24cccb02f67aa56 30-Sep-2010 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115148 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
138d6a6890c171068ac60430431eaadb3fcef9ab 30-Sep-2010 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115148 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
809f4dbe78085c5fbebd490877ac17d7dc8316f5 30-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added two new command line arguments:
-cfg-add-implicit-dtors - sets CFG::BuildOptions::AddImplicitDtors for AnalysisCosumer to true,
-cfg-add-initializers - sets CFG::BuildOptions::AddInitializers for AnalysisCosumer to true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115142 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalyzerOptions.h
9121ba232903ebe61e7bbe14ca294cf0f07dfa96 30-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added two new command line arguments:
-cfg-add-implicit-dtors - sets CFG::BuildOptions::AddImplicitDtors for AnalysisCosumer to true,
-cfg-add-initializers - sets CFG::BuildOptions::AddInitializers for AnalysisCosumer to true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115142 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalyzerOptions.h
8940a8478f514a24fcf480a4c52f5886e545c0c3 30-Sep-2010 Ted Kremenek <kremenek@apple.com> Change CheckerVisitor so that [Pre,Post]VisitCallExpr only handles CallExprs for simple C functions, not
all CallExprs (including CXXMemberCallExpr, etc.). Now the generic handler for all CallExprs is [Pre,Post]VisitGenericCallExpr.

Also add [Pre,Post]Visit hooks for CXXMemberCallExpr.

Change GRExprEngine::VisitCXXMemberCallExpr() to do pre/post checker visits of the call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115119 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
3fc1f8239ea0671fcf707a80473de05b4392a58e 30-Sep-2010 Ted Kremenek <kremenek@apple.com> Change CheckerVisitor so that [Pre,Post]VisitCallExpr only handles CallExprs for simple C functions, not
all CallExprs (including CXXMemberCallExpr, etc.). Now the generic handler for all CallExprs is [Pre,Post]VisitGenericCallExpr.

Also add [Pre,Post]Visit hooks for CXXMemberCallExpr.

Change GRExprEngine::VisitCXXMemberCallExpr() to do pre/post checker visits of the call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115119 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
70331cc565257d7959a68e168e2b820c15b690ef 30-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make the FileID import map key on FileID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
535a3e20104461c136654d59fb833ae80644ae79 30-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make the FileID import map key on FileID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
c4d9baf786a56fe3340f6a6e24d8b944efb06662 30-Sep-2010 Tom Care <tcare@apple.com> Change -analyzer-max-nodes to allow 0 as a parameter. This allows the analyzer to completely analyze a worklist regardless of time taken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115108 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
cf9ce13774dad86f780d84cd41e6bd64c039324a 30-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Change -analyzer-max-nodes to allow 0 as a parameter. This allows the analyzer to completely analyze a worklist regardless of time taken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115108 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
11945cdd26880b4a5d32137f1e1deda568583414 30-Sep-2010 Devang Patel <dpatel@apple.com> ImplicitParamDecl is always implicit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
638bb114199590534d684585155807f0a4cfcd3d 30-Sep-2010 Devang Patel <dpatel@apple.com> ImplicitParamDecl is always implicit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
129d24edef6c3a5e873bdf4c4def760f97426549 29-Sep-2010 Daniel Dunbar <daniel@zuster.org> Basic: Simplify getClangRepositoryPath and getClangRevision.

- I don't like returning StringRef's ever, unless it is actually important for
performance, which it isn't here.

- Also, stop validating getClangRevision to be an integer, I don't see a good
reason to do this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
16a8fb7e9dd4a0347f7ed676e2d9bd254e1ea5b0 29-Sep-2010 Daniel Dunbar <daniel@zuster.org> Basic: Simplify getClangRepositoryPath and getClangRevision.

- I don't like returning StringRef's ever, unless it is actually important for
performance, which it isn't here.

- Also, stop validating getClangRevision to be an integer, I don't see a good
reason to do this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
27933bf89fd147c770a03315b7ceeceaf6e5b76f 29-Sep-2010 Daniel Dunbar <daniel@zuster.org> Add support for attribute((naked)), patch by Zoxc on cfe-commits!
- Minor style tweaks by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
dd0cb22bd62e1e835327f478a2dbf0b8fa439713 29-Sep-2010 Daniel Dunbar <daniel@zuster.org> Add support for attribute((naked)), patch by Zoxc on cfe-commits!
- Minor style tweaks by me.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
ema/AttributeList.h
4044c38752efedec8ecd749b059b693c894a39e2 29-Sep-2010 Daniel Dunbar <daniel@zuster.org> Basic: Add support for git svn to get the repo version in clang executable,
patch by Jonathan Mulder!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
640cf37c9432031412a9d3b8c2abcdff4f7f0e97 29-Sep-2010 Daniel Dunbar <daniel@zuster.org> Basic: Add support for git svn to get the repo version in clang executable,
patch by Jonathan Mulder!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
1c0131e5b7914bfd65abf07004f07c5881591fdc 29-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Move the management of the set of conversion functions in a C++ class
into CXXRecordDecl. The only part that we do not handle this way are
using declarations, since that would require extra name lookup that we
don't currently want to pay for. This fixes <rdar://problem/8459981>,
so that LLDB can build a CXXRecordDecl and magically get all of the
right bits set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115026 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e80622fd48261b6e5c7e6629dcfee2f76b124487 29-Sep-2010 Douglas Gregor <dgregor@apple.com> Move the management of the set of conversion functions in a C++ class
into CXXRecordDecl. The only part that we do not handle this way are
using declarations, since that would require extra name lookup that we
don't currently want to pay for. This fixes <rdar://problem/8459981>,
so that LLDB can build a CXXRecordDecl and magically get all of the
right bits set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115026 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
423636009aa13579999ea436e48e0f04ec77338b 29-Sep-2010 Craig Silverstein <csilvers2000@yahoo.com> Visit the type information for CXXUnresolvedConstructExpr, just like
we do for the similar CXXTemporaryObjectExpr. OKed by chandlerc and
wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115025 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ac45ad57f0641b0d556ca27d19a59930925d6add 29-Sep-2010 Craig Silverstein <csilvers2000@yahoo.com> Visit the type information for CXXUnresolvedConstructExpr, just like
we do for the similar CXXTemporaryObjectExpr. OKed by chandlerc and
wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115025 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
62ad8842288762f483eba3af9e9956e3444b281e 29-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Move the maintenance of CXXRecordDecl::DefinitionData's Abstract bit
completely into CXXRecordDecl, by adding a new completeDefinition()
function. This required a little reshuffling of the final-overrider
checking code, since the "abstract" calculation in the presence of
abstract base classes needs to occur in
CXXRecordDecl::completeDefinition() but we don't want to compute final
overriders more than one in the common case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
7a39dd01edc43aa5f058e7259a39737fc1f43792 29-Sep-2010 Douglas Gregor <dgregor@apple.com> Move the maintenance of CXXRecordDecl::DefinitionData's Abstract bit
completely into CXXRecordDecl, by adding a new completeDefinition()
function. This required a little reshuffling of the final-overrider
checking code, since the "abstract" calculation in the presence of
abstract base classes needs to occur in
CXXRecordDecl::completeDefinition() but we don't want to compute final
overriders more than one in the common case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
f48dc0e6de265a849c4ef938ba6666b679c9e0b6 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Teach FunctionDecl::setPure() to (indirectly) mark the Abstract bit in
CXXRecordDecl::DefinitionData, rather than having Sema mark the bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
2138664dd2cff39de52ff11ca35f653c20b2e4b0 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Teach FunctionDecl::setPure() to (indirectly) mark the Abstract bit in
CXXRecordDecl::DefinitionData, rather than having Sema mark the bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
88a8e683b56be0b9629d7c58d0d5423058132a57 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Reinstate r114925 and r114929, both steps toward
<rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
85606ebf3dd1b5dd81a59ef25b5ad47627664774 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Reinstate r114925 and r114929, both steps toward
<rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
322b648bf29f1f9f92be9bb00a5570fd3a3649b5 28-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> vla expressions used in __typeof__ must be evaluated.
Fixes rdar://8476159.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
c5be7b0fc804d8e6f87298ec03c94d8cccd74f29 28-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> vla expressions used in __typeof__ must be evaluated.
Fixes rdar://8476159.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Sema.h
13a6750d53b50870295e599cee062c3c299e5b55 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the management of CXXRecordDecl::DefinitionData's Empty bit
in CXXRecordDecl itself. Yes, this is also part of <rdar://problem/8459981>.

This reinstates r114924, with one crucial bug fix: we were ignoring
the implicit fields created by anonymous structs/unions when updating
the bits in CXXRecordDecl, which means that a class/struct containing
only an anonymous class/struct would be considered "empty". Hilarity
follows.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2cf9d656f6283f2a8be0549da110d7cfbb1ea4b2 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the management of CXXRecordDecl::DefinitionData's Empty bit
in CXXRecordDecl itself. Yes, this is also part of <rdar://problem/8459981>.

This reinstates r114924, with one crucial bug fix: we were ignoring
the implicit fields created by anonymous structs/unions when updating
the bits in CXXRecordDecl, which means that a class/struct containing
only an anonymous class/struct would be considered "empty". Hilarity
follows.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e2651962fb1cd59f2f63e5757b409a46a34b304b 28-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Follow-up to r114978, used wrong tag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114979 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
b3737e4fcddbf1c3126eb853c0e3b366b35ceaba 28-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Follow-up to r114978, used wrong tag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114979 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
a96b2852af2b6c4bdf696d890401673c7d503771 28-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Move ExternalSemaSource::ReadMethodPool's implementation to Sema.cpp so that the header can get away with forward declarations only for ObjCMethodList and Selector. Fixes <rdar://8467631>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114978 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
8c84571f3e262569ba51d107db7ab31a23de79b3 28-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Move ExternalSemaSource::ReadMethodPool's implementation to Sema.cpp so that the header can get away with forward declarations only for ObjCMethodList and Selector. Fixes <rdar://8467631>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114978 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ExternalSemaSource.h
a420ef387d84290854387e4735a3ca3ab13aa562 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Reinstate r114921, which I've exonerated via a self-host build.

Centralize the management of CXXRecordDecl::DefinitionData's Aggregate
and PlainOldData bits in CXXRecordDecl itself. Another milepost on the
road toward <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9fe183ae1ec568716501f861235afecebee8cd45 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Reinstate r114921, which I've exonerated via a self-host build.

Centralize the management of CXXRecordDecl::DefinitionData's Aggregate
and PlainOldData bits in CXXRecordDecl itself. Another milepost on the
road toward <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8cfc0311e19291b2d33a434fb1ce78ce7e69974c 28-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Don't warn for an unused label if it has 'unused' attribute. Fixes rdar://8483139.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
1a18600b85aaa691122983dd8dcf4225cfc9ef68 28-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't warn for an unused label if it has 'unused' attribute. Fixes rdar://8483139.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
ema/Sema.h
99c210e3c34130c08b1ce86ffc2b594a087cb354 28-Sep-2010 Bill Wendling <isanbard@gmail.com> Temporarily revert 114929 114925 114924 114921. It looked like they (or at least
one of them) was causing a series of failures:

http://google1.osuosl.org:8011/builders/clang-x86_64-darwin10-selfhost/builds/4518

svn merge -c -114929 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114929 into '.':
U include/clang/Sema/Sema.h
U include/clang/AST/DeclCXX.h
U lib/Sema/SemaDeclCXX.cpp
U lib/Sema/SemaTemplateInstantiateDecl.cpp
U lib/Sema/SemaDecl.cpp
U lib/Sema/SemaTemplateInstantiate.cpp
U lib/AST/DeclCXX.cpp
svn merge -c -114925 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114925 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/AST/DeclCXX.cpp
svn merge -c -114924 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114924 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/Sema/SemaDecl.cpp
G lib/AST/DeclCXX.cpp
U lib/AST/ASTContext.cpp
svn merge -c -114921 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114921 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/Sema/SemaDecl.cpp
G lib/AST/DeclCXX.cpp



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
2a674e8e443b7a3e77957078248fb52b3b1ec321 28-Sep-2010 Bill Wendling <isanbard@gmail.com> Temporarily revert 114929 114925 114924 114921. It looked like they (or at least
one of them) was causing a series of failures:

http://google1.osuosl.org:8011/builders/clang-x86_64-darwin10-selfhost/builds/4518

svn merge -c -114929 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114929 into '.':
U include/clang/Sema/Sema.h
U include/clang/AST/DeclCXX.h
U lib/Sema/SemaDeclCXX.cpp
U lib/Sema/SemaTemplateInstantiateDecl.cpp
U lib/Sema/SemaDecl.cpp
U lib/Sema/SemaTemplateInstantiate.cpp
U lib/AST/DeclCXX.cpp
svn merge -c -114925 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114925 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/AST/DeclCXX.cpp
svn merge -c -114924 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114924 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/Sema/SemaDecl.cpp
G lib/AST/DeclCXX.cpp
U lib/AST/ASTContext.cpp
svn merge -c -114921 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114921 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/Sema/SemaDecl.cpp
G lib/AST/DeclCXX.cpp



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
36da5c4ee51506f0c0a95008872e281a373498e1 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the management of CXXRecordDecl::DefinitionData's
HasTrivialConstructor, HasTrivialCopyConstructor,
HasTrivialCopyAssignment, and HasTrivialDestructor bits in
CXXRecordDecl's methods. This completes all but the Abstract bit and
the set of conversion functions, both of which will require a bit of
extra work. The majority of <rdar://problem/8459981> is now
implemented (but not all of it).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
e10288c1e9e06dbd715f47bfaa22ce5d65fdf096 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the management of CXXRecordDecl::DefinitionData's
HasTrivialConstructor, HasTrivialCopyConstructor,
HasTrivialCopyAssignment, and HasTrivialDestructor bits in
CXXRecordDecl's methods. This completes all but the Abstract bit and
the set of conversion functions, both of which will require a bit of
extra work. The majority of <rdar://problem/8459981> is now
implemented (but not all of it).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ema/Sema.h
cbd60a6b8b2a296e3a68b92a8398a4dedcfc950d 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the management of CXXRecordDecl::DefinitionData's
Polymorphic bit in CXXRecordDecl itself. Yes, this is also part of
<rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
4a74df5901330c577d0a30d052338d06bbf9e279 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the management of CXXRecordDecl::DefinitionData's
Polymorphic bit in CXXRecordDecl itself. Yes, this is also part of
<rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
921255c54a74568ce4cf22e2ad0be6f2d8a40efc 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the management of CXXRecordDecl::DefinitionData's Empty bit
in CXXRecordDecl itself. Yes, this is also part of <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cdbfa6c4113411debfed9ffec2a45bd50b13e10f 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the management of CXXRecordDecl::DefinitionData's Empty bit
in CXXRecordDecl itself. Yes, this is also part of <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
af80314a085ba7ee3ca18ca97e75806c87adef02 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the management of CXXRecordDecl::DefinitionData's Aggregate
and PlainOldData bits in CXXRecordDecl itself. Another milepost on the
road toward <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6e3c7713ca126c76053cc092670a949a5e15ddaf 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the management of CXXRecordDecl::DefinitionData's Aggregate
and PlainOldData bits in CXXRecordDecl itself. Another milepost on the
road toward <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cb807137848e8b6585f1d58ebfe53729131d9afa 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the handling of CXXRecordDecl::DefinitionData's
DeclaredDestructor and UserDeclaredDestructor bits in CXXRecordDecl
itself. Another step on the road to <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0ed2e0823cc7b727abd9307db4cd887f293eebe2 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the handling of CXXRecordDecl::DefinitionData's
DeclaredDestructor and UserDeclaredDestructor bits in CXXRecordDecl
itself. Another step on the road to <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d01c4c7e227fce7200b84349859b8c50ee0a35bb 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Kill FunctionDecl's IsCopyAssignment bit; it duplicated what could
already be determined by isCopyAssignmentOperator(), and was set too
late in the process for all clients to see the appropriate
value. Cleanup only; no functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3e9438b5251a547253d64169863c2909b9b2772a 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Kill FunctionDecl's IsCopyAssignment bit; it duplicated what could
already be determined by isCopyAssignmentOperator(), and was set too
late in the process for all clients to see the appropriate
value. Cleanup only; no functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e6899d6429bf0d3a7b63c5b63b1b5e5e0aff71ae 28-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When chaining PCHs, only write PPRecords that don't come from PCH, and give them the correct IDs. Fixes a crash in XCode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114913 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
b57a624f22b1efa873e0abac78128b69fba3d486 28-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When chaining PCHs, only write PPRecords that don't come from PCH, and give them the correct IDs. Fixes a crash in XCode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114913 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
5889acf37f03a14ba7eb3406572f10d95f785e6b 28-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Centralize the handling of
CXXRecordDecl::DefinitionData::DeclaredCopyAssignment, for
copy-assignment operators. Another step toward <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
27c08ab4859d071efa158a256f7e47e13d924443 28-Sep-2010 Douglas Gregor <dgregor@apple.com> Centralize the handling of
CXXRecordDecl::DefinitionData::DeclaredCopyAssignment, for
copy-assignment operators. Another step toward <rdar://problem/8459981>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
28abaf338c3165a1b14bb91b1e649b4ece22e02e 27-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Clean up the handling of the DeclaredDefaultConstructor and
DeclaredCopyConstructor bits in CXXRecordDecl's DefinitionData
structure. Rather than having Sema call addedConstructor or set the
bits directly at semi-random places, move all of the logic for
managing these bits into CXXRecordDecl itself and tie the
addedConstructor call into DeclContext::addDecl().

This makes it easier for AST-building clients to get the right bits
set in DefinitionData, and is one small part of <rdar://problem/8459981>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5c0646b98b203d105c10ad8cc11be11cc99a4218 27-Sep-2010 Douglas Gregor <dgregor@apple.com> Clean up the handling of the DeclaredDefaultConstructor and
DeclaredCopyConstructor bits in CXXRecordDecl's DefinitionData
structure. Rather than having Sema call addedConstructor or set the
bits directly at semi-random places, move all of the logic for
managing these bits into CXXRecordDecl itself and tie the
addedConstructor call into DeclContext::addDecl().

This makes it easier for AST-building clients to get the right bits
set in DefinitionData, and is one small part of <rdar://problem/8459981>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
775f78c28e75bff16228284ca48b9016fd676b5c 27-Sep-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Teach clang -cc1as to respond to -v.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114863 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
e830a36053282aadb9603cb8af14a9f5b9c32968 27-Sep-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Teach clang -cc1as to respond to -v.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114863 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
217957c33d3f897d5130da13c0d3d860e53c5b4e 27-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Issue warning for trivial cases of nonnull attributes
(on functions with no pointer arguments) but only when
the attribute has not been coming from a macro
instantiation in a header file. Fixes first part
of radar 6857843.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
60acea49c1343e5494edb6da20cac6f9d0b6cfb0 27-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Issue warning for trivial cases of nonnull attributes
(on functions with no pointer arguments) but only when
the attribute has not been coming from a macro
instantiation in a header file. Fixes first part
of radar 6857843.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1e0b09960fbaa8391cc9f662cd1cfc9ba7f5f03f 24-Sep-2010 Anders Carlsson <andersca@mac.com> Allow the use of C++0x deleted functions as an extension in C++98.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
37bf9d2bb74944c9d9a52522412bc077629977f1 24-Sep-2010 Anders Carlsson <andersca@mac.com> Allow the use of C++0x deleted functions as an extension in C++98.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
634b52e0ce0aa85678730fefb0d95958d8ad4c94 24-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -fallow-unsupported which disables some of the eager error'ing we do
to prevent users from trying unsupported stuff. Useful for testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114749 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e94db4771856659c12e1f269141cbbc4e55b1c47 24-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -fallow-unsupported which disables some of the eager error'ing we do
to prevent users from trying unsupported stuff. Useful for testing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114749 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0f881c3735a8f5962943d799105adb63a873a2c2 24-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch implements passing arrays to functions expecting
vla. Implements pr7827.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ema/Initialization.h
745da3a5bb4ea35f93f50301e7fbbb7d78d3b6bb 24-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch implements passing arrays to functions expecting
vla. Implements pr7827.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ema/Initialization.h
a9b976bc0d468dc6183fae093193ccb992999e33 24-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Synchronize globally-cached code completion results with the results
provided when the optimization is disabled. In particular, split
the completion context CCC_Other into two contexts: CCC_Other, which
means that it's an undisclosed context for which any other results are
unwelcome, and CCC_Recovery, which is used in recovery cases.

Since we're now using the completion context within the completion
results builder, make sure that it's always set to something.

Fixes <rdar://problem/8470644>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114704 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
52779fb71795534d0447f6f4d4a6f6a7b09c4639 24-Sep-2010 Douglas Gregor <dgregor@apple.com> Synchronize globally-cached code completion results with the results
provided when the optimization is disabled. In particular, split
the completion context CCC_Other into two contexts: CCC_Other, which
means that it's an undisclosed context for which any other results are
unwelcome, and CCC_Recovery, which is used in recovery cases.

Since we're now using the completion context within the completion
results builder, make sure that it's always set to something.

Fixes <rdar://problem/8470644>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114704 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
32ddc13725ed12b277cfbac78e76587173f259f4 23-Sep-2010 Nick Lewycky <nicholas@mxc.ca> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114697 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DependencyOutputOptions.h
b17cc9e904c277b97cc4d57227122acd8d46ed36 23-Sep-2010 Nick Lewycky <nicholas@mxc.ca> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114697 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DependencyOutputOptions.h
7d947fe10b56e799604199fb20a6684a0d002218 23-Sep-2010 Ted Kremenek <kremenek@apple.com> For properties declared in a @protocol and redeclared in a class extension, use the class extension
as the lexical DeclContext for the @property declaration that gets auto-created for the @interface.

Fixes: <rdar://problem/8467189>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114693 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4a2e9ea0c191176ebe996516a9cf4f93b7e932cc 23-Sep-2010 Ted Kremenek <kremenek@apple.com> For properties declared in a @protocol and redeclared in a class extension, use the class extension
as the lexical DeclContext for the @property declaration that gets auto-created for the @interface.

Fixes: <rdar://problem/8467189>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114693 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7d8a0be163216dba2a67d7f9e169f3ca7bb5373c 23-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Don't crash on _Imaginary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114637 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
47423bdaa06a3b9c2a859b57c17fc570094dad1c 23-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't crash on _Imaginary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114637 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cf86eeaeb1a02cdb8b9a136e7cee4e222b71535d 23-Sep-2010 Ted Kremenek <kremenek@apple.com> Refactor GRExprEngine::VisitCall() to use EvalArguments(), just like VisitCXXMemberCallExpr(). Ideally we should unify these code paths as much as possible, since they only differ by a few details.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114628 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
c69c43845aa3ede95af837b8be52868eca55d64d 23-Sep-2010 Ted Kremenek <kremenek@apple.com> Refactor GRExprEngine::VisitCall() to use EvalArguments(), just like VisitCXXMemberCallExpr(). Ideally we should unify these code paths as much as possible, since they only differ by a few details.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114628 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
bb9395de808c1353acedd6966bad95ca064b0cbc 22-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Change source manager serialization to be less tied to the PCH model.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114575 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
8db9faed418ea743f55c31e1ccecadbb23bd55b7 22-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Change source manager serialization to be less tied to the PCH model.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114575 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
003a582e6b61ab0c76db684c90147f8aab723681 22-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Implement -Wpadded and -Wpacked.

-Wpadded warns when undesired padding is introduced in a struct. (rdar://7469556)
-Wpacked warns if a struct is given the packed attribute, but the packed attribute has no effect
on the layout or the size of the struct. Such structs may be mis-aligned for little benefit.

The warnings are emitted at the point where layout is calculated, that is at RecordLayoutBuilder.
To avoid calculating the layouts of all structs regardless of whether they are needed or not,
I let the layouts be lazily constructed when needed. This has the disadvantage that the above warnings
will be emitted only when they are used for IR gen, and not e.g with -fsyntax-only:

$ cat t.c
struct S {
char c;
int i;
};
void f(struct S* s) {}

$ clang -fsyntax-only -Wpadded t.c
$ clang -c -Wpadded t.c -o t.o
t.c:3:7: warning: padding struct 'struct S' with 3 bytes to align 'i' [-Wpadded]
int i;
^
1 warning generated.

This is a good tradeoff between providing the warnings and not calculating layouts for all
structs in case the user has enabled a couple of rarely used warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/SourceManager.h
78a916ec5ff5b66adec3c499e1b9af7b87668309 22-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -Wpadded and -Wpacked.

-Wpadded warns when undesired padding is introduced in a struct. (rdar://7469556)
-Wpacked warns if a struct is given the packed attribute, but the packed attribute has no effect
on the layout or the size of the struct. Such structs may be mis-aligned for little benefit.

The warnings are emitted at the point where layout is calculated, that is at RecordLayoutBuilder.
To avoid calculating the layouts of all structs regardless of whether they are needed or not,
I let the layouts be lazily constructed when needed. This has the disadvantage that the above warnings
will be emitted only when they are used for IR gen, and not e.g with -fsyntax-only:

$ cat t.c
struct S {
char c;
int i;
};
void f(struct S* s) {}

$ clang -fsyntax-only -Wpadded t.c
$ clang -c -Wpadded t.c -o t.o
t.c:3:7: warning: padding struct 'struct S' with 3 bytes to align 'i' [-Wpadded]
int i;
^
1 warning generated.

This is a good tradeoff between providing the warnings and not calculating layouts for all
structs in case the user has enabled a couple of rarely used warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
asic/SourceManager.h
4552516100493debb4763258ae417e69a856b8b9 22-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Only preload SLocEntries after the entire PCH chain was loaded.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114518 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
4ee5a6f9bd82ab3c1a4bdacc0caefe7d5f8bd37a 22-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Only preload SLocEntries after the entire PCH chain was loaded.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114518 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
dd7df08432a8db9dfa9934468fab3b82823f377a 22-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reshuffle PerFileData's members to make more sense.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114517 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
301c9b0b6722293f1b9d870815ae11e1ffc3245d 22-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reshuffle PerFileData's members to make more sense.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114517 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
54ee9141a7eb8f7805d261770ff9b9fbe0b3d518 21-Sep-2010 Ted Kremenek <kremenek@apple.com> For ObjCPropertyDecls in class extensions, use the class extension as the lexical DeclContext for newly created
ObjCMethodDecls. Further, use the location of the new property declaration as the location of new ObjCMethodDecls
(if they didn't previously exist).

This fixes more of the issues reported in <rdar://problem/7410145>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114456 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8254aa62d9189395be1eed61194cd4b5ee6cb4a2 21-Sep-2010 Ted Kremenek <kremenek@apple.com> For ObjCPropertyDecls in class extensions, use the class extension as the lexical DeclContext for newly created
ObjCMethodDecls. Further, use the location of the new property declaration as the location of new ObjCMethodDecls
(if they didn't previously exist).

This fixes more of the issues reported in <rdar://problem/7410145>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114456 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
103d7132048e0d9c515247a3f4c8173b264283bf 21-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Add code completion for C++ constructors wherever we see the class (or
class template) and are in a context where we can have a value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114441 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
6f942b2cabf32b96f9901b889d8e44a34e0e7c62 21-Sep-2010 Douglas Gregor <dgregor@apple.com> Add code completion for C++ constructors wherever we see the class (or
class template) and are in a context where we can have a value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114441 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
5914bd8ab19c1e7bc190c6bc916436e5a8f64c10 21-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added:
- definitions of interfaces for CFGInitializer and CFGAutomaticObjDtor,
- support for above classes to print_elem function (renamed print_stmt),
- support for VarDecls in StmtPrinterHelper.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114403 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
1cff132e48e0ccc253c34e5a2fb12718bd4e7d2e 21-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Added:
- definitions of interfaces for CFGInitializer and CFGAutomaticObjDtor,
- support for above classes to print_elem function (renamed print_stmt),
- support for VarDecls in StmtPrinterHelper.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114403 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
be517a144c068af2f843b24c8882f63c31b8bd9b 21-Sep-2010 Bill Wendling <isanbard@gmail.com> Add a comment explaining why the MMX builtins are segregated and what we plan on
doing with them. It's a "FIXME" right now because this change hasn't been
implemented yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114385 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
2e81caa14337cfa8973a1a073ef4dbbb8273238c 21-Sep-2010 Bill Wendling <isanbard@gmail.com> Add a comment explaining why the MMX builtins are segregated and what we plan on
doing with them. It's a "FIXME" right now because this change hasn't been
implemented yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114385 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
6f5f1ab70eb0ec5831d86bea8cdde46f938b3e15 21-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Refactor code completion for expressions that occur as arguments in
Objective-C message sends. There is no functionality change here; this
is prep work for using the parameter types to help guide the
expression results when code-completing the argument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114375 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
70c5ac70ace21b011dc2d4001bae26cdcf62ff8d 21-Sep-2010 Douglas Gregor <dgregor@apple.com> Refactor code completion for expressions that occur as arguments in
Objective-C message sends. There is no functionality change here; this
is prep work for using the parameter types to help guide the
expression results when code-completing the argument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114375 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f0939c45579e3a6e35fde072ddd3428bb5972e37 21-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Code completion has no reason to prefer values over types, especially
at the statement level or in Objective-C message receivers. Therefore,
just give types and declarations the same basic priority, and adjust
from there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114374 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
08f43cd5d966fd31b32bd5c76c0645ebbf08b2f1 21-Sep-2010 Douglas Gregor <dgregor@apple.com> Code completion has no reason to prefer values over types, especially
at the statement level or in Objective-C message receivers. Therefore,
just give types and declarations the same basic priority, and adjust
from there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114374 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0e23bda3536664f90b13194f48e5d16910e713f8 21-Sep-2010 Nate Begeman <natebegeman@mac.com> Check in support for OpenCL conditional operator on vector types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6155d73ad1668be5335b1a060f6c49c03d4dca05 21-Sep-2010 Nate Begeman <natebegeman@mac.com> Check in support for OpenCL conditional operator on vector types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a345dc8c0c1905b13f4a18cf7643b63cfb51acd8 20-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Get rid of the lame attempt to prioritize "void" functions at
statement context; it really isn't helpful in practice (remember
printf!) and we'll be doing other adjustments for statements very soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114358 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
d475aad02da03c31c0e07f7ce0e26ef22bc039da 20-Sep-2010 Douglas Gregor <dgregor@apple.com> Get rid of the lame attempt to prioritize "void" functions at
statement context; it really isn't helpful in practice (remember
printf!) and we'll be doing other adjustments for statements very soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114358 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
cb37467b4a0e56739b6f60e4f2609bd53bc47286 20-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Tweak priorities for some types and macros:
- In Objective-C, we prefer BOOL to bool for historic reasons;
slightly penalize "bool".
- Treat Nil macro as a NULL pointer constant.
- Treat YES, NO, true, and false macros as constants.
- Treat the bool macro as a type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114356 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
b05496dbd63f03bf474dae2c4d1e2142608780cc 20-Sep-2010 Douglas Gregor <dgregor@apple.com> Tweak priorities for some types and macros:
- In Objective-C, we prefer BOOL to bool for historic reasons;
slightly penalize "bool".
- Treat Nil macro as a NULL pointer constant.
- Treat YES, NO, true, and false macros as constants.
- Treat the bool macro as a type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114356 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
a1be99184b49a8c393cc88e063d67d46db3f0129 20-Sep-2010 Bill Wendling <isanbard@gmail.com> The builtins __builtin_ia32_paddq and __builtin_ia32_psubq were missing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114349 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
957b03be80ee712344bc0ff67c5ab7d768e88005 20-Sep-2010 Bill Wendling <isanbard@gmail.com> The builtins __builtin_ia32_paddq and __builtin_ia32_psubq were missing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114349 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
cc421a21cd903fc70de54000ec9948ef4b8c539f 20-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver/Objective-C: Retool Objective-C ABI flags to be more usable, and actually
document behavior. Will wonders never cease.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114334 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
dea63134a51d463cf32f3eec3c359d9215359d69 20-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver/Objective-C: Retool Objective-C ABI flags to be more usable, and actually
document behavior. Will wonders never cease.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114334 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
bf83e007f7646370ac813e81d67086ee78c71dc4 20-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Revert r114316, -Wunused-value enabled by default was intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b2ad2fd9e2d5352144481aa1fd995d333d9adc9 20-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r114316, -Wunused-value enabled by default was intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f1eb8240ba85e73db7a8d82a749ef46eb2a48a88 19-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Make -Wunused-value off by default, matching GCC. Fixes rdar://7126194.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6dff2288a8054bdbc97217568e5831bcce809db8 19-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make -Wunused-value off by default, matching GCC. Fixes rdar://7126194.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ede2675976fd9f70a9a7ccd4b9114281d795d24a 19-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Implement -Wunused-label.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
355a9fe26a6dec89680ddf713dd5bc7a671b298a 19-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -Wunused-label.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
fe921683933ba702385bd8932926aa9c57e09cd5 18-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Problem with gnu conditional extension with missing
LHS and when conditional expression is an array. Since
it will be decayed, saved expression must be saved with
decayed expression. This is necessary to preserve semantics
of this extension (and prevent an IRGen crash which expects
an array to always be decayed). I am sure there will be other
cases in c++ (aggregate conditionals for example) when saving of the
expression must happen after some transformation on conditional
expression has happened.
Doug, please review. Fixes // rdar://8446940


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114296 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
1fb019bf42f5757c027edb56e5bb70233787a39c 18-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Problem with gnu conditional extension with missing
LHS and when conditional expression is an array. Since
it will be decayed, saved expression must be saved with
decayed expression. This is necessary to preserve semantics
of this extension (and prevent an IRGen crash which expects
an array to always be decayed). I am sure there will be other
cases in c++ (aggregate conditionals for example) when saving of the
expression must happen after some transformation on conditional
expression has happened.
Doug, please review. Fixes // rdar://8446940


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114296 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
08cbcf8fbe083678843261d5613273ed0f0a230a 18-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Give the Objective-C _cmd an "unlikely" code completion priority; it's
very rarely used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114286 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
97fe61ca1749110c28eb4570a710c8983711c7b3 18-Sep-2010 Douglas Gregor <dgregor@apple.com> Give the Objective-C _cmd an "unlikely" code completion priority; it's
very rarely used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114286 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
7d756cb07d278ce98104b55c2a4c152ec38c4e38 18-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Continue parsing more postfix expressions, even after semantic
errors. Improves code completion in yet another case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114255 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ac5fd8404fa8ecfae28be76f98fd0d926350354c 18-Sep-2010 Douglas Gregor <dgregor@apple.com> Continue parsing more postfix expressions, even after semantic
errors. Improves code completion in yet another case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114255 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
eea07e58340513fb69233bfaec43ab511f94dad3 18-Sep-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Add more error checking to attribute vecreturn

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
01add59bc8fd178960ad61169bc01566b0d6614c 18-Sep-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Add more error checking to attribute vecreturn

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9393f1fb985b37cc222f9d4619bd8970cfa32885 18-Sep-2010 Bill Wendling <isanbard@gmail.com> Remove FIXME. The type is correct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
315a2f207900745f6ef6e599f795edb2fe81e24f 18-Sep-2010 Bill Wendling <isanbard@gmail.com> Remove FIXME. The type is correct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
cd6465007c683f263436d7b225316d3d6ec03ba2 17-Sep-2010 Shantonu Sen <ssen@apple.com> Driver: implement driver automagic support for -lcc_kext

Rewrite linker arguments to use libclang_rt.cc_kext.a
instead of gcc-specific libcc_kext.a

Resolves Radar 7808495


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114193 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
river/ToolChain.h
7433fedce98a58341d0f30c2e12e8d53f3bba575 17-Sep-2010 Shantonu Sen <ssen@apple.com> Driver: implement driver automagic support for -lcc_kext

Rewrite linker arguments to use libclang_rt.cc_kext.a
instead of gcc-specific libcc_kext.a

Resolves Radar 7808495


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114193 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
river/ToolChain.h
a38c11f3fb24329bddb1e6ac720b82216642e8bc 17-Sep-2010 David Chisnall <csdavec@swan.ac.uk> Add a -ftrapv-handler= option which allows a handler to invoke instead of simply aborting when a signed operation overflows. This mirrors the (GCC-incompatible) behaviour from clang 1.0 and 1.1 when -ftrapv was specified, but allows the handler to be defined for each compilation unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
7f18e67e1b577a50402e8b43508ab2311a5c45b5 17-Sep-2010 David Chisnall <csdavec@swan.ac.uk> Add a -ftrapv-handler= option which allows a handler to invoke instead of simply aborting when a signed operation overflows. This mirrors the (GCC-incompatible) behaviour from clang 1.0 and 1.1 when -ftrapv was specified, but allows the handler to be defined for each compilation unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
674f03f991d458b2d4d692ef022cadb3e040d792 17-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Use a temporary file for output which gets renamed after all the writing is finished.

This mainly prevents failures and/or crashes when multiple processes try to read/write the same PCH file. (rdar://8392711&8294781); suggestion & review by Daniel!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
dc24572a44575e07a5d8bb6de52641a69f1bab27 17-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use a temporary file for output which gets renamed after all the writing is finished.

This mainly prevents failures and/or crashes when multiple processes try to read/write the same PCH file. (rdar://8392711&8294781); suggestion & review by Daniel!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
95ba42ce79fd65004de5aabe5e49f885c2a44190 17-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add IRgen support for Gnu's conditional operator
extension when missing LHS. This patch covers scalar
conditionals only. Others are wip.
(pr7726, radar 8353567).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114182 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
af9b96828f9126d993c3e155b8453be62013b735 17-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add IRgen support for Gnu's conditional operator
extension when missing LHS. This patch covers scalar
conditionals only. Others are wip.
(pr7726, radar 8353567).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114182 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0834b8e58b7ab2cc6cbdf0b93ef41bc15174203b 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support -dumpmachine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114155 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d829950b2b75d50fca2772a20129323a186993a5 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support -dumpmachine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114155 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
da8ef4d001cdcac042eadf228e21e22015f56ffe 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix spelling of AddCXXStdlibLibArgs, which I copy-n-pasto'd.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114147 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
132e35d2f87895d20e7ea146c8c00404b80221a1 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix spelling of AddCXXStdlibLibArgs, which I copy-n-pasto'd.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114147 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
b3ba2873b296940f73f035e3f28bdc4f8b64e10b 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add magic handling for "reserved library names", starting with
-lstdc++. This is the best gross solution for a gross problem.

This issue is that historically, GCC has add -L options to its internally
library directories. This has allowed users and platforms to end up depending on
the layout of GCC's internal library directories.

We want to correct this mistake by eliminating that -L, but this means that
existing libraries which are in the GCC lib dir won't be found. We are going to
handle this by treating those -l names as "reserved", and requiring toolchains
to know how to add the right full path to the reserved library.

The immediately side effect of this is that users trying to use -L to find their
own -lstdc++ will need to start using -nostdlib (which is a good idea
anyway). Another side effect is that -stdlib=libc++ -lstdc++ will now do the
"right" thing, for curious definitions of right.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114144 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e5a37f48388c7e4cc081f44d13a4910bfa56cd35 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add magic handling for "reserved library names", starting with
-lstdc++. This is the best gross solution for a gross problem.

This issue is that historically, GCC has add -L options to its internally
library directories. This has allowed users and platforms to end up depending on
the layout of GCC's internal library directories.

We want to correct this mistake by eliminating that -L, but this means that
existing libraries which are in the GCC lib dir won't be found. We are going to
handle this by treating those -l names as "reserved", and requiring toolchains
to know how to add the right full path to the reserved library.

The immediately side effect of this is that users trying to use -L to find their
own -lstdc++ will need to start using -nostdlib (which is a good idea
anyway). Another side effect is that -stdlib=libc++ -lstdc++ will now do the
"right" thing, for curious definitions of right.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114144 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e910deab1f8c61e430feab32b1c1552b5ff59a2b 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a toolchain hook for whether the system has native LLVM support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114137 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
b993f5d93b994b9b0aac6aebae669621744bbed7 17-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a toolchain hook for whether the system has native LLVM support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114137 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
118dde1cdfb29a7c66520071711edf1728720ce2 16-Sep-2010 Chris Lattner <sabre@nondot.org> improve the "enumeration value 'g' not handled in switch"
warning to handle multiple enumerators with one warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114093 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ce78461303f45fecb3460d1c49c9b71f27ad19c3 16-Sep-2010 Chris Lattner <sabre@nondot.org> improve the "enumeration value 'g' not handled in switch"
warning to handle multiple enumerators with one warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114093 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5384cce621cffd0b87159e328097608dba4de883 16-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Swap the priorities of constants and types, so that we prefer types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114086 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
d754d5546ef1faa4216298fd95bc6a7f15808fd2 16-Sep-2010 Douglas Gregor <dgregor@apple.com> Swap the priorities of constants and types, so that we prefer types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114086 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ca96311d57ab1ab489c9c49d29feea05540c2245 16-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Don't add two code-completion results for the same selector; it
doesn't add any value. Instead, we'll just take the first method with
that selector that we find and create a completion for it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
d36adf553cd71df96fe869204482e0f0d68c6bbf 16-Sep-2010 Douglas Gregor <dgregor@apple.com> Don't add two code-completion results for the same selector; it
doesn't add any value. Instead, we'll just take the first method with
that selector that we find and create a completion for it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
e1ee27b77d892300f3c16e289e6ac1fcd1329027 16-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Implement code completion for Objective-C class message sends that are
missing the opening bracket '[', e.g.,

NSArray <CC>

at function scope. Previously, we would only give trivial completions
(const, volatile, etc.), because we're in a "declaration name"
scope. Now, we also provide completions for class methods of NSArray,
e.g.,

alloc

Note that we already had support for this after the first argument,
e.g.,

NSArray method:x <CC>

would get code completion for class methods of NSArray whose selector
starts with "method:". This was already present because we recover
as if NSArray method:x were a class message send missing the opening
bracket (which was committed in r114057).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114078 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c7b6d883360092808b0ae81b7829fa8196ef42a1 16-Sep-2010 Douglas Gregor <dgregor@apple.com> Implement code completion for Objective-C class message sends that are
missing the opening bracket '[', e.g.,

NSArray <CC>

at function scope. Previously, we would only give trivial completions
(const, volatile, etc.), because we're in a "declaration name"
scope. Now, we also provide completions for class methods of NSArray,
e.g.,

alloc

Note that we already had support for this after the first argument,
e.g.,

NSArray method:x <CC>

would get code completion for class methods of NSArray whose selector
starts with "method:". This was already present because we recover
as if NSArray method:x were a class message send missing the opening
bracket (which was committed in r114057).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114078 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
156ba9d0a4eece62fed50e70df2942eea5400417 16-Sep-2010 Daniel Dunbar <daniel@zuster.org> Basic: Add f{dim,ma,max,min}[lf]? builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
f902153696d6b0e30651b33c6626ed757c5e95e3 16-Sep-2010 Daniel Dunbar <daniel@zuster.org> Basic: Add f{dim,ma,max,min}[lf]? builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
51986d6b3f133c38e15dce9248279c4e440efe66 16-Sep-2010 Tom Care <tcare@apple.com> Refactored BugReporter to refer to EndNode as ErrorNode. We currently make the assumption that EndNode == ErrorNode, but upcoming changes will break this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114065 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
212f6d3b5fb3fa55ba1e40671cfc336430abc8dd 16-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Refactored BugReporter to refer to EndNode as ErrorNode. We currently make the assumption that EndNode == ErrorNode, but upcoming changes will break this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114065 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
c3fc92fa5ff5ded1ddf03ea82f5f7337ddc1e1ec 16-Sep-2010 John McCall <rjmccall@apple.com> Fix the clang build after Zhongxing Xu's commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114059 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
90392b21e3a0571af6db6ba58951723b8b570cb0 16-Sep-2010 John McCall <rjmccall@apple.com> Fix the clang build after Zhongxing Xu's commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114059 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
815434869c8af8ebe1d380b0272b0706af725ff0 16-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Implement automatic bracket insertion for Objective-C class message
sends. These are far trickier than instance messages, because we
typically have something like

NSArray alloc]

where it appears to be a declaration of a variable named "alloc" up
until we see the ']' (or a ':'), and at that point we can't backtrace.
So, we use a combination of syntactic and semantic disambiguation to
treat this as a message send only when the type is an Objective-C type
and it has the syntax of a class message send (which would otherwise
be ill-formed).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114057 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9497a73ad0d54859edbf48beb93ebb19a7ae50c9 16-Sep-2010 Douglas Gregor <dgregor@apple.com> Implement automatic bracket insertion for Objective-C class message
sends. These are far trickier than instance messages, because we
typically have something like

NSArray alloc]

where it appears to be a declaration of a variable named "alloc" up
until we see the ']' (or a ':'), and at that point we can't backtrace.
So, we use a combination of syntactic and semantic disambiguation to
treat this as a message send only when the type is an Objective-C type
and it has the syntax of a class message send (which would otherwise
be ill-formed).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114057 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bcd067d551ea9eb7dc811620c0228fb424937909 16-Sep-2010 Zhongxing Xu <xuzhongxing@gmail.com> Introduce new CFGElement hierarchy to support C++ CFG, based on Marcin's patch
and discussions with Ted and Jordy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114056 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/ProgramPoint.h
hecker/PathSensitive/GRCoreEngine.h
b36cd3e1757fb4fcd9509f35558c847b04bef35f 16-Sep-2010 Zhongxing Xu <xuzhongxing@gmail.com> Introduce new CFGElement hierarchy to support C++ CFG, based on Marcin's patch
and discussions with Ted and Jordy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114056 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/ProgramPoint.h
hecker/PathSensitive/GRCoreEngine.h
9cb63965fc6327414c5af31276890b43c6236067 15-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Macro definitions in AST files have their own IDs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114014 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
f73c93fea0d4b447585bc7459499ba6b822e045c 15-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Macro definitions in AST files have their own IDs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114014 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
433e387dce023b97c15bebedca8fa62dd9338562 15-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Test commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113994 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
2a4cd498ff9b2b126de3e370b768ab307c221ab8 15-Sep-2010 Marcin Swiderski <marcin.sfider@gmail.com> Test commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113994 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
427a8c171ae0bf5c3ea2cab5b63d84a85fd8d505 15-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Improve code completion for Objective-C message sends when the opening
'[' is missing. Prior commits improving recovery also improved code
completion beyond the first selector, e.g., at or after the "to" in

calculator add:x to:y

but not after "calculator". We now provide the same completions for

calculator <CC>

that we would for

[calculator <CC>

if "calculator" is an expression whose type is something that can
receive Objective-C messages.

This code completion works for instance and super message sends, but not
class message sends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113976 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
78edf515544f0b9dddf69d6c1678fd83e94d8352 15-Sep-2010 Douglas Gregor <dgregor@apple.com> Improve code completion for Objective-C message sends when the opening
'[' is missing. Prior commits improving recovery also improved code
completion beyond the first selector, e.g., at or after the "to" in

calculator add:x to:y

but not after "calculator". We now provide the same completions for

calculator <CC>

that we would for

[calculator <CC>

if "calculator" is an expression whose type is something that can
receive Objective-C messages.

This code completion works for instance and super message sends, but not
class message sends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113976 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
04611ee4c92c5c430a096a39ac5c6b5f4a3df7e4 15-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Implement bracket insertion for Objective-C instance message sends as
part of parser recovery. For example, given:

a method1:arg];

we detect after parsing the expression "a" that we have the start of a
message send expression. We pretend we've seen a '[' prior to the a,
then parse the remainder as a message send. We'll then give a
diagnostic+fix-it such as:

fixit-objc-message.m:17:3: error: missing '[' at start of message
send expression
a method1:arg];
^
[

The algorithm here is very simple, and always assumes that the open
bracket goes at the beginning of the message send. It also only works
for non-super instance message sends at this time.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
0fbda68b50ce17d7ad36ef7a5ed77518a5cd272e 15-Sep-2010 Douglas Gregor <dgregor@apple.com> Implement bracket insertion for Objective-C instance message sends as
part of parser recovery. For example, given:

a method1:arg];

we detect after parsing the expression "a" that we have the start of a
message send expression. We pretend we've seen a '[' prior to the a,
then parse the remainder as a message send. We'll then give a
diagnostic+fix-it such as:

fixit-objc-message.m:17:3: error: missing '[' at start of message
send expression
a method1:arg];
^
[

The algorithm here is very simple, and always assumes that the open
bracket goes at the beginning of the message send. It also only works
for non-super instance message sends at this time.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
c1226787962c6550878b4e0df3c4bbb0fbf4b3a2 15-Sep-2010 John McCall <rjmccall@apple.com> one piece of code is responsible for the lifetime of every aggregate
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.

I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
558d2abc7f9fd6801cc7677200992313ae90b5d8 15-Sep-2010 John McCall <rjmccall@apple.com> one piece of code is responsible for the lifetime of every aggregate
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.

I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2cd0ad2a7be2f4d1d308cb91175b0eff601b4c7e 15-Sep-2010 Ted Kremenek <kremenek@apple.com> Disallow the use of UnknownVal as the index for ElementRegions. UnknownVals can be used as
the index when the value evaluation isn't powerful enough. By creating ElementRegions with
UnknownVals as the index, this gives the false impression that they are the same element, when
they really aren't. This becomes really problematic when deriving symbols from these regions
(e.g., those representing the initial value of the index), since two different indices will
get the same symbol for their binding.

This fixes an issue with the idempotent operations checker that would cause two indices that
are clearly not the same to make it appear as if they always had the same value.

Fixes <rdar://problem/8431728>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113920 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
02282acd7a42d06a3178e3102d34a585bd82dd9f 15-Sep-2010 Ted Kremenek <kremenek@apple.com> Disallow the use of UnknownVal as the index for ElementRegions. UnknownVals can be used as
the index when the value evaluation isn't powerful enough. By creating ElementRegions with
UnknownVals as the index, this gives the false impression that they are the same element, when
they really aren't. This becomes really problematic when deriving symbols from these regions
(e.g., those representing the initial value of the index), since two different indices will
get the same symbol for their binding.

This fixes an issue with the idempotent operations checker that would cause two indices that
are clearly not the same to make it appear as if they always had the same value.

Fixes <rdar://problem/8431728>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113920 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
d1733762531574bb9e979b78b578e358319944ad 15-Sep-2010 Francois Pichet <pichet2000@gmail.com> Microsoft's flexible array rules relaxation:
- in union
- as the only element of a struct/class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113909 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
09246183715f4b0a8728a3827bfe894b6c6016b9 15-Sep-2010 Francois Pichet <pichet2000@gmail.com> Microsoft's flexible array rules relaxation:
- in union
- as the only element of a struct/class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113909 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
810032993c6c0095c4d9399da1af2daccd0bec1e 15-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new code-completion context for a parenthesized
expression, e.g., after the '(' that could also be a type cast. Here,
we provide types as code-completion results in C/Objective-C (C++
already had them), although we wouldn't in a normal expression context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113904 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
0268810a46780144a2d5fb5a017c938d1199189c 15-Sep-2010 Douglas Gregor <dgregor@apple.com> Introduce a new code-completion context for a parenthesized
expression, e.g., after the '(' that could also be a type cast. Here,
we provide types as code-completion results in C/Objective-C (C++
already had them), although we wouldn't in a normal expression context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113904 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
be96b95ff811874dadb5cf0f9f17b3de91f5b574 15-Sep-2010 Ted Kremenek <kremenek@apple.com> Add CFG::BuildOptions class to pass in CFG builder options under on parameter. Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
6c52c7850bccb6991470668429a1e1edf01b0873 15-Sep-2010 Ted Kremenek <kremenek@apple.com> Add CFG::BuildOptions class to pass in CFG builder options under on parameter. Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
1fed452f1e5486e1c3e6204fb5e284189b19ea7f 15-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a -stdlib= argument which can be used to select the C++ standard
library to use.
- This is currently useful for testing libc++; you can now use 'clang++
-stdlib=libc++ t.cpp' to compile using it if installed.

- In the future could also be used to select other standard library choices if
alternatives become available (for example, to use an alternate C library).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
river/ToolChain.h
3f16c959e30b7e7ba8e4b8d597c313fbe457206d 15-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a -stdlib= argument which can be used to select the C++ standard
library to use.
- This is currently useful for testing libc++; you can now use 'clang++
-stdlib=libc++ t.cpp' to compile using it if installed.

- In the future could also be used to select other standard library choices if
alternatives become available (for example, to use an alternate C library).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
river/ToolChain.h
4e3f3d8a256a23d6cd9e614d1f2a629aa03274cd 15-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Factor out some code for handling the C++ standard library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113890 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
641b98b7b52e0067beaf3978f2a8721e5d16c111 15-Sep-2010 Daniel Dunbar <daniel@zuster.org> Driver: Factor out some code for handling the C++ standard library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113890 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
3b2c9345bf8cf5c5eace1cbca6329a8266a92c90 15-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> RHS of property expression assignment requires
copy initialization before passing it to
a setter. Fixes radar 8427922.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113885 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c4e1a6815235ade1a4affe3511ca5ce2dcc64467 15-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> RHS of property expression assignment requires
copy initialization before passing it to
a setter. Fixes radar 8427922.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113885 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
c00411820af08810fa952049c5ea1c9819cbfb60 15-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> When marking the declarations in a default argument expression as
"used", at the time that the default argument itself is used, also
mark destructors that will be called by this expression. This fixes a
regression that I introduced in r113700, which broke WebKit, and fixes
<rdar://problem/8427926>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113883 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
5833b0b831d6afae2885e6af420e2bda639652e6 15-Sep-2010 Douglas Gregor <dgregor@apple.com> When marking the declarations in a default argument expression as
"used", at the time that the default argument itself is used, also
mark destructors that will be called by this expression. This fixes a
regression that I introduced in r113700, which broke WebKit, and fixes
<rdar://problem/8427926>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113883 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
3049ec9961d1a1f0570a24dc601e6a362129b35d 10-Sep-2010 Shih-wei Liao <sliao@google.com> Merge changes from upstream repository (r112367)

Change-Id: Ib88c8fd890e7c8c5597ea2b86cfa934438965c08
8712db0ce4d3d944c9f5b080b5fe2ea077e50206 14-Sep-2010 Tom Care <tcare@apple.com> Rename 'MaxLoop' to 'MaxVisit' in AnalysisManager to more correctly reflect that we aborted analysis may not necessarily be due to a loop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113862 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
68625cf3eef2a6948fe42134aeeda91ed15e63d3 14-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Rename 'MaxLoop' to 'MaxVisit' in AnalysisManager to more correctly reflect that we aborted analysis may not necessarily be due to a loop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113862 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
8e55935e9bad21cc94f08ae6aa1ae51a45c8a503 14-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Add __char16_t and __char32_t as aliases for the C++0x char16_t and
char32_t, respectively, but which can also be used in C++98/03
mode. Fixes <rdar://problem/8418510>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113813 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
877649045da2bb56ac52a536dbedf5ca7fa13fae 14-Sep-2010 Douglas Gregor <dgregor@apple.com> Add __char16_t and __char32_t as aliases for the C++0x char16_t and
char32_t, respectively, but which can also be used in C++98/03
mode. Fixes <rdar://problem/8418510>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113813 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
2decc92fcbbae70a752537940f9c784f1b885a02 14-Sep-2010 Ted Kremenek <kremenek@apple.com> Add reverse iterator for initializers in constructor. Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
dacd24775d9654c3fe5dc2a01640c2b2aab2bead 14-Sep-2010 Ted Kremenek <kremenek@apple.com> Add reverse iterator for initializers in constructor. Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
005a8ec698c25d71890cb31a45f8cd0cbed61b30 14-Sep-2010 Ted Kremenek <kremenek@apple.com> Add 'insert()' to BumpVector. Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113799 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
58eb45baff08fd27aeef65fc4e6ae35a4b3a1d90 14-Sep-2010 Ted Kremenek <kremenek@apple.com> Add 'insert()' to BumpVector. Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113799 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
9febb6c1221f60f0037eb3e4b6ed3f84adfde41d 14-Sep-2010 Ted Kremenek <kremenek@apple.com> Remove from the CFG the half-implemented support for scoping information. We decided that scope information doesn't belong in the CFG at all, since it is a lexical construct.

Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
fe255bc6dfddade15644aecead970791e96ddedc 14-Sep-2010 Ted Kremenek <kremenek@apple.com> Remove from the CFG the half-implemented support for scoping information. We decided that scope information doesn't belong in the CFG at all, since it is a lexical construct.

Patch by Marcin Świderski!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
be19ac06518581e1080abb13cb6eafff431b2585 14-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove CXXRecordDecl::getDefaultConstructor(), an inherently unsafe function due to lazy declaration of default constructors. Now that __has_nothrow_constructor doesn't use it anymore, part of PR8101 is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
751025d5d174ab75dc3788211581d9fbe6224841 14-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove CXXRecordDecl::getDefaultConstructor(), an inherently unsafe function due to lazy declaration of default constructors. Now that __has_nothrow_constructor doesn't use it anymore, part of PR8101 is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8510a307c69112f0df8805501c0682e28513b527 13-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Eagerly evaluate type traits in Sema instead of lazily in AST. They actually need Sema access to be correct, fixes coming up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
0dfd848fa4c9664852ba8c929a8bd3fce93ddca2 13-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Eagerly evaluate type traits in Sema instead of lazily in AST. They actually need Sema access to be correct, fixes coming up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ema/Sema.h
a03c2a265003f10407486c516fe20807910860ce 13-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> When applying 'delete' on a pointer-to-array type match GCC and EDG behavior and treat it as 'delete[]'.
Also offer a fix-it hint adding '[]'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
4076dacf1497fb95cb298b9d964fbdbdaf9bde6c 13-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> When applying 'delete' on a pointer-to-array type match GCC and EDG behavior and treat it as 'delete[]'.
Also offer a fix-it hint adding '[]'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
ff3e8ae562ae6eab487393a19affa08d103ba7c7 13-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Remove the trivial setters from CXXDeleteExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f1b8911d35bb2830a13267581d3cbde4b6b85db6 13-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the trivial setters from CXXDeleteExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d829ec2516b47e194273d95093f629464737c84f 13-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Avoid setters in ASTDeclReader::VisitClassTemplatePartialSpecializationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113743 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
8fed4b4bc93cce4d15bdb79f9e30cc25a93c8143 13-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Avoid setters in ASTDeclReader::VisitClassTemplatePartialSpecializationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113743 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
c28b0ec7176b5acd9eb8cd771aec751d58ba9bc0 13-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Avoid setters in ASTDeclReader::VisitClassTemplateSpecializationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113742 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
586c7156d51039290f100c80d2d8bd263c99addc 13-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Avoid setters in ASTDeclReader::VisitClassTemplateSpecializationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113742 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
8d8eadaae4b509b0a422a8204a9f44a8e6ac120a 13-Sep-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Parentheses around address non-type template argument is demoted to an extension warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c5399f99c95b831fa90fd3a3c1d9719c1dd9441 13-Sep-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Parentheses around address non-type template argument is demoted to an extension warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9371c2b92dc4fc359da131db9be5c6dcd5f2fcf4 12-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> When performing overload resolution, only compare the final conversion
sequences for two conversion functions when in fact we are in the text
of initialization by a user-defined conversion sequences. Fixes PR8034.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113724 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
8fcc516a5d5b2fec0023a9dced29285a38b95355 12-Sep-2010 Douglas Gregor <dgregor@apple.com> When performing overload resolution, only compare the final conversion
sequences for two conversion functions when in fact we are in the text
of initialization by a user-defined conversion sequences. Fixes PR8034.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113724 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Overload.h
91305bf1b2e75937fb60db03cca766ad983fffdb 12-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose the instantiation of variables (including static data
members) with function type. Fixes PR8047.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c6dbc3fa467e2355b678a6b717534928048efcb2 12-Sep-2010 Douglas Gregor <dgregor@apple.com> Diagnose the instantiation of variables (including static data
members) with function type. Fixes PR8047.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bfc2eaa077e7f914cfbf35ffdf53da889847838c 12-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> When diagnosing C++ [temp.expl.spec]p3 in C++98/03 mode, downgrade the
error to a warning if we're in a case that would be allowed in
C++0x. This "fixes" PR8084 by making Clang accept more code than GCC
and (non-strict) EDG do.

Also, add the missing test case for the C++0x semantics, which should
have been in r113717.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a4d5de539bc2f0cd25d6292e84eaa067591ff792 12-Sep-2010 Douglas Gregor <dgregor@apple.com> When diagnosing C++ [temp.expl.spec]p3 in C++98/03 mode, downgrade the
error to a warning if we're in a case that would be allowed in
C++0x. This "fixes" PR8084 by making Clang accept more code than GCC
and (non-strict) EDG do.

Also, add the missing test case for the C++0x semantics, which should
have been in r113717.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9296aebfac203d1bcce33df85ea14a0c84d7cedb 12-Sep-2010 Francois Pichet <pichet2000@gmail.com> Add basic support for Microsoft enum forward declaration.
Assigning an underlying integral type to an enum forward declaration will come in a next patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113716 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8dc3abcc36df883324461daad0c05364158f3cf0 12-Sep-2010 Francois Pichet <pichet2000@gmail.com> Add basic support for Microsoft enum forward declaration.
Assigning an underlying integral type to an enum forward declaration will come in a next patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113716 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
88481cf45755ee5d34b66fcfee6143e0e0674f4b 12-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Teach the EvaluatedExprVisitor and its client, which marks
declarations in potentially-evaluated subexpressions, about
recursion. Fixes the release-mode self-host failure I introduced in
r113700.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
4fcf5b2f816347ba7a3f16557d5e2b293634d4d6 12-Sep-2010 Douglas Gregor <dgregor@apple.com> Teach the EvaluatedExprVisitor and its client, which marks
declarations in potentially-evaluated subexpressions, about
recursion. Fixes the release-mode self-host failure I introduced in
r113700.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
583205c985b5d7a5c69c74f48d1f91429a642816 11-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Add a completely unnecessary "template" keyword to appease GCC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
d9a8bbcf8db776de126aa6dc15d66e2ce666d70d 11-Sep-2010 Douglas Gregor <dgregor@apple.com> Add a completely unnecessary "template" keyword to appease GCC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
1c1f0344bbef6a0abc0f203def5639554f465407 11-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> When parsing default function arguments, do not mark any declarations
used in the default function argument as "used". Instead, when we
actually use the default argument, make another pass over the
expression to mark any used declarations as "used" at that point. This
addresses two kinds of related problems:

1) We were marking some declarations "used" that shouldn't be,
because we were marking them too eagerly.
2) We were failing to mark some declarations as "used" when we
should, if the first time it was instantiated happened to be an
unevaluated context, we wouldn't mark them again at a later point.

I've also added a potentially-handy visitor class template
EvaluatedExprVisitor, which only visits the potentially-evaluated
subexpressions of an expression. I bet this would have been useful for
noexcept...

Fixes PR5810 and PR8127.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ema/Sema.h
be0f7bd61c7b2879d02ae75aad7a91d92f819d94 11-Sep-2010 Douglas Gregor <dgregor@apple.com> When parsing default function arguments, do not mark any declarations
used in the default function argument as "used". Instead, when we
actually use the default argument, make another pass over the
expression to mark any used declarations as "used" at that point. This
addresses two kinds of related problems:

1) We were marking some declarations "used" that shouldn't be,
because we were marking them too eagerly.
2) We were failing to mark some declarations as "used" when we
should, if the first time it was instantiated happened to be an
unevaluated context, we wouldn't mark them again at a later point.

I've also added a potentially-handy visitor class template
EvaluatedExprVisitor, which only visits the potentially-evaluated
subexpressions of an expression. I bet this would have been useful for
noexcept...

Fixes PR5810 and PR8127.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/EvaluatedExprVisitor.h
ema/Sema.h
21e859fbce9f84f37413af6d48aeb36c4186b371 11-Sep-2010 John McCall <rjmccall@apple.com> Support in-class initialization of static const floating-point data members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113663 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e6356426fcfef84e2484820814a8eaaaf547eda 11-Sep-2010 John McCall <rjmccall@apple.com> Support in-class initialization of static const floating-point data members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113663 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
52f52b04cb07144eba019ccd7dae0ce4f18cec84 11-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Address Doug's comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
5221d8f2da008689f7ff9476e6522bb2b63ec1a3 11-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Address Doug's comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
b26365af5989ecc04c5c93dc70b6f8154dae02c2 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Follow Ted's example and hide CXXNoexceptExpr's setters from all but serialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
c8aecc2dfb2e393d9eeaedeca22ff8cd7149af81 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Follow Ted's example and hide CXXNoexceptExpr's setters from all but serialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
255d1b0f3801c698f592ae716669603b5443ce2c 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Serialization support for CXXNoexceptExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
erialization/ASTBitCodes.h
6b219d082434394c1ac401390ec1d1967727815a 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Serialization support for CXXNoexceptExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
erialization/ASTBitCodes.h
bacc1e1354313633349786b2b5837cd69cd22286 10-Sep-2010 Ted Kremenek <kremenek@apple.com> Make 'setProperty()', 'setBase()', and 'setLocation()' private in ObjCPropertyRefExpr, and friend ASTStmtReader so that it is the only class that can use them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113626 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
f8730d7c313c421d5d7a2b9d97541fc89d5a52d4 10-Sep-2010 Ted Kremenek <kremenek@apple.com> Make 'setProperty()', 'setBase()', and 'setLocation()' private in ObjCPropertyRefExpr, and friend ASTStmtReader so that it is the only class that can use them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113626 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
287e188b96e61b218be777ade96ff894e8c01a99 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Define and implement CXXNoexceptExpr. Create it in Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
2e156225a29407a50dd19041aa5750171ad44ea3 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Define and implement CXXNoexceptExpr. Create it in Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
ema/Sema.h
796ba8e4a7106869535101c9e5b30167a78b11e1 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Parse the noexcept operator and stub out sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ema/Sema.h
02bc21a88ecbdf49b2e674c210a4cbf8c48c6e58 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Parse the noexcept operator and stub out sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ema/Sema.h
f0cc32bb48ba5a6e06393f8fa32c91f432579bc8 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Implement Expr::CanThrow, a function that applies the noexcept operator rules to expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
369e51fa400aeb5835bb9af4634ea516c11429a7 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Implement Expr::CanThrow, a function that applies the noexcept operator rules to expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8e6989c6fcf9a6fcb410641fbda783e560d40bb4 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make CallExpr::getCalleeDecl look through pointer derefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113620 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
200121569dc6cff10a1fb6ed7500098770b9dd25 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make CallExpr::getCalleeDecl look through pointer derefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113620 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7be3c849b2a0dd1201767f4d0097157608eb45da 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
68d114dc3e1d9ef0c0b073edcb824d4d7f37d416 10-Sep-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/OperationKinds.h
22d2e20bc350a45d28bdc436b901a13eeb25bb8c 10-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Re-devirtualize this. A new virtual method snuck in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113582 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3c0a78d2d028cdec935a7902728b0e2cf2b78eb5 10-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Re-devirtualize this. A new virtual method snuck in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113582 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
3311f5e196908b166da7dbb06567e1d2c15268e2 10-Sep-2010 Ted Kremenek <kremenek@apple.com> Add ObjCAtSynchronizedStmt to the CFG and add GRExprEngine support (PreVisit for checkers).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113572 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/GRExprEngine.h
4beaa9f51b2da57c64740cef2bd1c2fdb0c325d5 10-Sep-2010 Ted Kremenek <kremenek@apple.com> Add ObjCAtSynchronizedStmt to the CFG and add GRExprEngine support (PreVisit for checkers).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113572 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/GRExprEngine.h
996a1a87865785d4f872248ffd2b25d09dc9e2a7 10-Sep-2010 Tom Care <tcare@apple.com> Added AnalyzerStatsChecker, a path sensitive check that reports visitation statistics about analysis. Running clang with the -analyzer-stats flag will emit warnings containing the information. We can then run a postanalysis script to take this data and give useful information about how much the analyzer missed in a project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113568 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
river/CC1Options.td
rontend/AnalyzerOptions.h
52d861ce41ce84d8389495ea78d97bcc962ac5ba 10-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Added AnalyzerStatsChecker, a path sensitive check that reports visitation statistics about analysis. Running clang with the -analyzer-stats flag will emit warnings containing the information. We can then run a postanalysis script to take this data and give useful information about how much the analyzer missed in a project.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113568 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
river/CC1Options.td
rontend/AnalyzerOptions.h
8ea9a768ef739f6f6613b795348f963ad5d05850 10-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> When we parse a pragma, keep track of how that pragma was originally
spelled (#pragma, _Pragma, __pragma). In -E mode, use that information
to add appropriate newlines when translating _Pragma and __pragma into
#pragma, like GCC does. Fixes <rdar://problem/8412013>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113553 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
ex/Preprocessor.h
80c60f72848896f867f6b7e664e7060d9e78f019 10-Sep-2010 Douglas Gregor <dgregor@apple.com> When we parse a pragma, keep track of how that pragma was originally
spelled (#pragma, _Pragma, __pragma). In -E mode, use that information
to add appropriate newlines when translating _Pragma and __pragma into
#pragma, like GCC does. Fixes <rdar://problem/8412013>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113553 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
ex/Preprocessor.h
c28bede87980d16ff7d8b61eeef9193cc37a1307 09-Sep-2010 Daniel Dunbar <daniel@zuster.org> Fix typo in diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
a4eca03f035ebeb7a655a60017ed36b0b6b5c859 09-Sep-2010 Daniel Dunbar <daniel@zuster.org> Fix typo in diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
1176748c5d51a991864092eec940b5621a200422 09-Sep-2010 Bill Wendling <isanbard@gmail.com> Remove the 'rc' suffix. It indicates a "release candidate" during LLVM release
qualification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113534 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
461ed44afac0aa56810e9f870d51692ee4ab235b 09-Sep-2010 Bill Wendling <isanbard@gmail.com> Remove the 'rc' suffix. It indicates a "release candidate" during LLVM release
qualification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113534 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
c5ec4b4b2a57456745d9c6882b7dd7680e5ffd40 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Use FindReportInEquivalenceClass to identify all the nodes used for the trimmed graph (in BugReporter). This fixes a problem where a leak that happened to occur on both an exit() path and a non-exit() path was getting reported with the exit() path (which users don't care about).

This fixes:

<rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit())

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113524 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
61f52bd3c524268e25b48a1ed3730aedd6cc8374 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Use FindReportInEquivalenceClass to identify all the nodes used for the trimmed graph (in BugReporter). This fixes a problem where a leak that happened to occur on both an exit() path and a non-exit() path was getting reported with the exit() path (which users don't care about).

This fixes:

<rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit())

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113524 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
db9e273557e708b67967606cced6ac21b01919a6 09-Sep-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add -cxx-system-include option which can be used to specify an
explicit list for the C++ system include directories at the -cc1 level, as an
alternative to the horrible AddDefaultCPlusPlusIncludePaths().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113505 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
80c26f44a6f8d859a2a3babb06bd3ca8d86f2623 09-Sep-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add -cxx-system-include option which can be used to specify an
explicit list for the C++ system include directories at the -cc1 level, as an
alternative to the horrible AddDefaultCPlusPlusIncludePaths().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113505 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/HeaderSearchOptions.h
e5928fceca0ad454c0d654e0bf75e0664c53f4af 09-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Simplify template instantiation for C++ exception declarations,
eliminating an unnecessary use of TemporaryBase in the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113500 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
83cb94269015bf2770ade71e616c5322ea7e76e1 09-Sep-2010 Douglas Gregor <dgregor@apple.com> Simplify template instantiation for C++ exception declarations,
eliminating an unnecessary use of TemporaryBase in the process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113500 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5c32acaf1056b166e6308af9304aa8e553f37305 09-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the comma locations from all of the Sema routines that deal
with comma-separated lists. We never actually used the comma
locations, nor did we store them in the AST, but we did manage to
waste time during template instantiation to produce fake locations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113495 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
a1a04786cea2445759026edacd096abd1fbf4a05 09-Sep-2010 Douglas Gregor <dgregor@apple.com> Eliminate the comma locations from all of the Sema routines that deal
with comma-separated lists. We never actually used the comma
locations, nor did we store them in the AST, but we did manage to
waste time during template instantiation to produce fake locations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113495 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7c19c19eac2eb4815dd086173ee6d990478264b1 09-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Add proper type-source information to UnaryTypeTraitExpr, including
libclang visitation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113492 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ema/Sema.h
3d37c0ada0e46b87be0a10e8d52d990a97d3907a 09-Sep-2010 Douglas Gregor <dgregor@apple.com> Add proper type-source information to UnaryTypeTraitExpr, including
libclang visitation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113492 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ema/Sema.h
38a9425a248a9479dbbc245b4a4dd03be3c06c8a 09-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix C++ PCH issue.

Another beating by boost in this test case: http://llvm.org/PR8117
A function specialization wasn't properly initialized if it wasn't canonical.

I wish there was a nice little test case but this was boost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113481 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
a626a3d0fb74455651f742c0938902a42e6e71c8 09-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix C++ PCH issue.

Another beating by boost in this test case: http://llvm.org/PR8117
A function specialization wasn't properly initialized if it wasn't canonical.

I wish there was a nice little test case but this was boost.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113481 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
e7f5d445df75d5f0602673b8c9dc6208776aa33c 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal().

The end result is now we eagarly constant-fold symbols in the analyzer that are perfectly constrained
to be a constant value. This allows us to recover some path-sensitivity in some cases by lowering
the required level of reasoning power needed to evaluate some expressions.

The net win from this change is that the false positive in PR 8015 is fixed, and we also
find more idempotent operations bugs.

We do, however, regress with the BugReporterVisitors, which need to be modified to understand
this constant folding (and look past it). This causes some diagnostic regressions in plist-output.m
which will get addressed in a future patch. plist-output.m is now marked XFAIL, while
plist-output-alternate.m now tests that the plist output is working, but with the suboptimal
diagnostics. This second test file will eventually be removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113477 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
96ebad66c451d79c9f57b1edb31efaeeb23b9a01 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Rename GRState::getSVal() -> getRawSVal() and getSimplifiedSVal() -> getSVal().

The end result is now we eagarly constant-fold symbols in the analyzer that are perfectly constrained
to be a constant value. This allows us to recover some path-sensitivity in some cases by lowering
the required level of reasoning power needed to evaluate some expressions.

The net win from this change is that the false positive in PR 8015 is fixed, and we also
find more idempotent operations bugs.

We do, however, regress with the BugReporterVisitors, which need to be modified to understand
this constant folding (and look past it). This causes some diagnostic regressions in plist-output.m
which will get addressed in a future patch. plist-output.m is now marked XFAIL, while
plist-output-alternate.m now tests that the plist output is working, but with the suboptimal
diagnostics. This second test file will eventually be removed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113477 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
bf2b28c150c9c539175221926d6b84dc06f87d1a 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Remove stray ';' and convert tabs to spaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113466 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
be39a566a914df8561d7a1e9654708297f0908c1 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Remove stray ';' and convert tabs to spaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113466 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
1fe3c055f22b3bce0f89977b84a5b65d7cc92789 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Relax __attribute_((nonnull)) checking to allow the attribute on functions with no pointer arguments. GCC doesn't warn
in this case, and the attribute is trivially satisfied (and benign). Fixes <rdar://problem/8364828>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113464 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1db5d140b24bd181644135446fdaca75d8396aa4 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Relax __attribute_((nonnull)) checking to allow the attribute on functions with no pointer arguments. GCC doesn't warn
in this case, and the attribute is trivially satisfied (and benign). Fixes <rdar://problem/8364828>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113464 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dd5ca81b3ab667707101647c80ca500e2ac0cc5c 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Static analyzer fix: <rdar://problem/5880430> Switch on enum should not consider default case live if all enum values are covered

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113457 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
hecker/PathSensitive/GRCoreEngine.h
4d3175c1e5a44251ea97b0c81e80f060629d9c08 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Static analyzer fix: <rdar://problem/5880430> Switch on enum should not consider default case live if all enum values are covered

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113457 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
hecker/PathSensitive/GRCoreEngine.h
bc056ea8365d7d3f527ab9f8c26ca7c9d20a27b1 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Add 'filtered_pred_iterator' and 'filtered_succ_iterator' to CFGBlock. This allows a client
to selectively walk successors/predecessors based on commonly used filters. For starters, add
a filter to ignore 'default:' cases for SwitchStmts when all enum values are covered by CaseStmts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113449 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
ee7f84d509c6382491673883598eb9ed2d3a6a8b 09-Sep-2010 Ted Kremenek <kremenek@apple.com> Add 'filtered_pred_iterator' and 'filtered_succ_iterator' to CFGBlock. This allows a client
to selectively walk successors/predecessors based on commonly used filters. For starters, add
a filter to ignore 'default:' cases for SwitchStmts when all enum values are covered by CaseStmts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113449 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
aa90dfae5914fb934c315fae3ff8a9bab9e64a95 09-Sep-2010 Ted Kremenek <kremenek@apple.com> When building SwitchStmts in Sema, record whether all the enum values of a switch(enum) where
covered by individual case statements. Flow-based analyses may wish to consult this information,
and recording this in the AST allows us to obviate reconstructing this information later when
we build the CFG.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
559fb554602bedb57dbbf3cc14ac8a38264b4547 09-Sep-2010 Ted Kremenek <kremenek@apple.com> When building SwitchStmts in Sema, record whether all the enum values of a switch(enum) where
covered by individual case statements. Flow-based analyses may wish to consult this information,
and recording this in the AST allows us to obviate reconstructing this information later when
we build the CFG.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
435c92801ea81d61e0210c9b94716ba01c7a5355 09-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Fix a few minor issues with parsing and semantic analysis of C++
typeid expressions:
- make sure we have a proper source location for the closing ')'
- cache the declaration of std::type_info once we've found it



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113441 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
4eb4f0f96289cbece50c1270e02af3caf8779705 09-Sep-2010 Douglas Gregor <dgregor@apple.com> Fix a few minor issues with parsing and semantic analysis of C++
typeid expressions:
- make sure we have a proper source location for the closing ')'
- cache the declaration of std::type_info once we've found it



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113441 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
77a9553d3becb559aaca684557c0fbb406b28f54 09-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for a few MS extensions supported by the Borland compiler
(__uuidof, _fastcall, etc.).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
8df7622c65f13f95e6e1f4cf6f51592fddae3afb 09-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for a few MS extensions supported by the Borland compiler
(__uuidof, _fastcall, etc.).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
545f1ccf514d62d9ad5bb1c1e1063c945d2cf897 08-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Reverse r113397 until we decide what to do with
use of 'struct objc_object*' for 'is' (and others)
in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
56a965c0f77c9e6bffd65cc8f8796442a8527381 08-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Reverse r113397 until we decide what to do with
use of 'struct objc_object*' for 'is' (and others)
in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1b8b1fd85b12180523a12cf2841806f5cfab1fd6 08-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Re-enable CheckAccessDeclContext and make sure it doesn't trigger assertions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
65b63ec1410f09e1f3cdb847018d678b8f8fc3f7 08-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Re-enable CheckAccessDeclContext and make sure it doesn't trigger assertions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6fa68948f7d604946617deb5de14ce3d7905b21c 08-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Fix a crash when overloading id with objc_object*.
Radar 8400356.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d1877953f06df6df9b2cd5fc04b49e80eec66019 08-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Fix a crash when overloading id with objc_object*.
Radar 8400356.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8474ba33ad986765ec3664b38478846b4dfa5e77 08-Sep-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix C++ PCH issues.

PCH got a severe beating by the boost-using test case reported here: http://llvm.org/PR8099
Fix issues like:

-When PCH reading, make sure Decl's getASTContext() doesn't get called since a Decl in the parent hierarchy may be initializing.
-In ASTDeclReader::VisitFunctionDecl VisitRedeclarable should be called before using FunctionDecl's isCanonicalDecl()
-In ASTDeclReader::VisitRedeclarableTemplateDecl CommonOrPrev must be initialized before anything else.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
6b5415196327fa8ef00f028ba175fafef1738ae1 08-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix C++ PCH issues.

PCH got a severe beating by the boost-using test case reported here: http://llvm.org/PR8099
Fix issues like:

-When PCH reading, make sure Decl's getASTContext() doesn't get called since a Decl in the parent hierarchy may be initializing.
-In ASTDeclReader::VisitFunctionDecl VisitRedeclarable should be called before using FunctionDecl's isCanonicalDecl()
-In ASTDeclReader::VisitRedeclarableTemplateDecl CommonOrPrev must be initialized before anything else.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
4d58b6820c0a78959a00e45dd77a55178e8c6d94 08-Sep-2010 Francois Pichet <pichet2000@gmail.com> Microsoft's __uuidof operator implementation part 1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
01b7c3028da5bbcb9f8e52ba67e4613070de0e60 08-Sep-2010 Francois Pichet <pichet2000@gmail.com> Microsoft's __uuidof operator implementation part 1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
asic/TokenKinds.def
arse/Parser.h
ema/Sema.h
erialization/ASTBitCodes.h
792c9aabbdf38bd3c1d5279355ea99d94a023603 08-Sep-2010 Francois Pichet <pichet2000@gmail.com> Allow type definitions inside anonymous struct/union in Microsoft mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113354 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
538e0d0292cab16198a4fce5c388ff06adc74d0c 08-Sep-2010 Francois Pichet <pichet2000@gmail.com> Allow type definitions inside anonymous struct/union in Microsoft mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113354 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c3b6d5790e3202c0cd3639d4b1923b122cd4c077 08-Sep-2010 John McCall <rjmccall@apple.com> Put the tautological-comparison-of-unsigned-against-zero warnings in
-Wtautological-compare instead of -Wsign-compare, which also implies turning
them on by default.

Restoration of r112877.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113334 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8205c1a5c623a418f06789f222183ed5040ff4c9 08-Sep-2010 John McCall <rjmccall@apple.com> Put the tautological-comparison-of-unsigned-against-zero warnings in
-Wtautological-compare instead of -Wsign-compare, which also implies turning
them on by default.

Restoration of r112877.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113334 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
95bea5fdd03b244075607f1d3e94754e2d95ddf7 08-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Provide proper type-source location information for
CXXTemporaryObjectExpr, CXXScalarValueInitExpr, and
CXXUnresolvedConstructExpr, getting rid of a bunch of FIXMEs in the
process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ema/Initialization.h
ema/Sema.h
ab6677ec401cfd2c82b34e4cdfebd55a9dc25778 08-Sep-2010 Douglas Gregor <dgregor@apple.com> Provide proper type-source location information for
CXXTemporaryObjectExpr, CXXScalarValueInitExpr, and
CXXUnresolvedConstructExpr, getting rid of a bunch of FIXMEs in the
process.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ema/Initialization.h
ema/Sema.h
28bda05d7764746b6d1957871d8dac580ab1b4fb 08-Sep-2010 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
489f7131d0f7746525de3b26204c8eb523d84505 08-Sep-2010 Gabor Greif <ggreif@gmail.com> typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
5b8552c7a4a4db82b98b490bdb67a1a07a794345 07-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Improve source-location information for CXXNewExpr, by hanging on to
the TypeSourceInfo for the allocated type. Fixes PR7501.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ema/Sema.h
1bb2a93ab7b1499dda6f6b58865bd0dce1864228 07-Sep-2010 Douglas Gregor <dgregor@apple.com> Improve source-location information for CXXNewExpr, by hanging on to
the TypeSourceInfo for the allocated type. Fixes PR7501.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
ema/Sema.h
a903833cf2127aa808996caa98cc117d3dd5ada5 07-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Add function attributes to the output of -ast-print-xml, from Martin Vejnar!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113266 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
rontend/TypeXML.def
3aa2146552fafac2b5ba24a42d28861d22fe3175 07-Sep-2010 Douglas Gregor <dgregor@apple.com> Add function attributes to the output of -ast-print-xml, from Martin Vejnar!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113266 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
rontend/TypeXML.def
8fee33e7925d771f4b410744735a52122ce5b315 07-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Have Sema check for validity of CGString literal
instead of asserting in IRGen. Fixes radar 8390459.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113253 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7da71020b97c69b95831bd03d35e8e8404bfdea0 07-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Have Sema check for validity of CGString literal
instead of asserting in IRGen. Fixes radar 8390459.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113253 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1cd45d3521e568f5d60d2311273ba34533bff478 07-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Provide a specific diagnostic when trying to redefine an "extern
inline" function outside of GNU89 mode. Fixes
<rdar://problem/6880464>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113204 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fbc5b49322577e03ed780dcdf5be514871ec381d 07-Sep-2010 Douglas Gregor <dgregor@apple.com> Provide a specific diagnostic when trying to redefine an "extern
inline" function outside of GNU89 mode. Fixes
<rdar://problem/6880464>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113204 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
da8071e5e6c5a88a289a6e3a9baf87ed20bdac06 07-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Improve recovery when there is a stray ']' or ')' before the ';' at
the end of a statement. Fixes <rdar://problem/6896493>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113202 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
9ba23b4ceacd77cd264501690a7a9e94184ef71b 07-Sep-2010 Douglas Gregor <dgregor@apple.com> Improve recovery when there is a stray ']' or ')' before the ';' at
the end of a statement. Fixes <rdar://problem/6896493>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113202 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ccb4dffc5d5d652779cf2b421da35a4086dd1c03 07-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Improve recovery when a comma is missing between enumerators in an
enumeration definition. Fixes <rdar://problem/7159693>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113201 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
751f6922376dfe9432795b65a3649179e4ef5cf5 07-Sep-2010 Douglas Gregor <dgregor@apple.com> Improve recovery when a comma is missing between enumerators in an
enumeration definition. Fixes <rdar://problem/7159693>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113201 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
06283c946c623e085550ac0645475d2ea906f860 07-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostic and recovery when missing a comma between base or
member initializers in a C++ constructor. Fixes <rdar://problem/7796492>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113199 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b1f6fa48960eae269a3931d1fc545ed468d9a4d2 07-Sep-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostic and recovery when missing a comma between base or
member initializers in a C++ constructor. Fixes <rdar://problem/7796492>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113199 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
648096e9f61bcc33edcbcfc508f98656911d95fc 06-Sep-2010 Chris Lattner <sabre@nondot.org> remove curly quotes, patch by Dimitry Andric!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
32212f9d000e6bb631499afce43cd13fc0387413 06-Sep-2010 Chris Lattner <sabre@nondot.org> remove curly quotes, patch by Dimitry Andric!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
871351562c321476001bb2e4db5b505941762d38 06-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Make "-ccc-cxx" option work on Linux.
Patch by nobled.

I also took the opportunity to make the field private since now it is only ready from the
outside.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113138 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
79e9e9dd533de9609ef141449bf50e705fa68fd0 06-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Make "-ccc-cxx" option work on Linux.
Patch by nobled.

I also took the opportunity to make the field private since now it is only ready from the
outside.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113138 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
c9ea513ccc6142913013ffb9a3f97c2914ce8cc6 04-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Synchronize code-completion cursor kinds with indexing cursor
kinds. How shameful that this code was duplicated!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113033 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e8d7bebc0dd037516dd695ee1ac2eb0923753b46 04-Sep-2010 Douglas Gregor <dgregor@apple.com> Synchronize code-completion cursor kinds with indexing cursor
kinds. How shameful that this code was duplicated!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113033 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
5eb667af08d8619c455d6f53e7d59aab8831c187 03-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Allow anonymous and local types. The support was already in place for these,
but this makes them work even as an extension in C++98. This resolves PR8077.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113011 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
17fb855280be411389361f1c79753e0013c4187c 03-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Allow anonymous and local types. The support was already in place for these,
but this makes them work even as an extension in C++98. This resolves PR8077.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113011 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
02bd1d3c498a7eff790fd426afdb97751fa556a1 03-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Use getSpelling to get original text of the
c++ operator token. (radar 8328250).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112977 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
afbc68177cc11b8bfa47464b20e15d5f8fb21d4e 03-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Use getSpelling to get original text of the
c++ operator token. (radar 8328250).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112977 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
aa3d61c48e65e5f705a2c7e8d34e73032f66d76c 03-Sep-2010 John McCall <rjmccall@apple.com> Add a quick-and-dirty hack to give a better diagnostic for [class.protected]
restrictions. The note's not really on the right place given its wording,
but putting a second note on the call site (or muddying the wording) doesn't
appeal.

There are corner cases where this can be wrong, but I'm not concerned.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fe24e05a87e48fa3318b65d1a92c542107639fd9 03-Sep-2010 John McCall <rjmccall@apple.com> Add a quick-and-dirty hack to give a better diagnostic for [class.protected]
restrictions. The note's not really on the right place given its wording,
but putting a second note on the call site (or muddying the wording) doesn't
appeal.

There are corner cases where this can be wrong, but I'm not concerned.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
660da6b0e9d9e4fb118e93610c64b17af6578e02 03-Sep-2010 John McCall <rjmccall@apple.com> Devirtualize Sema, kill off DeleteExpr and DeleteStmt, and reformat.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112945 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
8c465e6494d16a19127873dc9bdc55177ac6b6fd 03-Sep-2010 John McCall <rjmccall@apple.com> Devirtualize Sema, kill off DeleteExpr and DeleteStmt, and reformat.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112945 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
23cf1f9d0f258b16fb5c07a14ceb7aba4562903e 03-Sep-2010 Dawn Perchik <dawn@burble.org> Add symantic support for the Pascal calling convention via
"__attribute((pascal))" or "__pascal" (and "_pascal" under
-fborland-extensions). Support still needs to be added to llvm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/TokenKinds.def
arse/Parser.h
ema/AttributeList.h
52fc314e1b5e1baee6305067cf831763d02bd243 03-Sep-2010 Dawn Perchik <dawn@burble.org> Add symantic support for the Pascal calling convention via
"__attribute((pascal))" or "__pascal" (and "_pascal" under
-fborland-extensions). Support still needs to be added to llvm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/Attr.td
asic/TokenKinds.def
arse/Parser.h
ema/AttributeList.h
3ad59d2bf26f624b5b3967ea220ab2dda17bc099 03-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to allow alternative representation of c++
operators (and, or, etc.) to be used as selectors
to match g++'s behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112935 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
be74740cc246ce08d42804a684385a42eb814edb 03-Sep-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to allow alternative representation of c++
operators (and, or, etc.) to be used as selectors
to match g++'s behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112935 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
dd6349b0ac0d2987ff5e10fcb3dcb40d3eb4b44c 03-Sep-2010 Ted Kremenek <kremenek@apple.com> Add optional record of "location" SVals in the environment. When we analyzing loads/stores, we lose the location SVal, which makes it difficult to recover in some cases (e.g., for post diagnostics). This is prep for pending changes to GRExprEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112930 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
6d4c022695c2d780ccb63ce43a50588412b80813 03-Sep-2010 Ted Kremenek <kremenek@apple.com> Add optional record of "location" SVals in the environment. When we analyzing loads/stores, we lose the location SVal, which makes it difficult to recover in some cases (e.g., for post diagnostics). This is prep for pending changes to GRExprEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112930 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
122ff727d033bfa7a2e11a5c88aa150a5c0622a9 03-Sep-2010 Ted Kremenek <kremenek@apple.com> Add GRState::getSimplifiedSVal(), which provides an API hook for doing symbol -> constant folding. This isn't used yet, but
is prep for some pending optimizations in GRExprEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112929 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
124f5d5fa4c6b348b4ca5876762fc5eb3864a39b 03-Sep-2010 Ted Kremenek <kremenek@apple.com> Add GRState::getSimplifiedSVal(), which provides an API hook for doing symbol -> constant folding. This isn't used yet, but
is prep for some pending optimizations in GRExprEngine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112929 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
7bc7eac4bafd314134d33c51a91854efdf2f1e89 03-Sep-2010 Ted Kremenek <kremenek@apple.com> Fix enum: CallEnter/CallExit are StmtPoints

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112928 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
4462ee2f0000e6cb966e3fff4516c84292f0cce8 03-Sep-2010 Ted Kremenek <kremenek@apple.com> Fix enum: CallEnter/CallExit are StmtPoints

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112928 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
a7754dfa32338bae703c0d943cb5624fab6e5053 03-Sep-2010 Anders Carlsson <andersca@mac.com> Get rid of the "functions declared 'noreturn' should have a 'void' result type" warning.

The rationale behind this is that it is normal for callback functions to have a non-void return type
and it should still be possible to mark them noreturn. (JavaScriptCore is a good example of this).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5d1d7ae120c2c8e6cba5d2a712b33500a5aecc10 03-Sep-2010 Anders Carlsson <andersca@mac.com> Get rid of the "functions declared 'noreturn' should have a 'void' result type" warning.

The rationale behind this is that it is normal for callback functions to have a non-void return type
and it should still be possible to mark them noreturn. (JavaScriptCore is a good example of this).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a0c4d36c100b81356d3cd749c2adfef1d4f61868 03-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for Borland extensions via option -fborland-extensions
(original patch r112791 was reverted due to a bug).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112915 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
400b607546a8dbfcee3b690f3d0a2fee0ea6480b 03-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for Borland extensions via option -fborland-extensions
(original patch r112791 was reverted due to a bug).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112915 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
c16c7232396e03ebc4e9e52f54db1128fb10b11e 03-Sep-2010 Tom Care <tcare@apple.com> Reapply 112850 and 112839 with a constructor for the BinaryOperatorData struct. Clang would zero out the enum and pointer in the struct in some conditions, but GCC would never zero out the values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112909 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
2bbbe50dbaa0bf231c16333b335304655deeb26b 03-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Reapply 112850 and 112839 with a constructor for the BinaryOperatorData struct. Clang would zero out the enum and pointer in the struct in some conditions, but GCC would never zero out the values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112909 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
9056bd2b3fd221a8f33faab05df0dafebc895fb7 03-Sep-2010 Bill Wendling <isanbard@gmail.com> Add a couple of FIXMEs. The types of palignr are different here than in GCC.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
798ad97198bfa4a227916d2ca65ee2c7f91d60b3 03-Sep-2010 Bill Wendling <isanbard@gmail.com> Add a couple of FIXMEs. The types of palignr are different here than in GCC.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
6e632983d8ce978437b8c6144dfdbccd7f316ced 03-Sep-2010 John McCall <rjmccall@apple.com> sabre points out that the timing here is pretty pessimal; I'll retry the
experiment in a few days.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
40bfbbc8a56bb1cff136c8cd44ced7e673f21a5e 03-Sep-2010 John McCall <rjmccall@apple.com> sabre points out that the timing here is pretty pessimal; I'll retry the
experiment in a few days.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c6d4a8ee9916dcf446bd6db5b44f694311c46438 03-Sep-2010 John McCall <rjmccall@apple.com> Experimentally move the tautological comparison warnings from -Wsign-compare
to -Wtautological-compare. This implies that they're now on by default.
If this causes chaos, I'll figure something else out.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112877 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
51b0a52cc42d5c76ad96cde924c2130e36b46dca 03-Sep-2010 John McCall <rjmccall@apple.com> Experimentally move the tautological comparison warnings from -Wsign-compare
to -Wtautological-compare. This implies that they're now on by default.
If this causes chaos, I'll figure something else out.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112877 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
5cd6231b9b167f170e1994abb82279f64e38180c 03-Sep-2010 Bill Wendling <isanbard@gmail.com> Reorder the MMX builtins to be in their own ostracized group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
1c4345e1066bc8de27d027bccd193dec13d40bf2 03-Sep-2010 Bill Wendling <isanbard@gmail.com> Reorder the MMX builtins to be in their own ostracized group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
499d0f4b4f76328812ed192cb9800791dc333170 02-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate CXXBindReferenceExpr, which was used in a ton of
well-intentioned but completely unused code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
e2ca6d4a2f41876930fbd304caa706452d2569d8 02-Sep-2010 Douglas Gregor <dgregor@apple.com> Eliminate CXXBindReferenceExpr, which was used in a ton of
well-intentioned but completely unused code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
erialization/ASTBitCodes.h
b36f1104e7ac8203a95d7d5c4b00eece24811900 02-Sep-2010 Tom Care <tcare@apple.com> Reverting 112850 and 112839 due to test failures on some systems

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112857 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
066d66096520c015036ef20bbbfe100b88e2a2d1 02-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Reverting 112850 and 112839 due to test failures on some systems

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112857 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
48ce58bba7d612551685c7ebdfa9884354e29462 02-Sep-2010 John McCall <rjmccall@apple.com> Teach RecursiveASTVisitor to optionally visit bodies of instantiations.
Based on a patch by Francois Pichet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
760c8af273d9871d063250ae626fb6df94c121f2 02-Sep-2010 John McCall <rjmccall@apple.com> Teach RecursiveASTVisitor to optionally visit bodies of instantiations.
Based on a patch by Francois Pichet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
33e584b41a604cda6b5dc4a1c545e7d6bb7db9b3 02-Sep-2010 Tom Care <tcare@apple.com> Improved error reporting in IdempotentOperationChecker
- SourceRange highlighting is only given for the relevant side of the operator (assignments give both)
- Added PostVisitBinaryOperator hook to retrieve the ExplodedNode for an operator
- Added a BugReporterVisitor to display the last store to every VarDecl in a Stmt
- Changed bug reporting to use the new BugReporterVisitor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112839 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
3f0ce9c3ab04d0edb8d28145a8feb4abaa8fb8e6 02-Sep-2010 Tom Care <tom.care@uqconnect.edu.au> Improved error reporting in IdempotentOperationChecker
- SourceRange highlighting is only given for the relevant side of the operator (assignments give both)
- Added PostVisitBinaryOperator hook to retrieve the ExplodedNode for an operator
- Added a BugReporterVisitor to display the last store to every VarDecl in a Stmt
- Changed bug reporting to use the new BugReporterVisitor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112839 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
7b4fd830cd885fa6ce90a1cf9182d4ed16091918 02-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid implicit string construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112820 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
1d6107c30194f10cb2c634e9d8f8740d660b1644 02-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid implicit string construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112820 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
5930ab8acac5864b91f7fc1a2091fda9d7df99d7 02-Sep-2010 Dawn Perchik <dawn@burble.org> Reverting rev 112791 - apparently -fborland-extensions is on all the time?!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
d0b4e7c8723c031cd8d743b2ff63943a3d0563ff 02-Sep-2010 Dawn Perchik <dawn@burble.org> Reverting rev 112791 - apparently -fborland-extensions is on all the time?!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
a4202c183705c285d7639e9fbc347c6d2173263e 02-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for Borland extensions via option -fborland-extensions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
621a2f36af707747d70b8103bda6f65237fce899 02-Sep-2010 Dawn Perchik <dawn@burble.org> Add support for Borland extensions via option -fborland-extensions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
8dfddc363dfbcd9ca65d53822a2b736b4eef7dad 02-Sep-2010 Ted Kremenek <kremenek@apple.com> For GRExprEngine::EvalBind() (and called visitors), unifiy StoreE and AssignE. Now StoreE (const Stmt*) represents the expression where the store took place, which is the assignment expression if it takes place in an assignment. This removes some conceptual dissidence as well as removes an extra parameter from the Checker::PreVisitBind() visitor. It also improves ranges and source location information in analyzer diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112789 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
79d73044b7d0adfbd18ee34285395e1d5135f662 02-Sep-2010 Ted Kremenek <kremenek@apple.com> For GRExprEngine::EvalBind() (and called visitors), unifiy StoreE and AssignE. Now StoreE (const Stmt*) represents the expression where the store took place, which is the assignment expression if it takes place in an assignment. This removes some conceptual dissidence as well as removes an extra parameter from the Checker::PreVisitBind() visitor. It also improves ranges and source location information in analyzer diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112789 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
c61f29cb33e9150d16be36830a6c265e1842e77d 02-Sep-2010 Zhanyong Wan <wan@google.com> Fixes a warning when compiling Clang (Sema has virtual methods but a non-virtual dtor). Reviewed by chandlerc and nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
85dd015707143f763617098ec9458bf61db420f1 02-Sep-2010 Zhanyong Wan <wan@google.com> Fixes a warning when compiling Clang (Sema has virtual methods but a non-virtual dtor). Reviewed by chandlerc and nlewycky.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e019df2d54944bf55f4b8916fb9dbed0e7656368 02-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new libclang function,
clang_getSpecializedCursorTemplate(), which determines the template
(or member thereof) that the given cursor specializes or from which it
was instantiated. This routine can be used to establish a link between
templates and their instantiations/specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
e0329acf5c9437e2086a2fb2bf7a95ae2ac96505 02-Sep-2010 Douglas Gregor <dgregor@apple.com> Introduce a new libclang function,
clang_getSpecializedCursorTemplate(), which determines the template
(or member thereof) that the given cursor specializes or from which it
was instantiated. This routine can be used to establish a link between
templates and their instantiations/specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
047c86597b922afa6dd16dcc086002bd7a91ffab 02-Sep-2010 Zhanyong Wan <wan@google.com> Make RecursiveASTVisitor not crash when a TemplateArgumentLoc object has a NULL TypeSourceInfo*. This fixes the symptom of http://llvm.org/PR8043. Reviewed by csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
fcf431609769a9600c24618d1a33135caec4fef2 02-Sep-2010 Zhanyong Wan <wan@google.com> Make RecursiveASTVisitor not crash when a TemplateArgumentLoc object has a NULL TypeSourceInfo*. This fixes the symptom of http://llvm.org/PR8043. Reviewed by csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
bec660d7bfcc2abadae6b1dfa009f06677ea011f 02-Sep-2010 Bill Wendling <isanbard@gmail.com> Add some MMX builtins to correspond with the intrinsics now accepted by
LLVM. This will be used by the mmintrin.h header, but that bit still needs to be
worked out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112776 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
65206c552ae5215c2225502686b5e164ebe2c2da 02-Sep-2010 Bill Wendling <isanbard@gmail.com> Add some MMX builtins to correspond with the intrinsics now accepted by
LLVM. This will be used by the mmintrin.h header, but that bit still needs to be
worked out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112776 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
c1e532a79c0d206e79645d96dc01f8a2f2f26ed8 02-Sep-2010 Craig Silverstein <csilvers2000@yahoo.com> Update the docstring to say FriendTemplateDecl is not actually used.
Based on discussion with rjmccall and dgregor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112762 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
c6a518a7271bbd6d0f606ba5c1b1b9c668bbdcb0 02-Sep-2010 Craig Silverstein <csilvers2000@yahoo.com> Update the docstring to say FriendTemplateDecl is not actually used.
Based on discussion with rjmccall and dgregor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112762 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9c4aae941a9efd293d591f1fd4ead53ee326fd4d 02-Sep-2010 Craig Silverstein <csilvers2000@yahoo.com> Make some docstring clarifications, after discussion with dgregor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112759 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
710672485039d3dd355748876299fff88e8ad84c 02-Sep-2010 Craig Silverstein <csilvers2000@yahoo.com> Make some docstring clarifications, after discussion with dgregor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112759 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
4ac972be29df254eb6b299e305bb9ae5e54db7a0 01-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Fix the source-range information for an EnumConstantDecl; previously,
it did not include the initializer expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8e7139c9554230df64325f70fe202c83491ba7f5 01-Sep-2010 Douglas Gregor <dgregor@apple.com> Fix the source-range information for an EnumConstantDecl; previously,
it did not include the initializer expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e4456a335ff2190b23bf1463249d288f962c1f22 01-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Implement libclang support for using declarations. Clang actually uses
three different kinds of AST nodes to represent using declarations:
UsingDecl, UnresolvedUsingValueDecl, and
UnresolvedUsingTypenameDecl. These three are collapsed into a single
cursor kind for using declarations, since libclang clients don't need
the distinction.

Several related changes here:
- Cursor visitation of the three AST nodes for using declarations
- Proper source-range computation for these AST nodes
- Using declarations have no USRs, since they don't actually declare
any entities.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7e24256c95afb64b4d5abf201a0f9f0527cb4cf3 01-Sep-2010 Douglas Gregor <dgregor@apple.com> Implement libclang support for using declarations. Clang actually uses
three different kinds of AST nodes to represent using declarations:
UsingDecl, UnresolvedUsingValueDecl, and
UnresolvedUsingTypenameDecl. These three are collapsed into a single
cursor kind for using declarations, since libclang clients don't need
the distinction.

Several related changes here:
- Cursor visitation of the three AST nodes for using declarations
- Proper source-range computation for these AST nodes
- Using declarations have no USRs, since they don't actually declare
any entities.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8b4221f4e362f2263bb87550fd4c58ee32fa4366 01-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Implement libclang support for using directives (cursor + visitation +
suppressing USRs). Also, fix up the source location information for
using directives so that the declaration location refers to the
namespace name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0a35bceb7768fc0be62cb644a4e31d8bfd9fb44a 01-Sep-2010 Douglas Gregor <dgregor@apple.com> Implement libclang support for using directives (cursor + visitation +
suppressing USRs). Also, fix up the source location information for
using directives so that the declaration location refers to the
namespace name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
51e8eea95cb6886b76e9d72eadce34aba72dd35a 01-Sep-2010 Ted Kremenek <kremenek@apple.com> Split ObjCInterfaceDecl::ReferencedProtocols into two lists: ReferencedProtocols and AllReferencedProtocols. ReferencedProtocols
(and thus protocol_begin(), protocol_end()) now only contains the list of protocols that were directly referenced in
an @interface declaration. 'all_referenced_protocol_[begin,end]()' now returns the set of protocols that were referenced
in both the @interface and class extensions. The latter is needed for semantic analysis/codegen, while the former is
needed to maintain the lexical information of the original source.

Fixes <rdar://problem/8380046>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
53b9441b5a81a24fa1f66f3f6416f1e36baa9c2f 01-Sep-2010 Ted Kremenek <kremenek@apple.com> Split ObjCInterfaceDecl::ReferencedProtocols into two lists: ReferencedProtocols and AllReferencedProtocols. ReferencedProtocols
(and thus protocol_begin(), protocol_end()) now only contains the list of protocols that were directly referenced in
an @interface declaration. 'all_referenced_protocol_[begin,end]()' now returns the set of protocols that were referenced
in both the @interface and class extensions. The latter is needed for semantic analysis/codegen, while the former is
needed to maintain the lexical information of the original source.

Fixes <rdar://problem/8380046>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
aa04570cabaf59669d8eafc0bedb357722d9fbc5 01-Sep-2010 Douglas Gregor <doug.gregor@gmail.com> Improve location information in the representation of namespace
aliases. Previously, the location of the alias was at the "namespace"
keyword. Now, it's on the identifier being declared (as is the custom
for Clang), and we keep a separate source location for the "namespace"
keyword.

Also, added a getSourceRange() member function to NamespaceAliasDecl
to correctly compute the source range.

Finally, removed a bunch of setters from NamespaceAliasDecl and gave
ASTReaderDecl friendship so that it could set the corresponding fields
directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8ea5b9d832455247a15925398fb663d299d33238 01-Sep-2010 Douglas Gregor <dgregor@apple.com> Improve location information in the representation of namespace
aliases. Previously, the location of the alias was at the "namespace"
keyword. Now, it's on the identifier being declared (as is the custom
for Clang), and we keep a separate source location for the "namespace"
keyword.

Also, added a getSourceRange() member function to NamespaceAliasDecl
to correctly compute the source range.

Finally, removed a bunch of setters from NamespaceAliasDecl and gave
ASTReaderDecl friendship so that it could set the corresponding fields
directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
47798f2285bca17e2c8f85030e5df7884c862f10 01-Sep-2010 John McCall <rjmccall@apple.com> Add convenience accessors for determining whether template declarations are definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112656 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
13fda8afe2ddd06c12bfb93a054e6b0d6d0d99f1 01-Sep-2010 John McCall <rjmccall@apple.com> Add convenience accessors for determining whether template declarations are definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112656 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
458da213564aae23c42bd0ff6e906de7fd73b8cd 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make inline namespace not be transparent after all. The concept simply doesn't fit. Instead, special-case the few places where transparent contexts have the desired behavior for inline namespaces. Fixes a redeclaration issue in inline namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
410c4f2eb5e6a8c2318cacb9a6751f1b4fcff166 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make inline namespace not be transparent after all. The concept simply doesn't fit. Instead, special-case the few places where transparent contexts have the desired behavior for inline namespaces. Fixes a redeclaration issue in inline namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
5e1fe4d264f3777fbd3afd3301e0e515d88425d8 31-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> AST work to support [C++] [IRgen] for ?: with missing LHS
This is also pr7726 and wip. No change in functionality
at this time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f9b949fecf339a2c9bd97dd11a272c4878f85ce4 31-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> AST work to support [C++] [IRgen] for ?: with missing LHS
This is also pr7726 and wip. No change in functionality
at this time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b88eafd94faee5cebd0b8bb27803e61cd92d7d56 31-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement basic support for indexing function templates in
libclang. This includes:
- Cursor kind for function templates, with visitation logic
- Cursor kinds for template parameters, with visitation logic
- Visitation logic for template specialization types, qualified type
locations
- USR generation for function templates, template specialization
types, template parameter types.

Also happens to fix PR7804, which I tripped across while testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
fe72e9ceeae6cc8669cd8bb722425300190638ea 31-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement basic support for indexing function templates in
libclang. This includes:
- Cursor kind for function templates, with visitation logic
- Cursor kinds for template parameters, with visitation logic
- Visitation logic for template specialization types, qualified type
locations
- USR generation for function templates, template specialization
types, template parameter types.

Also happens to fix PR7804, which I tripped across while testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
6da49ce1c4e3b671d30ba7fbb80d27e011124d35 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Enable inline namespaces in C++03 as an extension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
88e64ca96d6c00c6f3bd43772cd325bede795d2a 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Enable inline namespaces in C++03 as an extension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
6bd5085ed4a787ab6a534719505b0a84f6606164 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Enable inline namespaces in the AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
4e4d57069cf9402728e05f7fc856295a86e4801f 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Enable inline namespaces in the AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
92ae2b40f721121f8944a1bb3c69b23d96bcff31 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename DeclContext::getLookupContext to getRedeclContext and change its semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
7a126a474fdde06382b315b4e3d8ef0a21d4dc31 31-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename DeclContext::getLookupContext to getRedeclContext and change its semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
28a209c7deee1ce5b6f101fabbedf74fa626e557 30-Aug-2010 Sean Hunt <rideau3@gmail.com> Revert my user-defined literal commits - r1124{58,60,67} pending
some issues being sorted out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ex/Lexer.h
ex/LiteralSupport.h
ex/Preprocessor.h
ex/Token.h
ema/Sema.h
6cf750298d3621d8a10a6dd07fcee8e274b9d94d 30-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Revert my user-defined literal commits - r1124{58,60,67} pending
some issues being sorted out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ex/Lexer.h
ex/LiteralSupport.h
ex/Preprocessor.h
ex/Token.h
ema/Sema.h
7e248dedc344f47e2a4e91fc81da0542677c2934 30-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Heap-allocate the attribute vectors in
ASTContext::DeclAttrs. Otherwise, iterators will go stale when the
DenseMap reallocates, which can cause crashes when, e.g., looping over
the attributes in a template to instantiate them and add the results
to the instantiation of that template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6320064d0c60fa8683f5623881c9394fd4aa7689 30-Aug-2010 Douglas Gregor <dgregor@apple.com> Heap-allocate the attribute vectors in
ASTContext::DeclAttrs. Otherwise, iterators will go stale when the
DenseMap reallocates, which can cause crashes when, e.g., looping over
the attributes in a template to instantiate them and add the results
to the instantiation of that template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4a581fcc7f529093de2c64cebf88533973847bbd 30-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Now that GCC will have #pragma push/pop (in GCC 4.6), allow the
#pragma without requiring it to be in the "clang" namespace, from
Louis Gerbarg!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6493a4d7129673f7878da2382dedf4f9abc57e4c 30-Aug-2010 Douglas Gregor <dgregor@apple.com> Now that GCC will have #pragma push/pop (in GCC 4.6), allow the
#pragma without requiring it to be in the "clang" namespace, from
Louis Gerbarg!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
67c0315750719a35e43b1d174b7128a8ab53efbf 30-Aug-2010 Sean Hunt <rideau3@gmail.com> Two minor fixes to user-defined literals:

- Zero-initialize UDLData so that crashes stop
- Stop complaining that we can't emit them (we most certainly can)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112467 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
75b8508380e6d44276a8fafe5cafcedb9cf532d3 30-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Two minor fixes to user-defined literals:

- Zero-initialize UDLData so that crashes stop
- Stop complaining that we can't emit them (we most certainly can)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112467 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
6eab8186a0b68571e1b4059fc0f25188647da2d4 30-Aug-2010 Sean Hunt <rideau3@gmail.com> Fix some test-breaking that snuck into my previous commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112460 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
e425368eb59687b66620a2c6adc3e426c997d796 30-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Fix some test-breaking that snuck into my previous commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112460 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
0fd5a8586deed8910d4e62ef0df12f0e6f48f24b 29-Aug-2010 Sean Hunt <rideau3@gmail.com> Implement C++0x user-defined string literals.

The extra data stored on user-defined literal Tokens is stored in extra
allocated memory, which is managed by the PreprocessorLexer because there isn't
a better place to put it that makes sure it gets deallocated, but only after
it's used up. My testing has shown no significant slowdown as a result, but
independent testing would be appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112458 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ex/Lexer.h
ex/LiteralSupport.h
ex/Preprocessor.h
ex/Token.h
ema/Sema.h
0016d519b831859526b79405cdae4c64c73731c8 29-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Implement C++0x user-defined string literals.

The extra data stored on user-defined literal Tokens is stored in extra
allocated memory, which is managed by the PreprocessorLexer because there isn't
a better place to put it that makes sure it gets deallocated, but only after
it's used up. My testing has shown no significant slowdown as a result, but
independent testing would be appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112458 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
ex/Lexer.h
ex/LiteralSupport.h
ex/Preprocessor.h
ex/Token.h
ema/Sema.h
9c0d53a9932c135e3fb28b757e03f7424d98c840 29-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Improve code completion for initializer lists in constructors. Instead
of prioritizing just by initialization order, we bump the priority of
just the *next* initializer in the list, and leave everything else at
the normal priority. That way, if one intentionally skips the
initialization of a base or member (to get default initialization),
we'll still get ordered completion for the rest.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112454 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0c431c8c001e4c1f7488663d98700a8ce1e89e2a 29-Aug-2010 Douglas Gregor <dgregor@apple.com> Improve code completion for initializer lists in constructors. Instead
of prioritizing just by initialization order, we bump the priority of
just the *next* initializer in the list, and leave everything else at
the normal priority. That way, if one intentionally skips the
initialization of a base or member (to get default initialization),
we'll still get ordered completion for the rest.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112454 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
4d3664e00b3fbe4ca4de4431414941e0bec06b44 29-Aug-2010 John McCall <rjmccall@apple.com> Complain if a __pragma isn't terminated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
3da92a9d21f707c164797dd967ba894b2282b343 29-Aug-2010 John McCall <rjmccall@apple.com> Complain if a __pragma isn't terminated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
bbf55a19bd1b4975ff46c15323fd112d60f5c43f 29-Aug-2010 John McCall <rjmccall@apple.com> Add support for Microsoft's __pragma in the preprocessor.
Patch by Francois Pichet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112391 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
1ef8a2e7675f3d8b6e8d9963b00378086e1dcdc7 29-Aug-2010 John McCall <rjmccall@apple.com> Add support for Microsoft's __pragma in the preprocessor.
Patch by Francois Pichet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112391 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
023aeab93de64d6d079ceba7e870bd32c4662444 28-Aug-2010 John McCall <rjmccall@apple.com> If filtering a lookup result leaves it ambiguous, keep the ambiguity
kind. Fixes PR7252.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112383 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
67d22fb57ecccd29ea9c8ec004f63dc356cd477d 28-Aug-2010 John McCall <rjmccall@apple.com> If filtering a lookup result leaves it ambiguous, keep the ambiguity
kind. Fixes PR7252.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112383 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
11dd7550044ec6b3ca84842acaae2eb69f5f1d3f 28-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Fix copy+paste error in comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112370 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ae2777cfe7d21f73e5a4155082fe20197cec62bd 28-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Fix copy+paste error in comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112370 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a53d7f2521cfe49435fb52d4bd62110a7fbe5a27 28-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix the memory leak of FloatingLiteral/IntegerLiteral.

For large floats/integers, APFloat/APInt will allocate memory from the heap to represent these numbers.
Unfortunately, when we use a BumpPtrAllocator to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
the APFloat/APInt values will never get freed.
I introduce the class 'APNumericStorage' which uses ASTContext's allocator for memory allocation and is used internally by FloatingLiteral/IntegerLiteral.

Fixes rdar://7637185

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9996a7f06a3c5b4554692e7177930cf4e8ef09af 28-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix the memory leak of FloatingLiteral/IntegerLiteral.

For large floats/integers, APFloat/APInt will allocate memory from the heap to represent these numbers.
Unfortunately, when we use a BumpPtrAllocator to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
the APFloat/APInt values will never get freed.
I introduce the class 'APNumericStorage' which uses ASTContext's allocator for memory allocation and is used internally by FloatingLiteral/IntegerLiteral.

Fixes rdar://7637185

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e337c01165ec82f3c592c55885f11a75f4862631 28-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Ignore this flag too, Clang doesn't seem to use random numbers internally.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112342 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
944c42feb4f40735f3767bae59a0547a7b803e1e 28-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Ignore this flag too, Clang doesn't seem to use random numbers internally.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112342 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
5d25327ee94eb07d81ff8aa0ee726ee8a2c3bac0 28-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Basic code completion support for the base and member initializers in
a constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112330 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0133f525a23e18dd444880f7554f25fbcbd834e5 28-Aug-2010 Douglas Gregor <dgregor@apple.com> Basic code completion support for the base and member initializers in
a constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112330 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
0edeb683d4242d94f32543a325d2a8c651398a2c 28-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for inline namespaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112320 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/Sema.h
d078e641450bbc5a20df8d3b54f87b27e398acb3 28-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for inline namespaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112320 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
ema/Sema.h
18052092ca5d9f2833b8da3247a354ccd50482f5 28-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Comment and move another ASTReader member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112319 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
e41f985c15d15fce8390ebffb49dc75447c8f0f6 28-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Comment and move another ASTReader member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112319 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
bb5e1ba27200495ccd2ef6525e522c154f861334 28-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Update comment after Chandler's change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112318 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
e361c63e5306df4df9aa780c60c658046a69d38d 28-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Update comment after Chandler's change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112318 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
f83845030dfc2499d1e92ceebef3c82151c1a45c 28-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Miscellaneous found by inspection with John and Sebastian

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
757c600d696f016fea6b086d0349bcd7a4d06bd1 28-Aug-2010 Douglas Gregor <dgregor@apple.com> Miscellaneous found by inspection with John and Sebastian

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ae25559e95e45ec9b5ee58d4ebb76e1f5455b7ce 28-Aug-2010 Tom Care <tcare@apple.com> Add alternate version of LiveVariables analysis that does not kill liveness at assignments. This 'relaxed' liveness is useful in path sensitive analysis for situations where the resulting extended liveness allows us to find some bugs.
- Added killAtAssign flag to LiveVariables
- Added relaxed LiveVariables to AnalysisContext with an accessor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/AnalysisContext.h
ec49bf464c91a52b3a463940da6589d03bf40248 28-Aug-2010 Tom Care <tom.care@uqconnect.edu.au> Add alternate version of LiveVariables analysis that does not kill liveness at assignments. This 'relaxed' liveness is useful in path sensitive analysis for situations where the resulting extended liveness allows us to find some bugs.
- Added killAtAssign flag to LiveVariables
- Added relaxed LiveVariables to AnalysisContext with an accessor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/AnalysisContext.h
7f46812ee61463a100f2f26571c9b42832910f6d 27-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Improve wording of diagnostic complaining about a non-void* pointer as the first parameter of operator delete

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
520441eb82202702688750860fd98148421ea0ed 27-Aug-2010 Douglas Gregor <dgregor@apple.com> Improve wording of diagnostic complaining about a non-void* pointer as the first parameter of operator delete

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9862d9eaf9393e2ccaaf28901d794dd1c771f080 27-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Suggest "const" and "volatile" code completions after a function
declarator, the very definition of "low-hanging fruit".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112274 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
1a480c403a3b141ab89c9c59cf7b681102a1bfab 27-Aug-2010 Douglas Gregor <dgregor@apple.com> Suggest "const" and "volatile" code completions after a function
declarator, the very definition of "low-hanging fruit".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112274 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
fd844a2662de6fd5d6ddf2bb6f155f536bb93c6b 27-Aug-2010 Dan Gohman <gohman@apple.com> createMainFileID doesn't need its IncludePos argument, since
the main file isn't an included file, and the IncludePos is
always SourceLocation().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f155dfa4e284be7dca8f1abf002476b2aaee8546 27-Aug-2010 Dan Gohman <gohman@apple.com> createMainFileID doesn't need its IncludePos argument, since
the main file isn't an included file, and the IncludePos is
always SourceLocation().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ee273b5e73a8c866da7b4c9fcfb0af48c7973ed2 27-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When code-completing inside an Objective-C method, give a slight
priority boost to methods with the same selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112268 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
265f749edb28a80db517cc9051bd21092720d0f0 27-Aug-2010 Douglas Gregor <dgregor@apple.com> When code-completing inside an Objective-C method, give a slight
priority boost to methods with the same selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112268 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e6e047ff2c8a8cb07162e8fe3b5ae5b7bda89dae 27-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add a super-cool code completion for send-to-super. When we're typing
a message send to "super" from a method that appears to be meant to
override a superclass method (same kind, same selector, same argument
types), provide a "super" completion that fills in the selector along
with forwarding the method's arguments (as placeholders).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112263 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
03d8aec611380d30ddb0659bb61be9289c3871b3 27-Aug-2010 Douglas Gregor <dgregor@apple.com> Add a super-cool code completion for send-to-super. When we're typing
a message send to "super" from a method that appears to be meant to
override a superclass method (same kind, same selector, same argument
types), provide a "super" completion that fills in the selector along
with forwarding the method's arguments (as placeholders).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112263 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/Sema.h
580dec2c9965112b0c9854467aa7ae1463c4ea94 27-Aug-2010 John McCall <rjmccall@apple.com> Propagate whether an id-expression is the immediate argument of
an '&' expression from the second caller of ActOnIdExpression.

Teach template argument deduction that an overloaded id-expression
doesn't give a valid type for deduction purposes to a non-static
member function unless the expression has the correct syntactic
form.

Teach ActOnIdExpression that it shouldn't try to create implicit
member expressions for '&function', because this isn't a
permitted form of use for member functions.

Teach CheckAddressOfOperand to diagnose these more carefully.
Some of these cases aren't reachable right now because earlier
diagnostics interrupt them.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
9c72c6088d591ace8503b842d39448c2040f3033 27-Aug-2010 John McCall <rjmccall@apple.com> Propagate whether an id-expression is the immediate argument of
an '&' expression from the second caller of ActOnIdExpression.

Teach template argument deduction that an overloaded id-expression
doesn't give a valid type for deduction purposes to a non-static
member function unless the expression has the correct syntactic
form.

Teach ActOnIdExpression that it shouldn't try to create implicit
member expressions for '&function', because this isn't a
permitted form of use for member functions.

Teach CheckAddressOfOperand to diagnose these more carefully.
Some of these cases aren't reachable right now because earlier
diagnostics interrupt them.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
arse/Parser.h
ema/Sema.h
5058ef6c7ab13f285da81c787ea7a5ffe464e8a4 27-Aug-2010 John McCall <rjmccall@apple.com> One who seeks knowledge learns something new every day.
One who seeks the Tao unlearns something new every day.
Less and less remains until you arrive at non-action.
When you arrive at non-action,
nothing will be left undone.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112244 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/AttributeList.h
ema/Designator.h
ema/Ownership.h
ema/PrettyDeclStackTrace.h
ema/Sema.h
f312b1ea179f1c44371f9ee0cd0bc006f612de11 27-Aug-2010 John McCall <rjmccall@apple.com> One who seeks knowledge learns something new every day.
One who seeks the Tao unlearns something new every day.
Less and less remains until you arrive at non-action.
When you arrive at non-action,
nothing will be left undone.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112244 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/AttributeList.h
ema/Designator.h
ema/Ownership.h
ema/PrettyDeclStackTrace.h
ema/Sema.h
cb127c99bf0083a8afbe5e546345172680715d8c 27-Aug-2010 Ted Kremenek <kremenek@apple.com> Fix horrible GRExprEngine bug where switch statements with no 'case:' statements would cause the path to get prematurely aborted. Fixes <rdar://problem/8360854>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112233 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
34feff654c6304e0a59ceb1376989d28dbc956ff 27-Aug-2010 Ted Kremenek <kremenek@apple.com> Fix horrible GRExprEngine bug where switch statements with no 'case:' statements would cause the path to get prematurely aborted. Fixes <rdar://problem/8360854>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112233 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
6b5f410f4ef7d4e2300df3cec8ef30810e10dfc7 26-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When code-completing a potential call to a C++ non-static member
function, take into account the qualifiers on the object argument
(e.g., what will become "this"), filtering around uncallable member
functions and giving a slight priority boost to those with
exactly-matching qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ema/CodeCompleteConsumer.h
3cdee121daa13403335094ce0e181b9911c2124c 26-Aug-2010 Douglas Gregor <dgregor@apple.com> When code-completing a potential call to a C++ non-static member
function, take into account the qualifiers on the object argument
(e.g., what will become "this"), filtering around uncallable member
functions and giving a slight priority boost to those with
exactly-matching qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ema/CodeCompleteConsumer.h
45a85e0c449024f48a113c336e73d4458e81c72b 26-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement code completion for @selector expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112186 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
458433d2f0f5c96a9e0d21decdd44bebccf20b11 26-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement code completion for @selector expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112186 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
0723ac686c322d77cd0e7e514e620fca5b2fd8f0 26-Aug-2010 John McCall <rjmccall@apple.com> Missed a couple.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f29815affe5d28c499d21c0be9bb078c52025ae6 26-Aug-2010 John McCall <rjmccall@apple.com> Missed a couple.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f3e302acf4259cf4cd9bc62b58fd2d517e817ab4 26-Aug-2010 John McCall <rjmccall@apple.com> Apparently gcc doesn't always get injected class names right.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6d9496d2d22817aeb286dd7007923e14f10fa8a6 26-Aug-2010 John McCall <rjmccall@apple.com> Apparently gcc doesn't always get injected class names right.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
0942e31e6c3725b57c5093ab339dd86031454cfc 26-Aug-2010 John McCall <rjmccall@apple.com> Move things around so that Sema.h no longer depends on even DeclBase.h.
It still depends on Type because DeclarationName.h does.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112177 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
ema/Sema.h
ea318642072d3d94b5c3cff0fa6f4b33d2db0768 26-Aug-2010 John McCall <rjmccall@apple.com> Move things around so that Sema.h no longer depends on even DeclBase.h.
It still depends on Type because DeclarationName.h does.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112177 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
ema/Sema.h
f680d9ef70e596ada56e0fc91a3f17dad2a81e5a 26-Aug-2010 John McCall <rjmccall@apple.com> De-memberify the VarDecl and FunctionDecl StorageClass enums.
This lets us remove Sema.h's dependency on Expr.h and Decl.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
asic/Specifiers.h
rontend/DeclXML.def
ema/DelayedDiagnostic.h
ema/Sema.h
d931b086984257de68868a64a235c2b4b34003fb 26-Aug-2010 John McCall <rjmccall@apple.com> De-memberify the VarDecl and FunctionDecl StorageClass enums.
This lets us remove Sema.h's dependency on Expr.h and Decl.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
asic/Specifiers.h
rontend/DeclXML.def
ema/DelayedDiagnostic.h
ema/Sema.h
c84ff1dac7861413da5f9ac6cba4dd0e1256a33c 26-Aug-2010 Dan Gohman <gohman@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
afbf5f810652f04c0bba235c0fa079885fb3caa8 26-Aug-2010 Dan Gohman <gohman@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d3a91a6b4123d8b9b6f55d6d08a5943de9bb8aba 26-Aug-2010 John McCall <rjmccall@apple.com> Restore r112114 now that SmallVector<...,0> is safe.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112148 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaInternal.h
9c3087b0b0bea2fd782205c1274ebfc4290265e0 26-Aug-2010 John McCall <rjmccall@apple.com> Restore r112114 now that SmallVector<...,0> is safe.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112148 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaInternal.h
df1075a9d307ce6c8b32d2e5d73a982592acdfa5 26-Aug-2010 Daniel Dunbar <daniel@zuster.org> Revert r112114, "Pull DelayedDiagnostic and AccessedEntity out into their own
header.", it is teh broken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112123 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaInternal.h
0ad106fec9dd188e20026c80d814f836e15780e3 26-Aug-2010 Daniel Dunbar <daniel@zuster.org> Revert r112114, "Pull DelayedDiagnostic and AccessedEntity out into their own
header.", it is teh broken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112123 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaInternal.h
dc40696d6237160746ebc1993b4db085d7f13c24 26-Aug-2010 Eric Christopher <echristo@apple.com> Fix typo in error message and testcase.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112115 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f937581842cbb093ba9abdf7d7b4f522be95e59 26-Aug-2010 Eric Christopher <echristo@apple.com> Fix typo in error message and testcase.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112115 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7033227c7749e2b50d5a8625b2be7c3d7bbd5f26 26-Aug-2010 John McCall <rjmccall@apple.com> Pull DelayedDiagnostic and AccessedEntity out into their own header.
This works courtesy of the new SmallVector<..., 0> specialization that
doesn't require a complete type. Note that you'll need to pull at least
SmallVector.h from LLVM to compile successfully.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112114 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaInternal.h
679063472244a6cb6d4b52894ac020022690620d 26-Aug-2010 John McCall <rjmccall@apple.com> Pull DelayedDiagnostic and AccessedEntity out into their own header.
This works courtesy of the new SmallVector<..., 0> specialization that
doesn't require a complete type. Note that you'll need to pull at least
SmallVector.h from LLVM to compile successfully.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112114 91177308-0d34-0410-b5e6-96231b3b80d8
ema/DelayedDiagnostic.h
ema/Sema.h
ema/SemaInternal.h
ed1384c6f884541eafc852f97deac5e81412b7e1 26-Aug-2010 Tom Care <tcare@apple.com> Improved the handling of blocks and block variables in PseudoConstantAnalysis
- Removed the assumption that __block vars are all non-constant
- Simplified some repetitive code in RunAnalysis
- Added block walking support
- Code/comments cleanup
- Separated out test for block pseudoconstants

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112098 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PseudoConstantAnalysis.h
967fea6cd9ae60ea31d27d440967990d2c705729 26-Aug-2010 Tom Care <tom.care@uqconnect.edu.au> Improved the handling of blocks and block variables in PseudoConstantAnalysis
- Removed the assumption that __block vars are all non-constant
- Simplified some repetitive code in RunAnalysis
- Added block walking support
- Code/comments cleanup
- Separated out test for block pseudoconstants

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112098 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PseudoConstantAnalysis.h
078c44e99a11522150708025c15678d2cafb3072 26-Aug-2010 John McCall <rjmccall@apple.com> Split out a header to hold APIs meant for the Sema implementation from Sema.h.
Clients of Sema don't need to know (for example) the list of diagnostics we
support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112093 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ema/SemaInternal.h
2d88708cbe4e4ec5e04e4acb6bd7f5be68557379 26-Aug-2010 John McCall <rjmccall@apple.com> Split out a header to hold APIs meant for the Sema implementation from Sema.h.
Clients of Sema don't need to know (for example) the list of diagnostics we
support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112093 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
ema/SemaInternal.h
b3f6694747c522adcf61a7ba4a1c652cc3ffea1b 25-Aug-2010 Dan Gohman <gohman@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112092 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
4710a8ea766b45079bf1c1dd36e29b59bb90829d 25-Aug-2010 Dan Gohman <gohman@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112092 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
264c06db04c1167a291971ffc26e35d54df69dfd 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When combining the code-completion results from Sema long with the
code-completion results cached by ASTUnit, sort the resulting result
set. This makes testing far, far easier, so this commit also includes
tests for the previous few fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112070 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
721f359a350059a81945baa08f63b2e5feceb044 25-Aug-2010 Douglas Gregor <dgregor@apple.com> When combining the code-completion results from Sema long with the
code-completion results cached by ASTUnit, sort the resulting result
set. This makes testing far, far easier, so this commit also includes
tests for the previous few fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112070 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
752f9ef6d27d72ba166d6b8f1855b720fa6bbab9 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Initialize the translation-unit scope before lexing the first
token. The first token might be something that ends up triggering code
completion, which in turn requires a valid Scope. Test case forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112066 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/Sema.h
c1a3e5e73859ece9f106ae9d84c78bef4111956a 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Initialize the translation-unit scope before lexing the first
token. The first token might be something that ends up triggering code
completion, which in turn requires a valid Scope. Test case forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112066 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/Sema.h
84525f7472c58d7e59da52c5ecefdc09e57ae820 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add a code-completion context for "natural language" completions, so
that ASTUnit knows not to try to provide completions there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112057 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
af1c6b532e6e1e944db987f29062e5efce71a573 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Add a code-completion context for "natural language" completions, so
that ASTUnit knows not to try to provide completions there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112057 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
6db78b69f4b9adb18df3f5c53272cc44b9bb1a06 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a preprocessor code-completion hook for contexts where we
expect "natural" language and should not provide any completions,
e.g., comments, string literals, #error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112054 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
ex/Preprocessor.h
arse/Parser.h
ema/Action.h
ema/Sema.h
55817afdf9d453a443262a733f6caf6692dca118 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Introduce a preprocessor code-completion hook for contexts where we
expect "natural" language and should not provide any completions,
e.g., comments, string literals, #error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112054 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
ex/Preprocessor.h
arse/Parser.h
ema/Action.h
ema/Sema.h
5a42619c8734ddbedaca58566c07fa43dbbcc028 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement __builtin_printf, __builtin_fprintf. Fixes <rdar://problem/8336581>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
1e32ca6e3007e09073ddafb3cb5e0adc1f83293c 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement __builtin_printf, __builtin_fprintf. Fixes <rdar://problem/8336581>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
84e75263e69fc67b68abfd3ef13d12b4533e6fd0 25-Aug-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence a GCC warning saying that unsigned >= UO_PostInc is always true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
993cdca0fed7deb646e4654dfb2607227a497faa 25-Aug-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence a GCC warning saying that unsigned >= UO_PostInc is always true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
aeb70b12ab1af1ba7e5e48cee3903d1a768bca90 25-Aug-2010 John McCall <rjmccall@apple.com> GCC didn't care for my attempt at API compatibility, so brute-force everything
to the new constants.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112047 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/StmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
rontend/StmtXML.def
2de56d1d0c3a504ad1529de2677628bdfbb95cd4 25-Aug-2010 John McCall <rjmccall@apple.com> GCC didn't care for my attempt at API compatibility, so brute-force everything
to the new constants.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112047 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/StmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
rontend/StmtXML.def
cacf30de20eac454cdea8b536b30272be476dcb9 25-Aug-2010 John McCall <rjmccall@apple.com> Random space optimization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0799c53fc2bb7acf937c8a8e165033dba1a5aba3 25-Aug-2010 John McCall <rjmccall@apple.com> Random space optimization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6f072329e9c9b7d44f0fa2a34528193a6f478414 25-Aug-2010 John McCall <rjmccall@apple.com> More incremental progress towards not including Expr.h in Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
asic/Specifiers.h
ema/Initialization.h
ema/Sema.h
5baba9d98364a3525d6afa15a04cdad82fd6dd30 25-Aug-2010 John McCall <rjmccall@apple.com> More incremental progress towards not including Expr.h in Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/OperationKinds.h
asic/Specifiers.h
ema/Initialization.h
ema/Sema.h
179258586662abdf86817652deb89287cee47cf9 25-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Rename *PendingImplicitInstantiations to *PendingInstantiations. No
functionality changed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112040 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
erialization/ASTReader.h
62c78d54bee499dd87f768f48b21c9b5ec15e516 25-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Rename *PendingImplicitInstantiations to *PendingInstantiations. No
functionality changed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112040 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
erialization/ASTReader.h
88138de2bd70bdd408d8c1e307e212a6459a6a2c 25-Aug-2010 John McCall <rjmccall@apple.com> Split FunctionScopeInfo and BlockScopeInfo into their own header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112038 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
781472fe99a120098c631b0cbe33c89f8cef5e70 25-Aug-2010 John McCall <rjmccall@apple.com> Split FunctionScopeInfo and BlockScopeInfo into their own header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112038 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ScopeInfo.h
ema/Sema.h
d9b8fd0d8decfb9469397cd734d8ea90a62e8df9 25-Aug-2010 John McCall <rjmccall@apple.com> Remove Sema.h's dependency on DeclCXX.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112032 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
ema/Sema.h
384aff8b94bb0d1ad6c5667b90621e5699815bb2 25-Aug-2010 John McCall <rjmccall@apple.com> Remove Sema.h's dependency on DeclCXX.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112032 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
ema/Sema.h
3c229031bb964a748d27a38cf556f713da32c002 25-Aug-2010 John McCall <rjmccall@apple.com> Remove the DenseSet dependency from Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112030 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
50df6ae41f232612e5e88b19e0db9900d08d2f6c 25-Aug-2010 John McCall <rjmccall@apple.com> Remove the DenseSet dependency from Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112030 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
231359e094850dbfe8004082a68c92df1dcd4c2a 25-Aug-2010 John McCall <rjmccall@apple.com> Teach Sema to live without CodeCompleteConsumer.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112028 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
0a2c5e256abb4dc031c21fe4dc92c4f3afe9947c 25-Aug-2010 John McCall <rjmccall@apple.com> Teach Sema to live without CodeCompleteConsumer.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112028 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
6a42ee9c92db87ccad2b90ed11a5aa4d13481f4b 25-Aug-2010 John McCall <rjmccall@apple.com> Remove AnalysisBasedWarnings.h's dependency on Type.h



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112027 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
e0054f61fd84133eb0d19c19ae9afaf117933274 25-Aug-2010 John McCall <rjmccall@apple.com> Remove AnalysisBasedWarnings.h's dependency on Type.h



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112027 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
d3aecc01e33e2d0d9646779deb4527a4883679e1 25-Aug-2010 John McCall <rjmccall@apple.com> Move more stuff out of Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112026 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
ema/Lookup.h
ema/Overload.h
ema/Sema.h
ema/Template.h
ema/TemplateDeduction.h
2a7fb27913999d132cf9e10e03dc5271faa2e9d3 25-Aug-2010 John McCall <rjmccall@apple.com> Move more stuff out of Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112026 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
ema/Lookup.h
ema/Overload.h
ema/Sema.h
ema/Template.h
ema/TemplateDeduction.h
b3f2ff9a92ee324846e22acc5bfa41ec9da60948 25-Aug-2010 John McCall <rjmccall@apple.com> Sort the forward declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112024 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
30ecc0ac0e90fed2670cefc8b67f1b3f53f2701b 25-Aug-2010 John McCall <rjmccall@apple.com> Sort the forward declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112024 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
08b401fd43b445dba3bb6f6a5612d4ebdf276561 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reorganize and verbosely document some of ASTReader's fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112012 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
892ac04155aad22f8172d06a929e09cf51e8bc68 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reorganize and verbosely document some of ASTReader's fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112012 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
d19f48fd14920f76d558e58c204cc0c238aff4bf 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove an unused field in ASTReader

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112011 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
cd9e339014b5f38e626735893010930605e9c232 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove an unused field in ASTReader

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112011 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
03e1de283b5dc6b97ae8adec530e81568850587b 25-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Make sure CXXABI is destroyed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ff75dfde6a351c57f41366d309c0bd11aba69bce 25-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure CXXABI is destroyed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b569db2332ce8acb8ef77b8e71375c7df7268999 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Give a slight preference to functions returning "void" when we're
performing code completion at the statement level (rather than in an
arbitrary expression).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112001 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
eb0d0145910f3024d9bdefe279a1e9b95495f2fd 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Give a slight preference to functions returning "void" when we're
performing code completion at the statement level (rather than in an
arbitrary expression).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112001 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
48461915d3f5a3653d5740645b4a6dbeb8ed2ab4 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> In code-completion contexts where both types and other values are
present, prefer values to types, since it's more common to compute
with values than it is to declare new entities or perform type
casts. So, tweak the ranking of types vs. other declarations and
constants accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111998 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
d43dd83a973c585c39a9a5e5e904282bc2371986 25-Aug-2010 Douglas Gregor <dgregor@apple.com> In code-completion contexts where both types and other values are
present, prefer values to types, since it's more common to compute
with values than it is to declare new entities or perform type
casts. So, tweak the ranking of types vs. other declarations and
constants accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111998 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e1852335a6dc17b81193f63b1056745f35c5f661 25-Aug-2010 John McCall <rjmccall@apple.com> When trying to resolve the address of an overloaded expression,
only form pointers-to-member if the expression has the appropriate
form. This avoids assertions later on on invalid code, but also
allows us to properly resolve mixed-staticity overloads.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fb97e75e627599aaa7a613778134e290f9de663b 25-Aug-2010 John McCall <rjmccall@apple.com> When trying to resolve the address of an overloaded expression,
only form pointers-to-member if the expression has the appropriate
form. This avoids assertions later on on invalid code, but also
allows us to properly resolve mixed-staticity overloads.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5f147be80b5cb2a73f32b020ebd6135b3b04bef0 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> AST writer support for having specializations of templates from earlier in the chain. This ought to finish C++ chained PCH support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111986 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
4153a060f4cd03e9db1349328a158e9d898a2610 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> AST writer support for having specializations of templates from earlier in the chain. This ought to finish C++ chained PCH support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111986 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
2a6156f215482d8f4c0ce10de64dd680672cd07f 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> AST reader support for having specializations of templates from earlier in the chain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111985 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
6e50e00c2fe6a04b2c35592588a4b10a2c269416 25-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> AST reader support for having specializations of templates from earlier in the chain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111985 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
62a6d22982dfe5e4b392d19cd3fff33faea9c8b8 25-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add basic -H support.
- I didn't implement the GCC "multiple include guard" detection parts, because
it doesn't seem useful or obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111983 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/PreprocessorOutputOptions.h
f7c16d903f11814e2d6780e2a2e189b7a7afc4ed 25-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add basic -H support.
- I didn't implement the GCC "multiple include guard" detection parts, because
it doesn't seem useful or obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111983 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/PreprocessorOutputOptions.h
bb44022c369641f5140992eaf3d30eaf9baaf25c 25-Aug-2010 Chris Lattner <sabre@nondot.org> correct the -isystem option to not add the -isysroot path. Only the weird
-iwithsysroot flag should do that. This fixes rdar://8345942


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111979 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
23637beead1fce7dac755890c9482bcdce538b87 25-Aug-2010 Chris Lattner <sabre@nondot.org> correct the -isystem option to not add the -isysroot path. Only the weird
-iwithsysroot flag should do that. This fixes rdar://8345942


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111979 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
2353bc83ebc42dd79c1ab563d487c237d845bf03 25-Aug-2010 Ted Kremenek <kremenek@apple.com> Fix printf format string checking for '%lc' (which expects a wint_t or compatible argument). Fixes PR 7981.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111978 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
9325eaf08fcccbc0d038e703f570c64daacdaa31 25-Aug-2010 Ted Kremenek <kremenek@apple.com> Fix printf format string checking for '%lc' (which expects a wint_t or compatible argument). Fixes PR 7981.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111978 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
e731c90a1e65ea98d8e8bd78129559b3c6cfc0ab 25-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement code completion for preprocessor expressions and in macro
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111976 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
arse/Parser.h
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
f29c5233085a5af795c3c01b94d319e5b3235d56 25-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement code completion for preprocessor expressions and in macro
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111976 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
arse/Parser.h
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
667a23a6e818bba7d3744897dc4f49a5e6aed9c2 24-Aug-2010 Chris Lattner <sabre@nondot.org> Implement -iwithsysroot, an apple extension which is a close cousin of -isystem.
Instead of implementing -isystem, I accidentally implemented this cousin. Next
up is to implement -isystem right.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111966 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
9db9ad3f084d3c70cff01a10d4fd90901982b37b 24-Aug-2010 Chris Lattner <sabre@nondot.org> Implement -iwithsysroot, an apple extension which is a close cousin of -isystem.
Instead of implementing -isystem, I accidentally implemented this cousin. Next
up is to implement -isystem right.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111966 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
42428f550b3d34c61a9549593eaaa063083ee4fd 24-Aug-2010 Tom Care <tcare@apple.com> Improvements to IdempotentOperationChecker and its use of PseudoConstantAnalysis
- Added wasReferenced function to PseudoConstantAnalysis to determine if a variable was ever referenced in a function (outside of a self-assignment)
- BlockDeclRefExpr referenced variables are now explicitly added to the non-constant list
- Remove unnecessary ignore of implicit casts
- Generalized parameter self-assign detection to detect deliberate self-assigns of variables to avoid unused variable warnings
- Updated test cases with deliberate self-assignments
- Fixed bug with C++ references and pseudoconstants
- Added test case for C++ references and pseudoconstants

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111965 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PseudoConstantAnalysis.h
ef52bcb606c73950139a775af61495f63fbc3603 24-Aug-2010 Tom Care <tom.care@uqconnect.edu.au> Improvements to IdempotentOperationChecker and its use of PseudoConstantAnalysis
- Added wasReferenced function to PseudoConstantAnalysis to determine if a variable was ever referenced in a function (outside of a self-assignment)
- BlockDeclRefExpr referenced variables are now explicitly added to the non-constant list
- Remove unnecessary ignore of implicit casts
- Generalized parameter self-assign detection to detect deliberate self-assigns of variables to avoid unused variable warnings
- Updated test cases with deliberate self-assignments
- Fixed bug with C++ references and pseudoconstants
- Added test case for C++ references and pseudoconstants

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111965 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PseudoConstantAnalysis.h
ff25319858bc246fc0732fb8ee2939739a245d05 24-Aug-2010 John McCall <rjmccall@apple.com> Move some of SemaOverload's API to various places in Overload.h, and kill
some of it off completely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111957 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
ema/Overload.h
ema/Sema.h
120d63cd4465230c2cd56508c7cd8e0ad00848e7 24-Aug-2010 John McCall <rjmccall@apple.com> Move some of SemaOverload's API to various places in Overload.h, and kill
some of it off completely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111957 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Initialization.h
ema/Overload.h
ema/Sema.h
f3739ad6499abeda23f00c56dc350e58432b9ce5 24-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement preprocessor code completion where a macro name is expected,
e.g., after #ifdef/#ifndef or #undef, or inside a defined <macroname>
expression in a preprocessor conditional.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111954 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
ex/Preprocessor.h
arse/Parser.h
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
1fbb447e9d43c2c676e94081fbfee7eb6cbe933b 24-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement preprocessor code completion where a macro name is expected,
e.g., after #ifdef/#ifndef or #undef, or inside a defined <macroname>
expression in a preprocessor conditional.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111954 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
ex/Preprocessor.h
arse/Parser.h
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
4f9145a1ecb1f0f7caa61d24b0ba5e5ca9977d45 24-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce basic code-completion support for preprocessor directives,
e.g., after a "#" we'll suggest #if, #ifdef, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111943 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
ex/Preprocessor.h
arse/Parser.h
ema/Action.h
ema/Sema.h
f44e854ed1e3aa86d2ed6d615ccd109d50ddcff9 24-Aug-2010 Douglas Gregor <dgregor@apple.com> Introduce basic code-completion support for preprocessor directives,
e.g., after a "#" we'll suggest #if, #ifdef, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111943 91177308-0d34-0410-b5e6-96231b3b80d8
ex/CodeCompletionHandler.h
ex/Preprocessor.h
arse/Parser.h
ema/Action.h
ema/Sema.h
4b923c3085b58bd1cdf8362296305682fc4ef9db 24-Aug-2010 John McCall <rjmccall@apple.com> Sema doesn't need these STL headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111926 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
aab0132698c7550d0095986fb1fb4887bf18c3e8 24-Aug-2010 John McCall <rjmccall@apple.com> Sema doesn't need these STL headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111926 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f808bbd31f1ae2d81d7f0a2a69a6e60d1833f024 24-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Teach InheritingConcreteTypeLoc to play nicely with dyn_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
713da40fb093cb6ab50ddc57e1697fddf9802104 24-Aug-2010 Douglas Gregor <dgregor@apple.com> Teach InheritingConcreteTypeLoc to play nicely with dyn_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
7942acb692dd5b351d79efdb8475b433383b6248 24-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Parse all kinds of declarations as part of a linkage-specification,
from Francois Pichet! Fixes PR7754.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111912 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
09a63c97b95eb4dc6fd6b2323929e8cf12af03ff 24-Aug-2010 Douglas Gregor <dgregor@apple.com> Parse all kinds of declarations as part of a linkage-specification,
from Francois Pichet! Fixes PR7754.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111912 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
11b75a0d6059fb5354175a348bea9e0d639b31b5 24-Aug-2010 John McCall <rjmccall@apple.com> It turns out that this template is only instantiated at one type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111908 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
fbce0e1d582f10d890111d8d27f6e88055be6422 24-Aug-2010 John McCall <rjmccall@apple.com> It turns out that this template is only instantiated at one type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111908 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
fa4a3ef515f4ec17548169389050e36a2ad65c30 24-Aug-2010 John McCall <rjmccall@apple.com> More header elimination. The goal of all this is to allow Parser to
#include Sema.h while keeping all the AST declarations opaque. That may
not be reasonably attainable, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111907 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
5f1e0942a32657b625702aa52f82430d0120f424 24-Aug-2010 John McCall <rjmccall@apple.com> More header elimination. The goal of all this is to allow Parser to
#include Sema.h while keeping all the AST declarations opaque. That may
not be reasonably attainable, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111907 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
064a5209d8bfb036e836a718b69fcd79b9f42408 24-Aug-2010 John McCall <rjmccall@apple.com> Remove a header dependency from Sema.h at the cost of some type safety.
If someone wants to fix this some other way....



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111905 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
7a1fad38256eb4c5129359be85ba1ea1678eb5c9 24-Aug-2010 John McCall <rjmccall@apple.com> Remove a header dependency from Sema.h at the cost of some type safety.
If someone wants to fix this some other way....



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111905 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
89ee65fb6f6218b45c46537690ae4691b489cf05 24-Aug-2010 John McCall <rjmccall@apple.com> Struggle mightily against header inclusion in Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExternalASTSource.h
ema/ExternalSemaSource.h
ema/IdentifierResolver.h
ema/ObjCMethodList.h
ema/Sema.h
ema/Template.h
7cd088e519d7e6caa4c4c12db52e0e4ae35d25c2 24-Aug-2010 John McCall <rjmccall@apple.com> Struggle mightily against header inclusion in Sema.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExternalASTSource.h
ema/ExternalSemaSource.h
ema/IdentifierResolver.h
ema/ObjCMethodList.h
ema/Sema.h
ema/Template.h
a2b55e58c780488ea9fb752c71fba2973aa7c9f5 24-Aug-2010 John McCall <rjmccall@apple.com> OwningExprResult -> ExprResult. This patch brought to you by
M-x query-replace-regexp
\(Sema::\|Action::\|Parser::\|\)Owning\(Expr\|Stmt\)Result -> \2Result



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111903 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/Initialization.h
ema/Ownership.h
ema/Sema.h
60d7b3a319d84d688752be3870615ac0f111fb16 24-Aug-2010 John McCall <rjmccall@apple.com> OwningExprResult -> ExprResult. This patch brought to you by
M-x query-replace-regexp
\(Sema::\|Action::\|Parser::\|\)Owning\(Expr\|Stmt\)Result -> \2Result



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111903 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/Initialization.h
ema/Ownership.h
ema/Sema.h
1f52c3afbf8f06b781e03640b11a41e6d712b72e 24-Aug-2010 John McCall <rjmccall@apple.com> Fold ASTOwningResult back into ActionResult.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111902 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Ownership.h
182f7093dd9dabbcf6df44b4ae004ead38804b48 24-Aug-2010 John McCall <rjmccall@apple.com> Fold ASTOwningResult back into ActionResult.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111902 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Ownership.h
e5e113a803072ec06d440c882c4f2f67f45c93f1 24-Aug-2010 John McCall <rjmccall@apple.com> Abstract out passing around types and kill off ActionBase.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111901 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Designator.h
ema/Ownership.h
ema/ParsedTemplate.h
ema/Sema.h
b3d8748e797c6c2f1dc01186c8eeb3b1b5fe970c 24-Aug-2010 John McCall <rjmccall@apple.com> Abstract out passing around types and kill off ActionBase.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111901 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Designator.h
ema/Ownership.h
ema/ParsedTemplate.h
ema/Sema.h
a25d1573d00e14c47a5c72867dae8d9ebe34c631 24-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Provide code completion results for the context-sensitive Objective-C
keywords "in", "out", "inout", "byref", "bycopy", and "oneway".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111884 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/Sema.h
d32b0225e29fcafb2b2b2a4b1c51dcb1518af9c6 24-Aug-2010 Douglas Gregor <dgregor@apple.com> Provide code completion results for the context-sensitive Objective-C
keywords "in", "out", "inout", "byref", "bycopy", and "oneway".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111884 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/Sema.h
631ce9a590f4feccf052e31e621f1bfdeb5380fc 24-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Write visible update blocks. No regressions in normal PCH functionality, but no tests for the chain yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111881 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
1d1e42b17da6a53391d50b08068ecde04311e368 24-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Write visible update blocks. No regressions in normal PCH functionality, but no tests for the chain yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111881 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
725cfbdfdd03ec70f1369d91e48fc4c11c22105d 24-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Read the UPDATE_VISIBLE record, and add its visible decls to the lookup tables. Also, free the lookup tables when destructing the ASTReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111880 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
e1dde811b38e779894150cb1093d57f8411a84f7 24-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Read the UPDATE_VISIBLE record, and add its visible decls to the lookup tables. Also, free the lookup tables when destructing the ASTReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111880 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
a3f8d44bbb39bc7ecc43a5d99cac74e0923d2457 24-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Baby step towards supporting namespaces in chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111878 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
8b12273c86ede439edf52d35b170fd32b2ed49d4 24-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Baby step towards supporting namespaces in chained PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111878 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTReader.h
a7befb4924e868ae850ff7d664fca7037dca751c 24-Aug-2010 Peter Collingbourne <peter@pcc.me.uk> Move ExecuteCompilerInvocation to a new library FrontendTool

r110903 introduced a dependency from Frontend to every library that
declared an Action by introducing Action references that previously
resided in the driver in the file ExecuteCompilerInvocation.cpp.
This patch moves ExecuteCompilerInvocation to a new library named
FrontendTool which is intended to bear these dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111873 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
rontendTool/Utils.h
1b7255de78c99ef2b8a06bb5261a3c776ac1db36 24-Aug-2010 Peter Collingbourne <peter@pcc.me.uk> Move ExecuteCompilerInvocation to a new library FrontendTool

r110903 introduced a dependency from Frontend to every library that
declared an Action by introducing Action references that previously
resided in the driver in the file ExecuteCompilerInvocation.cpp.
This patch moves ExecuteCompilerInvocation to a new library named
FrontendTool which is intended to bear these dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111873 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
rontendTool/Utils.h
1e740ba7b0f39c8ce1ec8e7b26afa1d676116ef8 24-Aug-2010 John McCall <rjmccall@apple.com> Don't call this field 'Expr', it changes lookup in illegal ways that
GCC diagnoses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111865 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
b556db435fb1ad2a15580aada1cba0ae6da1c4cb 24-Aug-2010 John McCall <rjmccall@apple.com> Don't call this field 'Expr', it changes lookup in illegal ways that
GCC diagnoses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111865 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
a7fe81a25309c4a9d62a288eb0a46a279e83765b 24-Aug-2010 John McCall <rjmccall@apple.com> Kill off ExprArg (now just Expr*) and StmtArg (now just Stmt*).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111863 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/Ownership.h
ema/Sema.h
9ae2f076ca5ab1feb3ba95629099ec2319833701 24-Aug-2010 John McCall <rjmccall@apple.com> Kill off ExprArg (now just Expr*) and StmtArg (now just Stmt*).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111863 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/Ownership.h
ema/Sema.h
0722c716f747c52573dd1914d30acf539dd3f50c 24-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce new libclang API functions that determine the availability
of a cursor or code-completion result, e.g., whether that result
refers to an unavailable, deleted, or deprecated declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111858 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
58ddb60f409125eda5436c4a1f070f7fa4744295 24-Aug-2010 Douglas Gregor <dgregor@apple.com> Introduce new libclang API functions that determine the availability
of a cursor or code-completion result, e.g., whether that result
refers to an unavailable, deleted, or deprecated declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111858 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
6f5e7298dcb517eaac5091c38410b2146e98f94a 24-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Handling remaining rule for synthesize bitfields in
class extensions (nonfragile-abi2).For every class @interface and class
extension @interface, if the last ivar is a bitfield of any type,
then add an implicit `char :0` ivar to the end of that interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111857 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/Sema.h
d097be8f81fbf4ed96ac10bae18562dd8202666b 24-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Handling remaining rule for synthesize bitfields in
class extensions (nonfragile-abi2).For every class @interface and class
extension @interface, if the last ivar is a bitfield of any type,
then add an implicit `char :0` ivar to the end of that interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111857 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/Sema.h
6d500913f14a95a3e077c8cec97fff2bd0a3e1db 24-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move Clang "triple" computation routines to method on the
ToolChain. This fixes a potenial bad cast when running Clang on PPC code, since
the tool chain in effect is not a subclass of the Darwin one, but we were
treating it like it was.
- This introduces some gross code duplication, but the right fix for it is to
just move the Driver to start depending on the targets in libBasic, so I am
not planning on fixing it immediately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111856 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
00577ada44c889fbe311d61c51a8da89e65c7c9a 24-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move Clang "triple" computation routines to method on the
ToolChain. This fixes a potenial bad cast when running Clang on PPC code, since
the tool chain in effect is not a subclass of the Darwin one, but we were
treating it like it was.
- This introduces some gross code duplication, but the right fix for it is to
just move the Driver to start depending on the targets in libBasic, so I am
not planning on fixing it immediately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111856 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
c4f00a350a77c0898bab84bc16a10610e76099d9 23-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a code-completion hook for the Objective-C collection
argument in a for-each statement (e.g., "for (id x in <blah>)"), which
restricts the expression completions provided to Objective-C types (or
class types in C++).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111843 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/Sema.h
fb6294123b9de1605adae69d85cb4fddf81a9bc5 23-Aug-2010 Douglas Gregor <dgregor@apple.com> Introduce a code-completion hook for the Objective-C collection
argument in a for-each statement (e.g., "for (id x in <blah>)"), which
restricts the expression completions provided to Objective-C types (or
class types in C++).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111843 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/Sema.h
2c497ccd842431b6d143be0fefb45821ad1940a7 23-Aug-2010 Tom Care <tcare@apple.com> Several small changes to PseudoConstantAnalysis and the way IdempotentOperationChecker uses it.
- Psuedo -> Pseudo (doh...)
- C++ reference support
- Added pseudoconstant test case for __block vars
- Separated out static local checking from pseudoconstant analysis and generalized to non-local checking
- Added missing test cases for storage false positives

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111832 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PseudoConstantAnalysis.h
nalysis/Analyses/PsuedoConstantAnalysis.h
nalysis/AnalysisContext.h
db34ab70961ca4b24b600eb47053d7af304659f5 23-Aug-2010 Tom Care <tom.care@uqconnect.edu.au> Several small changes to PseudoConstantAnalysis and the way IdempotentOperationChecker uses it.
- Psuedo -> Pseudo (doh...)
- C++ reference support
- Added pseudoconstant test case for __block vars
- Separated out static local checking from pseudoconstant analysis and generalized to non-local checking
- Added missing test cases for storage false positives

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111832 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PseudoConstantAnalysis.h
nalysis/Analyses/PsuedoConstantAnalysis.h
nalysis/AnalysisContext.h
693a734a0661bb432d95442fd9b459e6e37293e2 23-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Support for IRGen of synthesize bitfield ivars in
objc-nonfragile-abi2 (radar 7824380).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
000835d0b04345c0014c603fe6339b3bc154050e 23-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Support for IRGen of synthesize bitfield ivars in
objc-nonfragile-abi2 (radar 7824380).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
9283ece07ecfa7c92c89fff2750ec0023344437f 23-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new code-completion point when we're parsing a
declarator. Here, we can only see a few things (e.g., cvr-qualifiers,
nested name specifiers) and we do not want to provide other non-macro
completions. Previously, we would end up in recovery mode and would
provide a large number of non-relevant completions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111818 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
2ccccb3ff40c64927817a7e1ddf1da8c188ed224 23-Aug-2010 Douglas Gregor <dgregor@apple.com> Introduce a new code-completion point when we're parsing a
declarator. Here, we can only see a few things (e.g., cvr-qualifiers,
nested name specifiers) and we do not want to provide other non-macro
completions. Previously, we would end up in recovery mode and would
provide a large number of non-relevant completions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111818 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Action.h
ema/CodeCompleteConsumer.h
ema/Sema.h
39aabbe41c2605571ddaff333e2a84e2933aa59b 23-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add XML for CXXConstructExpr, from Benoit Belley!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111808 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/StmtXML.def
11add9b2e915e5da4a9da25a89e3fb0a4b7f0173 23-Aug-2010 Douglas Gregor <dgregor@apple.com> Add XML for CXXConstructExpr, from Benoit Belley!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111808 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/StmtXML.def
1375393206b22b6079c2b0bbf86327dd65c04e6d 23-Aug-2010 John McCall <rjmccall@apple.com> Push DeclGroupRefs and TemplateNames in an opaque but type-safe way
through the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111800 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Ownership.h
ema/ParsedTemplate.h
2b5289b6fd7e3d9899868410a498c081c9595662 23-Aug-2010 John McCall <rjmccall@apple.com> Push DeclGroupRefs and TemplateNames in an opaque but type-safe way
through the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111800 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Ownership.h
ema/ParsedTemplate.h
6c41042b1fddc6bf845cb2f7fc64940e75b55889 23-Aug-2010 John McCall <rjmccall@apple.com> Kill off Parser::TemplateParameterList to avoid misparses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111796 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1f58816e6589ef15d1509c6c99bb8fabf2a4cda9 23-Aug-2010 John McCall <rjmccall@apple.com> Kill off Parser::TemplateParameterList to avoid misparses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111796 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f1714433f14eb45a413a9db7e29ffab23f75dbaf 23-Aug-2010 John McCall <rjmccall@apple.com> Sundry incremental steps towards killing off Action.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111795 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Ownership.h
ema/ParsedTemplate.h
ema/Sema.h
ca0408fb49c1370430672acf2d770b7151cf71de 23-Aug-2010 John McCall <rjmccall@apple.com> Sundry incremental steps towards killing off Action.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111795 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Ownership.h
ema/ParsedTemplate.h
ema/Sema.h
6ae2325ec3b27aae178267de58fe35acf2027b91 23-Aug-2010 John McCall <rjmccall@apple.com> Abstract out everything having to do with member pointers into the ABI
class; they should just be completely opaque throughout IR gen now,
although I haven't really audited that.

Fix a bug apparently inherited from gcc-4.2 where we failed to null-check
member data pointers when performing derived-to-base or base-to-derived
conversions on them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0bab0cdab751248ca389a5592bcb70eac5d39260 23-Aug-2010 John McCall <rjmccall@apple.com> Abstract out everything having to do with member pointers into the ABI
class; they should just be completely opaque throughout IR gen now,
although I haven't really audited that.

Fix a bug apparently inherited from gcc-4.2 where we failed to null-check
member data pointers when performing derived-to-base or base-to-derived
conversions on them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d401c08eaebd14b9fa6440513c764a7342d0adea 22-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate a stale assertion. Fixes Clang self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
db68e28c05a67735211e688009890cf834c22e75 22-Aug-2010 Douglas Gregor <dgregor@apple.com> Eliminate a stale assertion. Fixes Clang self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
68086b9ad26c471322449ea1c030c2ac8397fd07 22-Aug-2010 John McCall <rjmccall@apple.com> The ARM C++ ABI is sufficiently different from the Itanium C++ ABI that
it deserves its own enumerator. Obviously the implementations should
closely follow the Itanium ABI except in cases of divergence.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
asic/TargetOptions.h
ee79a4c30e5d1c5285551c9a25b8ec6d45d46aa7 22-Aug-2010 John McCall <rjmccall@apple.com> The ARM C++ ABI is sufficiently different from the Itanium C++ ABI that
it deserves its own enumerator. Obviously the implementations should
closely follow the Itanium ABI except in cases of divergence.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
asic/TargetOptions.h
367213bcd822d77d3c24e3607b4ce3b1127dd5af 21-Aug-2010 Michael J. Spencer <bigcheesegs@gmail.com> Visual Studio tools used on win32 hosts when targeting win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111748 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
ff58e3610f4e12094def69eb2d6dcb4330378d8f 21-Aug-2010 Michael J. Spencer <bigcheesegs@gmail.com> Visual Studio tools used on win32 hosts when targeting win32.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111748 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
f4bae14c1c2cb086d42aecf84c6779787c6c7d89 21-Aug-2010 John McCall <rjmccall@apple.com> DeclPtrTy -> Decl *



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111733 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/DeclSpec.h
ema/Ownership.h
ema/Scope.h
ema/Sema.h
d226f65006733ed7f709c3174f22ce33391cb58f 21-Aug-2010 John McCall <rjmccall@apple.com> DeclPtrTy -> Decl *



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111733 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ema/Action.h
ema/DeclSpec.h
ema/Ownership.h
ema/Scope.h
ema/Sema.h
a812f2ff9e4b765646d8432357dc81388e6574d7 21-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix an issue with writing to PCH another included PCH, introduced by the "using an AST on-disk hash table for name lookup" commit.

When including a PCH and later re-emitting to another PCH, the name lookup tables of DeclContexts
may be incomplete, since we now lazily deserialize the visible decls of a particular name.
Fix the issue by iterating over the un-deserialized visible decls and completing the lookup tables
of DeclContexts before writing them out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
erialization/ASTReader.h
a60786b46eaa4766bb57fb3ca4e0191b3f73e42a 21-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix an issue with writing to PCH another included PCH, introduced by the "using an AST on-disk hash table for name lookup" commit.

When including a PCH and later re-emitting to another PCH, the name lookup tables of DeclContexts
may be incomplete, since we now lazily deserialize the visible decls of a particular name.
Fix the issue by iterating over the un-deserialized visible decls and completing the lookup tables
of DeclContexts before writing them out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
erialization/ASTReader.h
d5ad6700859b4d8eb29e9f1b36f574451174c84c 21-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add an iterator to OnDiskChainedHashTable to allow iterating over all the key/data pairs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111697 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
f08b1bb341fde5c755ec3dbe7e1b3114fb7438db 21-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an iterator to OnDiskChainedHashTable to allow iterating over all the key/data pairs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111697 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
d74787f07ed2c35f61f437960b9182f256f6b45a 20-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> objective-c ivar refactoring patch. Iterations
over ivars for a varienty of puposes is now
consolidated into two small routines; DeepCollectObjCIvars
and ShallowCollectObjCIvars.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
ema/Sema.h
2c18bb7c9fca66c30b6eabbdcbc6399d24a54fa9 20-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> objective-c ivar refactoring patch. Iterations
over ivars for a varienty of puposes is now
consolidated into two small routines; DeepCollectObjCIvars
and ShallowCollectObjCIvars.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
ema/Sema.h
161f47b721242aa98301da22da5c7274b5644112 20-Aug-2010 Dan Gohman <gohman@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fa78c91c54dd99ec61a9e27e6b74a549f5c9fa9c 20-Aug-2010 Dan Gohman <gohman@apple.com> Add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e20fbc00b00b6a10c2d54afbd4a5ecd92a981b00 20-Aug-2010 John McCall <rjmccall@apple.com> Another step in the process of making the parser depend on Sema:
- move DeclSpec &c into the Sema library
- move ParseAST into the Parse library
Reflect this change in a thousand different includes.
Reflect this change in the link orders.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111667 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseAST.h
arse/Parser.h
arse/Scope.h
arse/Template.h
ema/Action.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Designator.h
ema/IdentifierResolver.h
ema/Initialization.h
ema/Ownership.h
ema/ParseAST.h
ema/ParsedTemplate.h
ema/Scope.h
ema/Sema.h
19510856727e0e14a3696b2a72c35163bff2a71f 20-Aug-2010 John McCall <rjmccall@apple.com> Another step in the process of making the parser depend on Sema:
- move DeclSpec &c into the Sema library
- move ParseAST into the Parse library
Reflect this change in a thousand different includes.
Reflect this change in the link orders.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111667 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseAST.h
arse/Parser.h
arse/Scope.h
arse/Template.h
ema/Action.h
ema/AttributeList.h
ema/DeclSpec.h
ema/Designator.h
ema/IdentifierResolver.h
ema/Initialization.h
ema/Ownership.h
ema/ParseAST.h
ema/ParsedTemplate.h
ema/Scope.h
ema/Sema.h
5da76f97ef7e8602f2dbca62056bbc28dea61cce 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Use the AST on-disk hash table for name lookup inside a DeclContext.

*Huge* improvement over the amount of deserializing that we do for C++ lookup.
e.g, if he have the Carbon header precompiled and include it on a file containing this:

int x;

these are the before/after stats:

BEFORE:

*** AST File Statistics:
578 stat cache hits
4 stat cache misses
548/30654 source location entries read (1.787695%)
15907/16501 types read (96.400223%)
53525/59955 declarations read (89.275291%)
33993/43525 identifiers read (78.099945%)
41516/51891 statements read (80.006165%)
77/5317 macros read (1.448185%)
0/6335 lexical declcontexts read (0.000000%)
1/5424 visible declcontexts read (0.018437%)

AFTER using the on-disk table:

*** AST File Statistics:
578 stat cache hits
4 stat cache misses
548/30654 source location entries read (1.787695%)
10/16501 types read (0.060602%)
9/59955 declarations read (0.015011%)
161/43525 identifiers read (0.369902%)
20/51891 statements read (0.038542%)
6/5317 macros read (0.112846%)
0/6335 lexical declcontexts read (0.000000%)
2/5424 visible declcontexts read (0.036873%)

There's only one issue affecting mostly the precompiled preambles which I will address soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
ST/ExternalASTSource.h
erialization/ASTReader.h
erialization/ASTWriter.h
074dcc8ef8c5df7a155c85648e8eae786bee6cab 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use the AST on-disk hash table for name lookup inside a DeclContext.

*Huge* improvement over the amount of deserializing that we do for C++ lookup.
e.g, if he have the Carbon header precompiled and include it on a file containing this:

int x;

these are the before/after stats:

BEFORE:

*** AST File Statistics:
578 stat cache hits
4 stat cache misses
548/30654 source location entries read (1.787695%)
15907/16501 types read (96.400223%)
53525/59955 declarations read (89.275291%)
33993/43525 identifiers read (78.099945%)
41516/51891 statements read (80.006165%)
77/5317 macros read (1.448185%)
0/6335 lexical declcontexts read (0.000000%)
1/5424 visible declcontexts read (0.018437%)

AFTER using the on-disk table:

*** AST File Statistics:
578 stat cache hits
4 stat cache misses
548/30654 source location entries read (1.787695%)
10/16501 types read (0.060602%)
9/59955 declarations read (0.015011%)
161/43525 identifiers read (0.369902%)
20/51891 statements read (0.038542%)
6/5317 macros read (0.112846%)
0/6335 lexical declcontexts read (0.000000%)
2/5424 visible declcontexts read (0.036873%)

There's only one issue affecting mostly the precompiled preambles which I will address soon.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
ST/ExternalASTSource.h
erialization/ASTReader.h
erialization/ASTWriter.h
2e254756d2406f4860abd44ef7567633f5f4ab36 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the mechanism for building an AST on-disk hash table for name lookup inside a DeclContext but don't use it yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
5d26768e2661faa7ce0b55ffff4be8b3969fbbf5 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the mechanism for building an AST on-disk hash table for name lookup inside a DeclContext but don't use it yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
erialization/ASTBitCodes.h
erialization/ASTReader.h
erialization/ASTWriter.h
e35faadb68f8da45b7d39b90caf03d16d9afa75b 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Refactoring; move the functionality of ASTWriter::GetOrCreateTypeID to the more generic
MakeTypeID template function which accepts a type and a function object that returns a TypeIdx.

MakeTypeID is in PCHCommon.h so that it can be used by ASTReader too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111634 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
eb3f04e60fa17dba27344ed89fd1b9134bb6839c 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactoring; move the functionality of ASTWriter::GetOrCreateTypeID to the more generic
MakeTypeID template function which accepts a type and a function object that returns a TypeIdx.

MakeTypeID is in PCHCommon.h so that it can be used by ASTReader too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111634 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
b1c3d00643b2580a365f745c393e7b3d1a04728f 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ASTWriter::GetOrCreateTypeID and move most of the functionality of AddTypeRef there.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111633 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
7fb35182f43392cea4517c203bbabb22364a19fc 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTWriter::GetOrCreateTypeID and move most of the functionality of AddTypeRef there.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111633 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
6b0e7a99188266de6327bbb5bcc02e4484f15405 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> A bit of refactoring; Introduce ASTWriter::GetOrCreateTypeIdx and move the emission of types there.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111632 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
26fca90786af17f97e1a5ecc310d4bf39b831595 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> A bit of refactoring; Introduce ASTWriter::GetOrCreateTypeIdx and move the emission of types there.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111632 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
ab366ab4ad4f445a714335907299f93ec8713a61 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Rename TypeIDs -> TypeIdxs. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111631 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
01b81c4d074bba9c18372d521405dfe32fc4f552 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename TypeIDs -> TypeIdxs. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111631 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
cbc1e5e08a341b874f58341030e4974898586da9 20-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> serialization::TypeID is used with or without qualifiers, both as index and as index + qualifiers.
Disambiguate and provide some type safety by using a new class TypeIdx for the "TypeID as index" semantics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111630 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
c8e5d51f51e46c6f7717761537c6609ef9daf57c 20-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> serialization::TypeID is used with or without qualifiers, both as index and as index + qualifiers.
Disambiguate and provide some type safety by using a new class TypeIdx for the "TypeID as index" semantics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111630 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
fe8f766bea43e157cad054a3109e3be4ee609ada 20-Aug-2010 Ted Kremenek <kremenek@apple.com> Update help text for -cc1 -unoptimized-cfg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111615 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
c9c6b904f3fb4f515f7f041b7c49f5e3b7c53bd3 20-Aug-2010 Ted Kremenek <kremenek@apple.com> Update help text for -cc1 -unoptimized-cfg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111615 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
936b38da144dacc0ec064733fa7087005934ed90 20-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When performing code-completion in the presence of a preamble, make
sure to (1) actually use the remapped files we were given rather
than old data, and (2) keep the remapped files alive until the
code-completion results are destroyed. Big thanks to Daniel for the
test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111597 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
2283d79155a3e82442fce124ce5fd704ca138801 20-Aug-2010 Douglas Gregor <dgregor@apple.com> When performing code-completion in the presence of a preamble, make
sure to (1) actually use the remapped files we were given rather
than old data, and (2) keep the remapped files alive until the
code-completion results are destroyed. Big thanks to Daniel for the
test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111597 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
e120d10fc804b77c6830f4f4c32e7095603cc071 20-Aug-2010 John McCall <rjmccall@apple.com> Regularize the API for accessing explicit template arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
096832c5ed5b9106fa177ebc148489760c3bc496 20-Aug-2010 John McCall <rjmccall@apple.com> Regularize the API for accessing explicit template arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
c49c4fa3f550df2750d8ecd7250f25bd1bcdb455 19-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Intialize all of the code-generation options

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111560 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
41a621d00e974829b75ff95cdff556755116dea1 19-Aug-2010 Douglas Gregor <dgregor@apple.com> Intialize all of the code-generation options

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111560 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
bf4c70994c4cdf4a5f753f26a60a583bf148f2f4 19-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add machine-parseable Fix-It output as part of diagnostics, under the
flag -fdiagnostics-parseable-fixits, from Eelis van der Weegen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111557 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
4786c15f4977c7cee98fde3ebdee213dba23848b 19-Aug-2010 Douglas Gregor <dgregor@apple.com> Add machine-parseable Fix-It output as part of diagnostics, under the
flag -fdiagnostics-parseable-fixits, from Eelis van der Weegen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111557 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
8cf107ec3f8ebb84287d07beb91881924f978e6a 19-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Remove default argument from operator delete; per report on cfe-dev, fixes
compilation with MSVC. Note that on other platforms, the operator delete in
question is never used because we compile with -fno-exceptions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
a87cdc03f4014545a8440110c1f4f68701100576 19-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Remove default argument from operator delete; per report on cfe-dev, fixes
compilation with MSVC. Note that on other platforms, the operator delete in
question is never used because we compile with -fno-exceptions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
4732d4f526b6fde3646d615a52c9ee40e627d117 19-Aug-2010 Sean Hunt <rideau3@gmail.com> Add a missing initializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
1bf8d6f3a9dc636c3d1217d6fff11acf358e44be 19-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Add a missing initializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
c63a11dd0d93a5e86b8bc7fdac107e2d706c76c6 19-Aug-2010 Charles Davis <cdavis@mines.edu> Add some enum goodness as requested by Chris. Now instead of storing the
active C++ ABI as a raw string, we store it as an enum. This should improve
performance somewhat.

And yes, this time, I started from a clean build directory, and
all the tests passed. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
20cf717034ba1f20fc47c025ecb72ed9b631ad13 19-Aug-2010 Charles Davis <cdavis@mines.edu> Add some enum goodness as requested by Chris. Now instead of storing the
active C++ ABI as a raw string, we store it as an enum. This should improve
performance somewhat.

And yes, this time, I started from a clean build directory, and
all the tests passed. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
cae4686e6b3c3e989fcbc91bc929f4ca932dc9c2 19-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Plug a leak when precompiling the preamble in ASTUnit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111504 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
671947b18dba342f9aba022ee992babef325a833 19-Aug-2010 Douglas Gregor <dgregor@apple.com> Plug a leak when precompiling the preamble in ASTUnit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111504 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
bb903c15ec2ff9eb6c289858d8839aa29489f553 19-Aug-2010 Ted Kremenek <kremenek@apple.com> Add warning for functions/blocks that have attribute 'noreturn' but return a non-void result. (<rdar://problem/7562925>)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
58f281f7d54976f23ed4fa23a10ff1ab9c7037fe 19-Aug-2010 Ted Kremenek <kremenek@apple.com> Add warning for functions/blocks that have attribute 'noreturn' but return a non-void result. (<rdar://problem/7562925>)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
853ffa03cd59e18acfa6552537e82b4e105a41b3 19-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Make sure to deallocate the identifier lookup tables and selector tables
when destroying an ASTReader. Plugs a leak that shows up in libclang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111488 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
501c1036560bb407f9be6834931253f0929cca86 19-Aug-2010 Douglas Gregor <dgregor@apple.com> Make sure to deallocate the identifier lookup tables and selector tables
when destroying an ASTReader. Plugs a leak that shows up in libclang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111488 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTReader.h
1515f5d624d9a8d3da8c284fc6548423bd5915c5 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename pch namespace to serialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111478 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
8538e8d43a3a9bd439c987c0de37bcbf035dd391 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename pch namespace to serialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111478 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
579e2b9800d8e1f03c5145691537a3e4f8b83606 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHBitCodes.h -> ASTBitCodes.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111476 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/PCHBitCodes.h
05a07605322dfef2b017781042043a261c5a89cd 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHBitCodes.h -> ASTBitCodes.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111476 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
erialization/ASTBitCodes.h
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/PCHBitCodes.h
a3c1fef757614e58265bb2e2e526f8dfd0dce09c 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename stuff in PCHBitCodes.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111475 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/PCHBitCodes.h
f29f0a28c4d9599b389bbb6d186e14af753dc5a3 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename stuff in PCHBitCodes.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111475 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/PCHBitCodes.h
47e65e63326505b86ac2e0dfb20c13b6c71db714 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename the ASTReader header files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111474 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
6ab7cd853e9c15cf986a8a7c3db1f8d20e275409 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename the ASTReader header files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111474 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTDeserializationListener.h
erialization/ASTReader.h
erialization/ASTWriter.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
461310d47dfb77ed4b176cfa19358bddeb732a35 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> More PCH -> AST renaming.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111472 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/DeclBase.h
ST/Type.h
asic/IdentifierTable.h
asic/Linkage.h
asic/SourceManager.h
rontend/ASTUnit.h
rontend/FrontendAction.h
rontend/FrontendOptions.h
ex/MacroInfo.h
ema/IdentifierResolver.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
3c7f4134603d04b44f997b43c0a9def270f25386 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> More PCH -> AST renaming.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111472 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/DeclBase.h
ST/Type.h
asic/IdentifierTable.h
asic/Linkage.h
asic/SourceManager.h
rontend/ASTUnit.h
rontend/FrontendAction.h
rontend/FrontendOptions.h
ex/MacroInfo.h
ema/IdentifierResolver.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
6bdcfea8ff12cd4079b3653e5cd7d638c7d74ed1 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename various classes from PCH to AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
erialization/ASTWriter.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
571db7f0cb31789737be92fce1c1b738e6dbe795 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename various classes from PCH to AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
erialization/ASTWriter.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
b3be32d54baecf077e7813b25c9f37e103a44d3b 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHStmtReader -> ASTStmtReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtCXX.h
60adf4acf40b72227740bf966fb87eebddff3f37 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHStmtReader -> ASTStmtReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtCXX.h
d114374d2e6a4cc7a93091f0475f7a133dc1f499 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHDeclReader -> ASTDeclReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Redeclarable.h
erialization/PCHReader.h
d527cc06d78fe5afa5f20105b51697637eb02c56 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHDeclReader -> ASTDeclReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Redeclarable.h
erialization/PCHReader.h
7b39a2cadf9d62647f3aa572c52b77ea4114a599 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHReader to ASTReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111467 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
rontend/CompilerInstance.h
ex/ExternalPreprocessorSource.h
ex/HeaderSearch.h
erialization/ASTWriter.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
c43b54cbc10654ed59de797898042e1a05265246 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHReader to ASTReader.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111467 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
rontend/CompilerInstance.h
ex/ExternalPreprocessorSource.h
ex/HeaderSearch.h
erialization/ASTWriter.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
2b04aa75877c5fd8a9f679930c923b44ca8eef08 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHWriter.h to ASTWriter.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111466 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
erialization/PCHReader.h
erialization/PCHWriter.h
7faa2ec03a7ef120ac165bb45b6c70a8b20c9f1c 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHWriter.h to ASTWriter.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111466 91177308-0d34-0410-b5e6-96231b3b80d8
erialization/ASTWriter.h
erialization/PCHReader.h
erialization/PCHWriter.h
c582b76f225a52634fedfe774896439876263c15 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Do the PCH->AST rename for ASTWriter's implementation parts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/Redeclarable.h
erialization/PCHWriter.h
3397c5570369f19b2d6c52e898f708d75ceede1f 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Do the PCH->AST rename for ASTWriter's implementation parts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/Redeclarable.h
erialization/PCHWriter.h
c9b42df920d69f0a2e4779bfbea6234cf355539d 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHWriter to ASTWriter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111463 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
erialization/PCHWriter.h
a4232eb646d89e7d52424bb42eb87d9061f39e63 19-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Rename PCHWriter to ASTWriter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111463 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
erialization/PCHWriter.h
c8a316e75b46cbfaa7303b3b0e749e666ea4b3a9 19-Aug-2010 Sean Hunt <rideau3@gmail.com> Generate Attr subclasses with TableGen.

Now all classes derived from Attr are generated from TableGen.
Additionally, Attr* is no longer its own linked list; SmallVectors or
Attr* are used. The accompanying LLVM commit contains the updates to
TableGen necessary for this.

Some other notes about newly-generated attribute classes:

- The constructor arguments are a SourceLocation and a Context&,
followed by the attributes arguments in the order that they were
defined in Attr.td

- Every argument in Attr.td has an appropriate accessor named getFoo,
and there are sometimes a few extra ones (such as to get the length
of a variadic argument).

Additionally, specific_attr_iterator has been introduced, which will
iterate over an AttrVec, but only over attributes of a certain type. It
can be accessed through either Decl::specific_attr_begin/end or
the global functions of the same name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
ST/CMakeLists.txt
ST/DeclBase.h
ST/DeclObjC.h
ST/Makefile
asic/Attr.td
MakeLists.txt
akefile
ema/Sema.h
erialization/CMakeLists.txt
erialization/Makefile
erialization/PCHReader.h
erialization/PCHWriter.h
cf807c4dfdb23e8fa3f400e0b24ef5b79db7a530 19-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Generate Attr subclasses with TableGen.

Now all classes derived from Attr are generated from TableGen.
Additionally, Attr* is no longer its own linked list; SmallVectors or
Attr* are used. The accompanying LLVM commit contains the updates to
TableGen necessary for this.

Some other notes about newly-generated attribute classes:

- The constructor arguments are a SourceLocation and a Context&,
followed by the attributes arguments in the order that they were
defined in Attr.td

- Every argument in Attr.td has an appropriate accessor named getFoo,
and there are sometimes a few extra ones (such as to get the length
of a variadic argument).

Additionally, specific_attr_iterator has been introduced, which will
iterate over an AttrVec, but only over attributes of a certain type. It
can be accessed through either Decl::specific_attr_begin/end or
the global functions of the same name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
ST/CMakeLists.txt
ST/DeclBase.h
ST/DeclObjC.h
ST/Makefile
asic/Attr.td
MakeLists.txt
akefile
ema/Sema.h
erialization/CMakeLists.txt
erialization/Makefile
erialization/PCHReader.h
erialization/PCHWriter.h
c7b0f18cf8630218a6f91678710a09fb06f2f116 19-Aug-2010 Daniel Dunbar <daniel@zuster.org> libclang: Put clang_reparseTranslationUnit inside a crash recovery context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111451 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ea94bbc4769697143e717df9b0310f874102b6c1 19-Aug-2010 Daniel Dunbar <daniel@zuster.org> libclang: Put clang_reparseTranslationUnit inside a crash recovery context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111451 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
f1614cb6e4f1056850a71f1a0e3372aaee2cedb4 19-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Simplify the ownership model for DiagnosticClients, which was really
convoluted and a bit leaky. Now, the Diagnostic object owns its
DiagnosticClient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
bdbb004f38978da0c4a75af3294d1c7b5ff84af1 19-Aug-2010 Douglas Gregor <dgregor@apple.com> Simplify the ownership model for DiagnosticClients, which was really
convoluted and a bit leaky. Now, the Diagnostic object owns its
DiagnosticClient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
6e81bc87f575f058305248882b6396db38814816 18-Aug-2010 Tom Care <tcare@apple.com> Added psuedo-constant analysis and integrated it into the false positive reduction stage in IdempotentOperationChecker.
- Renamed IdempotentOperationChecker::isConstant to isConstantOrPseudoConstant to better reflect the function
- Changed IdempotentOperationChecker::PreVisitBinaryOperator to only run 'CanVary' once on undefined assumptions
- Created new PsuedoConstantAnalysis class and added it to AnalysisContext
- Changed IdempotentOperationChecker to exploit the new analysis
- Updated tests with psuedo-constants
- Added check to IdempotentOperationChecker to see if a Decl is const qualified

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111426 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PsuedoConstantAnalysis.h
nalysis/AnalysisContext.h
245adabd97c8c770c13935a9075f2243cc6f1d57 18-Aug-2010 Tom Care <tom.care@uqconnect.edu.au> Added psuedo-constant analysis and integrated it into the false positive reduction stage in IdempotentOperationChecker.
- Renamed IdempotentOperationChecker::isConstant to isConstantOrPseudoConstant to better reflect the function
- Changed IdempotentOperationChecker::PreVisitBinaryOperator to only run 'CanVary' once on undefined assumptions
- Created new PsuedoConstantAnalysis class and added it to AnalysisContext
- Changed IdempotentOperationChecker to exploit the new analysis
- Updated tests with psuedo-constants
- Added check to IdempotentOperationChecker to see if a Decl is const qualified

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111426 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PsuedoConstantAnalysis.h
nalysis/AnalysisContext.h
36d67d8e178a6fd81322ab565c5900ee5df1109d 18-Aug-2010 Chris Lattner <sabre@nondot.org> no need to pass bumppointer allocator into macroinfo::destroy


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111364 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
2c1ab9079cb117dc0470ab423fe0bc5177546339 18-Aug-2010 Chris Lattner <sabre@nondot.org> no need to pass bumppointer allocator into macroinfo::destroy


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111364 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
cb6c24a9e86453b63863ce1eb8645e1690c9b542 18-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Simplify FixItHint by eliminated the unnecessary InsertionLoc
location. Patch by Eelis van der Weegen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
783c56f47745f719590b17afd7ed937bf2407b53 18-Aug-2010 Douglas Gregor <dgregor@apple.com> Simplify FixItHint by eliminated the unnecessary InsertionLoc
location. Patch by Eelis van der Weegen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
68c0ef034930d84a63cab17c8bd84a4eb75e8d8d 18-Aug-2010 John McCall <rjmccall@apple.com> Rip out the existing retroactive abstract-class usage checker,
which in a fit of zeal wanted to walk the entire translation unit,
and replace it with a new checker that walks the types of declarations
nested within the class. Also, look into templates when doing this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111357 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
94c3b561a4f24c5c44a1e2ee6f28f530e6a041ba 18-Aug-2010 John McCall <rjmccall@apple.com> Rip out the existing retroactive abstract-class usage checker,
which in a fit of zeal wanted to walk the entire translation unit,
and replace it with a new checker that walks the types of declarations
nested within the class. Also, look into templates when doing this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111357 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
e85c9b7e9304b53acf082aa0ed379cf5de2007da 18-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Remove -Wunused-member-function from the 'Extra' diagnostic group too; llvm uses it.

This effectively disables -Wunused-member-function for building llvm/clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111356 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
272264c7a7b29647045413a25fca15d38fca40b5 18-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove -Wunused-member-function from the 'Extra' diagnostic group too; llvm uses it.

This effectively disables -Wunused-member-function for building llvm/clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111356 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
64a5f6f7034808988c3596cf340a879c0c501869 18-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Emit an error if an array is too large. We're slightly more strict
than GCC 4.2 here when building 32-bit (where GCC will allow
allocation of an array for which we can't get a valid past-the-end
pointer), and emulate its odd behavior in 64-bit where it only allows
63 bits worth of storage in the array. The former is a correctness
issue; the latter is harmless in practice (you wouldn't be able to use
such an array anyway) and helps us pass a GCC DejaGNU test.

Fixes <rdar://problem/8212293>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111338 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
2767ce2e21d8bc17869b8436220bce719b3369e4 18-Aug-2010 Douglas Gregor <dgregor@apple.com> Emit an error if an array is too large. We're slightly more strict
than GCC 4.2 here when building 32-bit (where GCC will allow
allocation of an array for which we can't get a valid past-the-end
pointer), and emulate its odd behavior in 64-bit where it only allows
63 bits worth of storage in the array. The former is a correctness
issue; the latter is harmless in practice (you wouldn't be able to use
such an array anyway) and helps us pass a GCC DejaGNU test.

Fixes <rdar://problem/8212293>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111338 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
20875e80f726001056d4e86dce695d90c37ff70e 18-Aug-2010 Ted Kremenek <kremenek@apple.com> TypedRegion::isBoundable() should return true by default. Since there is no TypedViewRegion anyore, it is not possible that the subclass (which doesn't override isBoundable) could return a null value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111329 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
cced08e13c9fba9381e39a27c70abe6978adee37 18-Aug-2010 Ted Kremenek <kremenek@apple.com> TypedRegion::isBoundable() should return true by default. Since there is no TypedViewRegion anyore, it is not possible that the subclass (which doesn't override isBoundable) could return a null value type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111329 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
9f59ab7369ac420686d1539aad77cace3738808f 18-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose if type of iboutletcollection attribute is a builtin type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111324 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
1b72fa7222abb1a53e063f0805c759993d445471 18-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose if type of iboutletcollection attribute is a builtin type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111324 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
184fbd446d81db7e83904b2f98757abcb6c95a6b 18-Aug-2010 Daniel Dunbar <daniel@zuster.org> StringRef'ication of lots stuff, patch by Peter Davies!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
4087f27e5416c799bcb6be072f905be752acb61c 18-Aug-2010 Daniel Dunbar <daniel@zuster.org> StringRef'ication of lots stuff, patch by Peter Davies!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
20c6e6ee2a457c03cfd09c0253ff3a23b425a8c7 18-Aug-2010 Daniel Dunbar <daniel@zuster.org> Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing
those crash paths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111311 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
5505413ee8e4e2924f52ba81181071f3a492e7d9 18-Aug-2010 Daniel Dunbar <daniel@zuster.org> Lex: Add #pragma clang __debug {llvm_fatal_error, llvm_unreachable}, for testing
those crash paths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111311 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
345fb7fbbd9e774f88879746be7b375ec774a0c2 18-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Rename -Wunused-method -> -Wunused-member-function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111305 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
42cbd782cf17223076e5b6c0607414d9d68aae19 18-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename -Wunused-method -> -Wunused-member-function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111305 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
2937fd9d48279ce1c9d44a6b8243aeafe1cb0ce1 17-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce -Wunused-method option for warning on unused class methods in anonymous namespace.

This option is not part of the Unused diagnostic group until the warnings on llvm codebase are fixed
and we are ready to turn it on. Suggestion by Daniel.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3d27b107c515ab1a8fd47b33c41adcf5a65f465b 17-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce -Wunused-method option for warning on unused class methods in anonymous namespace.

This option is not part of the Unused diagnostic group until the warnings on llvm codebase are fixed
and we are ready to turn it on. Suggestion by Daniel.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c7da607d9a4d48ca5917b4aca5b4abedd1893964 17-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose use of iboutletcollection on ivar/property
of non-object types. Radar 8308053.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3a3400b4fdf73887e9d8b4372334bc24a858702f 17-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose use of iboutletcollection on ivar/property
of non-object types. Radar 8308053.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4f7121ffc46611335a36c15ea42d6591b8c288ab 17-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reintroduce the serialization library, with fixed dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111279 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHBitCodes.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
erialization/PCHBitCodes.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
erialization/PCHWriter.h
857281328fa824782bdd979c3bfdd97ecdbc1609 17-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reintroduce the serialization library, with fixed dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111279 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHBitCodes.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
erialization/PCHBitCodes.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
erialization/PCHWriter.h
3c414771dd09faf7277d629451f9e43bfc3dc4bf 17-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add type parameter support for attribute iboutletcollection.
Radar 8308053.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
a8fb24fa3151567056f6125999cea69e39604f35 17-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add type parameter support for attribute iboutletcollection.
Radar 8308053.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
74aa4b52a2fc66418a5a92bb7bdbb1723dab7b95 17-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Revert Sebastian's build-breaking patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111265 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHBitCodes.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
erialization/PCHBitCodes.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
erialization/PCHWriter.h
4557e473c9e673e7e6f7063478f63a5b3c6c10b2 17-Aug-2010 Douglas Gregor <dgregor@apple.com> Revert Sebastian's build-breaking patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111265 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHBitCodes.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
erialization/PCHBitCodes.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
erialization/PCHWriter.h
872b3d65f022356f3a636c05506960639b5550db 17-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Create a new Serialization module that contains all the PCH code, and will contain all the module code in the future. Update the Makefiles, CMake projects and the Xcode project. I hope I did everything right for Xcode. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111258 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHBitCodes.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
erialization/PCHBitCodes.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
erialization/PCHWriter.h
93c972945bccd1a966b0445f9ed45db433b77bc1 17-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Create a new Serialization module that contains all the PCH code, and will contain all the module code in the future. Update the Makefiles, CMake projects and the Xcode project. I hope I did everything right for Xcode. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111258 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHBitCodes.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
erialization/PCHBitCodes.h
erialization/PCHDeserializationListener.h
erialization/PCHReader.h
erialization/PCHWriter.h
74eb8a54dbbd107d42e78dd297f011cf7f8e7f31 17-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a typo in a diag name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
11c3dc45a89f632b5fb52610d5cb217bfc062e9a 17-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a typo in a diag name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
7f0ac49c3a0c730e607b45ee8eed664cb4b6745b 17-Aug-2010 Chris Lattner <sabre@nondot.org> Implement #pragma push_macro, patch by Francois Pichet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/MacroInfo.h
ex/Preprocessor.h
f47724bf78299c7a50f008e0443c5f9f9f279ddc 17-Aug-2010 Chris Lattner <sabre@nondot.org> Implement #pragma push_macro, patch by Francois Pichet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/MacroInfo.h
ex/Preprocessor.h
07f1c636bc60ee0c863003e37257f59d4fa978f4 17-Aug-2010 Benjamin Kramer <benny.kra@googlemail.com> Convert all uses of StringLiteral::getStrData() to StringLiteral::getString()
and remove getStrData(). Patch by Peter Davies (with some tweaks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2f4eaef37476ae6891ede8ba215d0f6fd093629b 17-Aug-2010 Benjamin Kramer <benny.kra@googlemail.com> Convert all uses of StringLiteral::getStrData() to StringLiteral::getString()
and remove getStrData(). Patch by Peter Davies (with some tweaks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6f19bd8cb2e5b8d98c26078ab462866b2ce6fce9 17-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When the # of top-level declarations changes after reparsing a
translation unit, refresh code-completion results because they've
probably changed. However, enforce a cooldown period between
refreshes, to avoid thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111218 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
727d93ef49e18147149354fadd10e86b13bc4ab0 17-Aug-2010 Douglas Gregor <dgregor@apple.com> When the # of top-level declarations changes after reparsing a
translation unit, refresh code-completion results because they've
probably changed. However, enforce a cooldown period between
refreshes, to avoid thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111218 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
0e4e4d37c1309007566f8892aa97b1e03d1dc9ef 17-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Move include to the proper place. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111204 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
349d38cef04ddf8938047c1b542a799aa82dfe84 17-Aug-2010 Douglas Gregor <dgregor@apple.com> Move include to the proper place. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111204 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5a29d4cffad3aa4f1dff971782c09aceb0afd0ce 16-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose assiging to an interface object in
non-fragile abi mode as sizes are not statically known.
Fixes radar 8315734.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111191 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
57dae1a312e3f7591e957adc89776ef4bca6a097 16-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose assiging to an interface object in
non-fragile abi mode as sizes are not statically known.
Fixes radar 8315734.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111191 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6bfb73328826b5cf1a418587bbda9f2cacc2b5bd 16-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement name hiding of cached global code-completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111184 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5f808c2bfe2f95c984029d76deb4aaebcad30cbc 16-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement name hiding of cached global code-completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111184 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
dc3454bbbc5a8021c9ec7310283b851f237a91d1 16-Aug-2010 Jordy Rose <jediknil@belkadan.com> Move GRState::AssumeInBound out of its header file -- it's not really inline-friendly anymore.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111179 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
1802eebad8ebbd0b771b0776dbc53d2208af46d1 16-Aug-2010 Jordy Rose <jediknil@belkadan.com> Move GRState::AssumeInBound out of its header file -- it's not really inline-friendly anymore.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111179 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
6dd2f47245158616b9670b2f620223143b28ee30 16-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add two options for playing with modules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111166 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
e55fd871b0cf3e4ebc708cf46831908d74eab40a 16-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add two options for playing with modules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111166 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
51bc53eb6a607d6da76ab71891ee2060929e2411 16-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When caching code completions for global declarations, keep track of
the usage type of each declaration result, then compare those types to
the preferred type of the completion. This provides parity in the
priority calculation between the code-completion results produced
directly from Sema and those cached by ASTUnit.

For the standard Cocoa.h (+ others) example, there's a penalty of 3-4
hundredeths of a second when caching the global results (for ~31,000
results), because we need an ASTContext-agnostic representation of
types for the comparison, and therefore we use... strings. Eventually,
we'd like to implement a more efficient ASTContext-agnostic encoding
of types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/TypeOrdering.h
rontend/ASTUnit.h
f5586f6b311c98e1022a8fe0609053849b70d323 16-Aug-2010 Douglas Gregor <dgregor@apple.com> When caching code completions for global declarations, keep track of
the usage type of each declaration result, then compare those types to
the preferred type of the completion. This provides parity in the
priority calculation between the code-completion results produced
directly from Sema and those cached by ASTUnit.

For the standard Cocoa.h (+ others) example, there's a penalty of 3-4
hundredeths of a second when caching the global results (for ~31,000
results), because we need an ASTContext-agnostic representation of
types for the comparison, and therefore we use... strings. Eventually,
we'd like to implement a more efficient ASTContext-agnostic encoding
of types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/TypeOrdering.h
rontend/ASTUnit.h
4d5dc10bd027901dac14d305dcdc3f26bcf0029d 16-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Emit diagnostic error when the field of an anonymous struct is non trivial.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
dd7744d01e513e941f47893b16dfebae2c1c9911 16-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Emit diagnostic error when the field of an anonymous struct is non trivial.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ema/Sema.h
de68a1e2d5a3ca09420aaba4a9614c619b0cc920 16-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Dereferencing NULL pointers is such poor form.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111150 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
c4421e966d77a18f815284175b3fcbb46f36fa39 16-Aug-2010 Douglas Gregor <dgregor@apple.com> Dereferencing NULL pointers is such poor form.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111150 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
9cf955365328fd5615ede5512c0e6a3647c33e79 16-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When caching global completion results, keep track of the simplified
type class, so that we can adjust priorities appropriately when the
preferred type for the context and the actual type of the completion
are similar.

This gets us one step closer to parity of the cached completion
results with the non-cached completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111139 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
1827e10051638770ad9ccf3e285caf95f995afd1 16-Aug-2010 Douglas Gregor <dgregor@apple.com> When caching global completion results, keep track of the simplified
type class, so that we can adjust priorities appropriately when the
preferred type for the context and the actual type of the completion
are similar.

This gets us one step closer to parity of the cached completion
results with the non-cached completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111139 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
adba46ffdb1a922c65b8518defeebdced2ecbd6a 16-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed typo in conj, conjf, conjl signature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111134 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
6f1bd6674823697516fc169a44adf974123377e2 16-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed typo in conj, conjf, conjl signature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111134 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
71734dbcecf25f58df4575cea422e5a7d07c8efa 16-Aug-2010 Charles Davis <cdavis@mines.edu> Error out if reinterpret_casting between member pointers of two different
sizes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111119 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f231df318d8d937adb24f3db23c23c31ab378a82 16-Aug-2010 Charles Davis <cdavis@mines.edu> Error out if reinterpret_casting between member pointers of two different
sizes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111119 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2e71feebc8f0b3a5a168e9bb79e5ea92f931f9b3 16-Aug-2010 Charles Davis <cdavis@mines.edu> Implement support for member pointers under the Microsoft C++ ABI in the
AST library.

This also adds infrastructure for supporting multiple C++ ABIs in the AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
071cc7deffad608165b1ddd5263e8bf181861520 16-Aug-2010 Charles Davis <cdavis@mines.edu> Implement support for member pointers under the Microsoft C++ ABI in the
AST library.

This also adds infrastructure for supporting multiple C++ ABIs in the AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
21cd11ca31b9168279e0513c7bb02dae24e41910 16-Aug-2010 Jordy Rose <jediknil@belkadan.com> - Allow making ElementRegions with complex offsets (expressions or symbols) for the purpose of bounds-checking.
- Rewrite GRState::AssumeInBound to actually do that checking, and to use the normal constraint path.
- Remove ConstraintManager::AssumeInBound.
- Teach RegionStore and FlatStore to ignore those regions for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111116 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/GRState.h
e701117b21356d3c60133315b5bdd50232ec6cca 16-Aug-2010 Jordy Rose <jediknil@belkadan.com> - Allow making ElementRegions with complex offsets (expressions or symbols) for the purpose of bounds-checking.
- Rewrite GRState::AssumeInBound to actually do that checking, and to use the normal constraint path.
- Remove ConstraintManager::AssumeInBound.
- Teach RegionStore and FlatStore to ignore those regions for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111116 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/GRState.h
0acf8f4cd2f719f0dc402acc19cf8e10fd174243 16-Aug-2010 Jordy Rose <jediknil@belkadan.com> Move GRState's bind* methods out of its header file -- they're too big for inlining now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111113 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
52082aff1ce4377761d4eb720689567719ccea22 16-Aug-2010 Jordy Rose <jediknil@belkadan.com> Move GRState's bind* methods out of its header file -- they're too big for inlining now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111113 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
b5ad08b05fc126114e3200ca2a2999be550781a6 15-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> StoreManager::RemoveDeadBindings() can take a Store instead of an entire GRState now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111103 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
5e4cb347cbf12c292b80386c872e5eaef21b5c23 15-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> StoreManager::RemoveDeadBindings() can take a Store instead of an entire GRState now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111103 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
caea399c474ff56d8f379772bff1ebef78570717 15-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Extend the code-completion caching infrastructure to include global
declarations (in addition to macros). Each kind of declaration maps to
a certain set of completion contexts, and the ASTUnit completion logic
introduces the completion strings for those declarations if the actual
code-completion occurs in one of the contexts where it matters.

There are a few new code-completion-context kinds. Without these,
certain completions (e.g., after "using namespace") would need to
suppress all global completions, which would be unfortunate.

Note that we don't get the priorities right for global completions,
because we don't have enough type information. We'll need a way to
compare types in an ASTContext-agnostic way before this can be
implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111093 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
ema/Sema.h
8071e4212ae08f8014e0c3ae6d18b7388003a5cc 15-Aug-2010 Douglas Gregor <dgregor@apple.com> Extend the code-completion caching infrastructure to include global
declarations (in addition to macros). Each kind of declaration maps to
a certain set of completion contexts, and the ASTUnit completion logic
introduces the completion strings for those declarations if the actual
code-completion occurs in one of the contexts where it matters.

There are a few new code-completion-context kinds. Without these,
certain completions (e.g., after "using namespace") would need to
suppress all global completions, which would be unfortunate.

Note that we don't get the priorities right for global completions,
because we don't have enough type information. We'll need a way to
compare types in an ASTContext-agnostic way before this can be
implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111093 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
ema/Sema.h
a256f5f41fbc9723df79ce52bf6c0855df786f06 15-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Remove dead code, caught by unused function warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
ba6f816d633e3b88c38c6896c2d78d19489650f2 15-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove dead code, caught by unused function warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
5f5cca5b0d0f9b890351134f8dd20d10706ac349 15-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> DependentTypeOfExprType and DependentDecltypeType are not seen by client code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111090 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TypeXML.def
469865cf50f5d11951cc13a935f0fe52cbf17360 15-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> DependentTypeOfExprType and DependentDecltypeType are not seen by client code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111090 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TypeXML.def
36deee56466fd493211464cbcfef3dd4543a376c 15-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Commit improved version of 111026 & 111027.

Unused warnings for functions:
-static functions
-functions in anonymous namespace
-class methods in anonymous namespace
-class method specializations in anonymous namespace
-function specializations in anonymous namespace

Unused warnings for variables:
-static variables
-variables in anonymous namespace
-static data members in anonymous namespace
-static data members specializations in anonymous namespace

Reveals lots of opportunities for dead code removal in llvm codebase that will
interest my esteemed colleagues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111086 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
bbc6454bb98d6a6ecbaafa715222c5db834307f2 15-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Commit improved version of 111026 & 111027.

Unused warnings for functions:
-static functions
-functions in anonymous namespace
-class methods in anonymous namespace
-class method specializations in anonymous namespace
-function specializations in anonymous namespace

Unused warnings for variables:
-static variables
-variables in anonymous namespace
-static data members in anonymous namespace
-static data members specializations in anonymous namespace

Reveals lots of opportunities for dead code removal in llvm codebase that will
interest my esteemed colleagues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111086 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
52cea12af0e273cf8f68dc7fb51caf5b4cc6a165 14-Aug-2010 Jordy Rose <jediknil@belkadan.com> Add a callback for when region changes occur. Still somewhat of a work-in-progress, but working! Effect on clients: all changes to a store now go through GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111078 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/Store.h
c2b7dfaad674587cfd220ff447b3710d252130c3 14-Aug-2010 Jordy Rose <jediknil@belkadan.com> Add a callback for when region changes occur. Still somewhat of a work-in-progress, but working! Effect on clients: all changes to a store now go through GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111078 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/Store.h
b2675e71e23ec36f999b3771d6ed8e30ac44f4d1 14-Aug-2010 Jordy Rose <jediknil@belkadan.com> Add a new metadata symbol type for checkers to use. Metadata symbols must be associated with a region and will be collected if the region dies or its checker fails to mark it as in use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111076 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
bd533aa4ff8895c676d4634d0d3de254962569d0 14-Aug-2010 Jordy Rose <jediknil@belkadan.com> Add a new metadata symbol type for checkers to use. Metadata symbols must be associated with a region and will be collected if the region dies or its checker fails to mark it as in use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111076 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
fb803c306f342996367fe1facaa35851330473c2 14-Aug-2010 Eli Friedman <eli.friedman@gmail.com> PR3344: Downgrade "too many braces around scalar initializer" to a warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111067 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
09865a903affa9c08687859d8de65470064c7bc2 14-Aug-2010 Eli Friedman <eli.friedman@gmail.com> PR3344: Downgrade "too many braces around scalar initializer" to a warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111067 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a9c78dd619063d11d0a5c7f2154c54b7d78a0fcf 14-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Increase flags to hold all necessary bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111065 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
e6674b369070cc9bef0a9e6fcab6aabd9b7924dc 14-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Increase flags to hold all necessary bits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111065 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
b5e64b39ff15ccc53e83c452425ac31f172ed7f6 14-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement caching of code-completion results for macro definitions
when the CXTranslationUnit_CacheCompletionResults option is given to
clang_parseTranslationUnit(). Essentially, we compute code-completion
results for macro definitions after we have parsed the file, then
store an ASTContext-agnostic version of those results (completion
string, cursor kind, priority, and active contexts) in the
ASTUnit. When performing code completion in that ASTUnit, we splice
the macro definition results into the results provided by the actual
code-completion (which has had macros turned off) before libclang gets
those results. We use completion context information to only splice in
those results that make sense for that context.

With a completion involving all of the macros from Cocoa.h and a few other
system libraries (totally ~8500 macro definitions) living in a
precompiled header, we get about a 9% performance improvement from
code completion, since we no longer have to deserialize all of the
macro definitions from the precompiled header.

Note that macro definitions are merely the canary; the cache is
designed to also support other top-level declarations, which should be
a bigger performance win. That optimization will be next.

Note also that there is no mechanism for determining when to throw
away the cache and recompute its contents.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111051 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
87c08a5d6b9e1e44ae6f554df40139d3a6f60b33 14-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement caching of code-completion results for macro definitions
when the CXTranslationUnit_CacheCompletionResults option is given to
clang_parseTranslationUnit(). Essentially, we compute code-completion
results for macro definitions after we have parsed the file, then
store an ASTContext-agnostic version of those results (completion
string, cursor kind, priority, and active contexts) in the
ASTUnit. When performing code completion in that ASTUnit, we splice
the macro definition results into the results provided by the actual
code-completion (which has had macros turned off) before libclang gets
those results. We use completion context information to only splice in
those results that make sense for that context.

With a completion involving all of the macros from Cocoa.h and a few other
system libraries (totally ~8500 macro definitions) living in a
precompiled header, we get about a 9% performance improvement from
code completion, since we no longer have to deserialize all of the
macro definitions from the precompiled header.

Note that macro definitions are merely the canary; the cache is
designed to also support other top-level declarations, which should be
a bigger performance win. That optimization will be next.

Note also that there is no mechanism for determining when to throw
away the cache and recompute its contents.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111051 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
ema/Sema.h
c01a9412aa2701d5582f2c3c6e4787bb0a0c37e6 13-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Revert 111026 & 111027, build breakage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111036 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
05eac86d547892847ca95b5350e28d681150fa68 13-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert 111026 & 111027, build breakage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111036 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
39e856609b8b56c5e120b48bf53d489b46dffdb2 13-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> The unused warnings extravaganza continues. Warn for:

-static variables
-variables in anonymous namespace (fixes rdar://7794535)
-static data members in anonymous namespace
-static data members specializations in anonymous namespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111027 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
30c0dd86f0dc3c1a1fba29581d04e8ed0bdb659d 13-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> The unused warnings extravaganza continues. Warn for:

-static variables
-variables in anonymous namespace (fixes rdar://7794535)
-static data members in anonymous namespace
-static data members specializations in anonymous namespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111027 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
04d50da8b699861aa7c631e1dd6b40376bd36690 13-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Expand the unused warnings for functions. Warn for:

-static function declarations
-functions in anonymous namespace
-class methods in anonymous namespace
-class method specializations in anonymous namespace
-function specializations in anonymous namespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111026 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
f6d1d43d68016e975f22264343631a55b9701495 13-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Expand the unused warnings for functions. Warn for:

-static function declarations
-functions in anonymous namespace
-class methods in anonymous namespace
-class method specializations in anonymous namespace
-function specializations in anonymous namespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111026 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
85d6a41b8f1a0d389d1cacd48a838485e68b3013 13-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Change Sema's UnusedStaticFuncs to UnusedFileScopedDecls to allow also keeping track of unused file scoped variables.

This is only preparation, currently only static function definitions are tracked, as before.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111025 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
ema/Sema.h
49b96d1a382ae9f31456166f1a734d3f7f30b992 13-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change Sema's UnusedStaticFuncs to UnusedFileScopedDecls to allow also keeping track of unused file scoped variables.

This is only preparation, currently only static function definitions are tracked, as before.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111025 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
ema/Sema.h
7f987ac63fb3a284c1282b62de07d7bfdd995ea5 13-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> When issuing warning for future conflict resolution,
(nonfragile-abi2), do not consider 'ivar' access
in class methods. Also, improve on diagnostics.
Radar 8304561.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111023 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f759b4dc74fe8b0cc6e1350b860676ac9b853371 13-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> When issuing warning for future conflict resolution,
(nonfragile-abi2), do not consider 'ivar' access
in class methods. Also, improve on diagnostics.
Radar 8304561.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111023 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
85fbb33344df0c86fc29baa47a50e28f91f5ed1f 13-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Add a new cc1 option -fix-what-you-can which when combined with the fix-it mode
will apply all fixes even when there were other errors in the file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111020 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
ewrite/FixItRewriter.h
ewrite/FrontendActions.h
1450f265fcc84a7ca64dd9f3b8d4492c5bd55e23 13-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Add a new cc1 option -fix-what-you-can which when combined with the fix-it mode
will apply all fixes even when there were other errors in the file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111020 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
ewrite/FixItRewriter.h
ewrite/FrontendActions.h
6a5e66b03e9ab0f3b434530b286da1ae8497d816 13-Aug-2010 John McCall <rjmccall@apple.com> Fix the help text on -Wwrite-strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111011 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
a61e5a2679d8e40de8d98fb96d051df8094f6e99 13-Aug-2010 John McCall <rjmccall@apple.com> Fix the help text on -Wwrite-strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111011 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
191829473d215228fe1fdd5f3d26ba8409b4c534 13-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Implement clang_saveTranslationUnit(), which saves a translation unit
into a PCH/AST file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111006 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
7ae2faafd30524ef5f863bb3b8701977888839bb 13-Aug-2010 Douglas Gregor <dgregor@apple.com> Implement clang_saveTranslationUnit(), which saves a translation unit
into a PCH/AST file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111006 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
0fc30d4b6f569ff829430b7881b485462990c9fb 13-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver/OptParser: Add a NoForward flag to prevent forwarding certain options to
GCC.
- Mark -Xclang and -mlinker-version= with it for now, although I am sure there
are more.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111005 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
river/OptTable.h
river/Option.h
river/Options.td
caeed1d3a5b366ae8fda5dda9bddc7bbb859c41f 13-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver/OptParser: Add a NoForward flag to prevent forwarding certain options to
GCC.
- Mark -Xclang and -mlinker-version= with it for now, although I am sure there
are more.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111005 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
river/OptTable.h
river/Option.h
river/Options.td
3b4b03ffddbcdc9be55c8eb54c6b490b4722b1cd 13-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Teach ASTUnit to hold on to the Sema object and ASTConsumer that are
used when parsing (or re-parsing) a file. Also, when loading a
precompiled header into ASTUnit, create a Sema object that holds onto
semantic-analysis information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111003 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
914ed9d30e9abf829a62aa996b083b1e47c19ff6 13-Aug-2010 Douglas Gregor <dgregor@apple.com> Teach ASTUnit to hold on to the Sema object and ASTConsumer that are
used when parsing (or re-parsing) a file. Also, when loading a
precompiled header into ASTUnit, create a Sema object that holds onto
semantic-analysis information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111003 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
c067319e8bbb6cc37614a0b7ae5709c0ebccb5ea 13-Aug-2010 John McCall <rjmccall@apple.com> Make two methods have compatible signatures with the methods they override.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111002 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
40db2991d746a2901d6441cee261552a20a4a48a 13-Aug-2010 John McCall <rjmccall@apple.com> Make two methods have compatible signatures with the methods they override.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111002 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Sema.h
054f0821dff26979423ccdfd09846d579af24781 13-Aug-2010 John McCall <rjmccall@apple.com> Perform access control when template lookup finds a class template.
This is *really* hacky.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110997 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
b8592063413d277f6583715c9a890bd58440c1d1 13-Aug-2010 John McCall <rjmccall@apple.com> Perform access control when template lookup finds a class template.
This is *really* hacky.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110997 91177308-0d34-0410-b5e6-96231b3b80d8
ema/Lookup.h
1b21c5748eeb17fbe28d96c73e96f70001495043 13-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Zap unused UnaryOperator::OffsetOf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/StmtVisitor.h
rontend/StmtXML.def
de7e66256b1bdfcf6526994825a8c8fced52a31c 13-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Zap unused UnaryOperator::OffsetOf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
ST/StmtVisitor.h
rontend/StmtXML.def
735b542c2c94910a3d522283864f85c27ff602cf 13-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Instead of modifying the ObjC AST to not modify existing declarations, teach chained PCH to overwrite declarations from earlier PCH files in dependent ones. Tell Sema to note when it changes AST nodes so that they have to be reserialized. Finally, the ObjCProtocolDecls created in forward decls, like the ObjCInterfaceDecls in @class forward decls, are not lexically part of the decl context; only the definition is.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
0b17c61e8f143901ce11b4a6e5129ac63aaeee04 13-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Instead of modifying the ObjC AST to not modify existing declarations, teach chained PCH to overwrite declarations from earlier PCH files in dependent ones. Tell Sema to note when it changes AST nodes so that they have to be reserialized. Finally, the ObjCProtocolDecls created in forward decls, like the ObjCInterfaceDecls in @class forward decls, are not lexically part of the decl context; only the definition is.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ea10e49a098ef488e8341bae88112449d3f74233 13-Aug-2010 John McCall <rjmccall@apple.com> Just disable the hidden-visibility optimization for now by hiding it behind
a -cc1 option. The Darwin linker complains about mixed visibility when linking
gcc-built objects with clang-built objects, and the optimization isn't really
that valuable. Platforms with less ornery linkers can feel free to enable this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110979 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
279b5eb6910d64a293e9c0e2887a05c65d8737d7 13-Aug-2010 John McCall <rjmccall@apple.com> Just disable the hidden-visibility optimization for now by hiding it behind
a -cc1 option. The Darwin linker complains about mixed visibility when linking
gcc-built objects with clang-built objects, and the optimization isn't really
that valuable. Platforms with less ornery linkers can feel free to enable this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110979 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenOptions.h
9419e93fc798a72419e44677651eef9772cde858 13-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Teach CompilerInstance to create and hold on to the Sema object used
for parsing, so that it can persist beyond the lifetime of the parsing
call.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110978 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
f18d0d8b39e891460d50f8a8b85029885b264986 13-Aug-2010 Douglas Gregor <dgregor@apple.com> Teach CompilerInstance to create and hold on to the Sema object used
for parsing, so that it can persist beyond the lifetime of the parsing
call.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110978 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ba91143029e953e8e813d3f4d2bafef96ba52770 13-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add a ParseAST overload that takes a Sema object, so that the caller
can create (and hold on to) the Sema object. Also, move Sema-related
initialization/finalization with its various consumers and external
sources into the Sema constructor and destructor, rather than placing
it in ParseAST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110973 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
ema/Sema.h
46ea32a4b54481b7575499cb9f8d275f1d4cdd54 13-Aug-2010 Douglas Gregor <dgregor@apple.com> Add a ParseAST overload that takes a Sema object, so that the caller
can create (and hold on to) the Sema object. Also, move Sema-related
initialization/finalization with its various consumers and external
sources into the Sema constructor and destructor, rather than placing
it in ParseAST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110973 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
ema/Sema.h
68d9db1f0d901b561b11cecd8a4a53a1af21b780 13-Aug-2010 Tom Care <tcare@apple.com> Improved IdempotentOperationChecker false positives and false negatives.
- Unfinished analysis may still report valid warnings if the path was completely analyzed
- New 'CanVary' heuristic to recursively determine if a subexpression has a varying element
- Updated test cases, including one known bug
- Exposed GRCoreEngine through GRExprEngine

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110970 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
a7a8a450d908b34fa5f569f2e694ebd4b61aae2f 13-Aug-2010 Tom Care <tom.care@uqconnect.edu.au> Improved IdempotentOperationChecker false positives and false negatives.
- Unfinished analysis may still report valid warnings if the path was completely analyzed
- New 'CanVary' heuristic to recursively determine if a subexpression has a varying element
- Updated test cases, including one known bug
- Exposed GRCoreEngine through GRExprEngine

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110970 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
75a87ecc0bd54e9daf185a2814d902fa347a4c4e 13-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to issue warning when colllection expresion's type
does not implement 'countByEnumeratingWithState' API.
Implements radar 7634669.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ea16110ce3a4fbb205735f0a55050bc11292e82c 13-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to issue warning when colllection expresion's type
does not implement 'countByEnumeratingWithState' API.
Implements radar 7634669.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2340ba00f3e312e9df014e474531270d3263550d 12-Aug-2010 John McCall <rjmccall@apple.com> Implement -Wcast-align. The initial design of this diagnostic diverges
from GCC's in that we warn on *any* increase in alignment requirements, not
just those that are enforced by hardware. Please let us know if this causes
major problems for you (which it shouldn't, since it's an optional warning).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110959 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
b7f4ffe073fa419613946461a2583ba2fcb72280 12-Aug-2010 John McCall <rjmccall@apple.com> Implement -Wcast-align. The initial design of this diagnostic diverges
from GCC's in that we warn on *any* increase in alignment requirements, not
just those that are enforced by hardware. Please let us know if this causes
major problems for you (which it shouldn't, since it's an optional warning).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110959 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ema/Sema.h
f4053ff5bff552d63919155e5f429cead6c391e1 12-Aug-2010 John McCall <rjmccall@apple.com> Fixing the build isn't good enough; back out r110956 and r110953.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110958 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
ema/Sema.h
d69fd7f34fd2de35845e834e987009efec09b937 12-Aug-2010 John McCall <rjmccall@apple.com> Fixing the build isn't good enough; back out r110956 and r110953.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110958 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
ema/Sema.h
2417511680a15c64abb232b984f1082d36fe3bfe 12-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add a ParseAST overload that takes a Sema object, so that the caller
can create (and hold on to) the Sema object. Also, move Sema-related
initialization/finalization with its various consumers and external
sources into the Sema constructor and destructor, rather than placing
it in ParseAST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110952 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
ema/Sema.h
0eeb81baac6e82b065c0b03ad28ad1e580e78790 12-Aug-2010 Douglas Gregor <dgregor@apple.com> Add a ParseAST overload that takes a Sema object, so that the caller
can create (and hold on to) the Sema object. Also, move Sema-related
initialization/finalization with its various consumers and external
sources into the Sema constructor and destructor, rather than placing
it in ParseAST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110952 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
ema/Sema.h
c0e51be6ec0f57f9caaf16bdd3ef20a8b37466c9 12-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Move Sema's headers into include/clang/Sema, renaming a few along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110945 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
ema/CXXFieldCollector.h
ema/IdentifierResolver.h
ema/Initialization.h
ema/Lookup.h
ema/Overload.h
ema/Sema.h
ema/Template.h
e737f5041a36d0befb39ffeed8d50ba15916d3da 12-Aug-2010 Douglas Gregor <dgregor@apple.com> Move Sema's headers into include/clang/Sema, renaming a few along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110945 91177308-0d34-0410-b5e6-96231b3b80d8
ema/AnalysisBasedWarnings.h
ema/CXXFieldCollector.h
ema/IdentifierResolver.h
ema/Initialization.h
ema/Lookup.h
ema/Overload.h
ema/Sema.h
ema/Template.h
4b95a9589ccec1a4715823cc0a6cced5b354cc0c 12-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Downgrade error about nonnull attribute bbeing applied to a function without point arguments to a warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c9ef405559c90fc98b016d00aeae8afbc31c6bf6 12-Aug-2010 Douglas Gregor <dgregor@apple.com> Downgrade error about nonnull attribute bbeing applied to a function without point arguments to a warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3c17089a228845aaee81c147c949d8b8b95abcd9 12-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
f573084db5807f6003282bdf53ca9d58bab1ddc4 12-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
e58479760ac3cc56f8f59ddf7e25982298581bf2 12-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added locations and type source info for DeclarationName inside UsingDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ef3dce817d43faadbf21ce9102d33a9d84b02e09 12-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added locations and type source info for DeclarationName inside UsingDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
c86cc5ddd65451de8551a9978664afe16646690f 12-Aug-2010 Jordy Rose <jediknil@belkadan.com> Remove OwnershipAttr::Kind, since it's essentially redundant with attr::Kind the way it's being used. Also fix isa<OwnershipAttr> support, break more-than-80-char lines, and other miscellaneous ownership attr cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110908 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
2a479929f70d32f626778ef6e70ef46d3a37f74e 12-Aug-2010 Jordy Rose <jediknil@belkadan.com> Remove OwnershipAttr::Kind, since it's essentially redundant with attr::Kind the way it's being used. Also fix isa<OwnershipAttr> support, break more-than-80-char lines, and other miscellaneous ownership attr cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110908 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
2dff8200f405aac350f70fb311eead277759f99e 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Move the bulk of the cc1_main() processing into
ExecuteCompilerInvocation in libFrontend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110903 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
8eb2b0141d81d7d1026fad2d1a631f40eb3747a6 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Move the bulk of the cc1_main() processing into
ExecuteCompilerInvocation in libFrontend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110903 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
07b8e22f84fc71f0baaf244109ccb81e1ef814b5 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Use the compile time linker version as the default for -mlinker-version,
if detected.
- This is a hack, we really want the linker version at execution time, but we
don't have any infrastructure for getting that. Yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110886 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a77a723489b0cff63bf90f23416e10b8b6fc1f55 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Use the compile time linker version as the default for -mlinker-version,
if detected.
- This is a hack, we really want the linker version at execution time, but we
don't have any infrastructure for getting that. Yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110886 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f4f7745b58bdde35c435f0a1244a855a8c242fca 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -mlinker-version=, which forwards to -target-linker-version.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110872 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c176bc6be6f1407e7c6bd062f05a8636ea9a08e3 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -mlinker-version=, which forwards to -target-linker-version.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110872 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6a774b93f00e617be48c091a95becdec6ceff849 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add -target-linker-version, for specifying the version string of the
linker in use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetOptions.h
river/CC1Options.td
39065a5494613952b4810d1d6b28348cef155e12 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add -target-linker-version, for specifying the version string of the
linker in use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetOptions.h
river/CC1Options.td
14f796cba920ce6012f5248a3f6e94b45579abd6 12-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> -Make TokenID of IdentifierInfo read-only, remove setTokenID().
-There are 2 instances that change the TokenID for GNU libstdc++ 4.2 compatibility.
To handler those cases introduce a RevertedTokenID bitfield, RevertTokenIDToIdentifier() and hasRevertedTokenIDToIdentifier() methods.
Store the bitfield in PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
646395bbcaa849c94bc2a3246c71d809ca719f01 12-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Make TokenID of IdentifierInfo read-only, remove setTokenID().
-There are 2 instances that change the TokenID for GNU libstdc++ 4.2 compatibility.
To handler those cases introduce a RevertedTokenID bitfield, RevertTokenIDToIdentifier() and hasRevertedTokenIDToIdentifier() methods.
Store the bitfield in PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
f7401424f9b5b4648e180a80a6552e6e93c802ae 12-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added locations and type source info for DeclarationName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
2577743c5650c646fb705df01403707e94f2df04 12-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added locations and type source info for DeclarationName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
142156997e12aa4eb334ce40cd75214a827854a5 11-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Once code completion has completed, pass a "completion context" on to
the code-completion consumer. The consumer can use this information to
augument, filter, or display the code-completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110858 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
e6b1bb6e7fe906d164637ca33503b8fafdbc99e5 11-Aug-2010 Douglas Gregor <dgregor@apple.com> Once code completion has completed, pass a "completion context" on to
the code-completion consumer. The consumer can use this information to
augument, filter, or display the code-completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110858 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
f7142f1a9c73aafc9b09b13c6ab02a10c2f67f6b 11-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Change text of diagnostics on user request.
radar 7948654.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110857 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
741c362a1cb4f3644d5a4e6b8eb9244799e4ade6 11-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Change text of diagnostics on user request.
radar 7948654.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110857 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3dec9ba34b784cf889aef47c38978eb5f45b3689 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove rsqrtps_nr256 and sqrtps_nr256 builtins, at least until we need them

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
4fbe7aad307dba8d668b7878cd5e833c9467d1d8 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove rsqrtps_nr256 and sqrtps_nr256 builtins, at least until we need them

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
07d87b418a9899b382796c698ebab186067d61ee 11-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reintroduce the ASTConsumer/ASTUnit fix from r110610, it has nothing to do with the breakage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110840 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
27372b4f1f402e95dd479ecf40c39ca71c15619f 11-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Reintroduce the ASTConsumer/ASTUnit fix from r110610, it has nothing to do with the breakage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110840 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
5a24acfed51d1233e325f43af5b2147ad9c31e04 11-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Speculatively revert r110610 " Make ObjCInterfaceDecl redeclarable,
and create separate decl nodes for forward declarations and the
definition," which appears to be causing significant Objective-C
breakage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTContext.h
ST/DeclObjC.h
ST/Type.h
deacbdca554298ccdf636f19c6094a8825ec6b34 11-Aug-2010 Douglas Gregor <dgregor@apple.com> Speculatively revert r110610 " Make ObjCInterfaceDecl redeclarable,
and create separate decl nodes for forward declarations and the
definition," which appears to be causing significant Objective-C
breakage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTContext.h
ST/DeclObjC.h
ST/Type.h
c0a8d2bb0b15eeeef8e4074b5223b66ebeae0d87 11-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> MemRegion can refer to ASTContext without external help.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110784 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
018220c343c103b7dfaa117a7a474c7a7fd6d068 11-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> MemRegion can refer to ASTContext without external help.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110784 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
7aec899c576f2c168b8cd8f68324ec4493960cee 11-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Improve our handling of user-defined conversions when computing
implicit conversion sequences. In particular, model the "standard
conversion" from a class to its own type (or a base type) directly as
a standard conversion in the normal path *without* trying to determine
if there is a valid copy constructor. This appears to match the intent
of C++ [over.best.ics]p6 and more closely matches GCC and EDG.

As part of this, model non-lvalue reference initialization via
user-defined conversion in overloading the same way we handle it in
InitializationSequence, separating the "general user-defined
conversion" and "conversion to compatible class type" cases.

The churn in the overload-call-copycon.cpp test case is because the
test case was originally wrong; it assumed that we should do more
checking for copy constructors that we actually should, which affected
overload resolution.

Fixes PR7055. Bootstrapped okay.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
604eb65686590f73551d4ea608b174d2244cdd0f 11-Aug-2010 Douglas Gregor <dgregor@apple.com> Improve our handling of user-defined conversions when computing
implicit conversion sequences. In particular, model the "standard
conversion" from a class to its own type (or a base type) directly as
a standard conversion in the normal path *without* trying to determine
if there is a valid copy constructor. This appears to match the intent
of C++ [over.best.ics]p6 and more closely matches GCC and EDG.

As part of this, model non-lvalue reference initialization via
user-defined conversion in overloading the same way we handle it in
InitializationSequence, separating the "general user-defined
conversion" and "conversion to compatible class type" cases.

The churn in the overload-call-copycon.cpp test case is because the
test case was originally wrong; it assumed that we should do more
checking for copy constructors that we actually should, which affected
overload resolution.

Fixes PR7055. Bootstrapped okay.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
28189cbc520c81934dc5b5dec334dafb0da37bff 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove 256-bit cast built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
7fc3702694996d7d373e3280812a4172cf451aac 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove 256-bit cast built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
32103f13c62ebb075514335093702f5ff553360a 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove 256-bit unpack built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
f0e96c925858a513c275f0aec89f049e065c78db 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove 256-bit unpack built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
4f6e1968109fc4e160ade918919a6c906274d6e2 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove 256-bit shuffle built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
b33aa0f7dfa3a6cadc8ac1ac910f36680cbf7a76 11-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove 256-bit shuffle built-ins and make the AVX intrinsic call llvm __builtin_shufflevector with the appropriate arguments

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
c798adf347c9873ab28dfe84f77a99b815c98b49 11-Aug-2010 Ted Kremenek <kremenek@apple.com> Have GRCoreEngine record the blocks where analysis was aborted because we visited a block too many times along a given path. This is to support the unreachable code analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110755 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
f598087b4adfea164acdd5b53ea2951bde740a2d 11-Aug-2010 Ted Kremenek <kremenek@apple.com> Have GRCoreEngine record the blocks where analysis was aborted because we visited a block too many times along a given path. This is to support the unreachable code analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110755 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
53b1f07486423ff3b40eae2530ab805fae553e82 10-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TypeLocs to VAArgExpr node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
2cad900202561cdda18ea6cc51ddbf3e20e3c23a 10-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TypeLocs to VAArgExpr node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
8b2ab3d4c434dcd30cb229b0dfdbe35a0679d5d5 10-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TypeLocs to TypesCompatibleExpr node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
3fcb73dae91be42b071cf0dde9222b7ec362146d 10-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TypeLocs to TypesCompatibleExpr node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/RecursiveASTVisitor.h
44775a800979c0a2fbb0695c637221f36cc47f78 10-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Make replicate intrinsics use shufflevector instead of dup builtins, also remove the dup builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110646 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
4a5496bdd50f6cec5f8eb252665503e5431708d9 10-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Make replicate intrinsics use shufflevector instead of dup builtins, also remove the dup builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110646 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
1b9c3ec340bf818092af6a9f63f4ce70b6020e91 10-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use i32 instead of i8 for AVX dot product intrinsic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110644 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
c2350b20d4cd98b0d2680ed45a65f4e97eba3663 10-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Use i32 instead of i8 for AVX dot product intrinsic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110644 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
0019324fe31c13a9df7b262a92a627e81367a348 10-Aug-2010 Rafael Espindola <rafael.espindola@gmail.com> Run the assembler instead of gcc on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110635 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
ba30bbe4e36a30a274da809a11a42f9cdc168e92 10-Aug-2010 Rafael Espindola <rafael.espindola@gmail.com> Run the assembler instead of gcc on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110635 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
a63ed77399a52f538a687825696cf7760f9b632c 10-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Consider the last argument of vblend builtin to be i32 instead of i8

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
368b76ee98535eec93c487ae4b213fa0598a9eff 10-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Consider the last argument of vblend builtin to be i32 instead of i8

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
2a28e0e5425568c7d7c936281c25fa65ece9e524 10-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Implements gcc's -Wstrict-selector-match.
(radar 8127244).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6b308f6dc7d8f1581c52095f435c0e1284b111d8 10-Aug-2010 Fariborz Jahanian <fjahanian@apple.com> Implements gcc's -Wstrict-selector-match.
(radar 8127244).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9d202272883096751921e0860f9df659d4ab66b6 09-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> - Make ObjCInterfaceDecl redeclarable, and create separate decl nodes for forward declarations and the definition.
- Eagerly create ObjCInterfaceTypes for declarations.
- The two above changes lead to a 0.5% increase in memory use and no speed regression when parsing Cocoa.h. On the other hand, now chained PCH works when there's a forward declaration in one PCH and the interface definition in another.
- Add HandleInterestingDecl to ASTConsumer. PCHReader passes the "interesting" decls it finds to this function instead of HandleTopLevelDecl. The default implementation forwards to HandleTopLevelDecl, but ASTUnit's handler for example ignores them. This fixes a potential crash when lazy loading of PCH data would cause ASTUnit's "top level" declaration collection to change while being iterated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110610 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTContext.h
ST/DeclObjC.h
ST/Type.h
74c730ad1f6818b676b0bad46d806a9176950328 09-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> - Make ObjCInterfaceDecl redeclarable, and create separate decl nodes for forward declarations and the definition.
- Eagerly create ObjCInterfaceTypes for declarations.
- The two above changes lead to a 0.5% increase in memory use and no speed regression when parsing Cocoa.h. On the other hand, now chained PCH works when there's a forward declaration in one PCH and the interface definition in another.
- Add HandleInterestingDecl to ASTConsumer. PCHReader passes the "interesting" decls it finds to this function instead of HandleTopLevelDecl. The default implementation forwards to HandleTopLevelDecl, but ASTUnit's handler for example ignores them. This fixes a potential crash when lazy loading of PCH data would cause ASTUnit's "top level" declaration collection to change while being iterated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110610 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/ASTContext.h
ST/DeclObjC.h
ST/Type.h
f14c94246a3e098aee463411b90da4f0f2eacaaf 09-Aug-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Added vecreturn attribute parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
arse/AttributeList.h
35cc9627340b15232139b3c43fcde5973e7fad30 09-Aug-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Added vecreturn attribute parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
arse/AttributeList.h
e1e90090d94a1f96ba58d3a2f25315ccf352998c 09-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Change warning about incomplete parsing of C++ default arg to error and provide a test case; thanks Doug!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
219cffcad343aef5939ca34d5abb59fbc7da1c36 09-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change warning about incomplete parsing of C++ default arg to error and provide a test case; thanks Doug!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fc7d1f5af026e40e9f2b4b27149287259ba44128 09-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Use precompiled preambles for in-process code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110596 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/Lexer.h
df95a13ec73d2cdaea79555cb412d767f4963120 09-Aug-2010 Douglas Gregor <dgregor@apple.com> Use precompiled preambles for in-process code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110596 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/Lexer.h
30a171f86dc5a68d525781d64dfa651f3413b1ad 09-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Revert the dump functions to send output to llvm::errs(), matching the LLVM convention; suggestion by Daniel.

'-ast-print' / '-ast-dump' command line options still send output to llvm::outs().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110569 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9668033ee4c25efd019e6c7e6dd96aa2e6364a46 09-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert the dump functions to send output to llvm::errs(), matching the LLVM convention; suggestion by Daniel.

'-ast-print' / '-ast-dump' command line options still send output to llvm::outs().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110569 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9ffffb03bd9365746a5994a37e862b9bb2f17162 09-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Replace a parser assertion with a warning, suggestion by Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f315fd6ebb9dbc47619315284c9af1ce5ec5f834 09-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Replace a parser assertion with a warning, suggestion by Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b38704938e9fea65d2754b16fb8af4642e9b010f 09-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support ObjC implementation decls for PCH.

Strictly speaking, implementations don't go in headers but there's no law against it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9d50c0635fb213b2a1857e3f8488580f0dab2f98 09-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support ObjC implementation decls for PCH.

Strictly speaking, implementations don't go in headers but there's no law against it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
50ed01d948df5b72a80feefa99499ea770f57a3e 09-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor into functions PCH reading/writing the CXXBaseOrMemberInitializers. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
rontend/PCHReader.h
rontend/PCHWriter.h
8e706f4b8da141612861e127610141b8d17a9667 09-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor into functions PCH reading/writing the CXXBaseOrMemberInitializers. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
rontend/PCHReader.h
rontend/PCHWriter.h
dd2787d773eff909eac4c1f7d09b21ecb98ef3cc 08-Aug-2010 Sean Hunt <rideau3@gmail.com> Remove C++0x concept keyword tokens since concepts were removed from C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
42b879ad1a708b16a6daab3c50c044bb2c0cf767 08-Aug-2010 Sean Hunt <rideau3@gmail.com> Remove C++0x concept keyword tokens since concepts were removed from C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
f10967c3961ad97c3c1b80d0964c5faebefbc4c7 08-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Revert r110440, the fix for PR4897. Chris claims to have a better way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110544 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
10fe93d57c11f068aa4d78eb4ca7f60329818306 08-Aug-2010 Douglas Gregor <dgregor@apple.com> Revert r110440, the fix for PR4897. Chris claims to have a better way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110544 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
da89be4d508f5ce9fabb8972d3c1859904971ceb 08-Aug-2010 Eric Christopher <echristo@apple.com> Make -funroll-loops turn on loop unrolling in the optimizer instead
of just ignoring it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110525 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
f84d409903dd4107c8cef5a08fcfce6e5c21d4de 08-Aug-2010 Eric Christopher <echristo@apple.com> Make -funroll-loops turn on loop unrolling in the optimizer instead
of just ignoring it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110525 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
fd312ab07bcfd032c1b23f91281d20cff0ac9278 08-Aug-2010 Benjamin Kramer <benny.kra@googlemail.com> Push location through the MacroUndefined PPCallback and use it to print #undefs in -dD mode. (PR7818)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110523 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
2f05449fa1c9015a84b74c3308b856fc704662be 08-Aug-2010 Benjamin Kramer <benny.kra@googlemail.com> Push location through the MacroUndefined PPCallback and use it to print #undefs in -dD mode. (PR7818)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110523 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/PreprocessingRecord.h
e004547e55aa2e69d1a7ee3d037605c5b1e9f6c3 07-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Allow reference binding of a reference of Objective-C object type to
an lvalue of another, compatible Objective-C object type (e.g., a
subclass). Introduce a new initialization sequence step kind to
describe this binding, along with a new cast kind. Fixes PR7741.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
569c3166874324c24011f8ade6978421f0d39b3c 07-Aug-2010 Douglas Gregor <dgregor@apple.com> Allow reference binding of a reference of Objective-C object type to
an lvalue of another, compatible Objective-C object type (e.g., a
subclass). Introduce a new initialization sequence step kind to
describe this binding, along with a new cast kind. Fixes PR7741.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
0cf5885d618c1de7806e691c328c1540fa040a19 07-Aug-2010 John McCall <rjmccall@apple.com> Store inheritance paths after CastExprs instead of inside them.
This takes some trickery since CastExpr has subclasses (and indeed,
is abstract).

Also, smoosh the CastKind into the bitfield from Expr.

Drops two words of storage from Expr in the common case of expressions
which don't need inheritance paths. Avoids a separate allocation and
another word of overhead in cases needing inheritance paths. Also has
the advantage of not leaking memory, since destructors for AST nodes are
never run.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
f871d0cc377a1367b519a6cce26be74607566eba 07-Aug-2010 John McCall <rjmccall@apple.com> Store inheritance paths after CastExprs instead of inside them.
This takes some trickery since CastExpr has subclasses (and indeed,
is abstract).

Also, smoosh the CastKind into the bitfield from Expr.

Drops two words of storage from Expr in the common case of expressions
which don't need inheritance paths. Avoids a separate allocation and
another word of overhead in cases needing inheritance paths. Also has
the advantage of not leaking memory, since destructors for AST nodes are
never run.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
00347577a8dfbe4a887692877d4b6f1b40ccf0ea 07-Aug-2010 Tom Care <tcare@apple.com> Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations)
- Added IdempotentOperationChecker to experimental analyses for testing purposes
- Updated test cases to explictly call the checker

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110482 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
1fafd1d96419f587763d1b81332d8f476aeace2e 07-Aug-2010 Tom Care <tcare@apple.com> Removed IdempotentOperationChecker from default analysis and returned back to a flag (-analyzer-check-idempotent-operations)
- Added IdempotentOperationChecker to experimental analyses for testing purposes
- Updated test cases to explictly call the checker

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110482 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalyzerOptions.h
2f987862673a11de5d8dce726ceef66f82b6bf32 06-Aug-2010 Ted Kremenek <kremenek@apple.com> Fix leaks of ExplicitSpecializationInfo objects by allocating them with 'new (ASTContext)' instead of 'new'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
db1423008b6185fc570558cff77d92f94e55b386 06-Aug-2010 Ted Kremenek <kremenek@apple.com> Fix leaks of ExplicitSpecializationInfo objects by allocating them with 'new (ASTContext)' instead of 'new'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
3f9e851a291c4747d085f5d1390299381ffcf42d 06-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Template keyword should not be ignored building a QualifiedTemplateName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110441 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7c15353ccaed24f2df932571166bf305c1b98b6d 06-Aug-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Template keyword should not be ignored building a QualifiedTemplateName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110441 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
76a6b8172f206b8bd18584c02cfd5093f7c10fb9 06-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Fix the #include search path when reading from stdin, from Jon Simons!
Fixes PR4897.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110440 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
91db30ad4a7bad37b57748c31f8b592b7bf7cbeb 06-Aug-2010 Douglas Gregor <dgregor@apple.com> Fix the #include search path when reading from stdin, from Jon Simons!
Fixes PR4897.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110440 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
a58644c271d16285cc9e46593a7a66e2367e9a08 06-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose the use of "inline" on block-scope function declarations in
C++, from Andrea Nall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110439 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed328c6129152f66771c3bed338a2e6e13e4e230 06-Aug-2010 Douglas Gregor <dgregor@apple.com> Diagnose the use of "inline" on block-scope function declarations in
C++, from Andrea Nall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110439 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
78e544db7a28b16601365de08d4a352459b11071 06-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce implicit conversions between AltiVec vectors and GCC
vectors, from Anton Yartsev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
255210ef415b9893f0e3794e8d9a704194c12f3c 06-Aug-2010 Douglas Gregor <dgregor@apple.com> Introduce implicit conversions between AltiVec vectors and GCC
vectors, from Anton Yartsev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d81673ac7aeab829338a57c161fb28879fcf11b3 06-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce a new token kind 'cxx_defaultarg_end' to mark the end of C++ default arguments that were part of
lexed method declarations.

This avoid interference with tokens coming after the point where the default arg tokens were 'injected', e.g. for

typedef struct Inst {
void m(int x=0);
} *InstPtr;

when parsing '0' the next token would be '*' and things would be messed up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
2b602adf9798eaf13850efaf8ed41c69d3cf7da6 06-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a new token kind 'cxx_defaultarg_end' to mark the end of C++ default arguments that were part of
lexed method declarations.

This avoid interference with tokens coming after the point where the default arg tokens were 'injected', e.g. for

typedef struct Inst {
void m(int x=0);
} *InstPtr;

when parsing '0' the next token would be '*' and things would be messed up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
a0c0ed6974b2707bce74bc036978ee25fb3bdeca 06-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Remove ElseScope which is also dead code now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110433 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
fcecd3cc07ad395e05db864bc21f7790f7878156 06-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Remove ElseScope which is also dead code now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110433 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
794c6eb2e42c58ba28b94e413956d60371789345 06-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Remove the DeclaredInCondition bit now that it's no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a834888ecc3ea36ea78a585209f422c7730d437a 06-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Remove the DeclaredInCondition bit now that it's no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d6927d5e9b4394c74a43a5d7561d910d9be2cc6d 06-Aug-2010 Nate Begeman <natebegeman@mac.com> vdup_lane was missing
<rdar://problem/8278732>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
cd480ad90ff4c144084805761d2dfa52ee9e1c92 06-Aug-2010 Nate Begeman <natebegeman@mac.com> vdup_lane was missing
<rdar://problem/8278732>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
6714422aefc10807d32400f424e40df84d0dc912 06-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> We don't want to support built-ins which aren't needed by the intrinsics. Remove them

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110399 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
f8c6db4cacaa733cf335deb03a9ccd0c9c488b3e 06-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> We don't want to support built-ins which aren't needed by the intrinsics. Remove them

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110399 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
e96911b46b92e26170d9186ae780f0bb98a322fc 05-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Collect namespaces that need updating in a PCH chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHWriter.h
a7be5065edc93ab52a25b2588a23a41a4beba21e 05-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Collect namespaces that need updating in a PCH chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHWriter.h
6fc3bc2ccf703d75a821a6883dbc0f235c123f08 05-Aug-2010 John McCall <rjmccall@apple.com> It turns out that linkers (at least, the Darwin linker) don't necessarily
do the right thing with mixed-visibility symbols, so disable the visibility
optimization where that's possible, i.e. with template classes (since it's
possible that an arbitrary template might be subject to an explicit
instantiation elsewhere). 447.dealII actually does this.

I've put the code under an option that's currently not hooked up to anything.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110374 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
7a536907da776bdc47a704e7cafd641e8150e653 05-Aug-2010 John McCall <rjmccall@apple.com> It turns out that linkers (at least, the Darwin linker) don't necessarily
do the right thing with mixed-visibility symbols, so disable the visibility
optimization where that's possible, i.e. with template classes (since it's
possible that an arbitrary template might be subject to an explicit
instantiation elsewhere). 447.dealII actually does this.

I've put the code under an option that's currently not hooked up to anything.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110374 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
89cc2c329f847a0130e07320136ebd80003076be 05-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Store the pending implicit instantiations in the PCH and perform them at the end of the translation unit that
included the PCH, as God intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110324 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
0e0363866792b309d70e9c8e92b4c239773af89c 05-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Store the pending implicit instantiations in the PCH and perform them at the end of the translation unit that
included the PCH, as God intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110324 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
eace58812aa8b0d5c0d21acb5d4f796579306528 05-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support #pragma weak for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110323 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
72b90571b1783b17c3f2204cec5ca440edc38bee 05-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support #pragma weak for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110323 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
5c951e24438098b51b8f63ee847fe742ca043b24 05-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Give clang_codeCompleteAt() an "options" parameter, and add a new
flags enumeration + default-generating function that allows
code-completion to be customized via the libclang API.

Plus, turn on spell-checking when performing code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110319 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
cee235cdf0b8047761ffac598c4c3a32ab7411a2 05-Aug-2010 Douglas Gregor <dgregor@apple.com> Give clang_codeCompleteAt() an "options" parameter, and add a new
flags enumeration + default-generating function that allows
code-completion to be customized via the libclang API.

Plus, turn on spell-checking when performing code completion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110319 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ca106a69001c59799e84703ddc619d4ecf6d84b1 05-Aug-2010 John McCall <rjmccall@apple.com> TDK_InconsistentQuals is really totally different from TDK_Inconsistent.
Rename it to TDK_Underqualified to avoid this sort of confusion and give it
its own diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
57e97786433e70197a089360228d8f0d82e3ad4c 05-Aug-2010 John McCall <rjmccall@apple.com> TDK_InconsistentQuals is really totally different from TDK_Inconsistent.
Rename it to TDK_Underqualified to avoid this sort of confusion and give it
its own diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0629e6403126369d15585aeed9a7f6faf7f5cf17 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Implement #pragma GCC visibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
aa8b0d19244a6e7e8e5798fcc6aef003c274d3e0 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Implement #pragma GCC visibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
d3ce05fd7c50d631742c866e62da87fa2bd32dc9 05-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Remove the warning for variables declared in the if-expression being used in
the else clause. The problem is that it's overly zealous and will respond to
uses in assignments, or after assignments. We should bring this back once we
can do it right. Fixes PR7100.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c133e9ea17d61062bcfb3bd6009c300c9a78161f 05-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Remove the warning for variables declared in the if-expression being used in
the else clause. The problem is that it's overly zealous and will respond to
uses in assignments, or after assignments. We should bring this back once we
can do it right. Fixes PR7100.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
78a3c420e8ae857b2846b4db8f0d5ca81f47885d 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Add support for -Woverlength-strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110305 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
14bc105073b20c197512e1054866653304cfc42d 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Add support for -Woverlength-strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110305 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
2fd2f7e034165b23a762bf9221adaee5c0599786 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Get rid of isObjectType; when C++ says "object type", it generally
just means "not a function type", not "not a function type or void". This
changes behavior slightly, but generally in a way which accepts more code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110303 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1357869bc5983cdfbc986db1f3d18265bb34cb0e 05-Aug-2010 Eli Friedman <eli.friedman@gmail.com> Get rid of isObjectType; when C++ says "object type", it generally
just means "not a function type", not "not a function type or void". This
changes behavior slightly, but generally in a way which accepts more code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110303 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8a93f510715475e7b4eb66023ab9597c4c367188 05-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add -mavx and -mno-avx command line support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110265 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7377ed985bb2a529d1abb4ebea88586e5d195d1b 05-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add -mavx and -mno-avx command line support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110265 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
da6088235d224960c0550d773ccf52ec0f30c100 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Bring stats for the method pool back.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110247 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
fa78dec572259aca763457b435744f79d822c5d4 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Bring stats for the method pool back.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110247 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
1ee3a7bdf44744b4054a264b2624196454011d5d 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Implement per-file reading of the selector table. This disables statistics about method pool hits for the moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110245 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
725cd9686a0f5bb6c994cb3e43f58b63567c6860 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Implement per-file reading of the selector table. This disables statistics about method pool hits for the moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110245 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
66c1eaa34103a89e127f5759755cab0c1937ce35 04-Aug-2010 Ted Kremenek <kremenek@apple.com> Add CFGStmtMap, which defines a mapping from Stmt* to CFGBlock*. The immediate intended use is in the unreachable code analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110230 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGStmtMap.h
a6d69302d7c86b1c71b9c18493bb811f7d152075 04-Aug-2010 Ted Kremenek <kremenek@apple.com> Add CFGStmtMap, which defines a mapping from Stmt* to CFGBlock*. The immediate intended use is in the unreachable code analysis.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110230 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGStmtMap.h
cc6cf891751fb70255436b252b16a52ef03f1738 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When chaining, only write interesting selectors to the PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110229 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
e58aa890e8de55bb3146e6ea9fbbba3a58ce30c6 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When chaining, only write interesting selectors to the PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110229 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
c91e4df8ec4e2ede28b49167cdf6257fe29798e4 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Store the IDs of selectors in the PCH file explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110219 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
rontend/PCHWriter.h
5d05007b7a7883159154e3f65f338a2542d53913 04-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Store the IDs of selectors in the PCH file explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110219 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
rontend/PCHWriter.h
032a73441a64b80e3afb55c58cd3690acc990357 04-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Add code-completion support directly to ASTUnit, which performs code
completion within the translation unit using the same command-line
arguments for parsing the translation unit. Eventually, we'll reuse
the precompiled preamble to improve code-completion performance, and
this also gives us a place to cache results.

Expose this function via the new libclang function
clang_codeCompleteAt(), which performs the code completion within a
CXTranslationUnit. The completion occurs in-process
(clang_codeCompletion() runs code completion out-of-process).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110210 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
1abc6bca3d7fb0e7b1e40fbcad6cfb5e10594548 04-Aug-2010 Douglas Gregor <dgregor@apple.com> Add code-completion support directly to ASTUnit, which performs code
completion within the translation unit using the same command-line
arguments for parsing the translation unit. Eventually, we'll reuse
the precompiled preamble to improve code-completion performance, and
this also gives us a place to cache results.

Expose this function via the new libclang function
clang_codeCompleteAt(), which performs the code completion within a
CXTranslationUnit. The completion occurs in-process
(clang_codeCompletion() runs code completion out-of-process).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110210 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ema/CodeCompleteConsumer.h
27909cc5664dcb0d0dddc57d1557a0c50219921f 04-Aug-2010 Jordy Rose <jediknil@belkadan.com> Change the checker callback cache in GRExprEngine to be more compact (and IMHO a little easier to understand), and add the same sort of caching for EvalAssume (tied for least-used callback), mostly as proof-of-concept.

Before we go further with these, we should figure out a way to reuse the visit-and-cache code in CheckerVisit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110191 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
72905cfa81cfd126f322c4173f56d332aac5539e 04-Aug-2010 Jordy Rose <jediknil@belkadan.com> Change the checker callback cache in GRExprEngine to be more compact (and IMHO a little easier to understand), and add the same sort of caching for EvalAssume (tied for least-used callback), mostly as proof-of-concept.

Before we go further with these, we should figure out a way to reuse the visit-and-cache code in CheckerVisit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110191 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
dd3f873eb8e2a651ca775f2dbc72944bb5e55003 04-Aug-2010 Eric Christopher <echristo@apple.com> Accept and ignore (for now) -funroll-loops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110190 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
5fcefd965990899b9093656a5242be5a273d7135 04-Aug-2010 Eric Christopher <echristo@apple.com> Accept and ignore (for now) -funroll-loops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110190 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
01ccd68608704022514f7d2d138351dbc34677a0 04-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When we try (but fail) to build a precompiled preamble, wait for a
short "cooling off" period (defaulting to 5 reparses) before trying to
build a precompiled preamble again. Previously, if we failed to build
the precompiled preamble at any time, we just gave up the whole
charade any never tried again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110187 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
eababfbddb74d186f78783a9731a78ad371c9800 04-Aug-2010 Douglas Gregor <dgregor@apple.com> When we try (but fail) to build a precompiled preamble, wait for a
short "cooling off" period (defaulting to 5 reparses) before trying to
build a precompiled preamble again. Previously, if we failed to build
the precompiled preamble at any time, we just gave up the whole
charade any never tried again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110187 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b73e6417560059c49cf5c5018a5606063661251c 04-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add more AVX 256-bit intrinsics and test cases for them

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
e898ed5f165e0e8cdc6b52115b41ecc3df63168c 04-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add more AVX 256-bit intrinsics and test cases for them

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
7ac0d594faf06d021ec6cf817ffa3c0903776167 04-Aug-2010 John McCall <rjmccall@apple.com> Look through using declarations when deciding whether to use an operator
delete for a virtual destructor. Diagnose ambiguities.

Fixes PR7803.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110173 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
046a7466f23107bd752d9a8106aada85061699bc 04-Aug-2010 John McCall <rjmccall@apple.com> Look through using declarations when deciding whether to use an operator
delete for a virtual destructor. Diagnose ambiguities.

Fixes PR7803.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110173 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7bf5f75ae18799018157d0c4bc3a48015e8a00f8 03-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Incomplete promotion of selector info to per-file data.
Store all selectors in the selector hash table instead of only those from the method pool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110158 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
059612dd3429cef2d61f11950f3d93a40182bf69 03-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Incomplete promotion of selector info to per-file data.
Store all selectors in the selector hash table instead of only those from the method pool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110158 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
eaf2382b16f01a328174d92be05a2e084895533a 03-Aug-2010 Nate Begeman <natebegeman@mac.com> Add support for VFP status & control operations for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
99c40bb13b523d58d7aeb6446e4f486d6918ca58 03-Aug-2010 Nate Begeman <natebegeman@mac.com> Add support for VFP status & control operations for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
589141c9b4e1217a56637085ed268f3304a0a148 03-Aug-2010 Jordy Rose <jediknil@belkadan.com> Remove DoneEvaluating field (unused since r90296)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110141 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
ac63193c3d8f0d56213978d4fe953ff902bbb48d 03-Aug-2010 Jordy Rose <jediknil@belkadan.com> Remove DoneEvaluating field (unused since r90296)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110141 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
f37bf35901ea20e399b85e721dbef0f6dd50b20c 03-Aug-2010 Jordy Rose <jediknil@belkadan.com> Makes GRState::makeWithStore private, to encourage clients to make store changes through GRState instead of directly accessing the StoreManager. Also adds cover methods for InvalidateRegion(s) and EnterStackFrame to GRState.

This is in preparation for proposed region change notifications. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110137 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
ff59efd65bb1f2f8d005079597f814a3c8381f95 03-Aug-2010 Jordy Rose <jediknil@belkadan.com> Makes GRState::makeWithStore private, to encourage clients to make store changes through GRState instead of directly accessing the StoreManager. Also adds cover methods for InvalidateRegion(s) and EnterStackFrame to GRState.

This is in preparation for proposed region change notifications. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110137 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
5f27c69b53e8789ea0094a2dae81c52ae3233823 03-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When using a precompiled preamble, keep track of the top-level
declarations that we saw when creating the precompiled preamble, and
provide those declarations in addition to the declarations parsed in
the main source file when traversing top-level declarations. This
makes the use of precompiled preambles a pure optimization, rather
than changing the semantics of the parsed translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110131 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHWriter.h
eb8837b88c18631c69ac75f64ab1853762063180 03-Aug-2010 Douglas Gregor <dgregor@apple.com> When using a precompiled preamble, keep track of the top-level
declarations that we saw when creating the precompiled preamble, and
provide those declarations in addition to the declarations parsed in
the main source file when traversing top-level declarations. This
makes the use of precompiled preambles a pure optimization, rather
than changing the semantics of the parsed translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110131 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHWriter.h
8562f1694038d5e0cc63fe2b2a7254ae1c1e7d1f 03-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Apart from storing/retrieving the previous redeclaration from PCH, also store/retrieve the most recent
redeclaration. That way we are sure that the full redeclarations chain is loaded.

When using chained PCHs, first declarations point to the most recent redeclarations in the same PCH.
To address this use a REDECLS_UPDATE_LATEST record block to keep track of which first declarations need
to point to a most recent redeclaration in another PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110125 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
a865005c74019184e04f7fcdd4d61c31c095a4ff 03-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Apart from storing/retrieving the previous redeclaration from PCH, also store/retrieve the most recent
redeclaration. That way we are sure that the full redeclarations chain is loaded.

When using chained PCHs, first declarations point to the most recent redeclarations in the same PCH.
To address this use a REDECLS_UPDATE_LATEST record block to keep track of which first declarations need
to point to a most recent redeclaration in another PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110125 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
12dbccb155e8caff5a983f7eb05f98a56214fecb 03-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce getMostRecentDeclaration() and getFirstDeclaration() for RedeclarableTemplateDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110124 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ba5ff8ccf3f2a4d8fa3e91b58733707fb1caed6b 03-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce getMostRecentDeclaration() and getFirstDeclaration() for RedeclarableTemplateDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110124 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
1458cf7089a51cdadbf843725671a677d5fc73e5 03-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> Reshuffle the PCH generator action and consumer, so that we can re-use
it while generating precompiled preambles. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110108 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/PCHWriter.h
1d715ac14bf440664fb0d1425ea882274f994f57 03-Aug-2010 Douglas Gregor <dgregor@apple.com> Reshuffle the PCH generator action and consumer, so that we can re-use
it while generating precompiled preambles. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110108 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/PCHWriter.h
e9009b7b0e056df027b5070d24122204cd9b8ce2 03-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> Allow offsets to be negative. Out-of-bound cases are checked elsewhere. We
shouldn't put restrictions in store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110106 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
e3273e78da4716f9c999ae207f6898f376a6e1a4 03-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> Allow offsets to be negative. Out-of-bound cases are checked elsewhere. We
shouldn't put restrictions in store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110106 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
c30d2caefb6e6a3da7e831dcafa2eaf1dbccfa96 03-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> Pull the region offset computation logic into a single method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110102 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
e888233f6b115d3b0dd73bcb5f35e93794408542 03-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> Pull the region offset computation logic into a single method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110102 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
34248a11276d5ad16106ee74c674120f4fe99000 03-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support x86 AVX 256-bit instructions built-ins. Right now support all of them, but
as soon as we properly codegen the simple vector operations, remove the
unnecessary built-ins/intrinsics from clang and llvm. Also add tests for the new
built-ins



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
5ce946291c2c23ed71b112b2ba13acf11807e319 03-Aug-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Support x86 AVX 256-bit instructions built-ins. Right now support all of them, but
as soon as we properly codegen the simple vector operations, remove the
unnecessary built-ins/intrinsics from clang and llvm. Also add tests for the new
built-ins



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
055c7307763b1bd6122fffe1f8ab1437e05eda1b 03-Aug-2010 Tom Care <tcare@apple.com> Changed GRExprEngine to pass down a reference to itself when checkers are doing postanalysis. This allows the checker to gather information about the state of the engine when it has finished.
- Exposed the worklist and BlockAborted flag in GRCoreEngine
- Changed postanalysis checkers to use the new infrastructure


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110095 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
bc42c533e7d3d946704a49e242939dd232f33072 03-Aug-2010 Tom Care <tcare@apple.com> Changed GRExprEngine to pass down a reference to itself when checkers are doing postanalysis. This allows the checker to gather information about the state of the engine when it has finished.
- Exposed the worklist and BlockAborted flag in GRCoreEngine
- Changed postanalysis checkers to use the new infrastructure


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110095 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
cf96172b257a1c4ed57cc7d0c03dd5c247413214 03-Aug-2010 Ted Kremenek <kremenek@apple.com> Add -cc1 option '-unoptimized-cfg' to toggle using a CFG (for static analysis) that doesn't prune CFG edges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110087 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalyzerOptions.h
9b823e8e1ccb8a2cb49923bad22a80ca96f41f92 03-Aug-2010 Ted Kremenek <kremenek@apple.com> Add -cc1 option '-unoptimized-cfg' to toggle using a CFG (for static analysis) that doesn't prune CFG edges.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110087 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalyzerOptions.h
1a433044ac870a2d9fc6d8d6979276a59be702cb 03-Aug-2010 Ted Kremenek <kremenek@apple.com> Add 'AnalysisContext::getUnoptimizedCFG()' to allow clients to get access to the original
CFG without any edges pruned out because of trivially solvable conditions (e.g., 'if (0)').

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110085 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
ad5a894df1841698c824381b414630799adc26ca 03-Aug-2010 Ted Kremenek <kremenek@apple.com> Add 'AnalysisContext::getUnoptimizedCFG()' to allow clients to get access to the original
CFG without any edges pruned out because of trivially solvable conditions (e.g., 'if (0)').

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110085 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/CFG.h
e92e36c8a596ce3805b94bbbeb2daf50a8209380 03-Aug-2010 John McCall <rjmccall@apple.com> Labels (and case statement) don't create independent scope parents for the
purposes of the jump checker. Also extend Ted's iteration fix to labels.

Fixes PR7789.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
97ba481f3f45e5b63b4a354bfb471ce146b7de57 03-Aug-2010 John McCall <rjmccall@apple.com> Labels (and case statement) don't create independent scope parents for the
purposes of the jump checker. Also extend Ted's iteration fix to labels.

Fixes PR7789.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d1fbcf83ba134e32a48362e4e8349ba86bf6409c 02-Aug-2010 John McCall <rjmccall@apple.com> Further adjustments to -Wglobal-constructors; works for references and direct
initializations now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110063 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4204f07fc8bffe6d320b2de95fea274ccf37a17b 02-Aug-2010 John McCall <rjmccall@apple.com> Further adjustments to -Wglobal-constructors; works for references and direct
initializations now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110063 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
751e91df279f335bb382e5e21b289cbe5eb9df7b 02-Aug-2010 Douglas Gregor <doug.gregor@gmail.com> When using a precompiled preamble, save the diagnostics produced when
creating the preamble and "replay" them when reusing the
preamble. Also, fix a thinko in the copying of the preamble when
building the precompiled preamble.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
c0659ec614c428c7d15746fcad15d50a2703751d 02-Aug-2010 Douglas Gregor <dgregor@apple.com> When using a precompiled preamble, save the diagnostics produced when
creating the preamble and "replay" them when reusing the
preamble. Also, fix a thinko in the copying of the preamble when
building the precompiled preamble.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
a5437a650cfeee303355437565b3f5e280b9e967 02-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Query only the latest version of an identifier in the PCH chain. Make sure this version holds the entire declaration chain. This is a much saner solution than trying to merge the info from all elements, and makes redeclarations work properly. Expand the declarations test case to cover more compliated cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110052 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
d8c5abb096a5f6babb3709180fe304be5462bcc1 02-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Query only the latest version of an identifier in the PCH chain. Make sure this version holds the entire declaration chain. This is a much saner solution than trying to merge the info from all elements, and makes redeclarations work properly. Expand the declarations test case to cover more compliated cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110052 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
295dcb357afc5f6215405709cba1498f14bd673d 02-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove mutable data on TagType and InjectedClassNameType, by instead walking the declaration chain in search of a definition. This is necessary for a sane chained PCH implementation. No observable performance change on Carbon.h syntax-only, and bootstraps cleanly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
ed48a8faa10b6750f334540711c7b3949bbfb3ae 02-Aug-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove mutable data on TagType and InjectedClassNameType, by instead walking the declaration chain in search of a definition. This is necessary for a sane chained PCH implementation. No observable performance change on Carbon.h syntax-only, and bootstraps cleanly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
f0c7ceae445cd42b10973203f299d38284139c47 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Change PluginASTAction::ParseArgs to take a CompilerInstance object
for use in reporting diagnostics.
- We don't want to use the Action's own CompilerInstance, because that is only
initialized during file processing and I like that invariant.

Also, if ParseArgs returns false then abandon execution.

Also, remove unused PluginASTAction::PrintHelp virtual method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110039 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
f56a488a6bdfe56ca814f37d384afa67c67f9dd5 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Change PluginASTAction::ParseArgs to take a CompilerInstance object
for use in reporting diagnostics.
- We don't want to use the Action's own CompilerInstance, because that is only
initialized during file processing and I like that invariant.

Also, if ParseArgs returns false then abandon execution.

Also, remove unused PluginASTAction::PrintHelp virtual method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110039 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
50d6091de574a80b79c48e832c5b072d1b0a1a88 02-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> You actually have to include a header in order to use a symbol, it's so 90s..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110034 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
9c1845dbed9817520f5a7db8bd80a560c6c6ae6b 02-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> You actually have to include a header in order to use a symbol, it's so 90s..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110034 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
9b41b7ba65c97b6f6e0d4c0edfaab5d260c69aaa 02-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Use llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110033 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
b81645fd2b34c8c1025854cb81546f4e14a34341 02-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110033 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
88a69a56b7263754987811ddcebe9d456466dcc6 02-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Shut up warnings in Release build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110032 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
62db8889da980d899d99e4ece701f150563b70ed 02-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Shut up warnings in Release build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110032 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
738e778a32a604d13a3c9decbe36f7015bd41763 02-Aug-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write in PCH Sema's StdNamespace and StdBadAlloc and use a LazyDeclPtr for them that will deserialize them when needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
76c38d385447b7acdff2d7e6b13fa8580e7174a7 02-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write in PCH Sema's StdNamespace and StdBadAlloc and use a LazyDeclPtr for them that will deserialize them when needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
d8407fabf72c1067042ac595a5178d87dbe46379 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move HostInfo::lookupTypeForExtension to ToolChain::LookupTypeForExtension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110024 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
river/ToolChain.h
4180011fb8cef06adec04d30486b1bf3b99aa8b8 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move HostInfo::lookupTypeForExtension to ToolChain::LookupTypeForExtension.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110024 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
river/ToolChain.h
785d916965baecbe9688fe047225d8e36608bdbe 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Give Build{Universal,}Actions access to the default host tool chain. I
avoided this originally to enforce that the driver actions aren't toolchain
dependent, but it isn't worth the cumbersone additional hostinfo split.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110023 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
74edcea3db1f85ba73ad0fede2ed5e2f096cac4b 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Give Build{Universal,}Actions access to the default host tool chain. I
avoided this originally to enforce that the driver actions aren't toolchain
dependent, but it isn't worth the cumbersone additional hostinfo split.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110023 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
bf8d5fdbb4d3d87051c8a414e367de410d111889 02-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> Improve flat store: MemRegion::getAsOffset() computes a region's offset within
the top-level object. FlatStore now can bind and retrieve element and field
regions.
PR7297 is fixed by flat store.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110020 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
7caf9b369cba6edaf6eac25121cbc65ee938f14d 02-Aug-2010 Zhongxing Xu <xuzhongxing@gmail.com> Improve flat store: MemRegion::getAsOffset() computes a region's offset within
the top-level object. FlatStore now can bind and retrieve element and field
regions.
PR7297 is fixed by flat store.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110020 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
75787c36bd9642688510f3e90193a617f4046135 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add Compilation::addCommand and switch tools to using it, now that we
don't have to deal with nested jobs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110015 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Tool.h
2fe238ed293bd4bc27af9beb9fa151fad2146fa8 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add Compilation::addCommand and switch tools to using it, now that we
don't have to deal with nested jobs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110015 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Tool.h
1be423ebf2e9213b96da34755de6583c35784119 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate PipedJob, which is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110014 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
d0b77e1a47580dd9fd621433e9ac41258837a17a 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate PipedJob, which is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110014 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
18d00e40b94ea02ba06011d79e8f8057dec7d066 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate now unnecessary tool hooks for whether they accept piped input/output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110012 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Tool.h
8c631e3b6fb4d838809852e85ba4145be45a221f 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate now unnecessary tool hooks for whether they accept piped input/output.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110012 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Tool.h
113d7be6858755a3abf6c33c1089cf2bae7fe4e3 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate now unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110010 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
e4341253cc5d9c05c256b90eb3f816d256264ceb 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate now unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110010 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
75019278d0b4ad63b6be0f8775c7e6099cf99acc 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Keep track of a separate "install dir", which is the path where clang
was invoked from (which may not be where the executable itself is).
- This allows having e.g., /Developer/usr/bin/clang be a symlink to some other
location, while still making sure the Driver finds 'as', 'ld', etc. relative
to itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109989 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
edf29b00bc1641034b38be92146e15f0625a45d2 02-Aug-2010 Daniel Dunbar <daniel@zuster.org> Driver: Keep track of a separate "install dir", which is the path where clang
was invoked from (which may not be where the executable itself is).
- This allows having e.g., /Developer/usr/bin/clang be a symlink to some other
location, while still making sure the Driver finds 'as', 'ld', etc. relative
to itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109989 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
b59a623ae9a1f22cfa30a92c2cca645face971d8 01-Aug-2010 John McCall <rjmccall@apple.com> Kill off RequiresGlobalConstructor in favor of isConstantInitializer.
Note some obvious false positives in the test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b4b9b15c597a923a03ad0a33cdc49b67e5cc4450 01-Aug-2010 John McCall <rjmccall@apple.com> Kill off RequiresGlobalConstructor in favor of isConstantInitializer.
Note some obvious false positives in the test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6309a12671a1416f621a9162892836c2bb4cd981 01-Aug-2010 John McCall <rjmccall@apple.com> Make a first pass at implementing -Wglobal-constructors. I'm worried that this
will end up bizarrely mirroring CGExprConstant, but that might be the hazard of
this feature.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109984 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
626e96e2874698a6736fd33672fa9c28da91d77e 01-Aug-2010 John McCall <rjmccall@apple.com> Make a first pass at implementing -Wglobal-constructors. I'm worried that this
will end up bizarrely mirroring CGExprConstant, but that might be the hazard of
this feature.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109984 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9861c3f20000ae518b9befc9e1ec7f3d1b89285e 01-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Iterate typeloc's for class bases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
64a15230a9e0e030bd761c6848a5876354653ded 01-Aug-2010 Nick Lewycky <nicholas@mxc.ca> Iterate typeloc's for class bases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
9c78992b1cb237a37af66d2e6dc5c06d56c26793 31-Jul-2010 Daniel Dunbar <daniel@zuster.org> Parser: Add support for #pragma align, which is just another spelling of #pragma
options align.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109952 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
cbb98edd530787c2ac019e437e7c599df8004ba7 31-Jul-2010 Daniel Dunbar <daniel@zuster.org> Parser: Add support for #pragma align, which is just another spelling of #pragma
options align.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109952 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
49ce9b642327c1a3f94c38c0b5211daa14a54f48 31-Jul-2010 Ted Kremenek <kremenek@apple.com> After a lengthy design discussion, add support for "ownership attributes" for malloc/free checking. Patch by Andrew McGregor!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
dd0e490c24aeade2c59ca4cae171199f6af9f02e 31-Jul-2010 Ted Kremenek <kremenek@apple.com> After a lengthy design discussion, add support for "ownership attributes" for malloc/free checking. Patch by Andrew McGregor!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
6ccdbb83af9f43824191783b6842a9628f048e43 31-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Implement dependency analysis for the precompiled preamble. If any of
the files in the precompiled preamble have changed since it was build,
force the preamble to be rebuilt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
cc5888d833caf90ebda37f24da40d2cd06b4d820 31-Jul-2010 Douglas Gregor <dgregor@apple.com> Implement dependency analysis for the precompiled preamble. If any of
the files in the precompiled preamble have changed since it was build,
force the preamble to be rebuilt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/ASTUnit.h
115479f12e541be79b31aaddefda8406d020d3e2 30-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Add some timers to ASTUnit that are only enabled when the LIBCLANG_TIMING environment variable is set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109890 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
385103b79c5338a2be5da0ca70652400bc267371 30-Jul-2010 Douglas Gregor <dgregor@apple.com> Add some timers to ASTUnit that are only enabled when the LIBCLANG_TIMING environment variable is set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109890 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
336780662f91ad9972776de6cd89775ecb0cabd9 30-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Add specialisation iterators for {Class,Function}TemplateDecl

This patch introduces the ClassTemplateDecl::spec_{begin,end}()
and FunctionTemplateDecl::{,partial_}spec_{begin,end}() member
functions as a public interface for iterating over the declarations'
specialisation sets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9f339ba5b00256588d0d78786fff6d48ef073015 30-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Add specialisation iterators for {Class,Function}TemplateDecl

This patch introduces the ClassTemplateDecl::spec_{begin,end}()
and FunctionTemplateDecl::{,partial_}spec_{begin,end}() member
functions as a public interface for iterating over the declarations'
specialisation sets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9f3208d05927f010d791201e0dc3224c16d1258f 30-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Refactor find*Specialization functions using SpecEntryTraits

This patch reimplements the find*Specialization family of member
functions of {Class,Function}TemplateDecl in terms of a common
implementation that uses SpecEntryTraits to obtain the most recent
declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
4048590d5774fd4b08661b5cf59b6f90b62f283a 30-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Refactor find*Specialization functions using SpecEntryTraits

This patch reimplements the find*Specialization family of member
functions of {Class,Function}TemplateDecl in terms of a common
implementation that uses SpecEntryTraits to obtain the most recent
declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
7fe3b516da063390ee7004ee6dbeeb553d519f5f 30-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Introduce RedeclarableTemplateDecl::SpecEntryTraits

SpecEntryTraits describes how to obtain the most recent declaration
of a specialisation from an entry in a specialisation FoldingSet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
44dd0b440efdb37ff4c6e49f243faa3b0580b120 30-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Introduce RedeclarableTemplateDecl::SpecEntryTraits

SpecEntryTraits describes how to obtain the most recent declaration
of a specialisation from an entry in a specialisation FoldingSet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
fc0b423215072e968754c113f1bb34ba4e08c6a4 30-Jul-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed typedef inside extern "C".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109865 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
35f9a196ef897b9559de25aaecd957208f0b4f59 30-Jul-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed typedef inside extern "C".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109865 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e836e2ffc74196e0bd61526cb2959092c291e3a2 30-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor the way PCHReader tracks whether we are in recursive loading.

-Replace CurrentlyLoadingTypeOrDecl with a counting scheme (NumCurrentElementsDeserializing)
-Provide outside access to the mechanism by adding methods StartedDeserializing/FinishedDeserializing
to ExternalASTSource.

These are preparation for the next commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHReader.h
29ee3a273f58e16df7f2c524ab62a869e44fc9b1 30-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor the way PCHReader tracks whether we are in recursive loading.

-Replace CurrentlyLoadingTypeOrDecl with a counting scheme (NumCurrentElementsDeserializing)
-Provide outside access to the mechanism by adding methods StartedDeserializing/FinishedDeserializing
to ExternalASTSource.

These are preparation for the next commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHReader.h
6227b1e56f35a4dae53d631d392a83ab8a75feef 30-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make macro weirdness in chained PCH work. This required changing the way PCHReader and PCHWriter are initialized to correctly pick up all initializer. On the upside, this means that there is far less repetition in the dependent PCH now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
asic/IdentifierTable.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
ffaab3e2bb13991bb3357e80f14bcae3745b2347 30-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make macro weirdness in chained PCH work. This required changing the way PCHReader and PCHWriter are initialized to correctly pick up all initializer. On the upside, this means that there is far less repetition in the dependent PCH now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
asic/IdentifierTable.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
25242a5ea93028688a80ecd5981815efa349e9cb 30-Jul-2010 Nate Begeman <natebegeman@mac.com> Wire up sema checking for __builtin_arm_usat and __builtin_arm_ssat immediates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
bb37f50c2d0d72e1fa5b349d5f6a11fdc5acb86e 30-Jul-2010 Nate Begeman <natebegeman@mac.com> Wire up sema checking for __builtin_arm_usat and __builtin_arm_ssat immediates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
8fac2eb1ee050aaf6cab1fb5e944c2b20c5a8b7b 29-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Change the name to something less terrible; suggestion by Doug. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4ac7c0bb39696e92fd220118fedc484c09a69870 29-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change the name to something less terrible; suggestion by Doug. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1ac53087c7b810990070ff80e5953669d339c55d 29-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Merge PCHWriterDecl.cpp's isRequiredDecl and CodeGenModule::MayDeferGeneration into a new function,
DeclIsRequiredFunctionOrFileScopedVar.

This is essentially a CodeGen predicate that is also needed by the PCH mechanism to determine whether a decl
needs to be deserialized during PCH loading for codegen purposes.
Since this logic is shared by CodeGen and the PCH mechanism, move it to the ASTContext,
thus CodeGenModule's GetLinkageForFunction/GetLinkageForVariable and the GVALinkage enum is moved out of CodeGen.

This fixes current (and avoids future) codegen-from-PCH bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Linkage.h
90e99a84ddd020e8fda79643748243725a2ed071 29-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Merge PCHWriterDecl.cpp's isRequiredDecl and CodeGenModule::MayDeferGeneration into a new function,
DeclIsRequiredFunctionOrFileScopedVar.

This is essentially a CodeGen predicate that is also needed by the PCH mechanism to determine whether a decl
needs to be deserialized during PCH loading for codegen purposes.
Since this logic is shared by CodeGen and the PCH mechanism, move it to the ASTContext,
thus CodeGenModule's GetLinkageForFunction/GetLinkageForVariable and the GVALinkage enum is moved out of CodeGen.

This fixes current (and avoids future) codegen-from-PCH bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Linkage.h
2270043a9757abb52da0231d64d2914b51b3ca92 29-Jul-2010 Nate Begeman <natebegeman@mac.com> Add codegen support for ARM qadd & qsub intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
f6404774069a4759cab095b389ce007e74c9c9ee 29-Jul-2010 Nate Begeman <natebegeman@mac.com> Add codegen support for ARM qadd & qsub intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
057077941512583a3ca7ab136c4e1100295b666f 29-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Implement RedeclarableTemplateDecl::getNextRedeclaration

This patch uses the newly added Latest field of CommonBase to provide
a getNextRedeclaration() implementation for RedeclarableTemplateDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
f88718ea0ca0d64b7fd31d109f1d9ec769a9c45f 29-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Implement RedeclarableTemplateDecl::getNextRedeclaration

This patch uses the newly added Latest field of CommonBase to provide
a getNextRedeclaration() implementation for RedeclarableTemplateDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
48a788b3337f2e9299486bb1edb4dc1fe7dadd16 29-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Store latest redeclaration for each redeclarable template declaration

This patch adds a Latest field to RedeclarableTemplateDecl's CommonBase
class which is used to store the latest redeclaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109755 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
8a798a7f7d88dc9865fad7da648e5cef8580c65a 29-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Store latest redeclaration for each redeclarable template declaration

This patch adds a Latest field to RedeclarableTemplateDecl's CommonBase
class which is used to store the latest redeclaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109755 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
3a0ba0efc321d7b1ab3ab2b970b5645fd226a4e2 29-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Refactor redeclarable template declarations

This patch refactors much of the common code in ClassTemplateDecl and
FunctionTemplateDecl into a common base class RedeclarableTemplateDecl
together with support functions in a template class RedeclarableTemplate.

The patch also includes similar refactoring for these classes' PCH
reader and writer implementations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DeclNodes.td
9eabebafc165a67812eacc184806e7bf34c5f0a5 29-Jul-2010 Peter Collingbourne <peter@pcc.me.uk> Refactor redeclarable template declarations

This patch refactors much of the common code in ClassTemplateDecl and
FunctionTemplateDecl into a common base class RedeclarableTemplateDecl
together with support functions in a template class RedeclarableTemplate.

The patch also includes similar refactoring for these classes' PCH
reader and writer implementations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DeclNodes.td
5e8bf80a15e1d16cfb67c9776f743aabba28060e 29-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Allow a looser form of compatibility checking (which ignores
qualifiers) when checking a K&R function definition against a previous
prototype. Fixes <rdar://problem/8193107>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
447234dd459a00a5ed9b7c3e066162cd7a75bf2d 29-Jul-2010 Douglas Gregor <dgregor@apple.com> Allow a looser form of compatibility checking (which ignores
qualifiers) when checking a K&R function definition against a previous
prototype. Fixes <rdar://problem/8193107>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
76315f394707cf7a1f1627a36da37ae49458afa5 29-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> When deleting a value of class type, make sure that type is complete
before looking for conversions to pointer type. Fixes <rdar://problem/8248780>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
254a9427ff84d694724fdecd0642dad8ceaa0645 29-Jul-2010 Douglas Gregor <dgregor@apple.com> When deleting a value of class type, make sure that type is complete
before looking for conversions to pointer type. Fixes <rdar://problem/8248780>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
76ec5f7460d509249f67a2db99c6c1c8fea24654 29-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Reword the empty struct/union warning in C to note that such structs and unions have size 0 in C, size 1 in C++. Put this warning under -Wc++-compat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
0333296d142d45bf2723635848928815b7491f91 29-Jul-2010 Douglas Gregor <dgregor@apple.com> Reword the empty struct/union warning in C to note that such structs and unions have size 0 in C, size 1 in C++. Put this warning under -Wc++-compat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
aee48ed6b70faff5891bd004601e274ac5b1947b 29-Jul-2010 Eli Friedman <eli.friedman@gmail.com> PR7736: Make sure to mark &Class::Member correctly as being type-dependent
inside a template class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109697 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e8a126ba9a8a2f53098d388d04ec555b758f0c67 29-Jul-2010 Eli Friedman <eli.friedman@gmail.com> PR7736: Make sure to mark &Class::Member correctly as being type-dependent
inside a template class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109697 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2355b6819dee8b58c49131295f0560c8be59ccf7 28-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Make the pointer arguments to the __sync_* builtins pointers to
volatile-qualified types. Fixes <rdar://problem/8228293>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109618 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c46111e821664fcdf54d07325a384570972e9cae 28-Jul-2010 Douglas Gregor <dgregor@apple.com> Make the pointer arguments to the __sync_* builtins pointers to
volatile-qualified types. Fixes <rdar://problem/8228293>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109618 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d7765fb1c6f859e8d16f2fbce1055d52cb61fcf1 28-Jul-2010 Chris Lattner <sabre@nondot.org> accept and ignore a few more gcc warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c3acb917e2a5fad73925e5371b4d831015cce2c3 28-Jul-2010 Chris Lattner <sabre@nondot.org> accept and ignore a few more gcc warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
e6e0ce5777de47a854d2723056c735dd00e32902 28-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Add proper callbacks for DeclStmt -- we weren't recursing on
the decls. This was just an oversight before; one we didn't
catch because lots of information in a DeclStmt was also being
traversed (redundantly) elsewhere.

Once DeclStmt was cleaned up, I could clean up some of the
redundant traversals found elswhere as well -- in particular,
traversing the declarations inside a function as part of the
function callback (instead of as part of the CompoundExpr
callback that constitutes the body of the function). The old
way was really weird, and led to some parts of local variable
declarations (but not all) being visited twice. That is now
resolved. I also was able to simplify the traversers for
IfStmt/WhileStmt/etc, which used to have redundant calls to
work around the fact DeclStmt wasn't working properly.

While in the area, I fixed up a few more recursion-ordering
issues. I try to hold to the principle that
RecursiveASTVisitor visits objects in the source code in the
same order they're typed. So the return-type of a variable
comes before the variable-name. This still isn't perfect, but
we're closer to that.

Reviewed by chandlerc and wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
be9aa9614f0f15f2182c9ac5c571a868263131ad 28-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Add proper callbacks for DeclStmt -- we weren't recursing on
the decls. This was just an oversight before; one we didn't
catch because lots of information in a DeclStmt was also being
traversed (redundantly) elsewhere.

Once DeclStmt was cleaned up, I could clean up some of the
redundant traversals found elswhere as well -- in particular,
traversing the declarations inside a function as part of the
function callback (instead of as part of the CompoundExpr
callback that constitutes the body of the function). The old
way was really weird, and led to some parts of local variable
declarations (but not all) being visited twice. That is now
resolved. I also was able to simplify the traversers for
IfStmt/WhileStmt/etc, which used to have redundant calls to
work around the fact DeclStmt wasn't working properly.

While in the area, I fixed up a few more recursion-ordering
issues. I try to hold to the principle that
RecursiveASTVisitor visits objects in the source code in the
same order they're typed. So the return-type of a variable
comes before the variable-name. This still isn't perfect, but
we're closer to that.

Reviewed by chandlerc and wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
1f989ddbd00c5f52b139304666e80176cc5e5819 28-Jul-2010 Daniel Dunbar <daniel@zuster.org> Rename -Wlogical-bitwise-confusion to -Wconstant-logical-operand, which strikes
me as more consistent and less pejorative.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5ec85c6db6f7ea98a32c3c588fd2beda72424198 28-Jul-2010 Daniel Dunbar <daniel@zuster.org> Rename -Wlogical-bitwise-confusion to -Wconstant-logical-operand, which strikes
me as more consistent and less pejorative.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b353ab6bba65e4fe90db593ff2fa6744182465a7 28-Jul-2010 Tom Care <tcare@apple.com> Extracted out some useful common functions in IdempotentOperationChecker to their own CheckerHelpers file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109560 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/CheckerHelpers.h
a9fbf5ba297d77a34d564055f1f05414e0224bf9 28-Jul-2010 Tom Care <tcare@apple.com> Extracted out some useful common functions in IdempotentOperationChecker to their own CheckerHelpers file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109560 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/CheckerHelpers.h
e442ccca49e07ee0bc13f1c3869a3e14a84792b4 28-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Record macros in dependent PCHs. Also add various info tables to dependent PCHs; tests for this to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109554 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
083abdf67f157e9d2ab5a8c9d5e71240479d3c99 28-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Record macros in dependent PCHs. Also add various info tables to dependent PCHs; tests for this to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109554 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
a915993c76603465b3def06980568a439b01be57 28-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Revert r109546, it broke linux build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109550 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
a6d6af308bfc9b72467b432a045a9fc6673e3821 28-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert r109546, it broke linux build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109550 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
2720313679e66d9ef60cef891cedce6423348ac5 28-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Merge PCHWriterDecl.cpp's isRequiredDecl and CodeGenModule::MayDeferGeneration into a new function,
DeclIsRequiredFunctionOrFileScopedVar.

This function is part of the public CodeGen interface since it's essentially a CodeGen predicate that is also
needed by the PCH mechanism to determine whether a decl needs to be deserialized during PCH loading for codegen purposes.
This fixes current (and avoids future) codegen-from-PCH bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109546 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
ee94e2d10728d1b6a87a11aeee122e8759f58c63 28-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Merge PCHWriterDecl.cpp's isRequiredDecl and CodeGenModule::MayDeferGeneration into a new function,
DeclIsRequiredFunctionOrFileScopedVar.

This function is part of the public CodeGen interface since it's essentially a CodeGen predicate that is also
needed by the PCH mechanism to determine whether a decl needs to be deserialized during PCH loading for codegen purposes.
This fixes current (and avoids future) codegen-from-PCH bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109546 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/BackendUtil.h
1aa70da577b47869abc66bc1b89b8b34ca7fd335 27-Jul-2010 Eric Christopher <echristo@apple.com> APIs that take different sized arguments than the instruction
should be taken out and shot.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
60a52575782d8391c31ac0b0bde7df69ba2670a5 27-Jul-2010 Eric Christopher <echristo@apple.com> APIs that take different sized arguments than the instruction
should be taken out and shot.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
3d3c84c1b7784df717859fd1b9524ab75de69b28 27-Jul-2010 Ted Kremenek <kremenek@apple.com> Add non-static version of BinaryOperator::getOpcodeStr().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a84c02d0f4d63975a1c52b9bb8308d88e9d79352 27-Jul-2010 Ted Kremenek <kremenek@apple.com> Add non-static version of BinaryOperator::getOpcodeStr().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9c1ce01fea4f9ad7401f4ba8ad6cc07960e8b71e 27-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Update the list of lexical decls in the TU for chained PCHs. This makes -ast-print show the decls from the dependent PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109524 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
d692af71226d2fb537d86c670af96114ddd485c3 27-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Update the list of lexical decls in the TU for chained PCHs. This makes -ast-print show the decls from the dependent PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109524 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
8765b545071328c6752d14cc000404fb86a4949c 27-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Fix use-after-free with precompiled preambles

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109505 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
28233428da1ebec20c893d6297ae3191318940dd 27-Jul-2010 Douglas Gregor <dgregor@apple.com> Fix use-after-free with precompiled preambles

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109505 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
017b4f655ede9fe69febc14fae4353f746ecb0cb 27-Jul-2010 Michael J. Spencer <bigcheesegs@gmail.com> Revert r109428 "Hoist argument type checking into CheckFormatHandler. This is prep for scanf format"

Got errors about ASTContext being undefined with Visual Studio 2010.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109491 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
96827eb52405a71c65c200949f3e644368e86454 27-Jul-2010 Michael J. Spencer <bigcheesegs@gmail.com> Revert r109428 "Hoist argument type checking into CheckFormatHandler. This is prep for scanf format"

Got errors about ASTContext being undefined with Visual Studio 2010.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109491 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
edc9f31f600f1798fd323450888a14ed7a82d6e4 27-Jul-2010 Ted Kremenek <kremenek@apple.com> Add PTHLexer::LexEndOfFile() to emit diagnostics at end-of-file similar to those by Lexer::LexEndOfFile().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109486 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
94e3d1f0349634235606be77c08b3a48a6d563d6 27-Jul-2010 Ted Kremenek <kremenek@apple.com> Add PTHLexer::LexEndOfFile() to emit diagnostics at end-of-file similar to those by Lexer::LexEndOfFile().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109486 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
a2910e54933557d063150c1871cb919d77ddc8e1 27-Jul-2010 Ted Kremenek <kremenek@apple.com> Fix predicate in 'InCachingLexMode' to include 'CurPTHLexer'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109485 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
56eb1ec6e54080e47bbc62412737c25afb5211ed 27-Jul-2010 Ted Kremenek <kremenek@apple.com> Fix predicate in 'InCachingLexMode' to include 'CurPTHLexer'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109485 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0c0f4c87e5846ea10c13074b7cd298df0246a8e9 27-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Implement -fno-validate-pch at the -cc1 level, which suppresses most
of the usual consistency checks used to determine when a precompiled
header is incompatible with the translation unit it's being loaded
into.

Enable this option when loading a precompiled preamble, because the
preamble loader will be performing all of this checking itself. Enable
the preamble-based test now that it's working.

This option is also useful for debugging Clang's PCH
(<rdar://problem/7532213>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109475 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/PCHReader.h
rontend/PreprocessorOptions.h
fae3b2f4743dad616623c4df2fdb0f5128bd36d9 27-Jul-2010 Douglas Gregor <dgregor@apple.com> Implement -fno-validate-pch at the -cc1 level, which suppresses most
of the usual consistency checks used to determine when a precompiled
header is incompatible with the translation unit it's being loaded
into.

Enable this option when loading a precompiled preamble, because the
preamble loader will be performing all of this checking itself. Enable
the preamble-based test now that it's working.

This option is also useful for debugging Clang's PCH
(<rdar://problem/7532213>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109475 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/PCHReader.h
rontend/PreprocessorOptions.h
9ccff7c5d83a7c5465439c70de8543f13e72cdfd 27-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> - Fix recording of offsets of types in dependent PCHs.
- Stop reading in (and thus deserializing) every declaration in the TU when creating a dependent PCH.
- Switch the storage of a decl context's lexical declarations to a blob containing the IDs instead of a record. This is the only sane way of supporting update records later on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
681d7237e1014bf64dd5ead6bf74ae55cdd19e61 27-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> - Fix recording of offsets of types in dependent PCHs.
- Stop reading in (and thus deserializing) every declaration in the TU when creating a dependent PCH.
- Switch the storage of a decl context's lexical declarations to a blob containing the IDs instead of a record. This is the only sane way of supporting update records later on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
5a9d7455deb8580a2622feb92b31e9ff7297ed16 27-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Mark __builtin_eh_return as noreturn. Patch by Dimitry Andric.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
dee832c8958ca100c671881b6541fbb857a33592 27-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Mark __builtin_eh_return as noreturn. Patch by Dimitry Andric.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
923d0beb91543df63b166abaad9288a74dda8795 26-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce basic support for loading a precompiled preamble while
reparsing an ASTUnit. When saving a preamble, create a buffer larger
than the actual file we're working with but fill everything from the
end of the preamble to the end of the file with spaces (so the lexer
will quickly skip them). When we load the file, create a buffer of the
same size, filling it with the file and then spaces. Then, instruct
the lexer to start lexing after the preamble, therefore continuing the
parse from the spot where the preamble left off.

It's now possible to perform a simple preamble build + parse (+
reparse) with ASTUnit. However, one has to disable a bunch of checking
in the PCH reader to do so. That part isn't committed; it will likely
be handled with some other kind of flag (e.g., -fno-validate-pch).

As part of this, fix some issues with null termination of the memory
buffers created for the preamble; we were trying to explicitly
NULL-terminate them, even though they were also getting implicitly
NULL terminated, leading to excess warnings about NULL characters in
source files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109445 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/SourceManager.h
river/CC1Options.td
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
ex/Lexer.h
ex/Preprocessor.h
f4f6c9db68465b886ec2e596feaa6ecc782395a4 26-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce basic support for loading a precompiled preamble while
reparsing an ASTUnit. When saving a preamble, create a buffer larger
than the actual file we're working with but fill everything from the
end of the preamble to the end of the file with spaces (so the lexer
will quickly skip them). When we load the file, create a buffer of the
same size, filling it with the file and then spaces. Then, instruct
the lexer to start lexing after the preamble, therefore continuing the
parse from the spot where the preamble left off.

It's now possible to perform a simple preamble build + parse (+
reparse) with ASTUnit. However, one has to disable a bunch of checking
in the PCH reader to do so. That part isn't committed; it will likely
be handled with some other kind of flag (e.g., -fno-validate-pch).

As part of this, fix some issues with null termination of the memory
buffers created for the preamble; we were trying to explicitly
NULL-terminate them, even though they were also getting implicitly
NULL terminated, leading to excess warnings about NULL characters in
source files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109445 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/SourceManager.h
river/CC1Options.td
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
ex/Lexer.h
ex/Preprocessor.h
5089d4a591bffa4b39ee39080762dfb74578f878 26-Jul-2010 Dan Gohman <gohman@apple.com> It's not necessary to call flush() on a raw_ostream immediately prior
to deleting it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109441 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DocumentXML.h
55c6570bf6f4342203eb0ff0816fe28e6c55964a 26-Jul-2010 Dan Gohman <gohman@apple.com> It's not necessary to call flush() on a raw_ostream immediately prior
to deleting it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109441 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DocumentXML.h
5c5576bc9d26fc929291975b93761cfe978b31f1 26-Jul-2010 Ted Kremenek <kremenek@apple.com> Hoist argument type checking into CheckFormatHandler. This is prep for scanf format
string argument type checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109428 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
f762905bdefad77f91c7c6782a9c17e6b274d393 26-Jul-2010 Ted Kremenek <kremenek@apple.com> Hoist argument type checking into CheckFormatHandler. This is prep for scanf format
string argument type checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109428 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
b2e3e246d5d736b72f0bd1190324a1029b09ffba 26-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Add source location information to C++ base specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecursiveASTVisitor.h
rontend/PCHReader.h
5606220447c7901ba8d80147ddab893bb7949dd5 26-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Add source location information to C++ base specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecursiveASTVisitor.h
rontend/PCHReader.h
6986a7d4f77349849648a3a469cab4968c8271a3 26-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> When LIBCLANG_CODE_COMPLETION_LOGGING is set in the environment, log code-completion command lines to stderr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109395 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
3d398aa5c2be8919bbc0144bce611c48119bc861 26-Jul-2010 Douglas Gregor <dgregor@apple.com> When LIBCLANG_CODE_COMPLETION_LOGGING is set in the environment, log code-completion command lines to stderr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109395 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ec0411dcec95d71321fd94a2c43124ba484ffb22 26-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the "minimal" and printing parser actions, which only ever
worked for C anyway. Also kills the -cc1 options -parse-noop and
-parse-print-callbacks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109392 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
rontend/Utils.h
arse/Action.h
arse/Parser.h
87c300738174924453648c3b2d6f366c8284fac4 26-Jul-2010 Douglas Gregor <dgregor@apple.com> Eliminate the "minimal" and printing parser actions, which only ever
worked for C anyway. Also kills the -cc1 options -parse-noop and
-parse-print-callbacks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109392 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
rontend/Utils.h
arse/Action.h
arse/Parser.h
df5e9452ddfbb6931fb474a70d658937fad749d3 25-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Wrap bit mangling logic for DiagMappings in its own class so it doesn't leak
into other code. Make it an array instead of a constant-length vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3c2d3016adec79c81c4efff64e208fd3ecdd92ae 25-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Wrap bit mangling logic for DiagMappings in its own class so it doesn't leak
into other code. Make it an array instead of a constant-length vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9176528dc9ca6e2be1e7c2f848989c1701ff854e 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Remove a bunch of trivial destructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
7cb6bd70f9436f630a508ba017414ca2466eeb35 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Remove a bunch of trivial destructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
d01fbaddde95f6c229661bf31c4532acbb22e945 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Move Type destructor out-of-line

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109381 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
afb6416bf7f04a00c44092e802f335bb3636489c 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Move Type destructor out-of-line

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109381 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
30f3bc42d4b61a386e52675b9c9af6c912aa1cd9 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Remove destructors from declaration nodes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109380 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
a2da780b325e78c6c6bbbb766459a73243c3cf9e 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Remove destructors from declaration nodes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109380 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
e0a25e956e2fbbaf666b975fd3947cd250c53285 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> I lied. Kill off a few more Destroy methods

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109379 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/DeclGroup.h
1de22a26c0e126b08edb2eda9d9091c021d96dc6 25-Jul-2010 Douglas Gregor <dgregor@apple.com> I lied. Kill off a few more Destroy methods

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109379 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/DeclGroup.h
4359888554d723e2c91fa470c0651044f771cc06 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Kill off the last Destroy method in the AST library

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
37db4db11b95e32d4ba205d9246c940025666f97 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Kill off the last Destroy method in the AST library

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
1994615488b9c729eb7c3c854a6d5e1c1ca78bde 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Remove the vast majority of the Destroy methods from the AST library,
since we aren't going to be calling them ever.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/FullExpr.h
ST/Stmt.h
ST/StmtCXX.h
ST/Type.h
ff331c15729f7d4439d253c97f4d60f2a7ffd0c6 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Remove the vast majority of the Destroy methods from the AST library,
since we aren't going to be calling them ever.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/FullExpr.h
ST/Stmt.h
ST/StmtCXX.h
ST/Type.h
dc44f37a59e789997989d105bd99501f3670f56f 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Make ASTContext always use the BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
63fe86bee66fc145942c56b2cc564ea0b9b9ea12 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Make ASTContext always use the BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b30280c7dd5af500e100e6e7418463ef03ba1a7d 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Start removing the use of smart pointers from the Parse/Sema
interaction, by effectively defaulting to
DISABLE_SMART_POINTERS. We're embracing the model where all AST nodes
are ASTContext-allocated and live as long as the ASTContext lives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109374 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
arse/Template.h
45ba9a1b31110568d0d362c8d31c6133cf9011b7 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Start removing the use of smart pointers from the Parse/Sema
interaction, by effectively defaulting to
DISABLE_SMART_POINTERS. We're embracing the model where all AST nodes
are ASTContext-allocated and live as long as the ASTContext lives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109374 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
arse/Template.h
ea9ab1c07f4256c8e7d6934edccb837070a3b61b 24-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Fix sort order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
5818f2280c145696cdb87afe7754c4ac9e4fb821 24-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Fix sort order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
9b6d8026553e199a41b41914960219b68872c7f7 24-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Once we've built (or reused) a precompiled preamble, create the
appropriately-padded main file buffer (that has spaces in the extra
"reserved" space) and thread that buffer through to the parsing
function. This still does nothing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109299 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
754f3490c5b0f5d83361f001bc87944f23644abb 24-Jul-2010 Douglas Gregor <dgregor@apple.com> Once we've built (or reused) a precompiled preamble, create the
appropriately-padded main file buffer (that has spaces in the extra
"reserved" space) and thread that buffer through to the parsing
function. This still does nothing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109299 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b4a5c049da5e66d6f9214520fb5c00fe68b7289b 24-Jul-2010 John McCall <rjmccall@apple.com> Support catching Objective C pointers in C++ under the non-fragile NeXT runtime.
Diagnose attempts to do this under the GNU or fragile NeXT runtimes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5a180397870944548aaadeaebf58e415885b9489 24-Jul-2010 John McCall <rjmccall@apple.com> Support catching Objective C pointers in C++ under the non-fragile NeXT runtime.
Diagnose attempts to do this under the GNU or fragile NeXT runtimes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109298 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d1a8fdcbf69a8d6412b2afe5a796f871ab1fe7d 24-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Once we've built a precompiled preamble, keep track of the details of
that preamble (the preamble text, preamble file, reserved main file
size). Check these details when we try to rebuild the precompiled
preamble, and when nothing has changed, re-use the precompiled
preamble.

This code is still very much a WIP, and can't even properly be tested
because we have no way to use the precompiled preamble yet. "Trust me"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109294 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
175c4a9aa61f4449f27b729737e4438684ac6d92 24-Jul-2010 Douglas Gregor <dgregor@apple.com> Once we've built a precompiled preamble, keep track of the details of
that preamble (the preamble text, preamble file, reserved main file
size). Check these details when we try to rebuild the precompiled
preamble, and when nothing has changed, re-use the precompiled
preamble.

This code is still very much a WIP, and can't even properly be tested
because we have no way to use the precompiled preamble yet. "Trust me"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109294 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
8a7147e794521b8646609a08f4eb09949196e2af 24-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make declarations in the dependent PCH visible, for C at least.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109292 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
f2f0f03d08c6143137a79a8edffc7d41823bc3c7 24-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make declarations in the dependent PCH visible, for C at least.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109292 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
be2ba10d823d15fba129f64cfa8eafa3b25d9989 23-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> PCH read/write for selector reference pool.
Finishes off radar 6507158.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109256 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
320198303df7c16950d83ae79c3f702b84badcf7 23-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> PCH read/write for selector reference pool.
Finishes off radar 6507158.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109256 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
cf2ac95a17c32b792e6277b877100065312dd236 23-Jul-2010 Ted Kremenek <kremenek@apple.com> Dataflow solver: Don't overrwite the initial value of a block with top unless new values are available. Patch by Simone Pellegrini!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109243 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
cdd209dd9eb22a33cc9017f6605375fd17c9e809 23-Jul-2010 Ted Kremenek <kremenek@apple.com> Dataflow solver: Don't overrwite the initial value of a block with top unless new values are available. Patch by Simone Pellegrini!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109243 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
57cff32124cd5b95f3e1a5da12d3fff7e8892943 23-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Vectors are not integer types, so the type system should not classify
them as such. Type::is(Signed|Unsigned|)IntegerType() now return false
for vector types, and new functions
has(Signed|Unsigned|)IntegerRepresentation() cover integer types and
vector-of-integer types. This fixes a bunch of latent bugs.

Patch from Anton Yartsev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
f60946222721d9ba3c059563935c17b84703187a 23-Jul-2010 Douglas Gregor <dgregor@apple.com> Vectors are not integer types, so the type system should not classify
them as such. Type::is(Signed|Unsigned|)IntegerType() now return false
for vector types, and new functions
has(Signed|Unsigned|)IntegerRepresentation() cover integer types and
vector-of-integer types. This fixes a bunch of latent bugs.

Patch from Anton Yartsev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
0c0e5b95dcaecef99a208c18ba60179a819d682d 23-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Change arg type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109218 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
d5ef7b26f7e17bc147a549353decebed14797f83 23-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Change arg type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109218 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
0945d48d23a2bd41e0d02827b66d4d537df89aa4 23-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> AnalysisContext is not const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109210 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/GRCoreEngine.h
b73279120d67817156717a1625207ee1bbf41477 23-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> AnalysisContext is not const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109210 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/GRCoreEngine.h
05deb583e203ac91118d09b5adbbafef964ca566 23-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Basic plumbing for generating a precompiled preamble for an
ASTUnit/CXTranslationUnit. We can't actually use this preamble yet,
however.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109202 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
44c181aec37789f25f6c15543c164416f72e562a 23-Jul-2010 Douglas Gregor <dgregor@apple.com> Basic plumbing for generating a precompiled preamble for an
ASTUnit/CXTranslationUnit. We can't actually use this preamble yet,
however.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109202 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
f72c738a4eec22b6942d111856715a8f08a729e4 23-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Warn when property ivar lookup finds a global variable
of same name. In nonfragile-abi2, lookup accesses a synthesized
ivar. This is a transition warning. Radar 8225011.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109197 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
69d5624644dad6b5117f8fee8fc4b09427861367 23-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Warn when property ivar lookup finds a global variable
of same name. In nonfragile-abi2, lookup accesses a synthesized
ivar. This is a transition warning. Radar 8225011.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109197 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6a150dcbcaa6edce3fe2f1f88b0ba039c9cfac03 23-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Thread bitstream cursors all the way through the AST reading stuff. This way, reading a trivial 2-element chained file actually works.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109191 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
577d4796d358c0e72ebaa023113505226ab51b4f 23-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Thread bitstream cursors all the way through the AST reading stuff. This way, reading a trivial 2-element chained file actually works.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109191 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
274ce276e7aecf25cdbca07c854422b237e38973 22-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Improve performance during cursor traversal when a region of interest
is present.

Rather than using clang_getCursorExtent(), which requires
us to lex the token at the ending position to determine its
length. Then, we'd be comparing [a, b) source ranges that cover the
characters in the range rather than the normal behavior for Clang's
source ranges, which covers the tokens in the range. However, relexing
causes us to read the source file (which may come from a precompiled
header), which is rather unfortunate and affects performance.

In the new scheme, we only use Clang-style source ranges that cover
the tokens in the range. At the entry points where this matters
(clang_annotateTokens, clang_getCursor), we make sure to move source
locations to the start of the token.

Addresses most of <rdar://problem/8049381>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109134 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
a8e5c5bdbe387b2552c1c23b828f54abcf085a40 22-Jul-2010 Douglas Gregor <dgregor@apple.com> Improve performance during cursor traversal when a region of interest
is present.

Rather than using clang_getCursorExtent(), which requires
us to lex the token at the ending position to determine its
length. Then, we'd be comparing [a, b) source ranges that cover the
characters in the range rather than the normal behavior for Clang's
source ranges, which covers the tokens in the range. However, relexing
causes us to read the source file (which may come from a precompiled
header), which is rather unfortunate and affects performance.

In the new scheme, we only use Clang-style source ranges that cover
the tokens in the range. At the entry points where this matters
(clang_annotateTokens, clang_getCursor), we make sure to move source
locations to the start of the token.

Addresses most of <rdar://problem/8049381>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109134 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
c3024bdaee612382a1eee67b77aff7a6450feaa6 22-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> atch for implementation of objective-c's -Wselector
warning flag in clang. Little more to do
for a PCH issue. Radar 6507158.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
3fe104154dd2e8ffb351142d74f308938b5c99bf 22-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> atch for implementation of objective-c's -Wselector
warning flag in clang. Little more to do
for a PCH issue. Radar 6507158.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
42eeeafedb7d13065b65773730813a81629e3e40 22-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Don't crash when an explicit template instantiation has no user-written
arguments. This happens in clang itself where template:

template <typename T> T const *getAs();

gets specialized with:

template<> inline clang::TypedefType const *getAs() { ... }

and there's no TemplateArgumentList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
44db3251aec7c0e6edaf1c70d7d53a272686791a 22-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Don't crash when an explicit template instantiation has no user-written
arguments. This happens in clang itself where template:

template <typename T> T const *getAs();

gets specialized with:

template<> inline clang::TypedefType const *getAs() { ... }

and there's no TemplateArgumentList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
00e0d42a069844ff6ef0afdfe25c29d31177057f 22-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Serialization is implemented, fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109124 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
5f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999c 22-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Serialization is implemented, fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109124 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
fe518bd1efb8e68767c0d55220996f6b325ee42f 22-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write C++0x static_assert for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109123 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0d396896998685809bda7444d772bbeb5bbe9b46 22-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write C++0x static_assert for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109123 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8e781090dd2d0dd492b7a0a1b2dc75e645bb3a65 22-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading declcontext information from any file in the chain. Properly write source locations to dependent files. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109119 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
0fa7d0b15ea2a224bfe43ac745d411f915da87dd 22-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading declcontext information from any file in the chain. Properly write source locations to dependent files. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109119 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
994e5a2fd3895964e9d2109dac1318c0afbdb490 22-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write FriendTemplateDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
554e6aa2da082575514607c3639c246c04b3232a 22-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write FriendTemplateDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
33a4d62010b996b75c4a7f2f8dff9acbdf258cc5 22-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support C++ try/catch statements for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
rontend/PCHBitCodes.h
7cb45e37b6f924d9ddbc53ac023bbaadb4ca3534 22-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support C++ try/catch statements for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
rontend/PCHBitCodes.h
d939d138f427a814bd102e1383429e19795d1cc9 22-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make a bunch of new data structures for the new analysis
engine of the new translation unit. State marshal is there but no real
work is done. End nodes are passed back.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109105 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRSubEngine.h
ndex/TranslationUnit.h
2ce43c8f43254a9edea53a20dc0e69195bc82ae0 22-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make a bunch of new data structures for the new analysis
engine of the new translation unit. State marshal is there but no real
work is done. End nodes are passed back.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109105 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRSubEngine.h
ndex/TranslationUnit.h
95afc56e2c030dbee39a8823fe2f0848b0968638 22-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading macros from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109048 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
d27d3fc2f1c02e77f43e1af43ed5386474e3d56e 22-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading macros from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109048 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
175234c1d796055b82668672bc957efd252558a3 21-Jul-2010 Ted Kremenek <kremenek@apple.com> Upgrade "'X' is unavailable" from a warning to an error. This matches GCC's behavior. Note that
GCC emits a warning instead of an error when using an unavailable Objective-C protocol, so now
Clang's behavior is more strict in this case, but more consistent. We will need to see how much
this fires on real code and determine whether this case should be downgraded to a warning.

Fixes <rdar://problem/8213093>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
042411cc447f9b120086a6e4650583044f66fd12 21-Jul-2010 Ted Kremenek <kremenek@apple.com> Upgrade "'X' is unavailable" from a warning to an error. This matches GCC's behavior. Note that
GCC emits a warning instead of an error when using an unavailable Objective-C protocol, so now
Clang's behavior is more strict in this case, but more consistent. We will need to see how much
this fires on real code and determine whether this case should be downgraded to a warning.

Fixes <rdar://problem/8213093>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
33a9fdd3e6ab60906e036d79a659956bce5fd24f 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote some macro-related stuff to per-file data. Fix a cache-inefficient nested loop by inverting the nesting. Store the size of each file in the chain; will need this later for statement offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109030 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
04e6fd4a5ceded0a442a6b3e6b87057b9d643fe3 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote some macro-related stuff to per-file data. Fix a cache-inefficient nested loop by inverting the nesting. Store the size of each file in the chain; will need this later for statement offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109030 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
4d2ea1261c54aceac468c4ce23c13372c8659a72 21-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move some methods inline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108988 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
e492340cc90eb92fc40e9e99645f19ed64640333 21-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move some methods inline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108988 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
fd422e6372ed50a66cb48278622015b2be7fa3cc 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Apparently not every system thinks that references in pairs are as cool as I think.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108959 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
971dd4498f1118abd12e001add0df06e97669b61 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Apparently not every system thinks that references in pairs are as cool as I think.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108959 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
0486cef036a7ab29b46ada65da13e80f348813e1 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading declarations from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108956 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
cb526aa1184d2aa19bbfdfb1080f1fc87d9bb711 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading declarations from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108956 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
bfc599b2a8a8c5ece3f41a0b14281bb9e12d93fd 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading types from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108954 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
aaec0aa844781dc7c3462ba140e004e589ccd355 21-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading types from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108954 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
9a959363391bcd367004cfae81d293f31ec68b9e 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading source locations from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108942 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/PCHReader.h
190faf7c30890479925193b074571e5dc30c3f53 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Allow loading source locations from any file in the chain. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108942 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/PCHReader.h
34d8fd40385964a903e1a311dd8956f46944b9e5 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> More work on getting PCHReader to handle multiple files. Promote SLocOffsets to per-file data. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108930 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
518d8cb31d26ea098eba79274abbfae1b4976853 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> More work on getting PCHReader to handle multiple files. Promote SLocOffsets to per-file data. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108930 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
24cd40c4d68f72d4c2d96358cc3d0e6833b2c1ee 20-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new lexer function to compute the "preamble" of a file,
which is the part of the file that contains all of the initial
comments, includes, and preprocessor directives that occur before any
of the actual code. Added a new -print-preamble cc1 action that is
only used for testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108913 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
ex/Lexer.h
f033f1da4a34f8df6e95e9929dc04ff54bb8fb01 20-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce a new lexer function to compute the "preamble" of a file,
which is the part of the file that contains all of the initial
comments, includes, and preprocessor directives that occur before any
of the actual code. Added a new -print-preamble cc1 action that is
only used for testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108913 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
ex/Lexer.h
519fdb3b0eaca62058326f846d2e61be89c7dc67 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Move 'hasValidLengthModifier' from PrintfFormatSpecifier to FormatSpecifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108906 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
a412a499162c46211c10ad92045b9b5fd2298ede 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Move 'hasValidLengthModifier' from PrintfFormatSpecifier to FormatSpecifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108906 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
31a6a431c2c92e42328bd2dcfa0153f324b316a1 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Refactor ScanfConversionSpecifier to subclass ConversionSpecifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108904 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
cfdcd3066521ee0fa9f303f3863c726943db37e5 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Refactor ScanfConversionSpecifier to subclass ConversionSpecifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108904 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
f00ee7a76eb78ada4a0654e029f750c2baf5475b 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Add 'ConversionSpecifier' root class in 'analyze_format_string' namespace and
derived 'PrintfConversionSpecifier' from this class. We will do the same for
'ScanfConversionSpecifier'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108903 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
6ecb950c65329f8d6ce9ad0514632df35a5ab61f 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Add 'ConversionSpecifier' root class in 'analyze_format_string' namespace and
derived 'PrintfConversionSpecifier' from this class. We will do the same for
'ScanfConversionSpecifier'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108903 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
dae90b3a3896ba3bd8fa035381f1ae34770f0c56 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Tidy up analyze_printf::ConversionSpecifier::Kind declaration, prepping it to be merged
with analyze_scanf::ConversionSpecifier::Kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108902 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
2da5036adaef57395270ef2dd82358fc513d8616 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Tidy up analyze_printf::ConversionSpecifier::Kind declaration, prepping it to be merged
with analyze_scanf::ConversionSpecifier::Kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108902 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
241ab84357731064d6e05b7f4354d3daa6895b5f 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'UnicodeStrArg' to 'SArg'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108901 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
de183a48dd8fcff5e0343e84c8a6b563088447ce 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'UnicodeStrArg' to 'SArg'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108901 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
2723632e84df3e0fb87ef1bac6b2a7473198d3a2 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'ConsumedSoFarArg' -> 'nArg' and 'OutIntPtrArg' to 'nArg' (scanf and printf checking).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108900 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
35d353b47bce29200b910371dd9b8ba7f3058ab8 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'ConsumedSoFarArg' -> 'nArg' and 'OutIntPtrArg' to 'nArg' (scanf and printf checking).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108900 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
4cdb4a77223d5c955a0e654040748b365d35da34 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'VoidPtrArg' to 'pArg' in printf/scanf checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108899 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
66932056da99d2441e27c10b27c82706671e1dbf 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'VoidPtrArg' to 'pArg' in printf/scanf checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108899 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
c57babfe0db30eae833eeaf134596834c692c55a 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'CStrArg' to 'sArg' for printf checking to match with the analagous enum for scanf checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
99196b1031d37d37f395a3291ccdd12a3fc01242 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename 'CStrArg' to 'sArg' for printf checking to match with the analagous enum for scanf checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
d913dcc0b884633d7c0a205e6c7eeb633dc9d2fc 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename analyze_printf::ConversionSpecifier::IntAsCharArg to 'cArg' to match
analagous enum in analyze_scanf. This is prep for refactoring the logic for handling
ConversionSpecifiers for both scanf and printf.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108897 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
92a6febe130dd9ad726983835297e11b2fa3b93f 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename analyze_printf::ConversionSpecifier::IntAsCharArg to 'cArg' to match
analagous enum in analyze_scanf. This is prep for refactoring the logic for handling
ConversionSpecifiers for both scanf and printf.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108897 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
6edf7abf47fecf9caa524da33bb19eb0c3d6cebb 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename diagnostic so that it can be reused with scanf checking. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
649aecf55670682efb2a04a85810eef4d038c527 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Rename diagnostic so that it can be reused with scanf checking. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4f7082e6b3397ab8daac60d858e856380a02e9b0 20-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Complain when string literals are too long for the active language
standard's minimum requirements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108837 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
427c492d368d6ecf409fa8053eecb5cd0e779c5b 20-Jul-2010 Douglas Gregor <dgregor@apple.com> Complain when string literals are too long for the active language
standard's minimum requirements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108837 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
5416a2ad2fd6ad18846b9c2f6122ae0d417e24dd 20-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Hide FunctionTemplateDecl's specializations folding set as implementation detail and introduce
FunctionTemplateDecl::findSpecialization.

Redeclarations of specializations will not cause the previous decl to be removed from the set,
the set will keep the canonical decl. findSpecialization will return the most recent redeclaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108834 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
2c853e401ca406d417eb916e867226050e7be06b 20-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Hide FunctionTemplateDecl's specializations folding set as implementation detail and introduce
FunctionTemplateDecl::findSpecialization.

Redeclarations of specializations will not cause the previous decl to be removed from the set,
the set will keep the canonical decl. findSpecialization will return the most recent redeclaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108834 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
7b659e613e7fe157ad5202cab1c972e64b4f357e 20-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Hide the specializations folding sets of ClassTemplateDecl as an implementation detail (InsertPos
leaks though) and add methods to its interface for adding/finding specializations.

Simplifies its users a bit and we no longer need to replace specializations in the folding set with
their redeclarations. We just return the most recent redeclarations.

As a bonus, it fixes http://llvm.org/PR7670.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
cc0b1bc979b650a8a8b34b2032a074fd7724a90d 20-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Hide the specializations folding sets of ClassTemplateDecl as an implementation detail (InsertPos
leaks though) and add methods to its interface for adding/finding specializations.

Simplifies its users a bit and we no longer need to replace specializations in the folding set with
their redeclarations. We just return the most recent redeclarations.

As a bonus, it fixes http://llvm.org/PR7670.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
b6a63d985f95bf8ae60f50b2f21fcdb0a08918dc 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Constify all references to Stmt* and CFGBlock* in libChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108811 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/SVals.h
03509aea098772644bf4662dc1c88634818ceecc 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Constify all references to Stmt* and CFGBlock* in libChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108811 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/SVals.h
0ef2f3e3224799d511aa896b329e4aba2c528bf8 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add const iterator to InitListExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108810 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8111a6150cb68a238d55a31f9f4f90869a43f988 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add const iterator to InitListExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108810 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a7a77ab274626a371e240b9e49c9231bdb7df092 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Update ImplicitCastExpr to be able to represent an XValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108807 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
906082edf2aea1c6de2926f93a8d7121e49d2a54 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Update ImplicitCastExpr to be able to represent an XValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108807 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bf8aa8ae94ea69c22cc14c5a4036c7efca07b79b 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Constify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108800 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
3992a50eea030a2913f1d267554f55ecd00d694c 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Constify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108800 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
3a54c8a4bfd5c44a11ca530e2183d89ea47628a1 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108795 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
a02d893f15d4663bdba3bd92ade10070bf0510e4 20-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108795 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
dea602e97a01fd130399c3a750dc53a79d205591 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove PCHReader::getStream(), it was unused. Inline PCHReader::getDelsCursor() into its sole caller and remove it. This reduces the attack surface of multiple PCH files towards code outside the PCH implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108763 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
2f82c5855eb93bc8467cefdb87a39167f4f53575 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Remove PCHReader::getStream(), it was unused. Inline PCHReader::getDelsCursor() into its sole caller and remove it. This reduces the attack surface of multiple PCH files towards code outside the PCH implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108763 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
b2a6c4f5c08ad62942bcb0a644965e5e12af086e 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote IdentifierOffsets to per-file data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108762 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
2da08f9d8dff5f2a0ffb0cef72db80f03900a2cf 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote IdentifierOffsets to per-file data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108762 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
cbe067facaa11ed67cd63550729f8962bf4cd751 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote DeclOffsets and TypeOffsets to per-file data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108760 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
12d6da0675fa7df09e3f078995774b350e3a4652 20-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote DeclOffsets and TypeOffsets to per-file data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108760 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
20d9229f0e4c4f374f1ef39c1076f35525f79bbb 20-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to type match comparing Objective-C Classes which implement
protocols (Radar 8191774).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108758 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a8f8dac6a29f6d33474a38a32ce9dd859b696da9 20-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to type match comparing Objective-C Classes which implement
protocols (Radar 8191774).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108758 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a7ad0ee1f662489139e26ac9680a50dbb42b6ea7 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Don't warn when a '%%' or '%*d' (scanf) is used in a format string with positional arguments, since
these don't actually consume an argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108757 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
baa400654bd6f8396f9a07188445ae7955b060a3 20-Jul-2010 Ted Kremenek <kremenek@apple.com> Don't warn when a '%%' or '%*d' (scanf) is used in a format string with positional arguments, since
these don't actually consume an argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108757 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
c8ce3346d45378ed47546672a86c1bf47e87802e 19-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new libclang API, clang_reparseTranslationUnit(), which
reparses an already-parsed translation unit. At the moment it's just a
convenience function, but we hope to use it for performance
optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
abc563f554951259bbe0315055cad92ee14d87e4 19-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce a new libclang API, clang_reparseTranslationUnit(), which
reparses an already-parsed translation unit. At the moment it's just a
convenience function, but we hope to use it for performance
optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
6692735282aa26ce46e96d61ce61f27a0f43507f 19-Jul-2010 Ted Kremenek <kremenek@apple.com> Hook up 'invalid conversion' warning for scanf format strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c09b6a59e02ae265fce51b8c11e2a045bcdaa888 19-Jul-2010 Ted Kremenek <kremenek@apple.com> Hook up 'invalid conversion' warning for scanf format strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
012d398f3b451e075acb13a766a44c4ce52aee68 19-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote the identifier table to per-file data. Also, if a CHAINED_METADATA record exists, it has to be the first thing in the PCH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108748 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
93fb9ed05655512cb14022c667058c078ca90b3c 19-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Promote the identifier table to per-file data. Also, if a CHAINED_METADATA record exists, it has to be the first thing in the PCH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108748 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
79383c05cad20dc19a2a514082fd63f2f247cf52 19-Jul-2010 Ted Kremenek <kremenek@apple.com> Put warnings in the 'Deprecated' group into a 'Deprecations' DiagCategory. Fixes <rdar://problem/8203182>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1348af6b06aff25a25b42d7dcc9b8438d975cca9 19-Jul-2010 Ted Kremenek <kremenek@apple.com> Put warnings in the 'Deprecated' group into a 'Deprecations' DiagCategory. Fixes <rdar://problem/8203182>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108743 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9dc93a8313ed7ce078999fde2eae684bbaafb31d 19-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Remove unused location-to-AST-node resolver. libclang's implementation supercedes it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108708 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Utils.h
9a90d79eb496d9549e22104b2b006dfd43918183 19-Jul-2010 Douglas Gregor <dgregor@apple.com> Remove unused location-to-AST-node resolver. libclang's implementation supercedes it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108708 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Utils.h
0791d5ddfa5092cfaca6abe0f58d0b8ad50c4de9 19-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix http://llvm.org/PR7660

A ParmVarDecl instantiated from a FunctionProtoType may have Record as DeclContext,
in which case isStaticDataMember() will erroneously return true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108692 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e3041be307d4c133605544a74f40c42c7531b5bb 19-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix http://llvm.org/PR7660

A ParmVarDecl instantiated from a FunctionProtoType may have Record as DeclContext,
in which case isStaticDataMember() will erroneously return true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108692 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
659445f0024e1aa1967a042a493e14da3ef31fd0 19-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Reapply r108617.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108668 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
c6238d2786cfd961b94580b3d3675a1b3ff0721c 19-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Reapply r108617.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108668 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
219f777d069dc9f1da85dd831ddc4e90f4de72fa 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change the driver to take the path to the main executable, instead of
taking it in pieces.
- Fixes a problem where the Clang executable path was not initialized properly
on Win32, because sys::Path::getBasename() doesn't do what I always think it
does. Imagine that, a sys::Path interface that is confusing!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108667 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
0bbad519aa068206f1e158d5073f72a39fbe83c5 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change the driver to take the path to the main executable, instead of
taking it in pieces.
- Fixes a problem where the Clang executable path was not initialized properly
on Win32, because sys::Path::getBasename() doesn't do what I always think it
does. Imagine that, a sys::Path interface that is confusing!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108667 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
8eef82cc37356a4ce63614fc252722981cd0aba8 18-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix a possible use after free.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108659 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
a001c1ce5fcb669624a5b8e50d0a629d673da901 18-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix a possible use after free.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108659 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
c83beaf6cf4f71981e326fb93d702dfbf4cf0777 18-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Revert -Wdiscard-qual typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
59f1ed2836ae0dbdade5579323c58ec229bb9453 18-Jul-2010 Douglas Gregor <dgregor@apple.com> Revert -Wdiscard-qual typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
b05de1e40a134b5f47a224577e189dca3872f423 17-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Check for casts to an incomplete type in C. Improves diagnostics for cast to
incomplete union (PR5692) and incomplete enum, and fixes obscure
accepts-invalid on cast to incomplete struct.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d438087bd7120990663e4df78a9c9fdb02c5209 17-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Check for casts to an incomplete type in C. Improves diagnostics for cast to
incomplete union (PR5692) and incomplete enum, and fixes obscure
accepts-invalid on cast to incomplete struct.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f80e489a72ca033e1ac2774d2632cdeb23e36ece 17-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Added PCH/ASTImporter code for ObjCIvarDecl's field.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ac0021ba802e193e0f9f8207768c7862c7603bc0 17-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Added PCH/ASTImporter code for ObjCIvarDecl's field.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
67cdc7bd9a53d7fd7d72310e2b169eba5f89fb6f 17-Jul-2010 Chris Lattner <sabre@nondot.org> Add another terrible VC++ compatibility hack: allow users to
allow invalid token pastes (when in -fms-extensions mode)
with -Wno-invalid-token-paste


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
920bf45bd739334c25633ec9a29d903cab50be23 17-Jul-2010 Chris Lattner <sabre@nondot.org> Add another terrible VC++ compatibility hack: allow users to
allow invalid token pastes (when in -fms-extensions mode)
with -Wno-invalid-token-paste


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
388ee29bc6adf36fc7ee5ca14061aa482e896d29 17-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Revert r108617, it broke the build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108621 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
ee30965ce96e0a7b04b1aa16df60e9ba8b0a33c9 17-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Revert r108617, it broke the build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108621 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
924234001ccf7b7d50f80519301596935c74aaaf 17-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Prepare the analyzer for the callee in another translation unit:
Let AnalysisContext contain a TranslationUnit.
Let CallEnter refer to an AnalysisContext instead of a FunctionDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108617 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
69b81941aa4211ba6b8eaa89093f9e45aff81392 17-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Prepare the analyzer for the callee in another translation unit:
Let AnalysisContext contain a TranslationUnit.
Let CallEnter refer to an AnalysisContext instead of a FunctionDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108617 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
nalysis/ProgramPoint.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/GRCoreEngine.h
630a33b8918966620dfc5ced0f9ef17eab76ec94 17-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to synthesize property ivars on demand as
part of the new property synthesis by default.
wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ad51e74030a59a8aa4ef0ebca1d7a701602ef53b 17-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to synthesize property ivars on demand as
part of the new property synthesis by default.
wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c3bf73de9094c00b7b1f5c02f5b275f151ce7ef2 17-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Teach the PCH reader to load the dependency when encountering a chain metadata record. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108578 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
fbd4bf16341c1b23181c829ef2630d9a643e793c 17-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Teach the PCH reader to load the dependency when encountering a chain metadata record. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108578 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
cce0a02c5880fe916df1e05883bef2deee5e4f03 16-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix typeid the same way I fixed sizeof. Sad I had missed it before.

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108557 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
27de0f2cb3e8c26c37f31e61929b0e442c809ca5 16-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix typeid the same way I fixed sizeof. Sad I had missed it before.

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108557 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
1d8377095938b3b28253f093ace5b14b1a04626c 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Remove unicode quotes characters that somehow made it into a recent commit of mine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bb09d1e7b2ce1d59e571397e8300d9e18cba8456 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Remove unicode quotes characters that somehow made it into a recent commit of mine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e6a0e5758438f5c53d9385967995845e91537401 16-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Separate out the initial loading of a PCH so that loading chained PCHs can reuse it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108551 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
cdf3b83617a3e2471d592795622561506af9109e 16-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Separate out the initial loading of a PCH so that loading chained PCHs can reuse it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108551 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
2ef327113881d21ba9dfe6fa4dea0d560015a553 16-Jul-2010 Tom Care <tcare@apple.com> Improved false positive rate for the idempotent operations checker and moved it into the default path-sensitive analysis options.
- Added checks for static local variables, self assigned parameters, and truncating/extending self assignments
- Removed command line option (now default with --analyze)
- Updated test cases to pass with idempotent operation warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108550 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
df4ca423ec7d9b62842e112d1b824faa08b64810 16-Jul-2010 Tom Care <tcare@apple.com> Improved false positive rate for the idempotent operations checker and moved it into the default path-sensitive analysis options.
- Added checks for static local variables, self assigned parameters, and truncating/extending self assignments
- Removed command line option (now default with --analyze)
- Updated test cases to pass with idempotent operation warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108550 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
77337113e1dc8f07088c3bbbd89c58707afbed38 16-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Give the 'self/array-comparison is always true/false' warning a new flag,
"-Wtautological-compare".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108546 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
35dda71933d2e71b7a865b6ba41cf703e8b99c56 16-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Give the 'self/array-comparison is always true/false' warning a new flag,
"-Wtautological-compare".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108546 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
71b86be7f07080a3f6acd8e08647813bde2d2a3b 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Hook up warning for an incomplete scanlist in scanf format strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b7c21018ec1049580cf6df88db09e606550a7baa 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Hook up warning for an incomplete scanlist in scanf format strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
40fed7bbc2d79cb2acb6bcfeea290d94b7902f9d 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Tweak zero-field width in scanf format string diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
32d0900b21505284287864267332dbff1f646868 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Tweak zero-field width in scanf format string diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
79468dc5067ac2f8f762224af0984c45ad8c5ce9 16-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> First baby steps towards PCHReader being able to keep track of multiple PCH files. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108537 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
9137a5230d3164b96beb14ffb87863234b7d240f 16-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> First baby steps towards PCHReader being able to keep track of multiple PCH files. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108537 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
2f4309942a437b2d7f4e25c0276c699ac2a327fa 16-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Make this destructor virtual to placate GCC's warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108534 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
1cbb50a8a9a4fe09ff43479236e89cab9ac3df17 16-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Make this destructor virtual to placate GCC's warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108534 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
3c0adc6f057f341a2ec784f63487dcf5bb324347 16-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix up some of the visiting for array types -- we weren't good about
getting array indices before -- and for some of the builtin operators:
sizeof, offsetof, unaryops like __is_enum.

Also fix the function visitor to visit exception types in function
parameters.

Reviewed by wan and chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
cf4679e60a5c5fa13e4bfe69f8186658c828af49 16-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix up some of the visiting for array types -- we weren't good about
getting array indices before -- and for some of the builtin operators:
sizeof, offsetof, unaryops like __is_enum.

Also fix the function visitor to visit exception types in function
parameters.

Reviewed by wan and chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
11b4daa8a1511ec6bc209a56de19750d2b316ce0 16-Jul-2010 John McCall <rjmccall@apple.com> Initialize a couple of fields inherited for our private use.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108532 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
31eb18c11d9dacdc0a500a35b269a81134207b84 16-Jul-2010 John McCall <rjmccall@apple.com> Initialize a couple of fields inherited for our private use.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108532 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4dfaa12aafc5b7cea1f53ecfcb28c1d6bb278645 16-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a little more data to chained PCHs. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108528 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
rontend/PCHWriter.h
1476ed40ef6ef144937821da888c7e4d9ea0acd7 16-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a little more data to chained PCHs. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108528 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHDeserializationListener.h
rontend/PCHWriter.h
d5004ca6ba5e3d2b2c9f8e22a89e1c32bdc884c0 16-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Revert Microsoft-specific override of the "typedef requires a name"
diagnostic. Instead, put it and the "declaration does not declare
anything" warning into -Wmissing-declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a0ebd60bfda56c161a87adb01f1b9a1d0e7ae32f 16-Jul-2010 Douglas Gregor <dgregor@apple.com> Revert Microsoft-specific override of the "typedef requires a name"
diagnostic. Instead, put it and the "declaration does not declare
anything" warning into -Wmissing-declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
770088a007f7aeb684a17e6cc8295f13c4a18a7c 16-Jul-2010 John McCall <rjmccall@apple.com> Treat template parameters as part of the declaration-specifiers for the
purpose of access control. Fixes PR7644.

I can't actually find anything directly justifying this, but it seems obvious.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108521 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c9068d7dd94d439cec66c421115d15303e481025 16-Jul-2010 John McCall <rjmccall@apple.com> Treat template parameters as part of the declaration-specifiers for the
purpose of access control. Fixes PR7644.

I can't actually find anything directly justifying this, but it seems obvious.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108521 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a8d6a84b244ddf886c093237ccd07424afbbdb80 16-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Make this grossness default to the error it should always be.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108511 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
34fa29485d6e0b22f1f32852f34e483db0f90b0d 16-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Make this grossness default to the error it should always be.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108511 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
da8cb2a9f4d91af40f09a967e73a6e5769fb938a 16-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Butcher a perfectly reasonable diagnostic to pacify old versions of SWIG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b21fc4a4c17fdf7d3de4fd3cd36a1ad4d8af6f55 16-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Butcher a perfectly reasonable diagnostic to pacify old versions of SWIG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ffd394a182427b2727f0a4002da939e629e12006 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Add most of the boilerplate support for scanf format string checking. This includes
handling the parsing of scanf format strings and hooking the checking into Sema.
Most of this checking logic piggybacks on what was already there for checking printf format
strings, but the checking logic has been refactored to support both.

What is left to be done is to support argument type checking in format strings and of course
fix the usual tail of bugs that will follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108500 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
826a3457f737f1fc45a22954fd1bfde38160c165 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Add most of the boilerplate support for scanf format string checking. This includes
handling the parsing of scanf format strings and hooking the checking into Sema.
Most of this checking logic piggybacks on what was already there for checking printf format
strings, but the checking logic has been refactored to support both.

What is left to be done is to support argument type checking in format strings and of course
fix the usual tail of bugs that will follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108500 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/FormatString.h
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
3e57483debad96ec894bb53d856df066f89089a3 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Add builtin definition for scanf, including extending the builtin encoding to
represent builtins that have the "scanf" attribution (via the format attribute) just
like we do with printf functions. Follow-up work is needed to add similar support
for fscanf et al.

This is to support format-string checking for scanf functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
bee05c1206dcd525e0a1f066d166ad3e972a500e 16-Jul-2010 Ted Kremenek <kremenek@apple.com> Add builtin definition for scanf, including extending the builtin encoding to
represent builtins that have the "scanf" attribution (via the format attribute) just
like we do with printf functions. Follow-up work is needed to add similar support
for fscanf et al.

This is to support format-string checking for scanf functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
7c97cb1f4b8513cccdfaf50dc864fbd17b2efdf8 16-Jul-2010 Daniel Dunbar <daniel@zuster.org> Builtins/ARM: __clear_cache doesn't seem to have a consistent prototype, declare
the builtin as void __clear_cache(...) to workaround this, which appears to
match what GCC does.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
1058253c364b2c98e6cecfe15d18d3562db245f4 16-Jul-2010 Daniel Dunbar <daniel@zuster.org> Builtins/ARM: __clear_cache doesn't seem to have a consistent prototype, declare
the builtin as void __clear_cache(...) to workaround this, which appears to
match what GCC does.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
8357c18d1d4678cbb892d0af5f774ff9de8309ca 16-Jul-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Support user defined attributes on block runtime functions.
- This issue here is that /usr/include/Blocks.h wants to define some of the
block runtime globals as weak, depending on the target. This doesn't work in
Clang because we aren't using the AST decl for these globals.

- The fix is a pretty gross hack which just watches all the decls for the
specific blocks globals we need to know about; if we see one we use it,
otherwise we use the hand coded type.

In time, I would like to clean this up by changing IRgen to ask Sema/AST for
the decl, which would then be lazily loaded from the builtin table if
necessary. This could be used in a whole host of places in IRgen and would
get rid of a lot of grotty hand coding of LLVM IR; however, we need some
extra Sema support for this as well as support for builtin global variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
754b9fbaa13749c61393cc613eec7c79efe60ddf 16-Jul-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Support user defined attributes on block runtime functions.
- This issue here is that /usr/include/Blocks.h wants to define some of the
block runtime globals as weak, depending on the target. This doesn't work in
Clang because we aren't using the AST decl for these globals.

- The fix is a pretty gross hack which just watches all the decls for the
specific blocks globals we need to know about; if we see one we use it,
otherwise we use the hand coded type.

In time, I would like to clean this up by changing IRgen to ask Sema/AST for
the decl, which would then be lazily loaded from the builtin table if
necessary. This could be used in a whole host of places in IRgen and would
get rid of a lot of grotty hand coding of LLVM IR; however, we need some
extra Sema support for this as well as support for builtin global variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
b3a213cd69712b93fe2ca247184c136c30265c68 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Allow -m{ios,macosx}-version-min= to be passed with -Xarch.
- This should be safe, because the driver itself shouldn't need to make
decisions that depend on the deployment target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108425 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d55519bf1df142246537640b0a7011db81db2b94 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Allow -m{ios,macosx}-version-min= to be passed with -Xarch.
- This should be safe, because the driver itself shouldn't need to make
decisions that depend on the deployment target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108425 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ef7f51550ea5f38328b0c37683d0229da7feca1a 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support 'clang -x ir ...'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108391 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
40228c109e5516c0d3c65832271ee2cca931f102 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support 'clang -x ir ...'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108391 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
e55ffc39c073e8d63f41950bdf9549ecea8931e3 15-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a callback interface that allows interested parties to get notified whenever PCHReader deserializes a type or decl (and possibly other things in the future). Have PCHWriter implement these callbacks as noops and register to receive them if we're chaining PCHs. This will allow PCHWriter to track the IDs of these things, which it needs to write the dependent files. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108383 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
30c514c225342844700ed4640ec6d90ddf0e12b2 15-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a callback interface that allows interested parties to get notified whenever PCHReader deserializes a type or decl (and possibly other things in the future). Have PCHWriter implement these callbacks as noops and register to receive them if we're chaining PCHs. This will allow PCHWriter to track the IDs of these things, which it needs to write the dependent files. WIP

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108383 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/PCHDeserializationListener.h
rontend/PCHReader.h
rontend/PCHWriter.h
6f94dbb24b4bda547bf7492cf707aeadef311ddf 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> CodeGen/ObjC/NeXT: Fix Obj-C message send to match llvm-gcc when choosing
whether to use objc_msgSend_fpret; the choice is target dependent, not Obj-C ABI
dependent.
- <rdar://problem/8139758> arm objc _objc_msgSend_fpret bug

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
dacf9dda17346c628fdd8c5df53c681738db0dc5 15-Jul-2010 Daniel Dunbar <daniel@zuster.org> CodeGen/ObjC/NeXT: Fix Obj-C message send to match llvm-gcc when choosing
whether to use objc_msgSend_fpret; the choice is target dependent, not Obj-C ABI
dependent.
- <rdar://problem/8139758> arm objc _objc_msgSend_fpret bug

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8254d63f615f04f3b27894c9e0a355e20f43a6f7 15-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Pass StringRefs by value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
ewrite/Rewriter.h
ec1b1cc006cef19e0a95d0ea6fbfd37d0d615066 15-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Pass StringRefs by value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
ewrite/Rewriter.h
11594551693b1db92840bf1640d087ce1062609f 14-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Increase the max PCH level for declarations to 7. Add a FromPCH flag to types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Type.h
07a353c2af3a3c557205466d4f4ed2513462ebfe 14-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Increase the max PCH level for declarations to 7. Add a FromPCH flag to types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Type.h
0432654153303b62cdb1a17dc6daba4de82de018 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: When re'execing clang, use path to the main executable instead of
looking up Clang in the normal search paths (which may end up finding the wrong
clang).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108346 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
b9a822639c570b1853c75c235e9d6bad485f9e01 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: When re'execing clang, use path to the main executable instead of
looking up Clang in the normal search paths (which may end up finding the wrong
clang).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108346 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
9062faa75699366cda7cdb9fc68aa70f280ee82f 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Remove some unused arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108345 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
4a7e88978cf646ad10d654020cb00b3877069210 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: Remove some unused arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108345 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
0cd8d6184b6aebaf1137b99b19c027a418830f86 14-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make PCHReader cope with PCH files containing more than one predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108340 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
7e9ad8b4fd446ca7cc0e630edee56d8fcc4553de 14-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make PCHReader cope with PCH files containing more than one predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108340 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
793c5a5bc238be6d5ad7b4499630646033f0c4ac 14-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Wire up '-Wignored-qualifiers' to the warning on 'const' in 'const int f()'.
This flag and warning match GCC semantics. Also, move it to -Wextra as this is
a largely cosmetic issue and doesn't seem to mask problems. Subsequent fixes to
the tests which no longer by default emit the warning. Added explicit test
cases for both C and C++ behavior with the warning turned on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108325 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
5495f37302f7c82192dab1ce8d9c9fe76ed0ee37 14-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Wire up '-Wignored-qualifiers' to the warning on 'const' in 'const int f()'.
This flag and warning match GCC semantics. Also, move it to -Wextra as this is
a largely cosmetic issue and doesn't seem to mask problems. Subsequent fixes to
the tests which no longer by default emit the warning. Added explicit test
cases for both C and C++ behavior with the warning turned on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108325 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d878cad4bf70fbf187309add23ccf88fd0d5b193 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Pass -pie/-no_pie to the linker when -fpie/-fno-pie and friends
are explicitly given.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108297 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Options.td
47e879dfa735f81472a51b1bd69cc4eb9159db39 14-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Pass -pie/-no_pie to the linker when -fpie/-fno-pie and friends
are explicitly given.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108297 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Options.td
8c90b02120e2f49bf695e6013049ab9d3caac2e7 14-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new cast kind for an "lvalue bitcast", which handles
reinterpret_casts (possibly indirectly via C-style/functional casts)
on values, e.g.,

int i;
reinterpret_cast<short&>(i);

The IR generated for this is essentially the same as for

*reinterpret_cast<short*>(&i).

Fixes PR6437, PR7593, and PR7344.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108294 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e39a3894513349908cdb3beba2614e53cb288e6c 14-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce a new cast kind for an "lvalue bitcast", which handles
reinterpret_casts (possibly indirectly via C-style/functional casts)
on values, e.g.,

int i;
reinterpret_cast<short&>(i);

The IR generated for this is essentially the same as for

*reinterpret_cast<short*>(&i).

Fixes PR6437, PR7593, and PR7344.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108294 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
84ae91e42e622293b7952e4ec6e6670c1d508857 14-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Add __builtin_snprintf.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
99f2680e1fdd36777df05ef8a6d50aac07bd4b50 14-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Add __builtin_snprintf.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
7d4b17fcbd7821ff065c4aec6899fe4de8cbe201 13-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add two small utility functions to PCHReader that the writer will use. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108267 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
77a3c9ede5cdb26b5eb3001e82bb0a36ca997e1f 13-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add two small utility functions to PCHReader that the writer will use. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108267 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
d5082e3268e45d1390738306c0675a0e1fd77c53 13-Jul-2010 Chris Lattner <sabre@nondot.org> Add a warning to catch a bug recently caught by code review, like this:
t2.c:2:12: warning: use of logical && with constant operand; switch to bitwise &
or remove constant [-Wlogical-bitwise-confusion]
return x && 4;
^ ~

wording improvement suggestions are welcome.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
90a8f27f144233b53cac0c88a1595f7f05105b7e 13-Jul-2010 Chris Lattner <sabre@nondot.org> Add a warning to catch a bug recently caught by code review, like this:
t2.c:2:12: warning: use of logical && with constant operand; switch to bitwise &
or remove constant [-Wlogical-bitwise-confusion]
return x && 4;
^ ~

wording improvement suggestions are welcome.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2350fb26d59692c6006ec5d33b8215e96055bdb6 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Whenever we're creating an expression that is typically an rvalue
(e.g., a call, cast, etc.), immediately adjust the expression's type
to strip cv-qualifiers off of all non-class types (in C++) or all
types (in C). This effectively extends my previous fix for PR7463,
which was restricted to calls, to other kinds of expressions within
similar characteristics. I've audited every use of
getNonReferenceType() in the code base, switching to the newly-renamed
getNonLValueExprType() where necessary.

Big thanks to Eli for pointing out just how incomplete my original fix
for PR7463 actually was. We've been handling cv-qualifiers on rvalues
wrong for a very, very long time. Fixes PR7463.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108253 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Type.h
6398235d7890a81b785ea5af3b6e66d86bf184cc 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Whenever we're creating an expression that is typically an rvalue
(e.g., a call, cast, etc.), immediately adjust the expression's type
to strip cv-qualifiers off of all non-class types (in C++) or all
types (in C). This effectively extends my previous fix for PR7463,
which was restricted to calls, to other kinds of expressions within
similar characteristics. I've audited every use of
getNonReferenceType() in the code base, switching to the newly-renamed
getNonLValueExprType() where necessary.

Big thanks to Eli for pointing out just how incomplete my original fix
for PR7463 actually was. We've been handling cv-qualifiers on rvalues
wrong for a very, very long time. Fixes PR7463.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108253 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Type.h
8439ceb39ea07e65ea1156c3a2e674d402c1cbed 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Properly add to 32

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108243 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e4b8f1171d699c56ba2b39aabf1d7cb4c38ce4f8 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Properly add to 32

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108243 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
13767543229d759e3c51dea5fa1cc531effb08ce 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Downgrade the "when type is in parentheses, array cannot have dynamic
size" error for code like

new (int [size])

to a warning, add a Fix-It to remove the parentheses, and make this
diagnostic work properly when it occurs in a template
instantiation. <rdar://problem/8018245>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
arse/Action.h
4bd40318cbea15310a37343db46de96c4fcc15e6 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Downgrade the "when type is in parentheses, array cannot have dynamic
size" error for code like

new (int [size])

to a warning, add a Fix-It to remove the parentheses, and make this
diagnostic work properly when it occurs in a template
instantiation. <rdar://problem/8018245>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
arse/Action.h
441770637fa1297a3bd9af909de9d22ad5ff518e 13-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Modify the pragma handlers to accept and use StringRefs instead of IdentifierInfos.

When loading the PCH, IdentifierInfos that are associated with pragmas cause declarations that use these identifiers to be deserialized (e.g. the "clang" pragma causes the "clang" namespace to be loaded).
We can avoid this if we just use StringRefs for the pragmas.

As a bonus, since we don't have to create and pass IdentifierInfos, the pragma interfaces get a bit more simplified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108237 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
ex/Preprocessor.h
9b36c3f0de0105e903130bbda3c4aea7d792c0af 13-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modify the pragma handlers to accept and use StringRefs instead of IdentifierInfos.

When loading the PCH, IdentifierInfos that are associated with pragmas cause declarations that use these identifiers to be deserialized (e.g. the "clang" pragma causes the "clang" namespace to be loaded).
We can avoid this if we just use StringRefs for the pragmas.

As a bonus, since we don't have to create and pass IdentifierInfos, the pragma interfaces get a bit more simplified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108237 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
ex/Preprocessor.h
9c12aaaac057518b52015e01a569741643d5c8f9 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics for the "type qualifier on return type has no
effect warning" by printing the qualifiers we saw and correctly
pluralizing the message, e.g.,

test/SemaCXX/conditional-expr.cpp:295:3: warning: 'const volatile' type
qualifiers on return type have no effect
const volatile Enum g2() {
^~~~~ ~~~~~~~~





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108236 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
de80ec1fa947855d2e53722a8cd71367ff513481 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostics for the "type qualifier on return type has no
effect warning" by printing the qualifiers we saw and correctly
pluralizing the message, e.g.,

test/SemaCXX/conditional-expr.cpp:295:3: warning: 'const volatile' type
qualifiers on return type have no effect
const volatile Enum g2() {
^~~~~ ~~~~~~~~





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108236 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8079eee9128444d02bebf24410126f9d55399f84 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> When forming a function call or message send expression, be sure to
strip cv-qualifiers from the expression's type when the language calls
for it: in C, that's all the time, while C++ only does it for
non-class types.

Centralized the computation of the call expression type in
QualType::getCallResultType() and some helper functions in other nodes
(FunctionDecl, ObjCMethodDecl, FunctionType), and updated all relevant
callers of getResultType() to getCallResultType().

Fixes PR7598 and PR7463, along with a bunch of getResultType() call
sites that weren't stripping references off the result type (nothing
stripped cv-qualifiers properly before this change).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Type.h
asic/DiagnosticSemaKinds.td
5291c3cec0dbe8ad1d8e7e67e93af2b1586d5400 13-Jul-2010 Douglas Gregor <dgregor@apple.com> When forming a function call or message send expression, be sure to
strip cv-qualifiers from the expression's type when the language calls
for it: in C, that's all the time, while C++ only does it for
non-class types.

Centralized the computation of the call expression type in
QualType::getCallResultType() and some helper functions in other nodes
(FunctionDecl, ObjCMethodDecl, FunctionType), and updated all relevant
callers of getResultType() to getCallResultType().

Fixes PR7598 and PR7463, along with a bunch of getResultType() call
sites that weren't stripping references off the result type (nothing
stripped cv-qualifiers properly before this change).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Type.h
asic/DiagnosticSemaKinds.td
240b977ca72a3a4a0c5b364373d2f19559c5942f 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose typedef of an operator name. Fixes PR7462

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108233 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
aef01998af5bbfc1cdfac091248ff7d30ec31456 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Diagnose typedef of an operator name. Fixes PR7462

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108233 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a351bf90f109c26fe7d943cd09dcee711dc387d9 13-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Instantiate attributes when first building an instantiated
VarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
8dd0c5626455cdf94280783e85e413eed6cbf3d9 13-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Instantiate attributes when first building an instantiated
VarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ac8737c6cd9d627e9f36e287d6f6d3aa1062b55f 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Provide a special diagnostic for attempts to explicitly specialize
class templates within class scope (which is ill-formed), and recover
by dropping the explicit specialization entirely. Fixes the infinite
loop in PR7622.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108217 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
669eed8d676458c701f45f7fd686f01de2dee53b 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Provide a special diagnostic for attempts to explicitly specialize
class templates within class scope (which is ill-formed), and recover
by dropping the explicit specialization entirely. Fixes the infinite
loop in PR7622.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108217 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bf00306c12102e6443ae9092468957ffbb78bb74 13-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Fix a documentation paste-o and eliminate a useless function parameter, both found by Sebastian

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108214 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
dd41ed59cf7aefabd40bf766d8fcc7ebd759c8e5 13-Jul-2010 Douglas Gregor <dgregor@apple.com> Fix a documentation paste-o and eliminate a useless function parameter, both found by Sebastian

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108214 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
74cacf47b46752b0f40460d164a7c43f33b04ed7 13-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> We should not be recursing over the shadow definitions in UsingDecl --
they're not something the user typed (at least, not here).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
cdbcad09c806aba04fab15c91a9ff537fa38a2f5 13-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> We should not be recursing over the shadow definitions in UsingDecl --
they're not something the user typed (at least, not here).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
853aafec0694b69b5533be7066b4aea9cb34bf67 13-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Produce an error on encountering a pointer or reference to a qualified function type. Fixes PR7470.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f9ea1f392ab8946f7bfc3f98802a8e5e6fe073f3 13-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Produce an error on encountering a pointer or reference to a qualified function type. Fixes PR7470.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b963de31cf8e86bbd3c31cc7cf390c841fd38031 13-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Split the normal and chained PCH writing paths and add a tiny bit of implementation to the latter. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108200 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
1dc13a15e789a174e5e5855efe27036dd7a9d252 13-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Split the normal and chained PCH writing paths and add a tiny bit of implementation to the latter. WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108200 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
bd9046ee7f084d316e5d2e92bdb9c266529767ef 12-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Copy over attributes to instantiated variable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
cad8d31117800f804ee4f313134162edac8f8813 12-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Copy over attributes to instantiated variable.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
db238ec51ca050d0ecb71a6bbd04402d3fd145d4 12-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> If we are past tok::eof and in caching lex mode, avoid caching repeated tok::eofs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108175 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
03569eaabceb14a20e23d043135fdccbc7309a96 12-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> If we are past tok::eof and in caching lex mode, avoid caching repeated tok::eofs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108175 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
24e6b6992a0b022e02aa2510703c2a94184e3c7d 12-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Compute Type dependent-ness of BlockDeclRefExpr
on the fly when constructing it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
84ca008a462b515f63871253f494d53c9190363c 12-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Compute Type dependent-ness of BlockDeclRefExpr
on the fly when constructing it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cfff00f10ba49c4fdb902824378f72ab62fcd759 12-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Move setting of Dependent Type to BlockDeclRefExpr's
constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108157 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
52bc56a296b11b4fc6bf5ddf4ded5262f6484bdb 12-Jul-2010 Fariborz Jahanian <fjahanian@apple.com> Move setting of Dependent Type to BlockDeclRefExpr's
constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108157 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
91146ed4a2651b8b77ddbfa33f172589163aee48 12-Jul-2010 Chris Lattner <sabre@nondot.org> fix PR7280 by making the warning on code like this:

int test1() {
return;
}

default to an error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
184aa4e6ded190bfb3bbe207040467f8d7e28a04 12-Jul-2010 Chris Lattner <sabre@nondot.org> fix PR7280 by making the warning on code like this:

int test1() {
return;
}

default to an error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f93ade3b00ac28866fc44072fae3c3daaaa75d61 12-Jul-2010 Chris Lattner <sabre@nondot.org> change the 'invalid token after top level declarator' message to be
'expected ';' after top level declarator' which is much less vague.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108106 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9b3215d5aba6c687a3ee46b0f36367f416ac34cc 12-Jul-2010 Chris Lattner <sabre@nondot.org> change the 'invalid token after top level declarator' message to be
'expected ';' after top level declarator' which is much less vague.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108106 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
caeb5603066581b06d0cc5c0b7b6816a900bb2f7 12-Jul-2010 Chris Lattner <sabre@nondot.org> Fix PR7617 by not entering ParseFunctionDefinition when
a function prototype is followed by a declarator if we
aren't parsing a K&R style identifier list.

Also, avoid skipping randomly after a declaration if a
semicolon is missing. Before we'd get:

t.c:3:1: error: expected function body after function declarator
void bar();
^

Now we get:

t.c:1:11: error: invalid token after top level declarator
void foo()
^
;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108105 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
004659a56916f2f81ede507c12516c146d6c0df3 12-Jul-2010 Chris Lattner <sabre@nondot.org> Fix PR7617 by not entering ParseFunctionDefinition when
a function prototype is followed by a declarator if we
aren't parsing a K&R style identifier list.

Also, avoid skipping randomly after a declaration if a
semicolon is missing. Before we'd get:

t.c:3:1: error: expected function body after function declarator
void bar();
^

Now we get:

t.c:1:11: error: invalid token after top level declarator
void foo()
^
;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108105 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
01c3c651fdf9784ddf57d8dbdd597a58792239bd 12-Jul-2010 Chris Lattner <sabre@nondot.org> add a const qualifier, refactor some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108104 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c82daefa3062721e98947e08193cd81b4e9df915 12-Jul-2010 Chris Lattner <sabre@nondot.org> add a const qualifier, refactor some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108104 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
343bc4ac3ca28ee5f51fb8c03f2145c3c20e44b0 10-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add PCH support for the remaining C++ exprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
6d00c1365dd3601f6d93bbda9162913c57ae788f 10-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add PCH support for the remaining C++ exprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
95d551400c4605ccbab8a59965aa7d1b09b14389 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Slightly improve the diagnostic when using a qualified function typedef to declare nonmember or static member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108018 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c61bb2056148891375bfa591fa2859b9b6ec2734 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Slightly improve the diagnostic when using a qualified function typedef to declare nonmember or static member functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108018 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
70b3e1446cbd99e41a4ebe2fd9aecb0be3157904 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When given the -chained-pch option and a previous PCH file, have the PCHWriter emit a CHAINED_METADATA record instead of METADATA, and write a link to the previous file there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108014 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
77f4603c8b142e642300959a601ecec2b7c8e288 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When given the -chained-pch option and a previous PCH file, have the PCHWriter emit a CHAINED_METADATA record instead of METADATA, and write a link to the previous file there.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108014 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
94cb3d0aedbb6e52d492ed61d685463f351eded2 09-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Ignore -Wno-main, per PR7269.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108006 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
04821c7e901d57a2aca09f89167d78dd038af9e4 09-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Ignore -Wno-main, per PR7269.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108006 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
7fc6dca2c847b8bff9a76455e7c1c150e035dc57 09-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Refer to implicit "conversions" rather than implicit "casts", which
don't technically exist in the language. <rdar://problem/8085982>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107995 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27f46ee38d9a6a28cf0438218a198a9da1cee5d6 09-Jul-2010 Douglas Gregor <dgregor@apple.com> Refer to implicit "conversions" rather than implicit "casts", which
don't technically exist in the language. <rdar://problem/8085982>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107995 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b615eefeb4419b77f5ce726813aaa3a5cf352536 09-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce -f{no-}spell-checking options to enable/disable
spell-checking. By default, spell-checking is enabled for Clang
(obviously) but disabled in CIndex for performance reasons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107992 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
a0068fc64351db9c47916566e3b85ab733cd8d6d 09-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce -f{no-}spell-checking options to enable/disable
spell-checking. By default, spell-checking is enabled for Clang
(obviously) but disabled in CIndex for performance reasons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107992 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
53834c8d44a55123c3df40422d018171538e7376 09-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Move traverseunqualifiedtypeloc over to the 'main' typeloc tree.
Note that this is a move -- we pretend that we were really looking
at the unqualified typeloc all along -- rather than a recursion, so
we don't follow the normal CRTP plan of going through
getDerived().TraverseTypeLoc. If we did, we'd be traversing twice
for the same type (once as a QualifiedTypeLoc version of the type,
once as an UnqualifiedTypeLoc version of the type), which in effect
means we'd call VisitTypeLoc twice with the 'same' type. This
solves that problem, at the cost of never seeing the qualified
version of the type (unless the client subclasses
TraverseQualifiedTypeLoc themselves). It's not a perfect solution.
A perfect solution probably requires making QualifiedTypeLoc a
wrapper around TypeLoc -- like QualType is a wrapper around Type*
-- rather than being its own class in the type hierarchy.

Reviewed by wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
6b3f1ebce775499aff03845193de78128671262f 09-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Move traverseunqualifiedtypeloc over to the 'main' typeloc tree.
Note that this is a move -- we pretend that we were really looking
at the unqualified typeloc all along -- rather than a recursion, so
we don't follow the normal CRTP plan of going through
getDerived().TraverseTypeLoc. If we did, we'd be traversing twice
for the same type (once as a QualifiedTypeLoc version of the type,
once as an UnqualifiedTypeLoc version of the type), which in effect
means we'd call VisitTypeLoc twice with the 'same' type. This
solves that problem, at the cost of never seeing the qualified
version of the type (unless the client subclasses
TraverseQualifiedTypeLoc themselves). It's not a perfect solution.
A perfect solution probably requires making QualifiedTypeLoc a
wrapper around TypeLoc -- like QualType is a wrapper around Type*
-- rather than being its own class in the type hierarchy.

Reviewed by wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
4d800b41a27e7e5d94b365878b30034539a0d3b7 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a frontend option -chained-pch and don't pass an active PCH reader to the PCH writer if it is not set, preventing creation of chained PCH files. Since the reader is so far unused, effectively no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107936 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
d6ac4524cd441808f152f7e10900a8315ea31c08 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add a frontend option -chained-pch and don't pass an active PCH reader to the PCH writer if it is not set, preventing creation of chained PCH files. Since the reader is so far unused, effectively no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107936 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
f34557fb0a31a136c2d32897735e58a1aea64466 09-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Support code completion for parameter names in Objective-C method
declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107933 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
40ed9a13f5b67b2941f5a9521616e57e9e31ba97 09-Jul-2010 Douglas Gregor <dgregor@apple.com> Support code completion for parameter names in Objective-C method
declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107933 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6c48f6dad23720c01edca5ae407dcfdf3ada76fb 09-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new code-completion point prior to an identifier in the
selector of an Objective-C method declaration, e.g., given

- (int)first:(int)x second:(int)y;

this code completion point triggers at the location of "second". It
will provide completions that fill out the method declaration for any
known method, anywhere in the translation unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107929 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
1f5537aaac1e775aff1d523f2cc59a9a3bd6c946 09-Jul-2010 Douglas Gregor <dgregor@apple.com> Introduce a new code-completion point prior to an identifier in the
selector of an Objective-C method declaration, e.g., given

- (int)first:(int)x second:(int)y;

this code completion point triggers at the location of "second". It
will provide completions that fill out the method declaration for any
known method, anywhere in the translation unit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107929 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
aeee5b8269a59ef2e1a65ed73458b26b2b56ec2a 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Some preparatory work for chained PCH. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107915 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/CompilerInstance.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
a93e3b5bde9f0a7b59215f19f176f7d69881b81c 09-Jul-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Some preparatory work for chained PCH. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107915 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/CompilerInstance.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
b9ef1aefe3fbeda4c939c9c954ec18390b2864da 08-Jul-2010 Zhanyong Wan <wan@google.com> Makes RecursiveASTVisitor traverse the type of a temporary object
created via T() where T is a class type. Reviewed by chandlerc and
csilvers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107911 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
80db8cbff5afc047a23dbfe11f7ef787d891feec 08-Jul-2010 Zhanyong Wan <wan@google.com> Makes RecursiveASTVisitor traverse the type of a temporary object
created via T() where T is a class type. Reviewed by chandlerc and
csilvers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107911 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
2d562147b4d12f5ca3f1d3265c4703244182603b 08-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> When performing substitution of template arguments within the body of
a template, be sure to include the template arguments from the
injected-class-name. Fixes PR7587.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107895 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
24bae92f08ae098cc50a602d8cf1273b423e14da 08-Jul-2010 Douglas Gregor <dgregor@apple.com> When performing substitution of template arguments within the body of
a template, be sure to include the template arguments from the
injected-class-name. Fixes PR7587.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107895 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
5f44093649015a532b5b78ad95584f469469d668 08-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce PCHReader::GetTranslationUnitDecl() and use it instead of ReadDeclRecord when initializing.

ReadDeclRecord would hit assertion if the translation unit declaration was already loaded during
IdentifierInfo initialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107885 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
8871a44ae61cf97ff6fff4c640fadce9ba4cf1b0 08-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce PCHReader::GetTranslationUnitDecl() and use it instead of ReadDeclRecord when initializing.

ReadDeclRecord would hit assertion if the translation unit declaration was already loaded during
IdentifierInfo initialization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107885 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
a17bffb76acc003b51a88f817a23071877f7c539 08-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support TemplateTemplateParmDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
bfcc92c3476ada55ceeea49e43e6d2e083252830 08-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support TemplateTemplateParmDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
2738164cfcf5b4d8a109adfb37d4e28da60a05a2 08-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Bowing to popular demand, reduce the "comma at end of enumerator list"
ExtWarn to an Extension. Let the broken code propagate!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107875 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
6d82ef45d624da4fc88a2fbf7dd1dc144aeb05b0 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Bowing to popular demand, reduce the "comma at end of enumerator list"
ExtWarn to an Extension. Let the broken code propagate!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107875 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
b69c35fbf8635a267215a83b4e9fd980019f003a 08-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> For TagType and TemplateSpecializationType, isDependent calculation may be invalid because some decls that the
calculation is using may still be initializing.
Thus, store the isDependent flag to PCH and restore directly to Type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107873 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
be191100e034b23a3e13053757a57b7f5068c24a 08-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> For TagType and TemplateSpecializationType, isDependent calculation may be invalid because some decls that the
calculation is using may still be initializing.
Thus, store the isDependent flag to PCH and restore directly to Type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107873 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7b1d67a3a0fd7ca693a5633b00b44341f09af5b9 08-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write the C++ parts of DeclRefExpr and MemberExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
663e380d7b2de2bbf20e886e05371195bea9adc4 08-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write the C++ parts of DeclRefExpr and MemberExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e8f2e77a0856219a9a733aaba4b7ec1edcdeab0b 08-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix reading of UsingDecl from PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107871 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
82f8e796d6ffce1d63729a2df87c1060edf6593a 08-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix reading of UsingDecl from PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107871 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8cdb61460293fafb23170b5734cec6cb30f55c6a 08-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Remove unused protected constructor of DeclRefExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9705752be3a52d72e9ad1c7c8d8e59082e40a4f1 08-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove unused protected constructor of DeclRefExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dd822a5e69158e49bfd64e112ab1e5a0829a979d 08-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Wrap the new ext-warn on extraneous comma on the last entry of an enumerator
list in a diagnostic group so it can be turned on and off. A terrifying amount
of code, including large chunks of open source code, still do this so it's
important to be able to suppress it when necessary.

Doug, is this a reasonable compromise? I'd lean toward making it a normal
extension, but I don't feel strongly as long as we can turn the warnings off.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
fbc94213f38c48154ddc448b527f667182abe954 08-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Wrap the new ext-warn on extraneous comma on the last entry of an enumerator
list in a diagnostic group so it can be turned on and off. A terrifying amount
of code, including large chunks of open source code, still do this so it's
important to be able to suppress it when necessary.

Doug, is this a reasonable compromise? I'd lean toward making it a normal
extension, but I don't feel strongly as long as we can turn the warnings off.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
09d0c1016307a83bb023584d6ce40d2949a13a41 08-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Add support for differentiating between attributes ignored when handled and
unknown attributes that we discard. Add a diagnostic group for unknown
attribute warnings to allow turning these off when we don't care. Also
consolidates the tests for this case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
7d5c45ed9dc2842ce8e65ea26ced0957be36a569 08-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Add support for differentiating between attributes ignored when handled and
unknown attributes that we discard. Add a diagnostic group for unknown
attribute warnings to allow turning these off when we don't care. Also
consolidates the tests for this case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
0ec494632efdc9cd55608bc98d175a68084acbad 08-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Reinstate the fix for PR7556. A silly use of isTrivial() was
suppressing copies of objects with trivial copy constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
rontend/PCHBitCodes.h
ed8abf18329df67b0abcbb3a10458bd8c1d2a595 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Reinstate the fix for PR7556. A silly use of isTrivial() was
suppressing copies of objects with trivial copy constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
rontend/PCHBitCodes.h
fa0b6fca56fc75c359c07a5fb1a6f328c93e61ca 08-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Revert r107828 and r107827, the fix for PR7556, which seems to be
breaking bootstrap on Linux.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
rontend/PCHBitCodes.h
84745677f64863e025a6733cb29d0b94bc3a6ae2 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Revert r107828 and r107827, the fix for PR7556, which seems to be
breaking bootstrap on Linux.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/DiagnosticSemaKinds.td
asic/StmtNodes.td
rontend/PCHBitCodes.h
38c8fe9cdead9e73d84548a6e3c8a9fb680bcb98 08-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Rename CXXZeroInitValueExpr to CXXScalarValueInitExpr, to reflect its
newly-narrowed scope. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
rontend/PCHBitCodes.h
016a4a90c8e75d59de731fa3aa98f0a55656e66c 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Rename CXXZeroInitValueExpr to CXXScalarValueInitExpr, to reflect its
newly-narrowed scope. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/RecursiveASTVisitor.h
asic/StmtNodes.td
rontend/PCHBitCodes.h
9448d6386902e18259ccbf440e0d3787fc340b0f 08-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Do not use CXXZeroValueInitExpr for class types. Instead, use
CXXConstructExpr/CXXTemporaryObjectExpr/CXXNewExpr as
appropriate. Fixes PR7556, and provides a slide codegen improvement
when copy-initializing a POD class type from a value-initialized
temporary. Previously, we weren't eliding the copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
63ef464c3fad1e8b9f9360baa6c81f974b712e90 08-Jul-2010 Douglas Gregor <dgregor@apple.com> Do not use CXXZeroValueInitExpr for class types. Instead, use
CXXConstructExpr/CXXTemporaryObjectExpr/CXXNewExpr as
appropriate. Fixes PR7556, and provides a slide codegen improvement
when copy-initializing a POD class type from a value-initialized
temporary. Previously, we weren't eliding the copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
d15e19a1379672150a83eaf7f90c9330ed9da339 07-Jul-2010 Zhanyong Wan <wan@google.com> Changes how the TypeLoc traverser invokes the Type traverser: before,
VisitFooTypeLoc() calls VisitFooType(); now, TraverseFooTypeLoc()
calls WalkUpFromFooType(). This allows clients that override
WalkUpFromFooType() to continue to work. It also preserves the
property that Visit*() in the base visitor class is a no-op (s.t. a
subclass doesn't have to call Base::Visit*() when overriding
Visit*()).

Also fixes some typos in comments.

Also added a missing getDerived() inside
TraverseQualifiedTypeLoc(). The call is needed in case a subclass
overrides TraverseTypeLoc().

Reviewed by nlewycky and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
717cc00c16eabf0eefd3cc69394e97f7229af0c8 07-Jul-2010 Zhanyong Wan <wan@google.com> Changes how the TypeLoc traverser invokes the Type traverser: before,
VisitFooTypeLoc() calls VisitFooType(); now, TraverseFooTypeLoc()
calls WalkUpFromFooType(). This allows clients that override
WalkUpFromFooType() to continue to work. It also preserves the
property that Visit*() in the base visitor class is a no-op (s.t. a
subclass doesn't have to call Base::Visit*() when overriding
Visit*()).

Also fixes some typos in comments.

Also added a missing getDerived() inside
TraverseQualifiedTypeLoc(). The call is needed in case a subclass
overrides TraverseTypeLoc().

Reviewed by nlewycky and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
6f4bed50c076d7c8dd115c4c8af150d44bb6b379 07-Jul-2010 Chris Lattner <sabre@nondot.org> add driver support for minix, patch by Kees van Reeuwijk
from PR7583


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107788 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
38e317d6dce161b249508686cc67eb7176958762 07-Jul-2010 Chris Lattner <sabre@nondot.org> add driver support for minix, patch by Kees van Reeuwijk
from PR7583


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107788 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
94123548cbd76ff3947606562988fdcb26a047d1 07-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Delay passing InterestingDecls to the Consumer until when we know we are not in recursive loading and the
declarations are fully initialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107783 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
bb80a8e8887c1ec74ee135d4ad9455eafedf1508 07-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Delay passing InterestingDecls to the Consumer until when we know we are not in recursive loading and the
declarations are fully initialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107783 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
820de0b2042ef6628452262da6d5ec5ff2a7588d 07-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Remove Decl::getCompoundBody().

This has 2 (slight) advantages:
-Make explicit at getBody()'s callsite that we expect/handle only CompoundStmt and not CXXTryStmt.
-Better tracking of Decl::getBody()'s callsites.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
5f1bfc10a12d9759444eb433f52a85d2e0058967 07-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove Decl::getCompoundBody().

This has 2 (slight) advantages:
-Make explicit at getBody()'s callsite that we expect/handle only CompoundStmt and not CXXTryStmt.
-Better tracking of Decl::getBody()'s callsites.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107771 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
327727783bbdf4a7f2bc08b6aa7d3a58a5ee412c 07-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce Decl::hasBody() and FunctionDecl::hasBody() and use them instead of getBody() when we are just checking the existence of a body, to avoid de-serialization of the body from PCH.

Makes de-serialization of the function body even more "lazier".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
06a54a38be5054c910ffc92db60edab23f9ea105 07-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Decl::hasBody() and FunctionDecl::hasBody() and use them instead of getBody() when we are just checking the existence of a body, to avoid de-serialization of the body from PCH.

Makes de-serialization of the function body even more "lazier".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
424e7f0c61c2c8e4c76087880abf279d1872c661 07-Jul-2010 Chris Lattner <sabre@nondot.org> implement PR7569, warning about assignment to null, which
people seem to write when they want a deterministic trap.
Suggest instead that they use a volatile pointer or
__builtin_trap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8b5dec3002bd3e17061a8bf1fc35ba82912ec768 07-Jul-2010 Chris Lattner <sabre@nondot.org> implement PR7569, warning about assignment to null, which
people seem to write when they want a deterministic trap.
Suggest instead that they use a volatile pointer or
__builtin_trap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
767c192122581041b3ff579ddefbb2dd389445c5 07-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Avoid double-traversing for QualifiedTypeLoc -- we were calling
VisitTypeLoc twice for qualified types, once for the qualified form
and once for the unqualified (though they looked the same by the time
we got to visittypeloc). Now only visit once, which matches previous
behavior.

Reviewed by nlewycky


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
c34c2116346a29869b47b190f6dea589823d6947 07-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Avoid double-traversing for QualifiedTypeLoc -- we were calling
VisitTypeLoc twice for qualified types, once for the qualified form
and once for the unqualified (though they looked the same by the time
we got to visittypeloc). Now only visit once, which matches previous
behavior.

Reviewed by nlewycky


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
c762367d52191a7e2a64cf623ba300df9ffb7209 07-Jul-2010 John McCall <rjmccall@apple.com> Provide a hook for the benefit of clients using clang IR gen as a subroutine:
emit metadata associating allocas and global values with a Decl*. This feature
is controlled by an option that (intentionally) cannot be enabled on the command
line.

To use this feature, simply set
CodeGenOptions.EmitDeclMetadata = true;
and then interpret the completely underspecified metadata. :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107739 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
744016dde06fcffd50931e94a98c850f8b12cd87 07-Jul-2010 John McCall <rjmccall@apple.com> Provide a hook for the benefit of clients using clang IR gen as a subroutine:
emit metadata associating allocas and global values with a Decl*. This feature
is controlled by an option that (intentionally) cannot be enabled on the command
line.

To use this feature, simply set
CodeGenOptions.EmitDeclMetadata = true;
and then interpret the completely underspecified metadata. :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107739 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenOptions.h
076f4df01e0467fac58fcfb5d9425dc854d6d56e 07-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Add a const version of a method, to be consistent with other methods
of the same type. I think this was just an oversight before.

Reviewed by chandlerc. Submitted as an "obvious" fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
dd5faf05dfe0163bdde939937d4fb0270086178a 07-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Add a const version of a method, to be consistent with other methods
of the same type. I think this was just an oversight before.

Reviewed by chandlerc. Submitted as an "obvious" fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
b3a787ea303728ad97e3e9226f41116ad799f048 07-Jul-2010 Ted Kremenek <kremenek@apple.com> Implement dumpToStream() for NonStaticGlobalSpaceRegion and StaticGlobalSpaceRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107731 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
fa87d812d7c78d7f0cd1c5636e21e07c23c85341 07-Jul-2010 Ted Kremenek <kremenek@apple.com> Implement dumpToStream() for NonStaticGlobalSpaceRegion and StaticGlobalSpaceRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107731 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
385b4d574901c8b01c0f9fa4c86a9eb5e6ca9461 06-Jul-2010 Tom Care <tcare@apple.com> Added a path-sensitive idempotent operation checker (-analyzer-idempotent-operation). Finds idempotent and/or tautological operations in a path sensitive context, flagging operations that have no effect or a predictable effect.

Example:
{
int a = 1;
int b = 5;
int c = b / a; // a is 1 on all paths
}

- New IdempotentOperationChecker class
- Moved recursive Stmt functions in r107675 to IdempotentOperationChecker
- Minor refactoring of SVal to allow checking for any integer
- Added command line option for check
- Added basic test cases

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
hecker/PathSensitive/SVals.h
river/CC1Options.td
rontend/AnalyzerOptions.h
db2fa8a7eb67b1e8f32a590b8e000e1259cff91a 06-Jul-2010 Tom Care <tcare@apple.com> Added a path-sensitive idempotent operation checker (-analyzer-idempotent-operation). Finds idempotent and/or tautological operations in a path sensitive context, flagging operations that have no effect or a predictable effect.

Example:
{
int a = 1;
int b = 5;
int c = b / a; // a is 1 on all paths
}

- New IdempotentOperationChecker class
- Moved recursive Stmt functions in r107675 to IdempotentOperationChecker
- Minor refactoring of SVal to allow checking for any integer
- Added command line option for check
- Added basic test cases

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
hecker/PathSensitive/SVals.h
river/CC1Options.td
rontend/AnalyzerOptions.h
fb699f1e2cec64761b2347afb56dff378cb2bbb9 06-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Improve the accuracy of getSourceRange() for DeclaratorDecl and
TagDecl subclasses when out-of-line template declaration information
is available, from Peter Collingbourne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107686 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
1693e154bef16ca060b5e3786d8528ddc11f5637 06-Jul-2010 Douglas Gregor <dgregor@apple.com> Improve the accuracy of getSourceRange() for DeclaratorDecl and
TagDecl subclasses when out-of-line template declaration information
is available, from Peter Collingbourne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107686 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
6d1a96df21e510082d22c002ad87e8c01016aee4 06-Jul-2010 Tom Care <tcare@apple.com> Added several helper functions to Stmt to recursively check for different elements (macros, enum constants, etc).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107675 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7d6228fc77baf405c6554bb47904fc197e33b488 06-Jul-2010 Tom Care <tcare@apple.com> Added several helper functions to Stmt to recursively check for different elements (macros, enum constants, etc).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107675 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
a4d872ad267282e1d826162dcb75eaa296e5ec65 06-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add to PCH missing Sema information about VTable uses and dynamic classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107664 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
d455add086f1dfa16ae87dc310e49493bbc2b0a6 06-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add to PCH missing Sema information about VTable uses and dynamic classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107664 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
398edba498bb062c78c6e35b2e3e6b72b334d455 06-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton code to make wpa call the analysis engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107646 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/TranslationUnit.h
65d336b6b9ec96a12e2f165188f80c5e813ff4ec 06-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton code to make wpa call the analysis engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107646 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/TranslationUnit.h
1ab53389887f4a85a11e025c5d7a5c019fea18fd 06-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Collect function definitions in the Indexer when indexing through the ASTs.
Add an API to get an Entity associated with a name in the global namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107642 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
ndex/Indexer.h
dc01a153f20be7121c4d3fdc17bb28ff4442231c 06-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Collect function definitions in the Indexer when indexing through the ASTs.
Add an API to get an Entity associated with a name in the global namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107642 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
ndex/Indexer.h
53ab9da0b00b905da975c4b3f62f5e0a944a57b6 06-Jul-2010 Jordy Rose <jediknil@belkadan.com> Remove the now-unused GRState::isEqual method. Instead of asking if an expression equals a certain value, use SValuator::EvalEQ and GRState::Assume to see if it can, must, or must not equal that value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107638 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
5dd3af78a12d049d4591505570fcde79c2cc7bb0 06-Jul-2010 Jordy Rose <jediknil@belkadan.com> Remove the now-unused GRState::isEqual method. Instead of asking if an expression equals a certain value, use SValuator::EvalEQ and GRState::Assume to see if it can, must, or must not equal that value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107638 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
9af53812d5977e79d0330e7c38c2ce9eb0791eda 05-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write the identifier namespace in PCH for decls that may modify it.

We can now use a PCH'ed <map>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
c8f9af2943699ff623ca08f2e5ed4d72e0351189 05-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write the identifier namespace in PCH for decls that may modify it.

We can now use a PCH'ed <map>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
10bfc5813682c82c3e0329ed8582e8d92f8f4f1f 05-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write some source location for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7b081c8604efd33bc7f7e5c1e9427a031eedb2b4 05-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write some source location for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e0dabf9cc0f323ab90e963233fd9a7aafd1c4b5a 04-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix a regression of a previous commit of mine (rdar://8158953).

Some of the invariant checks for creating Record/Enum types don't hold true during PCH reading.
Introduce more suitable ASTContext::getRecordType() and getEnumType().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
400f5125e2432d648f2c8a31b36a7f318a880c47 04-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix a regression of a previous commit of mine (rdar://8158953).

Some of the invariant checks for creating Record/Enum types don't hold true during PCH reading.
Introduce more suitable ASTContext::getRecordType() and getEnumType().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
e4c9c5400738b7bfb9a477049993f16696ce32b1 04-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write more information of ASTContext for PCH. Overriden methods and instantiated-from information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
c91e9f439ae85d5f79a6b65672f1d7d1b55ccda0 04-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write more information of ASTContext for PCH. Overriden methods and instantiated-from information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
a0b52cc3c2161509acf2c0b9470cb8db105d2ff8 04-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Don't try to install the __[u]int128_t identifier if it is already installed by PCHReader.

Currently, adding it to visible decls of a PCH'ed translation unit has no effect because
adding visible decls before deserialization has no effect (the decls won't be visible).
This will be fixed in a future commit; then it will force deserialization of visible decls, so avoid pointlessly installing it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107595 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
006113841bdae1edb77aef75ba1ffdf2e55a3094 04-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't try to install the __[u]int128_t identifier if it is already installed by PCHReader.

Currently, adding it to visible decls of a PCH'ed translation unit has no effect because
adding visible decls before deserialization has no effect (the decls won't be visible).
This will be fixed in a future commit; then it will force deserialization of visible decls, so avoid pointlessly installing it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107595 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
5e881aacf6176c20270f664a85761351158f9c78 04-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write specialization info of static data members for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
9421adc43891e272156fab640e5d5ee5054b779c 04-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write specialization info of static data members for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
54c532eca864cecdf41cd22250d29c587d9e00e1 04-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Add TypeLoc traversal to the RecursiveASTVisitor! Because the TypeLocs don't
contain all the same information that their Types do, we will fall back to
traversing the Types instead. The default TypeLoc visitor calls the matching
Type visitor so that existing clients should continue to work with no change.

Also adds element traversal to the ExtVectorType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
4d2229c7a9514ee2b960aa9e59f7259cebbaa421 04-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Add TypeLoc traversal to the RecursiveASTVisitor! Because the TypeLocs don't
contain all the same information that their Types do, we will fall back to
traversing the Types instead. The default TypeLoc visitor calls the matching
Type visitor so that existing clients should continue to work with no change.

Also adds element traversal to the ExtVectorType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7ea909b3620ae1e6f52907c7b47ea6f2ba63a87d 04-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Fix ObjCInterfaceTypeLoc to inherit from ObjCObjectTypeLoc so as to match the
Type hierarchy. Without this, TypeLocNodes.def will give you wrong type
hierarchy information (claiming that ObjCObjectTypeLoc is the base of
ObjCInterfaceTypeLoc, which it wasn't).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
a8bef693d8761e31845a26e136f8d3a0983d2f46 04-Jul-2010 Nick Lewycky <nicholas@mxc.ca> Fix ObjCInterfaceTypeLoc to inherit from ObjCObjectTypeLoc so as to match the
Type hierarchy. Without this, TypeLocNodes.def will give you wrong type
hierarchy information (claiming that ObjCObjectTypeLoc is the base of
ObjCInterfaceTypeLoc, which it wasn't).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
d871e5d4810e3f60ba803c5948e100e3355423a2 04-Jul-2010 Jordy Rose <jediknil@belkadan.com> Add a new symbol type, SymbolExtent, to represent the extents of memory regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals.

Also adds a getKnownValue() method to SValuator, which gets the integer value of an SVal if it is known to only have one possible value. There are more places in the code that could be using this, but in general we want to be dealing entirely in SVals, so its usefulness is limited.

The only visible functionality change is that extents are now honored for any DeclRegion, such as fields and Objective-C ivars, rather than just variables. This shows up in bounds-checking and cast-size-checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107577 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
32f2656b90900ac04c4b50e87c16749d0ceb9ef2 04-Jul-2010 Jordy Rose <jediknil@belkadan.com> Add a new symbol type, SymbolExtent, to represent the extents of memory regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals.

Also adds a getKnownValue() method to SValuator, which gets the integer value of an SVal if it is known to only have one possible value. There are more places in the code that could be using this, but in general we want to be dealing entirely in SVals, so its usefulness is limited.

The only visible functionality change is that extents are now honored for any DeclRegion, such as fields and Objective-C ivars, rather than just variables. This shows up in bounds-checking and cast-size-checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107577 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
bb7bf9bbd7e455154fd2d481f3c3c5446b871135 03-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> When setting the anonymous namespace at PCH reading, it may still be initializing so avoid
the invariant checks at NamespaceDecl::setAnonymousNamespace().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a038c1dcface5a404d540a0d0688962cbe656af9 03-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> When setting the anonymous namespace at PCH reading, it may still be initializing so avoid
the invariant checks at NamespaceDecl::setAnonymousNamespace().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8894af18af4f933e99fef9641fc225b9823a385c 03-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Lazily declare default constructors. We now delay the construction of
declarations for implicit default constructors, copy constructors,
copy assignment operators, and destructors. On a "simple" translation
unit that includes a bunch of C++ standard library headers, we
generate relatively few of these implicit declarations now:

4/159 implicit default constructors created
18/236 implicit copy constructors created
70/241 implicit copy assignment operators created
0/173 implicit destructors created

And, on this translation unit, this optimization doesn't really
provide any benefit. I'll do some more performance measurements soon,
but this completes the implementation work for <rdar://problem/8151045>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
1827403a7138946305c0058f262e02b595cf882f 03-Jul-2010 Douglas Gregor <dgregor@apple.com> Lazily declare default constructors. We now delay the construction of
declarations for implicit default constructors, copy constructors,
copy assignment operators, and destructors. On a "simple" translation
unit that includes a bunch of C++ standard library headers, we
generate relatively few of these implicit declarations now:

4/159 implicit default constructors created
18/236 implicit copy constructors created
70/241 implicit copy assignment operators created
0/173 implicit destructors created

And, on this translation unit, this optimization doesn't really
provide any benefit. I'll do some more performance measurements soon,
but this completes the implementation work for <rdar://problem/8151045>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
1cdf4d0686667b7f80c37cdc87679d824819bb5a 03-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Lazily declare implicit copy constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
225843186e3972ce798d3de00f86da9008b15a0e 03-Jul-2010 Douglas Gregor <dgregor@apple.com> Lazily declare implicit copy constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
040dd7f2bf53b5ad1e95f385bfe2201f73ebf7c4 03-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write CastExpr's CXXBaseSpecifierArray for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107542 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/UsuallyTinyPtrVector.h
rontend/PCHReader.h
rontend/PCHWriter.h
0745d0a648b75bd304045309276c70a755adaafb 03-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write CastExpr's CXXBaseSpecifierArray for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107542 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/UsuallyTinyPtrVector.h
rontend/PCHReader.h
rontend/PCHWriter.h
644868591f60eec090c00a4fe6a92fcb9b4abf8b 03-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix broken PCH support for CXXDefaultArgExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
8a50733034edd6a349b34e2b9f0c8d0a874846d3 03-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix broken PCH support for CXXDefaultArgExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
cbc2ab01c76cc7dea081cd23071514d88bc9fae9 02-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Lazily declare copy-assignment operators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
a376d10acfacf19d6dfa41069f7929739a18dd7a 02-Jul-2010 Douglas Gregor <dgregor@apple.com> Lazily declare copy-assignment operators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
dc651872990269d88f4160a991e7db3439aaf82e 02-Jul-2010 Zhanyong Wan <wan@google.com> Make RecursiveASTVisitor traverse function parameter types in a function
prototype declaration. Reviewed by chandlerc and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
234faa72224a038e3259ad82d4214174850b8b75 02-Jul-2010 Zhanyong Wan <wan@google.com> Make RecursiveASTVisitor traverse function parameter types in a function
prototype declaration. Reviewed by chandlerc and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b9aa39a0fad9109684a960bf91e13ceeeb2425e3 02-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Lazily declare the implicitly-declared destructor in a C++ class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
4923aa25eb39d64106a5817c02d560a3aecf8b2c 02-Jul-2010 Douglas Gregor <dgregor@apple.com> Lazily declare the implicitly-declared destructor in a C++ class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
449e309c09db77d8be2280cd12c8b3bda1276efe 02-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Don't visit implicitly defined functions (default constructors and the
like). Our goal with this visitor is to visit exactly what people type.

Reviewed by chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
d0b982ca5cf685af08d5015e8c2dfae3ecab1a0b 02-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Don't visit implicitly defined functions (default constructors and the
like). Our goal with this visitor is to visit exactly what people type.

Reviewed by chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
be7344921919edd8955b2d2f43563d89bf012aee 02-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Move the "current scope" state from the Parser into Action. This
allows Sema some limited access to the current scope, which we only
use in one way: when Sema is performing some kind of declaration that
is not directly driven by the parser (e.g., due to template
instantiatio or lazy declaration of a member), we can find the Scope
associated with a DeclContext, if that DeclContext is still in the
process of being parsed.

Use this to make the implicit declaration of special member functions
in a C++ class more "scope-less", rather than using the NULL Scope hack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107491 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
23c94dbb6631fecdb55ba401aa93722803d980c6 02-Jul-2010 Douglas Gregor <dgregor@apple.com> Move the "current scope" state from the Parser into Action. This
allows Sema some limited access to the current scope, which we only
use in one way: when Sema is performing some kind of declaration that
is not directly driven by the parser (e.g., due to template
instantiatio or lazy declaration of a member), we can find the Scope
associated with a DeclContext, if that DeclContext is still in the
process of being parsed.

Use this to make the implicit declaration of special member functions
in a C++ class more "scope-less", rather than using the NULL Scope hack.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107491 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
cf4aa88e5658b547453524d5f15d5793b064291a 02-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> By default, warn about commas at the end of an enumerator list in C++/C89.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107485 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fe2dd6ceeeb31a7c681b2873a8459c5de5d1a3e9 02-Jul-2010 Douglas Gregor <dgregor@apple.com> By default, warn about commas at the end of an enumerator list in C++/C89.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107485 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fae7b154d0b498ac5775692a2b37bfb3deb1ab9e 02-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Handle CXXConstructorDecl, CXXDestructorDecl, and CXXConversionDecl for PCH.

<vector> header can be used correctly through PCH now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
91468328268f8be076c399e8482ec3cf98fe90cc 02-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Handle CXXConstructorDecl, CXXDestructorDecl, and CXXConversionDecl for PCH.

<vector> header can be used correctly through PCH now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3a3d08e839c78fe8dda69c3706825826dce92b3e 02-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fully read/write CXXRecordDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Redeclarable.h
rontend/PCHReader.h
rontend/PCHWriter.h
37ffed3b7f229844cae2463ff82b527506c86c74 02-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fully read/write CXXRecordDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Redeclarable.h
rontend/PCHReader.h
rontend/PCHWriter.h
f2606db18b5d64f241d74dc4e967347ad3da4792 02-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Allow reading of InjectedClassNameType from PCH even when its decl is currently initializing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107473 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
43921b53b582145f0d1b7c48223bd4d9f0a9d1be 02-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow reading of InjectedClassNameType from PCH even when its decl is currently initializing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107473 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8e3a4439cca2392c63451037ca97eb7037574c91 02-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> - Allow a typedef type to be read from PCH even if its decl is currently initializing.
- Fix creation of TemplateSpecializationType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9763e221e16026ddf487d2564ed349d2c874a1a1 02-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> - Allow a typedef type to be read from PCH even if its decl is currently initializing.
- Fix creation of TemplateSpecializationType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b69c228c5fc1240fbc72e8f9ac48f5d58a77581c 02-Jul-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Add some side-effect free Create methods for TypeDecl subclasses and use them for PCH reading.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
b8b03e6df1cc89e701a809c6a47c41f31b7a9e50 02-Jul-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add some side-effect free Create methods for TypeDecl subclasses and use them for PCH reading.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
5e81e7fa36fd575b145ac4f367cab13f9a9dafc3 02-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Change CallGraph::Prog to be a reference. idx::Program means to be a global object to the Index library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107461 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/CallGraph.h
6d956dfcc79159808f46493dc5754971c76593aa 02-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> Change CallGraph::Prog to be a reference. idx::Program means to be a global object to the Index library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107461 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/CallGraph.h
29d82da2bf4304927c5302adc7c55fa209a1239f 02-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Handle typedef function declarations correctly, such as
typedef int (*Myfunc)(int);
Myfunc func;

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
f650a624f7219be057d8f4e1a3174092297816f5 02-Jul-2010 Craig Silverstein <csilvers2000@yahoo.com> Handle typedef function declarations correctly, such as
typedef int (*Myfunc)(int);
Myfunc func;

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
eb04f8714fcf4b01aa74718a54a058186babeb10 02-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Provide exception specifications for implicitly-declared default constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
eb8c670d2949eb62005eca36c64c9461f2a2173e 02-Jul-2010 Douglas Gregor <dgregor@apple.com> Provide exception specifications for implicitly-declared default constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a5de7fddeccde0ab6f5a804632944e943c1c478b 01-Jul-2010 Ted Kremenek <kremenek@apple.com> Fix PR 7475 by enhancing the static analyzer to also invalidate bindings for non-static global variables
when calling a function/method whose impact on global variables we cannot accurately estimate.
This change introduces two new MemSpaceRegions that divide up the memory space of globals, and causes
RegionStore and BasicStore to consult a binding to the NonStaticGlobalsMemSpaceRegion when lazily
determining the value of a global.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107423 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
dcee3ce97fc76f20ce8f5a7451071e3dec537073 01-Jul-2010 Ted Kremenek <kremenek@apple.com> Fix PR 7475 by enhancing the static analyzer to also invalidate bindings for non-static global variables
when calling a function/method whose impact on global variables we cannot accurately estimate.
This change introduces two new MemSpaceRegions that divide up the memory space of globals, and causes
RegionStore and BasicStore to consult a binding to the NonStaticGlobalsMemSpaceRegion when lazily
determining the value of a global.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107423 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
d0854d5cac31ab26b461a3ae274ee233f47067c6 01-Jul-2010 Jordy Rose <jediknil@belkadan.com> Add an ivar to SymbolReaper for the current statement, and then stop passing the current statement around everywhere. Preparation for symbolic extents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107422 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
7dadf79bd809cc01fe275f9a7243593bc2af5c10 01-Jul-2010 Jordy Rose <jediknil@belkadan.com> Add an ivar to SymbolReaper for the current statement, and then stop passing the current statement around everywhere. Preparation for symbolic extents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107422 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
45c5e7c236f638b5a783dd5843c7a52b3d279a89 01-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Provide an exception-specification for an implicitly-declared
copy-assignment operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
b87786f045d798b070980c108c922e1475d27b15 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Provide an exception-specification for an implicitly-declared
copy-assignment operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
5ece84ce202e7747e58ccacf24f1a7b85f9a2335 01-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Remove unnecessary ASTContext parameter from
CXXRecordDecl::getDestructor(); no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1d110e05e0ff48c1c7a483d6b7fd094cdf28316a 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Remove unnecessary ASTContext parameter from
CXXRecordDecl::getDestructor(); no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
28c0b28ea81dacb0e7470f521993798fb4ba019c 01-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> ExplodedGraph never uses ASTContext, remove it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107388 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
c77a55126fcad66fb086f8e100a494caa2496a2d 01-Jul-2010 Zhongxing Xu <xuzhongxing@gmail.com> ExplodedGraph never uses ASTContext, remove it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107388 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
82a2ae24f51d2821d6caef1cf4d9374b4948959d 01-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Extend the "cannot convert from base class pointer to derived class
pointer" diagnostic to handle references, too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2f9d8740f557bc1f8746a2d5c4498b324b63eeb9 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Extend the "cannot convert from base class pointer to derived class
pointer" diagnostic to handle references, too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
432db7bb741389b2d35b7b5b2639e51afb383459 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: .dSYM suffix should be appended, not replace the existing suffix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107369 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
63cbbeecba87b00913c8dfca170f62ec24473365 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver: .dSYM suffix should be appended, not replace the existing suffix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107369 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
a0173ee552a235c935e2df51cb90f44298f9e385 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/IRgen: Add support for -momit-leaf-frame-pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107367 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
1ad6648cce57bd187f1853f58fef26cd9bf4934f 01-Jul-2010 Daniel Dunbar <daniel@zuster.org> Driver/IRgen: Add support for -momit-leaf-frame-pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107367 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
c384faf30bfffe88697bf36e765ecbdd531a0bfc 01-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Implement C++ DR481, which clarifies that the scope of template
parameters starts at the end of the template-parameter rather than at
the point where the template parameter name is encounted. For example,
given:

typedef unsigned char T;
template<typename T = T> struct X0 { };

The "T" in the default argument refers to the typedef of "unsigned
char", rather than referring to the newly-introduced template type
parameter 'T'.

Addresses <rdar://problem/8122812>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107354 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Template.h
bb3310a5fd9c08741b5272ed2665bdeab76a99a6 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Implement C++ DR481, which clarifies that the scope of template
parameters starts at the end of the template-parameter rather than at
the point where the template parameter name is encounted. For example,
given:

typedef unsigned char T;
template<typename T = T> struct X0 { };

The "T" in the default argument refers to the typedef of "unsigned
char", rather than referring to the newly-introduced template type
parameter 'T'.

Addresses <rdar://problem/8122812>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107354 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Template.h
cd14694e765ad9c5f664d476e6c8b8a68579c772 01-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostic when we fail to pick an overload because it would
require a base-to-derived pointer conversion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107349 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8578981ada66dae44a5a0752f949a5e65b477588 01-Jul-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostic when we fail to pick an overload because it would
require a base-to-derived pointer conversion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107349 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ff79c3ba4e23a829b68e2f242db785573fecadf9 30-Jun-2010 Zhanyong Wan <wan@google.com> Fix RecursiveASTVisitor to traverse the ctor initializer list before
traversing the ctor body when traversing a CXXConstructorDecl.
Reviewed by chandlerc and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
6beaf938c0a2587ac4b2b60a51fbb9a80f72b766 30-Jun-2010 Zhanyong Wan <wan@google.com> Fix RecursiveASTVisitor to traverse the ctor initializer list before
traversing the ctor body when traversing a CXXConstructorDecl.
Reviewed by chandlerc and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
6f2529e6ea82828110cd9c85d7565d8913ddc620 30-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Clean up the diagnostic complaining about the element type of a vector
type so that it actually complains about the element type itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107299 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27cac990649d9c1217f018921749683464a28e6b 30-Jun-2010 Douglas Gregor <dgregor@apple.com> Clean up the diagnostic complaining about the element type of a vector
type so that it actually complains about the element type itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107299 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3cb6ec521c6f86ecae206bdf68edaf6b9ba7654d 30-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Complain about the application of a transparent_union attribute to a
union whose first field has integral vector type. Also, clean up this
diagnostic a bit. Thanks to Eli for spotting this change in semantics
last week.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
90cd672ed107d5986936c577ce47ad7374096bd2 30-Jun-2010 Douglas Gregor <dgregor@apple.com> Complain about the application of a transparent_union attribute to a
union whose first field has integral vector type. Also, clean up this
diagnostic a bit. Thanks to Eli for spotting this change in semantics
last week.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
43e5ca66e8d124cc8c97a644de90f79c64d86afd 30-Jun-2010 Duncan Sands <baldrick@free.fr> Add header file needed to compile with g++-4.6, which has undergone some more
header trimming (needed for std::uninitialized_copy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
68f774dc9f4ad823dff4195821ba789e4e61a3a6 30-Jun-2010 Duncan Sands <baldrick@free.fr> Add header file needed to compile with g++-4.6, which has undergone some more
header trimming (needed for std::uninitialized_copy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
26f9c6bc93729a39f21a24cf3e3088c04b2f6a5f 30-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support DependentSizedArrayType for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107267 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ae8b17f1d5d303af53db5a4f4a375ea6b9356566 30-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support DependentSizedArrayType for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107267 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
3924a168ffe6ebbe459db98208b195266f0ae147 30-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support ParenListExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
37bdfe284ad365f753741d1d89c078c148b3f4af 30-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support ParenListExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
c90cb427494ddb34dad06f18497ee136e688b5f2 30-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Make the constructor explicit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
0ab5de16a47d64ba7cc8ca2e31b679daeae963fe 30-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make the constructor explicit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
b9b01751b9f0468f1833f85505dbd48473baaf6f 30-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Implement C++ DR299, which allows an implicit conversion from a class
type to an integral or enumeration type in the size of an array new
expression, e.g.,

new int[ConvertibleToInt(10)];

This is a GNU and C++0x extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107229 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6bc574daab3d3571d888cc4a21df67f2e2a14792 30-Jun-2010 Douglas Gregor <dgregor@apple.com> Implement C++ DR299, which allows an implicit conversion from a class
type to an integral or enumeration type in the size of an array new
expression, e.g.,

new int[ConvertibleToInt(10)];

This is a GNU and C++0x extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107229 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f5b2e4e507e7014d09331fda4e7f0d5682d13660 30-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support C++ friend declarations for PCH.

This commit 'introduces' a slightly different way to restore the state of the AST object.
It makes PCHDeclReader/PCHDeclWriter friends and gives them access to the private members of the object.
The rationale is to avoid using/modifying the AST interfaces for PCH read/write so that to:

-Avoid complications with objects that have side-effects during creation or when using some setters.
-Not 'pollute' the AST interface with methods only used by the PCH reader/writer
-Allow AST objects to be read-only.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
6764334dfa73d67cbbb1b1fc8fe00440aad00f2a 30-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support C++ friend declarations for PCH.

This commit 'introduces' a slightly different way to restore the state of the AST object.
It makes PCHDeclReader/PCHDeclWriter friends and gives them access to the private members of the object.
The rationale is to avoid using/modifying the AST interfaces for PCH read/write so that to:

-Avoid complications with objects that have side-effects during creation or when using some setters.
-Not 'pollute' the AST interface with methods only used by the PCH reader/writer
-Allow AST objects to be read-only.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
418c103ccdfb96ce21b9e8e7a7caf63149fa93c0 30-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> When we know that we are at sub-statement reading (which is all of PCHStmtReader) use the "faster" ReadSubStmt. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107218 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
d98a2ab9275f896df49e42ea4e4b8871610e0f45 30-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> When we know that we are at sub-statement reading (which is all of PCHStmtReader) use the "faster" ReadSubStmt. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107218 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
1a4de2b12474679b6224f2398f3875d2887f1b63 29-Jun-2010 Ted Kremenek <kremenek@apple.com> Tweaker Checker::VisitEndAnalysis to have 'hasWorkRemaining' also
be true if some paths were aborted because they exceeded
the maximum loop unrolling count.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107209 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
e49f2adebee758e5ef0d7ef1acc90c059d442f4f 29-Jun-2010 Ted Kremenek <kremenek@apple.com> Tweaker Checker::VisitEndAnalysis to have 'hasWorkRemaining' also
be true if some paths were aborted because they exceeded
the maximum loop unrolling count.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107209 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
6c80d32157032a7f66dc587e74ae36ac11d7f5b4 29-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Allow a using directive to refer to the implicitly-defined namespace
"std", with a warning, to improve GCC compatibility. Fixes PR7517.

As a drive-by, add typo correction for using directives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107172 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6699220f73f11e471b5e5aa42eaf064afeaa079e 29-Jun-2010 Douglas Gregor <dgregor@apple.com> Allow a using directive to refer to the implicitly-defined namespace
"std", with a warning, to improve GCC compatibility. Fixes PR7517.

As a drive-by, add typo correction for using directives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107172 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8dccf0ab1ae2c845fc3b61cb042046ab21f79ac3 29-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Delete assert in ComputeKeyFunction. The function runs fine without it, since
there's an explicit guard on isPolymorphic, and virtual bases don't affect the
key function calculation. This allows people to call
ASTContext::getKeyFunction on arbitrary classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fe8ec01bba74f6841576a2ee93d2c62cdfa4eff2 29-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Delete assert in ComputeKeyFunction. The function runs fine without it, since
there's an explicit guard on isPolymorphic, and virtual bases don't affect the
key function calculation. This allows people to call
ASTContext::getKeyFunction on arbitrary classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bf3b1a277831b6e1869efdd9ab531ac604687d6e 29-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> A few prettifications. Also renamed TraverseInitializer to
TraverseConstructorInitializer, to be a bit clearer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
4d072932287eb074a4168804cac1acb18a51d5e8 29-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> A few prettifications. Also renamed TraverseInitializer to
TraverseConstructorInitializer, to be a bit clearer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
594cb37993facf069cc0fd16f674c8fb46b1578a 29-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix up ClassTemplateSpecializationDecl: For implicit instantiations
("set<int> x;"), we don't want to recurse at all, since the
instatiated class isn't written in the source code anywhere. (Note
the instatiated *type* -- set<int> -- is written, and will still get a
callback of TemplateSpecializationType). For explicit instantiations
("template set<int>;"), we do need a callback, since this is the only
callback that's made for this instantiation. We use
getTypeAsWritten() to distinguish.

We will still need to figure out how to handle template
specializations, which probably are still not quite correct.

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
bc55618eb97c519b8c186c350cb419f89021b073 29-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Fix up ClassTemplateSpecializationDecl: For implicit instantiations
("set<int> x;"), we don't want to recurse at all, since the
instatiated class isn't written in the source code anywhere. (Note
the instatiated *type* -- set<int> -- is written, and will still get a
callback of TemplateSpecializationType). For explicit instantiations
("template set<int>;"), we do need a callback, since this is the only
callback that's made for this instantiation. We use
getTypeAsWritten() to distinguish.

We will still need to figure out how to handle template
specializations, which probably are still not quite correct.

Reviewed by chandlerc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
0c80347b98aef998afb205199b74c5050d63556c 29-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Modify the way sub-statements are stored and retrieved from PCH.

Before this commit, sub-stmts were stored as encountered and when they were placed in the Stmts stack we had to know what index
each stmt operand has. This complicated supporting variable sub-stmts and sub-stmts that were contained in TypeSourceInfos, e.g.

x = sizeof(int[1]);

would crash PCH.

Now, sub-stmts are stored in reverse order, from last to first, so that when reading them, in order to get the next sub-stmt we just
need to pop the last stmt from the stack. This greatly simplified the way stmts are written and read (just use PCHWriter::AddStmt and
PCHReader::ReadStmt accordingly) and allowed variable stmt operands and TypeSourceInfo exprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107087 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
919e693e80632d214c1f3110f6ee5d1c0b61f06b 29-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modify the way sub-statements are stored and retrieved from PCH.

Before this commit, sub-stmts were stored as encountered and when they were placed in the Stmts stack we had to know what index
each stmt operand has. This complicated supporting variable sub-stmts and sub-stmts that were contained in TypeSourceInfos, e.g.

x = sizeof(int[1]);

would crash PCH.

Now, sub-stmts are stored in reverse order, from last to first, so that when reading them, in order to get the next sub-stmt we just
need to pop the last stmt from the stack. This greatly simplified the way stmts are written and read (just use PCHWriter::AddStmt and
PCHReader::ReadStmt accordingly) and allowed variable stmt operands and TypeSourceInfo exprs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107087 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
0b653af867de91f191d1a42d50f556705a8a2974 28-Jun-2010 Chris Lattner <sabre@nondot.org> fix a silly fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107018 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1ea9c3d2855de75ee89768696af3eda6aa3de723 28-Jun-2010 Chris Lattner <sabre@nondot.org> fix a silly fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107018 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
61203ea721a4ef67b7c157d172605486f60c8670 28-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Add support for traversing initializer lists (in constructors), which
we ignoring before. To give access to the names on the initializer,
which aren't a type or an expr or a decl, I've introduced a new
TraverseInitializer. By default, it just traverses on the expr that
the name is being initialized to.

Reviewed by chandlerc. Tested via clang's 'make test'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
0f8c08843fc6c8abe03654f609e1e03fcc557855 28-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Add support for traversing initializer lists (in constructors), which
we ignoring before. To give access to the names on the initializer,
which aren't a type or an expr or a decl, I've introduced a new
TraverseInitializer. By default, it just traverses on the expr that
the name is being initialized to.

Reviewed by chandlerc. Tested via clang's 'make test'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
fdf2127ed0a1b3e966b2f640ff7b03baf7106aed 28-Jun-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Introduce Expr::Classify and Expr::ClassifyModifiable, which determine the classification of an expression under the C++0x taxology (value category). Reimplement isLvalue and isModifiableLvalue using these functions. No regressions in the test suite from this, and my rough performance check doesn't show any regressions either.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2111c855343a0530e236bf0862358ec8d67b28f3 28-Jun-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Introduce Expr::Classify and Expr::ClassifyModifiable, which determine the classification of an expression under the C++0x taxology (value category). Reimplement isLvalue and isModifiableLvalue using these functions. No regressions in the test suite from this, and my rough performance check doesn't show any regressions either.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1dafad294043b0c3960a1515e7fcc675930a3e31 28-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support CXXPseudoDestructorExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
de4bd18bb45a1db68996cfb949db3015fc25d10d 28-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support CXXPseudoDestructorExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
55e641cf56260e9213e724a3fff7cebd2adbf890 28-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support DependentScopeDeclRefExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
12dffcddb60380c5bed4f085a1f51534afda3b87 28-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support DependentScopeDeclRefExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
b616e6b9e75231db0a1859cb27db96186c789b94 28-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor PCH reading/writing of template arguments passed to expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106997 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
36c76f0bea0d3595a25a5362225c642019cc3176 28-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor PCH reading/writing of template arguments passed to expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106997 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
3482f19f4c5f7de444c38951620262bfb2951319 28-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix PCH emitting/reading for template arguments that contain expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106996 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
17cfdeda476aa8899f0ccedd9cb9cdb76e89b6b4 28-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix PCH emitting/reading for template arguments that contain expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106996 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
0161c3c6f1882f87a61266cb7fc20fcc2b83ea5f 28-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Partial fix for PR7267 based on comments by John McCall on an earlier patch.
This is more targeted, as it simply provides toggle actions for the parser to
turn access checking on and off. We then use these to suppress access checking
only while we parse the template-id (included scope specifier) of an explicit
instantiation and explicit specialization of a class template. The
specialization behavior is an extension, as it seems likely a defect that the
standard did not exempt them as it does explicit instantiations.

This allows the very common practice of specializing trait classes to work for
private, internal types. This doesn't address instantiating or specializing
function templates, although those apparently already partially work.

The naming and style for the Action layer isn't my favorite, comments and
suggestions would be appreciated there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106993 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
926c4b486a08f698cd3a367fd6f1a3a07604358d 28-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Partial fix for PR7267 based on comments by John McCall on an earlier patch.
This is more targeted, as it simply provides toggle actions for the parser to
turn access checking on and off. We then use these to suppress access checking
only while we parse the template-id (included scope specifier) of an explicit
instantiation and explicit specialization of a class template. The
specialization behavior is an extension, as it seems likely a defect that the
standard did not exempt them as it does explicit instantiations.

This allows the very common practice of specializing trait classes to work for
private, internal types. This doesn't address instantiating or specializing
function templates, although those apparently already partially work.

The naming and style for the Action layer isn't my favorite, comments and
suggestions would be appreciated there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106993 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
5f9bc72c9fd4b073c48fc7dd8c8554b7c57efe80 28-Jun-2010 Jordy Rose <jediknil@belkadan.com> Pointer comparisons (and pointer-pointer subtraction). Basically filling in SimpleSValuator::EvalBinOpLL().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106992 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SValuator.h
eac4a00e1d93aa963903031ed76425c231f0f0b9 28-Jun-2010 Jordy Rose <jediknil@belkadan.com> Pointer comparisons (and pointer-pointer subtraction). Basically filling in SimpleSValuator::EvalBinOpLL().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106992 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SValuator.h
3d897ad92331e29821c049ff0eaae548fd17a3b4 26-Jun-2010 Chris Lattner <sabre@nondot.org> Implement support for -fwrapv, rdar://7221421

As part of this, pull together trapv handling into the same enum.

This also add support for NSW multiplies.

This also makes PCH disagreement on overflow behavior silent, since it
really doesn't matter except for warnings and codegen (no macros get
defined etc).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106956 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
a4d71455f0d418e16cc0c5c5aa55a3bad3494aee 26-Jun-2010 Chris Lattner <sabre@nondot.org> Implement support for -fwrapv, rdar://7221421

As part of this, pull together trapv handling into the same enum.

This also add support for NSW multiplies.

This also makes PCH disagreement on overflow behavior silent, since it
really doesn't matter except for warnings and codegen (no macros get
defined etc).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106956 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
44fad217d390a45a6e927140bfcbd59c5f4fbab5 26-Jun-2010 Chris Lattner <sabre@nondot.org> Implement support for #pragma message, patch by Michael Spencer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/PPCallbacks.h
ex/Preprocessor.h
abfe094ce71c42656dcb84a3bdc3e79cb3c16fc3 26-Jun-2010 Chris Lattner <sabre@nondot.org> Implement support for #pragma message, patch by Michael Spencer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/PPCallbacks.h
ex/Preprocessor.h
886613199c8321a42ba3250aa02e0bce7ba2552b 26-Jun-2010 Ted Kremenek <kremenek@apple.com> Add support for CXXRecordDecl in CFGRecStmtDeclVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106918 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
f683976830768f207ad70150d14e08b04fe532be 26-Jun-2010 Ted Kremenek <kremenek@apple.com> Add support for CXXRecordDecl in CFGRecStmtDeclVisitor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106918 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
8273ec2f5703915cd67d2e84af06617741bfed40 26-Jun-2010 Daniel Dunbar <daniel@zuster.org> clang: Derive version name from LLVM unless specified explicitly. This means
clang is now clang 2.8.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
c4b8e923a18ba56ecd76de5dfd7edf7f307123e3 26-Jun-2010 Daniel Dunbar <daniel@zuster.org> clang: Derive version name from LLVM unless specified explicitly. This means
clang is now clang 2.8.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
10b6a8a312b73c2c57c4b00cf906297c5a408979 25-Jun-2010 Ted Kremenek <kremenek@apple.com> Add "checker caching" to GRExprEngine::CheckerVisit to progressively build
a winowed list of checkers that actually do something for a given StmtClass.
As the number of checkers grows, this may potentially significantly reduce
the number of checkers called at any one time. My own measurements show that
for the ~20 registered Checker objects, only ~5 of them respond at any one time
to a give statement. While this isn't a net performance win right now (there
is a minor slowdown on sqlite.3) this improvement does greatly improve debugging
when stepping through the checkers used to evaluate a given statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106884 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/GRExprEngine.h
9e9595b12e9b55586c4d50d370f429c7a3c92a90 25-Jun-2010 Ted Kremenek <kremenek@apple.com> Add "checker caching" to GRExprEngine::CheckerVisit to progressively build
a winowed list of checkers that actually do something for a given StmtClass.
As the number of checkers grows, this may potentially significantly reduce
the number of checkers called at any one time. My own measurements show that
for the ~20 registered Checker objects, only ~5 of them respond at any one time
to a give statement. While this isn't a net performance win right now (there
is a minor slowdown on sqlite.3) this improvement does greatly improve debugging
when stepping through the checkers used to evaluate a given statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106884 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/GRExprEngine.h
6eff16e9521f4df69b3b64ddb018f961071086a8 25-Jun-2010 Daniel Dunbar <daniel@zuster.org> build: Add a generated Version.inc file instead of duplicating information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106863 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
asic/Version.h
asic/Version.inc.in
a510767963e6bf04f0bc15de057f6bafa0aedab5 25-Jun-2010 Daniel Dunbar <daniel@zuster.org> build: Add a generated Version.inc file instead of duplicating information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106863 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
asic/Version.h
asic/Version.inc.in
a31bec64c1fc6fcd43f7e93085022a97cb1f43b9 25-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support NonTypeTemplateParmDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
b24e199fbd17af780ab000c5862d191e4daffc0f 25-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support NonTypeTemplateParmDecl for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
cda37f2f04caa0b1544b6ee8cbe37924fc48e04f 25-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support DependentTemplateSpecializationType and ElaboratedType for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106858 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
3acad62a239448bef0f5848b2a0d5f7dfefd3d14 25-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support DependentTemplateSpecializationType and ElaboratedType for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106858 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
36633ae1d4e6cff08557e7dcfaaad355015f7306 25-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support UnresolvedLookupExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
bd65bb511c26549c96b829c1282e4c877588564a 25-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support UnresolvedLookupExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
48d8d808b7f109f33eeda88192874b0708684892 25-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support UnresolvedMemberExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/StmtNodes.td
rontend/PCHBitCodes.h
a77eb0862507b900a10fa352af1568e639ed10b1 25-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support UnresolvedMemberExpr for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/StmtNodes.td
rontend/PCHBitCodes.h
39683dcf7e2465bdab8bd33c8b39f096be7dcf38 25-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Implement dependent alignment attribute support. This is a bit gross given the
current attribute system, but it is enough to handle class templates which
specify parts of their alignment in terms of their template parameters.

This also replaces the attributes test in SemaTemplate with one that actually
tests working attributes instead of broken ones. I plan to add more tests here
for non-dependent attributes in a subsequent patch.

Thanks to John for walking me through some of this. =D


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
4ced79f0971592e6e7122037de69ee9ae534ce72 25-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Implement dependent alignment attribute support. This is a bit gross given the
current attribute system, but it is enough to handle class templates which
specify parts of their alignment in terms of their template parameters.

This also replaces the attributes test in SemaTemplate with one that actually
tests working attributes instead of broken ones. I plan to add more tests here
for non-dependent attributes in a subsequent patch.

Thanks to John for walking me through some of this. =D


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
93f872664c3a7ed49491f9ca37ccb00d581dd5eb 24-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support a couple more C++ Exprs for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106727 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
rontend/PCHBitCodes.h
8dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfe 24-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support a couple more C++ Exprs for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106727 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
rontend/PCHBitCodes.h
451602570c13a8524eaa2f42bc7114dfa48d9677 24-Jun-2010 Ted Kremenek <kremenek@apple.com> Add 'VisitEndAnalysis' callback to Checker class. This callback is called by GRExprEngine
when the worklist algorithm has terminated. This allows some checkers to do a post-analysis
phase after all paths have been analyzed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106689 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
ccc263b44c62ce3a02f797a3ddb3d6017cf0e5e4 24-Jun-2010 Ted Kremenek <kremenek@apple.com> Add 'VisitEndAnalysis' callback to Checker class. This callback is called by GRExprEngine
when the worklist algorithm has terminated. This allows some checkers to do a post-analysis
phase after all paths have been analyzed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106689 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
f19e9c4a68ff60c399edbdba8051fd5dc7f6d17e 23-Jun-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add isArrayType() to CanProxy's forwarders.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
f4c46193637631fc993d926ff31c7cb18c090d21 23-Jun-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add isArrayType() to CanProxy's forwarders.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
391ab4776eb37da646a7597c3fd4f1f19167daaa 23-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support C++ class template specializations and partial specializations for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106625 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
dd41c14bfd7686b556de2acf6952e21a4f80b7aa 23-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support C++ class template specializations and partial specializations for PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106625 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
0a5ea76d1c951cab7c6dbf3b52ce2dcce1c9dbb2 23-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Modify ClassTemplateSpecializationDecl and ClassTemplatePartialSpecializationDecl to allow PCH read/write.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106624 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
94d228d3454a3f6436526d15b2ad7fc90246fe54 23-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modify ClassTemplateSpecializationDecl and ClassTemplatePartialSpecializationDecl to allow PCH read/write.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106624 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9484f8eade39f9d22deb26abdd6c1c804b820eac 23-Jun-2010 Chris Lattner <sabre@nondot.org> improve altivec vector bool/pixel support, patch by Anton Yartsev
with several tweaks by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
788b0fd67e1992f23555454efcdb16a19dfefac3 23-Jun-2010 Chris Lattner <sabre@nondot.org> improve altivec vector bool/pixel support, patch by Anton Yartsev
with several tweaks by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
a20e00282c792f039b1abecec2b00fb392a19dae 23-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to provide separate ASTs for multiple ObjC class extension
declarations (implements radar 7928731).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
80aa1cd7973561889e51c1c152c8990a8de9c953 23-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to provide separate ASTs for multiple ObjC class extension
declarations (implements radar 7928731).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
972c24b2303bfe52efe3049d7ff75a15abcab6f0 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Support -mios-version-min= as an alias for -miphoneos-version-min=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106587 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e4eae6a5768357edbed80034cbc4670dde313b4d 23-Jun-2010 Daniel Dunbar <daniel@zuster.org> Support -mios-version-min= as an alias for -miphoneos-version-min=.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106587 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
1a7c1b12a61ed17f914c9d557dd6666e0253c133 23-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Change Type::isFloatingType() to reflect the actual definition of a
"floating type" in C, which does not include vector types. Introduce
Type::hasFloatingRepresentation() for the places where we want to know
whether the underlying representation is one or more floating-point
values. Remove some hacks we had where the former behavior of
Type::isFloatingType() was at odds with the language definition of the
term.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
8eee119bf4f1693dde17b8552c1f9f81bf2b681e 23-Jun-2010 Douglas Gregor <dgregor@apple.com> Change Type::isFloatingType() to reflect the actual definition of a
"floating type" in C, which does not include vector types. Introduce
Type::hasFloatingRepresentation() for the places where we want to know
whether the underlying representation is one or more floating-point
values. Remove some hacks we had where the former behavior of
Type::isFloatingType() was at odds with the language definition of the
term.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
93ee72fccf528c96e49532cc03b120a715477488 22-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write CXXDeleteExpr from/to PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
95fc98ce95d4faa4f1bb2783384150530404ea6f 22-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write CXXDeleteExpr from/to PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
35ebf7648592408db2ae6fde66038239f79351ac 22-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> When we ask for the enumerators of an EnumDecl, make sure we get them even if we have a EnumDecl that is not the definition of the enumeration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0e5abbe065ab7fb9e3b03b4d25fac3f2dd4b2389 22-Jun-2010 Douglas Gregor <dgregor@apple.com> When we ask for the enumerators of an EnumDecl, make sure we get them even if we have a EnumDecl that is not the definition of the enumeration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
978e59a58b8f241c5767939a68cfd272b4b98686 22-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> In C++, allow a declaration of an enum to follow a definition of that
enum as a GNU extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f3a7b7cfacf802db5458874842b71a74845f0023 22-Jun-2010 Douglas Gregor <dgregor@apple.com> In C++, allow a declaration of an enum to follow a definition of that
enum as a GNU extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c3a55600fa04db93b614d29f665b284fd5bb409e 22-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> -Introduce PCHReader::ReadTemplateArgumentLoc()
-Introduce PCHWriter::AddTemplateArgumentLocInfo()
-Modify PCHWriter::AddTemplateArgumentLoc() to also write TemplateArgumentLoc's TemplateArgument
and move the existing calls of AddTemplateArgumentLoc() to AddTemplateArgumentLocInfo().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106533 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
44f8c37e378f716e8cbb600e3800f437cf58f9e5 22-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Introduce PCHReader::ReadTemplateArgumentLoc()
-Introduce PCHWriter::AddTemplateArgumentLocInfo()
-Modify PCHWriter::AddTemplateArgumentLoc() to also write TemplateArgumentLoc's TemplateArgument
and move the existing calls of AddTemplateArgumentLoc() to AddTemplateArgumentLocInfo().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106533 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
27af33596d39eebc6a70af17022e09237fba96a8 22-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Make it easier to read/write the template part of FunctionDecl.

Introduce:
-FunctionDecl::getTemplatedKind() which returns an enum signifying what kind of templated
FunctionDecl it is.
-An overload of FunctionDecl::setFunctionTemplateSpecialization() which accepts arrays of
TemplateArguments and TemplateArgumentLocs
-A constructor to TemplateArgumentList which accepts an array of TemplateArguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106532 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
d0913557c800c8a712fb554032a833619f23bc56 22-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make it easier to read/write the template part of FunctionDecl.

Introduce:
-FunctionDecl::getTemplatedKind() which returns an enum signifying what kind of templated
FunctionDecl it is.
-An overload of FunctionDecl::setFunctionTemplateSpecialization() which accepts arrays of
TemplateArguments and TemplateArgumentLocs
-A constructor to TemplateArgumentList which accepts an array of TemplateArguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106532 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ec29bc0265b0a67e7e47947fd5e0707f46c15d4a 22-Jun-2010 Victor Hsieh <victorhsieh@google.com> Support foo.{r,g,b,a}, where foo is a float4.

Change-Id: I68e9c36406db77bd0025c33cdbfc55324fa40568
ST/Type.h
b377aed9fc0a90a0788af717c5a37c871061b7ce 22-Jun-2010 Chris Lattner <sabre@nondot.org> implement support for -finstrument-functions, patch by Nelson
Elhage!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
7255a2d997b15beae82e627052fdb1b2474495c2 22-Jun-2010 Chris Lattner <sabre@nondot.org> implement support for -finstrument-functions, patch by Nelson
Elhage!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
river/CC1Options.td
river/Options.td
rontend/CodeGenOptions.h
880e7654b8ac173f0275d947ccd0d328efc2926b 22-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Alter the internal representation of the condition variable in
if/while/switch/for statements to ensure that walking the children of
these statements actually works. Previously, we stored the condition
variable as a VarDecl. However, StmtIterator isn't able to walk from a
VarDecl to a set of statements, and would (in some circumstances) walk
beyond the end of the list of statements, cause Bad Behavior.

In this change, we've gone back to representing the condition
variables as DeclStmts. While not as memory-efficient as VarDecls, it
greatly simplifies iteration over the children.

Fixes the remainder of <rdar://problem/8104754>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
43dec6bbde2d0a16c35978983761c8b7030c8e18 22-Jun-2010 Douglas Gregor <dgregor@apple.com> Alter the internal representation of the condition variable in
if/while/switch/for statements to ensure that walking the children of
these statements actually works. Previously, we stored the condition
variable as a VarDecl. However, StmtIterator isn't able to walk from a
VarDecl to a set of statements, and would (in some circumstances) walk
beyond the end of the list of statements, cause Bad Behavior.

In this change, we've gone back to representing the condition
variables as DeclStmts. While not as memory-efficient as VarDecls, it
greatly simplifies iteration over the children.

Fixes the remainder of <rdar://problem/8104754>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9db3a9116284cfe539efbc5b67022456c06a5e39 21-Jun-2010 Chris Lattner <sabre@nondot.org> accept and ignore two more gcc warning flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
dbc4c465a0eabd42b3cb16edc610aceb48ac7823 21-Jun-2010 Chris Lattner <sabre@nondot.org> accept and ignore two more gcc warning flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
e7c0620f661ae13977dd84808a6272d8b256e4ff 21-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Combine ClassTemplateDecl's PreviousDeclaration with CommonPtr, as in FunctionTemplateDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
5bf1bdc2fedb0c29b5fcdb4abc852aa85b4fe26a 21-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Combine ClassTemplateDecl's PreviousDeclaration with CommonPtr, as in FunctionTemplateDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
d790bfc3139f59f1cc8ac82d807faad23a6fd7d7 21-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement remaining codegen for NEON, all operations should now work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
4be54302da40d3e7cba3d93115f312d2fcca1879 21-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement remaining codegen for NEON, all operations should now work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/arm_neon.td
c347f6656222239271e001ee9cb969b5bea560a5 20-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Support PCH emitting/reading of using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b01a552d7bafb889305affe83018563620aab326 20-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support PCH emitting/reading of using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7d389db9973da96f2d8d1c6b883b870982cb29ec 19-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Initial support for reading templates from PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106392 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
rontend/PCHReader.h
8731ca76acf81826df7048bffd0c44c7c0f96c7f 19-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Initial support for reading templates from PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106392 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
rontend/PCHReader.h
8afa992603cad8847139aafd3de333f80f757cd5 19-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Initial support for writing templates to PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
90b715e0df34eae2b50b9b43ec60828ed31dcf94 19-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Initial support for writing templates to PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
4b41460c165e06b7c5edec8e436c3f58be3376a5 19-Jun-2010 Anton Korobeynikov <asl@math.spbu.ru> More AltiVec support.
Patch by Anton Yartsev!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsPPC.def
4d3a7b0a0608febe3cdac68f6121546672ca875e 19-Jun-2010 Anton Korobeynikov <asl@math.spbu.ru> More AltiVec support.
Patch by Anton Yartsev!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsPPC.def
83d9019aa4da071f1ac5be3f59bde623a702108f 19-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> More Sema Check and a test case for init_priority attr.
(radar 8076356).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b9d5c22529c3f2bf3b03348021c0fd1c723d8516 19-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> More Sema Check and a test case for init_priority attr.
(radar 8076356).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d7bdd8d477e70fc3424777c5fed590d2ea6f38bd 19-Jun-2010 Jordy Rose <jediknil@belkadan.com> Fold additive constants, and support comparsions of the form $sym+const1 <> const2


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ba0f61cf5363f80e3241dc754235dfb246afe320 19-Jun-2010 Jordy Rose <jediknil@belkadan.com> Fold additive constants, and support comparsions of the form $sym+const1 <> const2


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
78eef07e2d081112922d5c5de20af6780c2a1f91 19-Jun-2010 Chris Lattner <sabre@nondot.org> introduce a new CharSourceRange class, and enhance the diagnostics routines
to use them instead of SourceRange. CharSourceRange is just a SourceRange
plus a bool that indicates whether the range has the end character resolved
or whether the end location is the start of the end token. While most of
the compiler wants to think of ranges that have ends that are the start of
the end token, the printf diagnostic stuff wants to highlight ranges within
tokens.

This is transparent to the diagnostic stuff. To start taking advantage of
the new capabilities, you can do something like this:
Diag(..) << CharSourceRange::getCharRange(Begin,End)





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106338 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
asic/SourceLocation.h
rontend/TextDiagnosticPrinter.h
ewrite/Rewriter.h
0a76aae8c03cb7dd7bdbe683485560afaf695959 19-Jun-2010 Chris Lattner <sabre@nondot.org> introduce a new CharSourceRange class, and enhance the diagnostics routines
to use them instead of SourceRange. CharSourceRange is just a SourceRange
plus a bool that indicates whether the range has the end character resolved
or whether the end location is the start of the end token. While most of
the compiler wants to think of ranges that have ends that are the start of
the end token, the printf diagnostic stuff wants to highlight ranges within
tokens.

This is transparent to the diagnostic stuff. To start taking advantage of
the new capabilities, you can do something like this:
Diag(..) << CharSourceRange::getCharRange(Begin,End)





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106338 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
asic/SourceLocation.h
rontend/TextDiagnosticPrinter.h
ewrite/Rewriter.h
2f08858b0aa8e90be4e3682aac0797582624f7cd 18-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Implements Sema part of init_priority(priority) attribute
(radar 8076356) - wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
521f12d3dfdbb0e93d1bcb503d074e67acdc489c 18-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Implements Sema part of init_priority(priority) attribute
(radar 8076356) - wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/Attr.td
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
fbe5d221177a87d2d30c17586a09ca7c0218d475 18-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Merge the "regparm" attribute from a previous declaration of a
function to redeclarations of that function. Fixes PR7025.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d2c6490385555eaabfaf611d1cf6e89544163c4a 18-Jun-2010 Douglas Gregor <dgregor@apple.com> Merge the "regparm" attribute from a previous declaration of a
function to redeclarations of that function. Fixes PR7025.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0ed75c0ee848bb8e27f97672f2522607288b26a6 18-Jun-2010 Gabor Greif <ggreif@gmail.com> John called for a less surprising cast

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106277 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
4ab92891a53adda8c52c1947351371da58e33f64 18-Jun-2010 Gabor Greif <ggreif@gmail.com> John called for a less surprising cast

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106277 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
2be7e0dc9029352174ae6aa1eccf773e034d40bc 18-Jun-2010 Tom Care <tcare@apple.com> Printf format strings: Added some more tests and fixed some minor bugs.
- Precision toStrings shouldn't print a dot when they have no value.
- Length of char length modifier is now returned correctly.
- Added several fixit tests.

Note: fixit tests are currently broken due to a bug in HighlightRange. Marking as XFAIL for now.

M test/Sema/format-strings-fixit.c
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106275 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
4c6021995032a898fb0502d5d1fd2df37638e57b 18-Jun-2010 Tom Care <tcare@apple.com> Printf format strings: Added some more tests and fixed some minor bugs.
- Precision toStrings shouldn't print a dot when they have no value.
- Length of char length modifier is now returned correctly.
- Added several fixit tests.

Note: fixit tests are currently broken due to a bug in HighlightRange. Marking as XFAIL for now.

M test/Sema/format-strings-fixit.c
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106275 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
1dbefeb8227ecc65dce94223ddd86d249a78b6cb 18-Jun-2010 Sean Hunt <rideau3@gmail.com> Rewrite comment to make my intentions slightly more clear.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
568e598bf8e89b09a4ebc8c21430e1bd1ba6d11d 18-Jun-2010 Sean Hunt <rideau3@gmail.com> Rewrite comment to make my intentions slightly more clear.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
e11f2e1ba3a82176eff14f21ba1ea9e15207fe04 18-Jun-2010 Ted Kremenek <kremenek@apple.com> Change two static variables into instance variables of ASTContext. This allows us to have multiple copies
of ASTContext at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f057bf78a69d37ee511430c88852a85eea19ad15 18-Jun-2010 Ted Kremenek <kremenek@apple.com> Change two static variables into instance variables of ASTContext. This allows us to have multiple copies
of ASTContext at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b2f395069145e9853bfc33a63dd0aa0efb5ff1e2 18-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Given Decl::isUsed() a flag indicating when to consider the "used"
attribute as part of the calculation. Sema::MarkDeclReferenced(), and
a few other places, want only to consider the "used" bit to determine,
e.g, whether to perform template instantiation. Fixes a linkage issue
with Boost.Serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c070cc602d6eefea881f71a60de09e05b54c3fdd 18-Jun-2010 Douglas Gregor <dgregor@apple.com> Given Decl::isUsed() a flag indicating when to consider the "used"
attribute as part of the calculation. Sema::MarkDeclReferenced(), and
a few other places, want only to consider the "used" bit to determine,
e.g, whether to perform template instantiation. Fixes a linkage issue
with Boost.Serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
aa20f645e13e6eb8c3854a2d19421f2cc36e2ec0 18-Jun-2010 Tom Care <tcare@apple.com> Bug 7394 - Fixed toString representation of Precisions in format strings.

M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
f521d6e151e0cf443bb767c6a83c06ea411530f8 18-Jun-2010 Tom Care <tcare@apple.com> Bug 7394 - Fixed toString representation of Precisions in format strings.

M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
b8e13e65f4d92ca1487167a88bd56b7f17558df7 17-Jun-2010 Zhanyong Wan <wan@google.com> Improves RecursiveASTVisitor:

* refactors code in DEF_TRAVERSE_DECL() into
TraverseDeclContextHelper() to reduce code bloat and facilitate
reuse.
* makes the order of traversing a FunctionDecl (including its
subclasses)'s children more natural: before the function parameters
are visited after the function body; now they are visited after the
function type and before the function body.
* fixes a double count for function return type and arguments.

Reviewed by chandlerc and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
0c05a1bae9e8a57f56663991d0442a69df34a003 17-Jun-2010 Zhanyong Wan <wan@google.com> Improves RecursiveASTVisitor:

* refactors code in DEF_TRAVERSE_DECL() into
TraverseDeclContextHelper() to reduce code bloat and facilitate
reuse.
* makes the order of traversing a FunctionDecl (including its
subclasses)'s children more natural: before the function parameters
are visited after the function body; now they are visited after the
function type and before the function body.
* fixes a double count for function return type and arguments.

Reviewed by chandlerc and csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
cc9aa159c15c524f4a5fc73ac90e02a8578e9d29 17-Jun-2010 Tom Care <tcare@apple.com> Bug 7377: Fixed several bad printf format string bugs.
- Added warning for undefined behavior when using field specifier
- Added warning for undefined behavior when using length modifier
- Fixed warnings for invalid flags
- Added warning for ignored flags
- Added fixits for the above warnings
- Fixed accuracy of detecting several undefined behavior conditions
- Receive normal warnings in addition to security warnings when using %n
- Fix bug where '+' flag would remain on unsigned conversion suggestions

Summary of changes:
- Added expanded tests
- Added/expanded warnings
- Added position info to OptionalAmounts for fixits
- Extracted optional flags to a wrapper class with position info for fixits
- Added several methods to validate a FormatSpecifier by component, each checking for undefined behavior
- Fixed conversion specifier checking to conform to C99 standard
- Added hooks to detect the invalid states in CheckPrintfHandler::HandleFormatSpecifier

Note: warnings involving the ' ' (space) flag are temporarily disabled until whitespace highlighting no longer triggers assertions. I will make a post about this on cfe-dev shortly.

M test/Sema/format-strings.c
M include/clang/Basic/DiagnosticSemaKinds.td
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
M lib/Sema/SemaChecking.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
e4ee9663168dfb2b4122c768091e30217328c9fa 17-Jun-2010 Tom Care <tcare@apple.com> Bug 7377: Fixed several bad printf format string bugs.
- Added warning for undefined behavior when using field specifier
- Added warning for undefined behavior when using length modifier
- Fixed warnings for invalid flags
- Added warning for ignored flags
- Added fixits for the above warnings
- Fixed accuracy of detecting several undefined behavior conditions
- Receive normal warnings in addition to security warnings when using %n
- Fix bug where '+' flag would remain on unsigned conversion suggestions

Summary of changes:
- Added expanded tests
- Added/expanded warnings
- Added position info to OptionalAmounts for fixits
- Extracted optional flags to a wrapper class with position info for fixits
- Added several methods to validate a FormatSpecifier by component, each checking for undefined behavior
- Fixed conversion specifier checking to conform to C99 standard
- Added hooks to detect the invalid states in CheckPrintfHandler::HandleFormatSpecifier

Note: warnings involving the ' ' (space) flag are temporarily disabled until whitespace highlighting no longer triggers assertions. I will make a post about this on cfe-dev shortly.

M test/Sema/format-strings.c
M include/clang/Basic/DiagnosticSemaKinds.td
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
M lib/Sema/SemaChecking.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
976d174ca7df21123db7901c5d8d0af328bc1568 17-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Update CMake build system for ARM NEON generation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
2390b62f3afd9cc83d03a1972d4533eb52c246a4 17-Jun-2010 Douglas Gregor <dgregor@apple.com> Update CMake build system for ARM NEON generation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
05b090c139038551a2d34c572242eefa9aa0ee46 17-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Some fixes to type-visiting -- a few places where the type-name was
explicitly typed in the source, but we weren't recursing on it. One
is new <type>, the other is <type>() (eg int()).

I also fixed the initializer parsing to parse on the syntactic
initializer list, not the semantic. Usually they'll be identical, so
this won't affect much in practice, but keeps the AST as a syntax-tree
visitor.

Reviewed by chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ea245e0ba48caf7e7acf870880c030d7ddc76667 17-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Some fixes to type-visiting -- a few places where the type-name was
explicitly typed in the source, but we weren't recursing on it. One
is new <type>, the other is <type>() (eg int()).

I also fixed the initializer parsing to parse on the syntactic
initializer list, not the semantic. Usually they'll be identical, so
this won't affect much in practice, but keeps the AST as a syntax-tree
visitor.

Reviewed by chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
18b01bd5d2e05de5e6789f153d160dbb86f465c9 17-Jun-2010 Gabor Greif <ggreif@gmail.com> fix some more gcc3.4 constness warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ex/Token.h
170e5080011acc60e33ec9b53f96c569a1078aa9 17-Jun-2010 Gabor Greif <ggreif@gmail.com> fix some more gcc3.4 constness warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ex/Token.h
55e30215018a5ba4942c9bc42f67fc84f3f12a8f 17-Jun-2010 Gabor Greif <ggreif@gmail.com> use typedef to make hack more transparent and also appease gcc3.4 constness warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
40844a8b5a89676fb61898d61ea4a7fa98eb9b6b 17-Jun-2010 Gabor Greif <ggreif@gmail.com> use typedef to make hack more transparent and also appease gcc3.4 constness warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
0764180a80beca031068b74e9916790e3d230b17 17-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Make sure parens/braces/brackets are correctly balanced.

In a line like:

(;

the semicolon leaves Parser:ParenCount unbalanced (it's 1 even though we stopped looking for a right paren).
This may affect later parsing and result in bad recovery for parsing errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106213 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
36d36806f1972f7ec1d2a3f59155187278c56508 17-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make sure parens/braces/brackets are correctly balanced.

In a line like:

(;

the semicolon leaves Parser:ParenCount unbalanced (it's 1 even though we stopped looking for a right paren).
This may affect later parsing and result in bad recovery for parsing errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106213 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
82993fb53c6c2dece1c227398e9a27b85c014e32 17-Jun-2010 Ted Kremenek <kremenek@apple.com> Include the bug description in the report hash so that we can emit multiple bugs of the same
type at the same location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106209 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
1a0c8b9183fde84982aea9190a55fde1541c432d 17-Jun-2010 Ted Kremenek <kremenek@apple.com> Include the bug description in the report hash so that we can emit multiple bugs of the same
type at the same location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106209 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
8e68334c94fee2c342d0279077399313b3b14a67 17-Jun-2010 Nate Begeman <natebegeman@mac.com> Generate arm_neon.inc in include/clang/Basic, which provides:
1. builtins definitions for BuiltinsARM.def
2. intrinsic validation code for SemaChecking

Unsure as to whether this is the best way to handle the make dependencies or not.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
asic/Makefile
asic/arm_neon.td
a23326b5c244a03bf61ebb86db60a777ea26f926 17-Jun-2010 Nate Begeman <natebegeman@mac.com> Generate arm_neon.inc in include/clang/Basic, which provides:
1. builtins definitions for BuiltinsARM.def
2. intrinsic validation code for SemaChecking

Unsure as to whether this is the best way to handle the make dependencies or not.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
asic/Makefile
asic/arm_neon.td
b29183de8a86ac86ad770db9cba35bee7cef3ee1 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Comment Attr.td so people have a better understanding of what goes on.

Also removed the unused Aliases member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106202 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
9c3e84ffe0938cd6a73dd16d9a8b54b498863fef 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Comment Attr.td so people have a better understanding of what goes on.

Also removed the unused Aliases member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106202 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Attr.td
a4b3ffccfca26b28cfaadbceb5dc74eac46804b5 17-Jun-2010 Ted Kremenek <kremenek@apple.com> Fix format string checking of '%c' by treating it as an integer conversion. Fixes PR 7391.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106196 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
01cb1aa458516b9061a65ea4b8a2ca55f71cb34f 17-Jun-2010 Ted Kremenek <kremenek@apple.com> Fix format string checking of '%c' by treating it as an integer conversion. Fixes PR 7391.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106196 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
fceaf738583911b13064c8360343576ec2a777cd 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Fix yet another CMake typo. I'm not quite sure how this succeeded locally now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106193 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
6ec9debb2ae0755168974dc52e9e9122724ddbf4 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Fix yet another CMake typo. I'm not quite sure how this succeeded locally now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106193 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
90772c5cec039c7dfdd19697aa68f4c48fcb2cf9 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Fix a typo in the previous commit I thought I'd fixed, but apparently didn't.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
7028a17d30e27d1c1383421b39374426a7c63656 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Fix a typo in the previous commit I thought I'd fixed, but apparently didn't.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
00f90b974369ccd699c3d29e4edef8526d78083c 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Update CMake build for new attribute changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106188 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
asic/CMakeLists.txt
ee6e4b4baa1acd85ba8b142862ac5986621aaffd 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Update CMake build for new attribute changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106188 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
asic/CMakeLists.txt
cac02dc2db388820b0353c8b6509b3b709274344 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Implement first TD-based usage of attributes.

Currently, there are two effective changes:

- Attr::Kind has been changed to attr::Kind, in a separate namespace
rather than the Attr class. This is because the enumerator needs to
be visible to parse.
- The class definitions for the C++0x attributes other than aligned are
generated by TableGen.

The specific classes generated by TableGen are controlled by an array in
TableGen (see the accompanying commit to the LLVM repository). I will be
expanding the amount of code generated as I develop the new attributes system
while initially keeping it confined to these attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Makefile
asic/Attr.td
asic/AttrKinds.h
asic/DeclNodes.td
asic/Makefile
asic/StmtNodes.td
387475d0c18aaeb022108de9d33b6c9fb7998843 17-Jun-2010 Sean Hunt <rideau3@gmail.com> Implement first TD-based usage of attributes.

Currently, there are two effective changes:

- Attr::Kind has been changed to attr::Kind, in a separate namespace
rather than the Attr class. This is because the enumerator needs to
be visible to parse.
- The class definitions for the C++0x attributes other than aligned are
generated by TableGen.

The specific classes generated by TableGen are controlled by an array in
TableGen (see the accompanying commit to the LLVM repository). I will be
expanding the amount of code generated as I develop the new attributes system
while initially keeping it confined to these attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Makefile
asic/Attr.td
asic/AttrKinds.h
asic/DeclNodes.td
asic/Makefile
asic/StmtNodes.td
6be486f7d07c261eedd4c8fda028741a08a39066 17-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Make the "extra ';' inside a struct or union" diagnostic more
precise. Fixes PR7336.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106170 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f13ca06e57ac094ed05ea08c26a499af1ba0ce88 17-Jun-2010 Douglas Gregor <dgregor@apple.com> Make the "extra ';' inside a struct or union" diagnostic more
precise. Fixes PR7336.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106170 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
16b009cf11f3c61b871d2f25b1f521225ba86f3c 17-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> When we see a 'template' disambiguator that marks the next identifier
(or operator-function-id) as a template, but the context is actually
non-dependent or the current instantiation, allow us to use knowledge
of what kind of template it is, e.g., type template vs. function
template, for further syntactic disambiguation. This allows us to
parse properly in the presence of stray "template" keywords, which is
necessary in C++0x and it's good recovery in C++98/03.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106167 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d6ab232bb3ec9847de5af06249afb63078b5f2ee 17-Jun-2010 Douglas Gregor <dgregor@apple.com> When we see a 'template' disambiguator that marks the next identifier
(or operator-function-id) as a template, but the context is actually
non-dependent or the current instantiation, allow us to use knowledge
of what kind of template it is, e.g., type template vs. function
template, for further syntactic disambiguation. This allows us to
parse properly in the presence of stray "template" keywords, which is
necessary in C++0x and it's good recovery in C++98/03.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106167 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2a5941c3fbd9b1601c64959295c47f13a14bf7c0 17-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Fix the recently-added warning about 'typename' and 'template'
disambiguation keywords outside of templates in C++98/03. Previously,
the warning would fire when the associated nested-name-specifier was
not dependent, but that was a misreading of the C++98/03 standard:
now, we complain only when we're outside of any template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
1a15dae8be2b28e02b6639aa92b832465c5be420 17-Jun-2010 Douglas Gregor <dgregor@apple.com> Fix the recently-added warning about 'typename' and 'template'
disambiguation keywords outside of templates in C++98/03. Previously,
the warning would fire when the associated nested-name-specifier was
not dependent, but that was a misreading of the C++98/03 standard:
now, we complain only when we're outside of any template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
36be1a672ff7f0d7c8e4ab725e9e084ab52b048a 16-Jun-2010 Ted Kremenek <kremenek@apple.com> Extend format string type-checking to include '%p'. Fixes remaining cases PR 4468.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106151 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
13927a431dd733336cfd664bf0840747a71b0a43 16-Jun-2010 Ted Kremenek <kremenek@apple.com> Extend format string type-checking to include '%p'. Fixes remaining cases PR 4468.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106151 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
9951415a2b9daf6bfc6711c5f267289764e5a5f9 16-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Canonicalize template template parameters when canonicalizing a
template name that refers to such a parameter. It's amazing that this
problem didn't surface earlier. Fixes PR7387.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3e1274f2b99cb99c03cc8e2c6517c37d330b597a 16-Jun-2010 Douglas Gregor <dgregor@apple.com> Canonicalize template template parameters when canonicalizing a
template name that refers to such a parameter. It's amazing that this
problem didn't surface earlier. Fixes PR7387.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1e1c7b4b83b25babcc6c6685a201721288b1341e 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Make sure result type of objc++ message expression is
complete before attempting to bind it to a temporary.
Fixes PR7386.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106130 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4266629ed62e3a0de5e2cb2dfb8e806f9bdc5f6 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Make sure result type of objc++ message expression is
complete before attempting to bind it to a temporary.
Fixes PR7386.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106130 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5f4a5f69d7a81187c9219254bbfd5685e4bd23cb 16-Jun-2010 Zhanyong Wan <wan@google.com> Test commit by adding a blank comment line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
2ac54ec0a8ad305fdd76847c2fd6631cfb7baa82 16-Jun-2010 Zhanyong Wan <wan@google.com> Test commit by adding a blank comment line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
9388e882c413cd3d9720f708bfcd275fd69c2be0 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Allow passing -cc1 level arguments to plugins. Patch by Troy Straszheim!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106113 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendAction.h
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
3177aae51a21f61ab483c52f97124bdb707da7f1 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Allow passing -cc1 level arguments to plugins. Patch by Troy Straszheim!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106113 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendAction.h
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
c31f784cea540af7e41affbde170d60e47a21315 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Ignore -ffast-math and -f[no-]finite-math-only.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106112 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7ccecb72cb8e0a77139526bd090cf8c68ba178cd 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Ignore -ffast-math and -f[no-]finite-math-only.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106112 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f3445fac2dbed94a87389bab434a2fefe5d419c2 16-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Downgrade the error when using a typedef in the nested-name-specifier
of an explicit instantiation to an ExtWarn, since nobody else seems to
diagnose this problem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106109 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a2dd828ce66a67bc21c3a553e2d99ca4f182d923 16-Jun-2010 Douglas Gregor <dgregor@apple.com> Downgrade the error when using a typedef in the nested-name-specifier
of an explicit instantiation to an ExtWarn, since nobody else seems to
diagnose this problem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106109 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0f030642dd0f7a166feefb692626e2527a49909d 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Fixed conflict between objc_memmove_collectable builtin
decl. and one ddefined in darwin header file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106107 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
8e2eab27056a78bf1db50ee09929438ed5ea9d93 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Fixed conflict between objc_memmove_collectable builtin
decl. and one ddefined in darwin header file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106107 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
25560122fbc4a39c864695b170e4ff9009e1f273 16-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Revert r106099; it broke self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106100 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclTemplate.h
ST/Type.h
efed5c832de630715dd42211dd3b2aab5dd97a1b 16-Jun-2010 Douglas Gregor <dgregor@apple.com> Revert r106099; it broke self-host.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106100 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclTemplate.h
ST/Type.h
a7bf34440df135029859cedd15a83072dc08ae66 16-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TemplateTypeParmType::getDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclTemplate.h
ST/Type.h
6cd8087e66d706f2317865f86c865fd9bc6969c9 16-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TemplateTypeParmType::getDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclTemplate.h
ST/Type.h
f9d3b7cebcd83f5a0d8bc07b7d46f1c6cce082fd 16-Jun-2010 Zhongxing Xu <xuzhongxing@gmail.com> We return Loc where we know.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106087 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
bd409d040bffef3e7ba862941dd706b1f7021141 16-Jun-2010 Zhongxing Xu <xuzhongxing@gmail.com> We return Loc where we know.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106087 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
12b4f77d61b42f2728e457dc7dce2fe60880a1c2 16-Jun-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add StreamChecker. This checker models and checks stream manipulation functions.
This is the start.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106082 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
c196095fa0b83d10b2c20fccfcb8198ee66451aa 16-Jun-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add StreamChecker. This checker models and checks stream manipulation functions.
This is the start.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106082 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
7fcbab0d9ed96afbdcc3dd4ad876bcbf452fd25f 16-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Give Type::isIntegralType() an ASTContext parameter, so that it
provides C "integer type" semantics in C and C++ "integral type"
semantics in C++.

Note that I still need to update isIntegerType (and possibly other
predicates) using the same approach I've taken for
isIntegralType(). The two should have the same meaning, but currently
don't (!).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9d3347a5887d2d25afe8b0bd35783a72ec86cce2 16-Jun-2010 Douglas Gregor <dgregor@apple.com> Give Type::isIntegralType() an ASTContext parameter, so that it
provides C "integer type" semantics in C and C++ "integral type"
semantics in C++.

Note that I still need to update isIntegerType (and possibly other
predicates) using the same approach I've taken for
isIntegralType(). The two should have the same meaning, but currently
don't (!).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
59327f06fa557d652e0560e6895c93db70ea5ec7 16-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce Type::isIntegralOrEnumerationType(), to cover those places
in C++ that involve both integral and enumeration types. Convert all
of the callers to Type::isIntegralType() that are meant to work with
both integral and enumeration types over to
Type::isIntegralOrEnumerationType(), to prepare to eliminate
enumeration types as integral types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
2ade35e2cfd554e49d35a52047cea98a82787af9 16-Jun-2010 Douglas Gregor <dgregor@apple.com> Introduce Type::isIntegralOrEnumerationType(), to cover those places
in C++ that involve both integral and enumeration types. Convert all
of the callers to Type::isIntegralType() that are meant to work with
both integral and enumeration types over to
Type::isIntegralOrEnumerationType(), to prepare to eliminate
enumeration types as integral types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
cd76ed8d5422128fddeb7d0bd0aed6274d43c9c2 16-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Move CodeGenOptions.h *back* into Frontend. This should have been done when the
dependency edge was reversed such that CodeGen depends on Frontend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106065 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
rontend/CodeGenOptions.h
rontend/CompilerInvocation.h
06057cef0bcd7804e80f3ce2bbe352178396c715 16-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Move CodeGenOptions.h *back* into Frontend. This should have been done when the
dependency edge was reversed such that CodeGen depends on Frontend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106065 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
rontend/CodeGenOptions.h
rontend/CompilerInvocation.h
3c4b2d89607c852447bc632b4962add54d321fa7 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Patch adds support for copying of those
objective-c++ class objects which have GC'able objc object
pointers and need to use ObjC's objc_memmove_collectable
API (radar 8070772).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
55bcace250e1ff366e4482714b344b8cbc8be5f3 16-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Patch adds support for copying of those
objective-c++ class objects which have GC'able objc object
pointers and need to use ObjC's objc_memmove_collectable
API (radar 8070772).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
07022fe28c83b67459b518649842c570dc4eda42 15-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Update equality and relationship comparisons of pointers to reflect
C++ semantics, eliminating an extension diagnostic that doesn't match
C++ semantics (ordered comparison with NULL) and tightening some
extwarns to errors in C++ to match GCC and maintain conformance in
SFINAE contexts. Fixes <rdar://problem/7941392>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e5122c8ce152e19355b707d952ab53fe58bd7ad 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Update equality and relationship comparisons of pointers to reflect
C++ semantics, eliminating an extension diagnostic that doesn't match
C++ semantics (ordered comparison with NULL) and tightening some
extwarns to errors in C++ to match GCC and maintain conformance in
SFINAE contexts. Fixes <rdar://problem/7941392>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
83b724f3af834f993bf0162ced6a67045622cc18 15-Jun-2010 Chris Lattner <sabre@nondot.org> fix the various buildbot failures by ensuring that tokens are really completely initialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106043 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
c54539cd173e20d8b179b9488fabfc5eb4cf5ee6 15-Jun-2010 Chris Lattner <sabre@nondot.org> fix the various buildbot failures by ensuring that tokens are really completely initialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106043 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
fba74842b08b8c1cd5ea9d1c4968cde0db848703 15-Jun-2010 Daniel Dunbar <daniel@zuster.org> Break Frontend's dependency on Rewrite, Checker and CodeGen in shared library configuration

Currently, all AST consumers are located in the Frontend library,
meaning that in a shared library configuration, Frontend has a
dependency on Rewrite, Checker and CodeGen. This is suboptimal for
clients which only wish to make use of the frontend. CodeGen in
particular introduces a large number of unwanted dependencies.

This patch breaks the dependency by moving all AST consumers with
dependencies on Rewrite, Checker and/or CodeGen to their respective
libraries. The patch therefore introduces dependencies in the other
direction (i.e. from Rewrite, Checker and CodeGen to Frontend).

After applying this patch, Clang builds correctly using CMake and
shared libraries ("cmake -DBUILD_SHARED_LIBS=ON").

N.B. This patch includes file renames which are indicated in the
patch body.

Changes in this revision of the patch:
- Fixed some copy-paste mistakes in the header files
- Modified certain aspects of the coding to comply with the LLVM
Coding Standards

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106010 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/AnalysisConsumer.h
hecker/FrontendActions.h
hecker/PathDiagnosticClients.h
odeGen/BackendUtil.h
odeGen/CodeGenAction.h
rontend/ASTConsumers.h
rontend/AnalysisConsumer.h
rontend/AnalyzerOptions.h
rontend/BackendUtil.h
rontend/CodeGenAction.h
rontend/CompilerInvocation.h
rontend/FixItRewriter.h
rontend/FrontendActions.h
rontend/PathDiagnosticClients.h
rontend/Utils.h
ewrite/ASTConsumers.h
ewrite/FixItRewriter.h
ewrite/FrontendActions.h
ewrite/Rewriters.h
9b414d3e2d0cb84512b55a3275a98490b090162a 15-Jun-2010 Daniel Dunbar <daniel@zuster.org> Break Frontend's dependency on Rewrite, Checker and CodeGen in shared library configuration

Currently, all AST consumers are located in the Frontend library,
meaning that in a shared library configuration, Frontend has a
dependency on Rewrite, Checker and CodeGen. This is suboptimal for
clients which only wish to make use of the frontend. CodeGen in
particular introduces a large number of unwanted dependencies.

This patch breaks the dependency by moving all AST consumers with
dependencies on Rewrite, Checker and/or CodeGen to their respective
libraries. The patch therefore introduces dependencies in the other
direction (i.e. from Rewrite, Checker and CodeGen to Frontend).

After applying this patch, Clang builds correctly using CMake and
shared libraries ("cmake -DBUILD_SHARED_LIBS=ON").

N.B. This patch includes file renames which are indicated in the
patch body.

Changes in this revision of the patch:
- Fixed some copy-paste mistakes in the header files
- Modified certain aspects of the coding to comply with the LLVM
Coding Standards

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106010 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/AnalysisConsumer.h
hecker/FrontendActions.h
hecker/PathDiagnosticClients.h
odeGen/BackendUtil.h
odeGen/CodeGenAction.h
rontend/ASTConsumers.h
rontend/AnalysisConsumer.h
rontend/AnalyzerOptions.h
rontend/BackendUtil.h
rontend/CodeGenAction.h
rontend/CompilerInvocation.h
rontend/FixItRewriter.h
rontend/FrontendActions.h
rontend/PathDiagnosticClients.h
rontend/Utils.h
ewrite/ASTConsumers.h
ewrite/FixItRewriter.h
ewrite/FrontendActions.h
ewrite/Rewriters.h
e20fe742fcb704d5ba9dcafa1bb47488053e6652 15-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Allocate template parameter lists for out-of-line definitions via the
ASTContext rather than via the normal heap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c722ea4fbf886d6460b256b5e819a4ee751d5fff 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Allocate template parameter lists for out-of-line definitions via the
ASTContext rather than via the normal heap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2951755e71ff826af2b7ab12b34b5c6e4d662222 15-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Implement -fvisibility-inlines-hidden. <rdar://problem/7819834>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
7cf84d66965a7706004d8590b5af5fe54b85f525 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Implement -fvisibility-inlines-hidden. <rdar://problem/7819834>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
310bbc1dc656701f812a5eaa9f5ef52efe7dc769 15-Jun-2010 Daniel Dunbar <daniel@zuster.org> Add <cstddef> include to get ptrdiff_t, for gcc-4.6; patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
ewrite/RewriteRope.h
ea3fe7c72b73ae09070ced4dc12ddbfbd29c0b1a 15-Jun-2010 Daniel Dunbar <daniel@zuster.org> Add <cstddef> include to get ptrdiff_t, for gcc-4.6; patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
ewrite/RewriteRope.h
6cc15814fa9598e449ef5c8cccd5ba8158aacb69 15-Jun-2010 Chris Lattner <sabre@nondot.org> fix the inline asm diagnostics to emit the error on the primary
source code location instead of on the note. Previously we generated:

<inline asm>:1:2: error: unrecognized instruction
barf
^
t.c:4:8: note: generated from here
asm ("barf");
^

Now we generate:

t.c:4:8: error: unrecognized instruction
asm ("barf");
^
<inline asm>:1:2: note: instantated into assembly here
barf
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
99e14a04887570b11df90daf2e8a7adf84599b01 15-Jun-2010 Chris Lattner <sabre@nondot.org> fix the inline asm diagnostics to emit the error on the primary
source code location instead of on the note. Previously we generated:

<inline asm>:1:2: error: unrecognized instruction
barf
^
t.c:4:8: note: generated from here
asm ("barf");
^

Now we generate:

t.c:4:8: error: unrecognized instruction
asm ("barf");
^
<inline asm>:1:2: note: instantated into assembly here
barf
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
113737e3e3516a0196de4665041736046aefb73e 15-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Warn when a 'typename' or a 'template' keyword refers to a
non-dependent type or template name, respectively, in C++98/03. Fixes
PR7111 and <rdar://problem/8002682>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
732281de5d518fca96c449ae185ee56bde422c4f 15-Jun-2010 Douglas Gregor <dgregor@apple.com> Warn when a 'typename' or a 'template' keyword refers to a
non-dependent type or template name, respectively, in C++98/03. Fixes
PR7111 and <rdar://problem/8002682>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
93a89ae3ec17c53cf32fe05c956eb2145e35f530 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Dissect -Wl, and -Xlinker arguments to remove --no-demangle, which was a
collect2 option that is passed by some projects (notably WebKit).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105964 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Options.td
f78925f633e949f06521d9ffd937019e59f35efc 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Dissect -Wl, and -Xlinker arguments to remove --no-demangle, which was a
collect2 option that is passed by some projects (notably WebKit).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105964 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Options.td
23b33f2e28ea00cb7b0651882ef60953a15d1dd3 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate uses of Arg::getIndex.

Also, fix a memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105963 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
0e10031ba5d0f9b3e5bc5570f39382d288779ab8 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate uses of Arg::getIndex.

Also, fix a memory leak.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105963 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
c31587c41bcd8d5daae14c8317380cd10884a839 14-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Put warnings about designated initializations overridding prior
initializations into their own warning group, initializer-overrides,
which is part of -Wextra. Patch by william@25thandClement.com, fixes
PR6934!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105961 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
57dc2fc543e4cd3def9d27f22349f5b3c6513f4c 14-Jun-2010 Douglas Gregor <dgregor@apple.com> Put warnings about designated initializations overridding prior
initializations into their own warning group, initializer-overrides,
which is part of -Wextra. Patch by william@25thandClement.com, fixes
PR6934!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105961 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
bb6d52040bc4a5a090c22a9e2645577d7e9dad93 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add DerivedArgList::AddFOOArg helper functions, and switch to using them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105957 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
9d0863b22faef1678eb191bbab7268809be60a96 14-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add DerivedArgList::AddFOOArg helper functions, and switch to using them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105957 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
53da3a4c313c1e716170cc0be6612d733daad2a5 14-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Teach TemplateDecl::getSourceRange() to cover the entire declaration,
from Peter Collingbourne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
80484d0de0dccee66d9f1760127c3e6e218987da 14-Jun-2010 Douglas Gregor <dgregor@apple.com> Teach TemplateDecl::getSourceRange() to cover the entire declaration,
from Peter Collingbourne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
486c883ca29f6b50bb8ded372ad5bb2970fd4101 13-Jun-2010 John McCall <rjmccall@apple.com> TemplateSpecializationType's isCurrentInstantiation bit can be derived
from its canonical type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
71d74bc0d6e522ce7c21a599db8e19d3883b518f 13-Jun-2010 John McCall <rjmccall@apple.com> TemplateSpecializationType's isCurrentInstantiation bit can be derived
from its canonical type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
5dd8130f302adfcefee70419418748c5d9853cae 13-Jun-2010 Nate Begeman <natebegeman@mac.com> Most of NEON sema checking & fix to polynomial type detection


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105908 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0d15c5321a11a5fee53b17ca8e9e0d72d6192b23 13-Jun-2010 Nate Begeman <natebegeman@mac.com> Most of NEON sema checking & fix to polynomial type detection


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105908 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
82ef66d98dea0c892d84553cf24ef55efb9a6c31 12-Jun-2010 Charles Davis <cdavis@mines.edu> Really make the Itanium C++ ABI the default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetOptions.h
b661eed4d9ee7a8213e7c79afb8675ab92c1c878 12-Jun-2010 Charles Davis <cdavis@mines.edu> Really make the Itanium C++ ABI the default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetOptions.h
e126f73aaca758b4076d26ab25ef02ed99e9240b 12-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added template parameters info for out-of-line definitions of class template methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9b9348889d85fc9daf943c64e3ac3fb021a4f028 12-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added template parameters info for out-of-line definitions of class template methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f6ac61987ba4f5b95eb97817253664121c69cab5 12-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Don't omit class explicit instantiation from AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
c98971d5c994caed9452aeadd0122c855e0f4de1 12-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Don't omit class explicit instantiation from AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
6e2e474cd2f1310c6c951a3d94df28704b7f1a88 12-Jun-2010 Nate Begeman <natebegeman@mac.com> vbsl, vrev* is implemented via arm_neon.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105875 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
cba9421f5c9f784bd32fcddf55b6af4b6e024904 12-Jun-2010 Nate Begeman <natebegeman@mac.com> vbsl, vrev* is implemented via arm_neon.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105875 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
3b566498b52227123af5d3fc1baef3e75f886f15 12-Jun-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Fix PCH issue. Attributes of a declaration were truncated to just one when the decl was read from a PCH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105852 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1715bf5ed87c792c63278e739bc492921d512a88 12-Jun-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix PCH issue. Attributes of a declaration were truncated to just one when the decl was read from a PCH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105852 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
fb23a09db7bd093cdbe04189530e8c2fe3e644af 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Switch Compilation to return the translated arguments by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105844 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
be21cd0f07726045367861d3882d18ef30f6a30c 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Switch Compilation to return the translated arguments by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105844 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
cd12027b8da28e40b275cfe92a12cee83ded7763 12-Jun-2010 Chris Lattner <sabre@nondot.org> add a -W flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6370a1b1f22e407fc71d3975a6c96b0234b5688d 12-Jun-2010 Chris Lattner <sabre@nondot.org> add a -W flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16b4767bacedd8847437aa280cfefae6b75ea352 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit argument translation phase to the driver itself. We are going to need this to handle things like -Xassembler, -Xpreprocessor, and -Xlinker which we might have to introspect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105842 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Compilation.h
river/Driver.h
river/ToolChain.h
279c1dbebf37cd128f3c73c70741a6b8c35ad025 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit argument translation phase to the driver itself. We are going to need this to handle things like -Xassembler, -Xpreprocessor, and -Xlinker which we might have to introspect.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105842 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Compilation.h
river/Driver.h
river/ToolChain.h
50547ce57e1b8081ba7e711554b5ba5aa98cb61c 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Get rid of the proxy support in DerivedArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105841 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
3612bc80fabcdd337f6d1df06e69b38c2c5f5a32 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Get rid of the proxy support in DerivedArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105841 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
7f3ffed4dc34e302c96d6ebc2792de362552d105 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change OptTable::ParseArg to take any ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105839 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptTable.h
river/Option.h
785e7963343c91c16e6d7c8f301eee145d06da5b 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change OptTable::ParseArg to take any ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105839 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptTable.h
river/Option.h
93917b47ee01d6d44dd5e735ec9275be58af79e3 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix arg_iterator typing to reflect that it is really an iterator over Arg*s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105838 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
7e4953e5c60409007545288f14b430bd23d68570 12-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix arg_iterator typing to reflect that it is really an iterator over Arg*s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105838 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
a43550aaf54e10207fc8e05c90ab03c8eb83e510 11-Jun-2010 Daniel Dunbar <daniel@zuster.org> Preprocessor: Ignore unknown pragmas in -E -dM and -Eonly modes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105830 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
c72cc5072cdc1a1a6e05f9d0f962f293a69248c4 11-Jun-2010 Daniel Dunbar <daniel@zuster.org> Preprocessor: Ignore unknown pragmas in -E -dM and -Eonly modes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105830 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
08652dede341124aa0bd6a1045321277f3ee09d2 11-Jun-2010 Chris Lattner <sabre@nondot.org> preprocessor directives in macro arguments aren't standard,
hopefully this unbreaks msvc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ae6de57e6c823471f04a15dbfbbb39449d4d1e56 11-Jun-2010 Chris Lattner <sabre@nondot.org> preprocessor directives in macro arguments aren't standard,
hopefully this unbreaks msvc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7b44111a5cc88212fa9111c6fabdbfc5bc1989fc 11-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Add a few FIXMEs: recursing over shadow decls, and semantics vs
syntactic iterating over initializer exprs. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
40498cdfe09f6dfa939ca98cb9507aebaae3436f 11-Jun-2010 Craig Silverstein <csilvers2000@yahoo.com> Add a few FIXMEs: recursing over shadow decls, and semantics vs
syntactic iterating over initializer exprs. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
02cd8e64ab4b62f88c62f63320ddd17466764022 11-Jun-2010 John McCall <rjmccall@apple.com> Don't store ASTContext references in the TST nodes just to support profiling.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ef99001908e799c388f1363b1e607dad5f5b57d3 11-Jun-2010 John McCall <rjmccall@apple.com> Don't store ASTContext references in the TST nodes just to support profiling.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
4bf99130178f92af4eb958837bff9d6266f06227 11-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Add an option -fshow-overloads=best|all to limit the number of overload
candidates printed. We default to 'all'. At the moment, 'best' prints only
the first 4 overloads, but we'll improve that over time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105815 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
5edbdcc62098e305cd55654814dcf783a3f3c477 11-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Add an option -fshow-overloads=best|all to limit the number of overload
candidates printed. We default to 'all'. At the moment, 'best' prints only
the first 4 overloads, but we'll improve that over time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105815 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
fed3a2b1dfd4e96b8bf74851e80e2f162f81b4ec 11-Jun-2010 Charles Davis <cdavis@mines.edu> Add an option to specify the target C++ ABI to the frontend. Use it to
select either the default Itanium ABI or the new, experimental Microsoft ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105804 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/TargetInfo.h
asic/TargetOptions.h
river/CC1Options.td
98b7c5c496dfccb39287b8f7d8f1444594936d10 11-Jun-2010 Charles Davis <cdavis@mines.edu> Add an option to specify the target C++ ABI to the frontend. Use it to
select either the default Itanium ABI or the new, experimental Microsoft ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105804 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/TargetInfo.h
asic/TargetOptions.h
river/CC1Options.td
08fa3b16948564b664aeefb40002acf8811f67c0 11-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Improve readability with TRY_TO, remove a redundant comment, and fix one aspect
of the recursion on VarDecls. Patch by Craig Silverstein.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
6c321e35008f2c99eeb1409b43859a04c48e5ce5 11-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Improve readability with TRY_TO, remove a redundant comment, and fix one aspect
of the recursion on VarDecls. Patch by Craig Silverstein.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
52b136ace347ee82e11145927e37980157bacb35 11-Jun-2010 John McCall <rjmccall@apple.com> Split DependentNameType into two types. DependentNameType represents the
case of an elaborated-type-specifier like 'typename A<T>::foo', and
DependentTemplateSpecializationType represents the case of an
elaborated-type-specifier like 'typename A<T>::template B<T>'. The TypeLoc
representation of a DependentTST conveniently exactly matches that of an
ElaboratedType wrapping a TST.

Kill off the explicit rebuild methods for RebuildInCurrentInstantiation;
the standard implementations work fine because the nested name specifier
is computable in the newly-entered context.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/TypeXML.def
33500955d731c73717af52088b7fc0e7a85681e7 11-Jun-2010 John McCall <rjmccall@apple.com> Split DependentNameType into two types. DependentNameType represents the
case of an elaborated-type-specifier like 'typename A<T>::foo', and
DependentTemplateSpecializationType represents the case of an
elaborated-type-specifier like 'typename A<T>::template B<T>'. The TypeLoc
representation of a DependentTST conveniently exactly matches that of an
ElaboratedType wrapping a TST.

Kill off the explicit rebuild methods for RebuildInCurrentInstantiation;
the standard implementations work fine because the nested name specifier
is computable in the newly-entered context.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecursiveASTVisitor.h
ST/TemplateBase.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/TypeXML.def
444706b435979b277818610a1367d1e550a1680c 11-Jun-2010 John McCall <rjmccall@apple.com> Provide a method to clear the current state of a TypeLocBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocBuilder.h
480076c3defdcaf07e8a87c81930da467a702425 11-Jun-2010 John McCall <rjmccall@apple.com> Provide a method to clear the current state of a TypeLocBuilder.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocBuilder.h
da473eaa999f79b7ca5b1ec431e091b3cc81294a 11-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Avoid repeating the list of operators twice in RecursiveASTVisitor through
a set of preprocessor macros. Patch by Zhanyong Wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105796 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7d66f8cafd807e551efb4739cdb37fc272cf5345 11-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Avoid repeating the list of operators twice in RecursiveASTVisitor through
a set of preprocessor macros. Patch by Zhanyong Wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105796 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7681f51e310d4c27eece9ee710e69d7eabda984e 11-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Tweak a comment on the visitor to clarify one order of visit issue. Patch from
Zhanyong Wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b5c202f9e4f6d0f230d5cb8848779259ebf95b7f 11-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Tweak a comment on the visitor to clarify one order of visit issue. Patch from
Zhanyong Wan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ac8901a2f1a5ec1a9a0ae985eb4cec3aafc0fcd2 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Also mark -F as RenderJoined, the linker doesn't like "-F FOO" either.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105789 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ed5d5eea46a6fe7ed22ed97f00a60c16d1f7e7a5 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Also mark -F as RenderJoined, the linker doesn't like "-F FOO" either.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105789 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a91bdaf5ba082ab564e6833ce3c0bff95bcc0d3c 10-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Another chunk of the new RecursiveASTVisitor implementation: switch the return
value semantics such that we recurse while the visitors return true, and halt
as soon as one returns false. Patch by csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
e3e210c3aa3c1b289eee669a1d235fc16df384a0 10-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Another chunk of the new RecursiveASTVisitor implementation: switch the return
value semantics such that we recurse while the visitors return true, and halt
as soon as one returns false. Patch by csilvers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b6a209378b5c6340bf2f8a91964f83689def886e 10-Jun-2010 Nate Begeman <natebegeman@mac.com> support _lane ops, and multiplies by scalar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105770 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
d075c01c359b9cc120c3accc7166990f9f4ac423 10-Jun-2010 Nate Begeman <natebegeman@mac.com> support _lane ops, and multiplies by scalar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105770 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
8554f0970464b6d37df4dc6cda23de26dbe33b2f 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: -L should be marked as RenderJoined, the linker doesn't like "-L FOO".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105765 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
482f1c8c4dd6e4a85ecc6f791ad377c58f8632bf 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: -L should be marked as RenderJoined, the linker doesn't like "-L FOO".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105765 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
84a759d7367d6840c24fe3433197c306159b5ccd 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate flags on aliases, they are unnecessary (and unused).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105764 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
8a9b18c04ccfb2abcec831f41c6e05f399c48406 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate flags on aliases, they are unnecessary (and unused).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105764 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
01824fd0db4ec4b725b2503eda64adf834f5be46 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Option parsing to always create arguments referring to unaliased
options.
- This matches the intent of the .td files, and will simplify alias handling.
- PR7321.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105763 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
3856ab3502676efabceb91fc5ca978810a35aeca 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Option parsing to always create arguments referring to unaliased
options.
- This matches the intent of the .td files, and will simplify alias handling.
- PR7321.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105763 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7f7a407f4b95e46125e51b2a11665545a526de00 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate Arg subclasses, which are now unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105762 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
532c1ec307b8689e95896a11ce5ae4661fa9e5d3 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Eliminate Arg subclasses, which are now unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105762 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
04a157dccba420d25b9b1847dfb553c93f935e88 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Keep the rendering style in the option, instead of as part of the Arg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105761 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Option.h
e375c4a02ac6e18b166a067b8226e15a1ab009e7 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Keep the rendering style in the option, instead of as part of the Arg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105761 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Option.h
410c23d634c4215f04c6623f73e07e682255ccf3 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Arg to just hold the values directly, instead of implicitly
deriving them from the Arg type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105760 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
4465a776a56de81211ae4672e5782c6bef075135 10-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Arg to just hold the values directly, instead of implicitly
deriving them from the Arg type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105760 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
c121a01d04475a5e6b36de7e30adc67914c86c4c 09-Jun-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Fix two typos in comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105751 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
515ddd8f7a36fc2684492c13665642153fc690c0 09-Jun-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Fix two typos in comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105751 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
f6fd1f35a7115cb9e39f6d3b4abfe772e7ecb608 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert "Driver: Change Option parsing to always create arguments referring to
unaliased", this isn't quite right yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105747 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e5af3b3eef8dd3b2b9516f89825d0f0b4d09c0cf 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Revert "Driver: Change Option parsing to always create arguments referring to
unaliased", this isn't quite right yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105747 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
2d4fb135115d5a972326871e446af705cc6ae05e 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Option parsing to always create arguments referring to unaliased
options.
- This matches the intent of the .td files, and will simplify alias handling.
- PR7321.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105744 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
22685f40dbb458c0ef18f5fec35f4f7cdb0886c9 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Change Option parsing to always create arguments referring to unaliased
options.
- This matches the intent of the .td files, and will simplify alias handling.
- PR7321.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105744 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c8e5d5a1c815da662f5835d678ea6cee428ec174 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit offset to JoinedArg and JoinedAndSeparateArg, so that
they can be independent of the exact option that created them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105739 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
312a8b726e24078d3bd3b2328f9f895d1407cdb7 09-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit offset to JoinedArg and JoinedAndSeparateArg, so that
they can be independent of the exact option that created them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105739 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
ea990df18be44b10eccf8c70f7d55a000083cbc7 09-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement codegen for hadd, hsub, max, min, mlal, movl, movn, padal, mov_n
Make note about how to handle the dozen or so multiply by scalar ops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105734 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
df98e1d1da5ab1ca7c325378fc1c2eaa90a6476d 09-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement codegen for hadd, hsub, max, min, mlal, movl, movn, padal, mov_n
Make note about how to handle the dozen or so multiply by scalar ops.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105734 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
e6a9c1e8077cbcd71419141a50c5637294ad98a5 09-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added inherited info to template and non-type arguments of templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
d92f7a297c0ed3f7d0ebcbb557e1d4c1925b8c72 09-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added inherited info to template and non-type arguments of templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
8b88f6aaa408a4b026615a2fb474e5fe6032c0f7 09-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Major redesign of the RecursiveASTVisitor. This implements the majority of the
new design discussed on cfe-dev, with further steps in that direction to come.
It is already much more complete than the previous visitor.

Patch by Zhanyong and Craig with 80 column wraps and one missing declaration
added by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
dfc35e33177a433b56454f1d2b5e53734f65b288 09-Jun-2010 Chandler Carruth <chandlerc@gmail.com> Major redesign of the RecursiveASTVisitor. This implements the majority of the
new design discussed on cfe-dev, with further steps in that direction to come.
It is already much more complete than the previous visitor.

Patch by Zhanyong and Craig with 80 column wraps and one missing declaration
added by me.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
58b3a5326e3288553b266acfb9e59be0549e8351 09-Jun-2010 Nate Begeman <natebegeman@mac.com> More accurate BuiltinsARM.def
vget_lane support


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
95450f6ffc89ee218faa550433265f80930469c4 09-Jun-2010 Nate Begeman <natebegeman@mac.com> More accurate BuiltinsARM.def
vget_lane support


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
c040236caae574e37816ac38f8b48b8fbeab0d41 09-Jun-2010 Tom Care <tcare@apple.com> Added FixIt support to printf format string checking.
- Refactored LengthModifier to be a class.
- Added toString methods in all member classes of FormatSpecifier.
- FixIt suggestions keep user specified flags unless incorrect.

Limitations:
- The suggestions are not conversion specifier sensitive. For example, if we have a 'pad with zeroes' flag, and the correction is a string conversion specifier, we do not remove the flag. Clang will warn us on the next compilation.

A test/Sema/format-strings-fixit.c
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
M lib/Sema/SemaChecking.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105680 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
3bfc5f49e0e37e235bb0d33bcbcb36af9d1f84ab 09-Jun-2010 Tom Care <tcare@apple.com> Added FixIt support to printf format string checking.
- Refactored LengthModifier to be a class.
- Added toString methods in all member classes of FormatSpecifier.
- FixIt suggestions keep user specified flags unless incorrect.

Limitations:
- The suggestions are not conversion specifier sensitive. For example, if we have a 'pad with zeroes' flag, and the correction is a string conversion specifier, we do not remove the flag. Clang will warn us on the next compilation.

A test/Sema/format-strings-fixit.c
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
M lib/Sema/SemaChecking.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105680 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
68d94c7f72d49fad4aaf3eaaf472f9047934fd4a 09-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Tweak our handling of the notion of a standard conversion sequence
being a subsequence of another standard conversion sequence. Instead
of requiring exact type equality for the second conversion step,
require type *similarity*, which is type equality with cv-qualifiers
removed at all levels. This appears to match the behavior of EDG and
VC++ (albeit not GCC), and feels more intuitive. Big thanks to John
for the line of reasoning that supports this change: since
cv-qualifiers are orthogonal to the second conversion step, we should
ignore them in the type comparison.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105678 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5a57efd7bf88a4a13018e0471ded8063a4abe8af 09-Jun-2010 Douglas Gregor <dgregor@apple.com> Tweak our handling of the notion of a standard conversion sequence
being a subsequence of another standard conversion sequence. Instead
of requiring exact type equality for the second conversion step,
require type *similarity*, which is type equality with cv-qualifiers
removed at all levels. This appears to match the behavior of EDG and
VC++ (albeit not GCC), and feels more intuitive. Big thanks to John
for the line of reasoning that supports this change: since
cv-qualifiers are orthogonal to the second conversion step, we should
ignore them in the type comparison.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105678 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
453bb15609d94a406796543f4b9421c97f8f40b6 09-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement transpose/zip/unzip & table lookup.
Test out some basic constant-checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
1c2a88cfaeb11227d3a6bf7204207e0c8cf6de6f 09-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement transpose/zip/unzip & table lookup.
Test out some basic constant-checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
522fb671290dd5462bfd819401768686fa53e925 09-Jun-2010 Tom Care <tcare@apple.com> Added helper function to Type class to determine if a type is a builtin type. This complements the existing function that determines if a type is a specific builtin type.

Modified:
include/clang/AST/Type.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105664 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9b065ddabf572772991a4aadad5bf4921fac5069 09-Jun-2010 Tom Care <tcare@apple.com> Added helper function to Type class to determine if a type is a builtin type. This complements the existing function that determines if a type is a specific builtin type.

Modified:
include/clang/AST/Type.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105664 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
608b5793179e667766022a3710204a676f3e350f 09-Jun-2010 Anders Carlsson <andersca@mac.com> On Darwin, initialization and destruction functions should go into the __StaticInit section.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
18af368c080b9d60e34e670cd01f7d2d3ad2ba48 09-Jun-2010 Anders Carlsson <andersca@mac.com> On Darwin, initialization and destruction functions should go into the __StaticInit section.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e55e5e35d511ea62e635374aeca1c09ba7ce6d88 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Makefile: Switch Clang Makefiles to always include the top-level Clang Makefile.
- This eliminates most dependencies on how Clang is installed relative to LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Makefile
asic/Makefile
river/Makefile
akefile
afed099bd2e759efd4bb63fdc525d3445f94cc13 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Makefile: Switch Clang Makefiles to always include the top-level Clang Makefile.
- This eliminates most dependencies on how Clang is installed relative to LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Makefile
asic/Makefile
river/Makefile
akefile
5d8e67ed117c2e0a19acaa8d8f7c7dd900011b60 08-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Warn about comparisons between arrays and improve self-comparison
warnings, from Troy Straszheim! Fixes PR6163.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d64fdd0c056f1e50488519254f852fa8050f0470 08-Jun-2010 Douglas Gregor <dgregor@apple.com> Warn about comparisons between arrays and improve self-comparison
warnings, from Troy Straszheim! Fixes PR6163.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6b9f87087f4df474a5d3daee287f01618644150c 08-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> Implement a warning when converting the literal 'false' to a
pointer. Original patch by Troy D. Straszheim; fixes PR7283.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d7a95971bd91b21922e5e878ba05bbe42b585cc9 08-Jun-2010 Douglas Gregor <dgregor@apple.com> Implement a warning when converting the literal 'false' to a
pointer. Original patch by Troy D. Straszheim; fixes PR7283.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c728d2433415d2830287af76b9be46d6b81e4f7a 08-Jun-2010 Benjamin Kramer <benny.kra@googlemail.com> Token is POD-like.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105604 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
1c573cb0e06bac4e557123703069da7dd45d3dc0 08-Jun-2010 Benjamin Kramer <benny.kra@googlemail.com> Token is POD-like.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105604 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
702405a46f56c2ca05f951085fb5aeff1272f108 08-Jun-2010 Nate Begeman <natebegeman@mac.com> Fix NEON intrinsic argument passing, support vext. Most now successfully make it through codegen to the .s file


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
30d91718a676177f0d0d0210ce4fdb4f616df6e5 08-Jun-2010 Nate Begeman <natebegeman@mac.com> Fix NEON intrinsic argument passing, support vext. Most now successfully make it through codegen to the .s file


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
240a452b42fddbd14afc7f6949703f9df9fdb537 08-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Implement -fcaret-diagnostics to undo -fno-caret-diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105597 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0ea22fdfda0558393950cef5db50d050e3eb1e60 08-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Implement -fcaret-diagnostics to undo -fno-caret-diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105597 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
ca9d6c02dfacc19957841cbe0bf50730a85443c4 08-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement ARM NEON up through vcvt, alphabetically.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
9eb65a56e18bee1e5392bf2dff01cbd7b895f685 08-Jun-2010 Nate Begeman <natebegeman@mac.com> Implement ARM NEON up through vcvt, alphabetically.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
6da157d078ddaf5126a4011d182ab66294924c61 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support invoking Clang on .ll or .bc inputs.
- We actually pretend that we have two separate types for LLVM assembly/bitcode because we need to use the standard suffixes with LTO ('clang -O4 -c t.c' should generate 't.o').

It is now possible to do something like:
$ clang -emit-llvm -S t.c -o t.ll ... assorted other compile flags ...
$ clang -c t.ll -o t.o ... assorted other compile flags ...
and expect that the output will be almost* identical to:
$ clang -c t.c -o t.o ... assorted other compile flags ...
because all the target settings (default CPU, target features, etc.) will all be initialized properly by the driver/frontend.

*: This isn't perfect yet, because in practice we will end up running the optimization passes twice. It's possible to get something equivalent out with a well placed -mllvm -disable-llvm-optzns, but I'm still thinking about the cleanest way to solve this problem more generally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105584 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
river/Types.h
6c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support invoking Clang on .ll or .bc inputs.
- We actually pretend that we have two separate types for LLVM assembly/bitcode because we need to use the standard suffixes with LTO ('clang -O4 -c t.c' should generate 't.o').

It is now possible to do something like:
$ clang -emit-llvm -S t.c -o t.ll ... assorted other compile flags ...
$ clang -c t.ll -o t.o ... assorted other compile flags ...
and expect that the output will be almost* identical to:
$ clang -c t.c -o t.o ... assorted other compile flags ...
because all the target settings (default CPU, target features, etc.) will all be initialized properly by the driver/frontend.

*: This isn't perfect yet, because in practice we will end up running the optimization passes twice. It's possible to get something equivalent out with a well placed -mllvm -disable-llvm-optzns, but I'm still thinking about the cleanest way to solve this problem more generally.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105584 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
river/Types.h
3ba00f979a2385769bc39cfb2252bad422ed5cc4 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add CodeGenAction support for handling LLVM IR.
- This magically enables using 'clang -cc1' as a replacement for most of 'llvm-as', 'llvm-dis', 'llc' and 'opt' functionality.

For example, 'llvm-as' is:
$ clang -cc1 -emit-llvm-bc FOO.ll -o FOO.bc
and 'llvm-dis' is:
$ clang -cc1 -emit-llvm FOO.bc -o -
and 'opt' is, e.g.:
$ clang -cc1 -emit-llvm -O3 -o FOO.opt.ll FOO.ll
and 'llc' is, e.g.:
$ clang -cc1 -S -o - FOO.ll

The nice thing about using the backend tools this way is that they are guaranteed to exactly match how the compiler generates code (for example, setting the same backend options).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105583 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
rontend/FrontendAction.h
4cbbd94d0abeec2d7e7438d098527aa340d82389 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add CodeGenAction support for handling LLVM IR.
- This magically enables using 'clang -cc1' as a replacement for most of 'llvm-as', 'llvm-dis', 'llc' and 'opt' functionality.

The nice thing about using the backend tools this way is that they are guaranteed to exactly match how the compiler generates code (for example, setting the same backend options).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105583 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/ $ clang -cc1 -S -o - FOO.ll
/external/clang/ $ clang -cc1 -emit-llvm -O3 -o FOO.opt.ll FOO.ll
/external/clang/ and 'llc' is, e.g.:
/external/clang/ and 'llvm-dis' is:
/external/clang/ and 'opt' is, e.g.:
/external/clang/ $ clang -cc1 -emit-llvm FOO.bc -o -
/external/clang/ $ clang -cc1 -emit-llvm-bc FOO.ll -o FOO.bc
/external/clang/For example, 'llvm-as' is:
rontend/CodeGenAction.h
rontend/FrontendAction.h
b2f19d93581316bbc24232d5cb21e2456b0174cd 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add FrontendAction support for handling LLVM IR inputs.
- These inputs follow an abbreviated execution path, but are still worth handling by FrontendAction so they reuse all the other clang -cc1 features.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105582 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
faddc3e53a95c68f2c3a966e0f1e6eba110dafd6 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add FrontendAction support for handling LLVM IR inputs.
- These inputs follow an abbreviated execution path, but are still worth handling by FrontendAction so they reuse all the other clang -cc1 features.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105582 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
31872aeb4b269da230e208919b62f969b6074bdd 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> FrontendAction: Track active file kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105581 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
685ac6665a3f91f9a66a9f44b6bf755a0cd929ea 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> FrontendAction: Track active file kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105581 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
567dd6d28eb19059b7320dcd22dd1b1bdad51a9c 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Rename hasASTSupport to hasASTFileSupport, which is more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105580 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
rontend/FrontendActions.h
eb58d831b283a9fa030a2eccc6e23480108d2fa1 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Rename hasASTSupport to hasASTFileSupport, which is more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105580 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
rontend/FrontendActions.h
7bc60e6bbf3053b1c09889a69518c41400425e8a 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Change FrontendAction::BeginSourceFile to take the input kind instead of an IsAST bool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105578 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
d3598a65716e120aef45aa2841d730e03f7101fe 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Change FrontendAction::BeginSourceFile to take the input kind instead of an IsAST bool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105578 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
0327e4d2889dff7be09081612d739050c28cfd9d 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Lift InputKind enumeration to top level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105577 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
rontend/FrontendOptions.h
c34ce3fa613d5e4a283e53615fceafd17390445b 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Lift InputKind enumeration to top level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105577 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
rontend/FrontendOptions.h
1775ce89bfb6e4e2e12ab90fd14d79f6c1b790ae 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Drop unnecessary TargetData argument to EmitBackendOutput, we always
create modules which have target data strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105576 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/BackendUtil.h
05a7f3ddce9a88249b05b896e70f66e9ed381743 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Drop unnecessary TargetData argument to EmitBackendOutput, we always
create modules which have target data strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105576 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/BackendUtil.h
7e57b403c3b116ac039e8c7d9779912d73af8216 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Factor clang::EmitBackendOutput out of CodeGenAction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105575 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/BackendUtil.h
897c6768db8e09c692009280d9f1d71fb17023bf 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Factor clang::EmitBackendOutput out of CodeGenAction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105575 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/BackendUtil.h
d9cfd944264c27b84b837f39d57ed00f4f6a5b36 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add CodeGenOptions::SimplifyLibCalls, and eliminate LangOptions argument to BackendConsumer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105574 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
6b0cf67ae72a9ebb90e94cc9a14e09364a2b3466 08-Jun-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add CodeGenOptions::SimplifyLibCalls, and eliminate LangOptions argument to BackendConsumer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105574 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
6cd738cba242add05c6deafe2c0bdad7d12b55ce 07-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Implement __clear_cache on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105537 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
79ba509b0106fd0a1ff832baeb1fdb5430527efe 07-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Implement __clear_cache on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105537 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
e75208a31edf92f979fc2a75bf4887ae0b599357 07-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> PR7245: Make binding a reference to a temporary without a usable copy
constructor into an extension warning into the error that C++98 requires.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
57d12fd4a2bc739c4a4d62a364b7f08cd483c59e 07-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> PR7245: Make binding a reference to a temporary without a usable copy
constructor into an extension warning into the error that C++98 requires.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b9805b6ffe18062027f2150f0b701d2873617fc5 05-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added AccessSpecDecl node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DeclNodes.td
rontend/PCHBitCodes.h
arse/Action.h
6206d53f67613958ae1b023aba337ebb46f11a8b 05-Jun-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added AccessSpecDecl node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DeclNodes.td
rontend/PCHBitCodes.h
arse/Action.h
6dd301e90d114d029f51f8e2eff3328b8bf21a8c 05-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Add an extension to avoid an error when a global template has the same name as
a member template, and you try to call the member template with an explicit
template argument. See PR7247

For example, this downgrades the error to a warning in:

template<typename T> struct set{};
struct Value {
template<typename T>
void set(T value) {
}
};
void foo() {
Value v;
v.set<double>(3.2); // Warning here.
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
21d07e499e108752c9d63d7418f7d9b485f4e0e6 05-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Add an extension to avoid an error when a global template has the same name as
a member template, and you try to call the member template with an explicit
template argument. See PR7247

For example, this downgrades the error to a warning in:

template<typename T> struct set{};
struct Value {
template<typename T>
void set(T value) {
}
};
void foo() {
Value v;
v.set<double>(3.2); // Warning here.
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
dd7031f9abb330acaca44755b499988cba487f00 05-Jun-2010 John McCall <rjmccall@apple.com> Alter the interface of GetTypeForDeclarator to return a TypeSourceInfo*.
This is never null, but the associated type might be.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bf1a028246d884a540aeafa38e89be59a269b072 05-Jun-2010 John McCall <rjmccall@apple.com> Alter the interface of GetTypeForDeclarator to return a TypeSourceInfo*.
This is never null, but the associated type might be.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bfa7c00b14aea814fdbfc693bba43cbd25878775 05-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Correctly align large arrays in x86-64. This fixes PR5599.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6deecb0d46bcfd048e651d2db7c4fb0d6407da96 05-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Correctly align large arrays in x86-64. This fixes PR5599.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
163cfab63f3da7e756de7db0ef8e139597df6261 04-Jun-2010 Nate Begeman <natebegeman@mac.com> Initial support for ARM NEON builtins, codegen up next


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105489 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
aa1381ba9b5251a40975e262b36e6a98ec19c3b4 04-Jun-2010 Nate Begeman <natebegeman@mac.com> Initial support for ARM NEON builtins, codegen up next


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105489 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
c3b388c3d05f654a6c8e2effe6025ba53df5b7f2 04-Jun-2010 John McCall <rjmccall@apple.com> Remember type source information for Objective C property declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105484 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
83a230c83a54190366138c1a4f4310ef838b88fc 04-Jun-2010 John McCall <rjmccall@apple.com> Remember type source information for Objective C property declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105484 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ea285162342df160e7860e26528bc7110bc6c0cd 04-Jun-2010 Shih-wei Liao <sliao@google.com> Initial slang.

Change-Id: I4f84a741e5fbc440cd4c251406d2b611a237f713
ST/APValue.h
ST/AST.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/ASTImporter.h
ST/ASTVector.h
ST/Attr.h
ST/CXXInheritance.h
ST/CanonicalType.h
ST/CharUnits.h
ST/Decl.h
ST/DeclAccessPair.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclContextInternals.h
ST/DeclFriend.h
ST/DeclGroup.h
ST/DeclNodes.def
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclVisitor.h
ST/DeclarationName.h
ST/DependentDiagnostic.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/ExternalASTSource.h
ST/FullExpr.h
ST/NestedNameSpecifier.h
ST/ParentMap.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtNodes.def
ST/StmtObjC.h
ST/StmtVisitor.h
ST/TemplateBase.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
ST/TypeNodes.def
ST/TypeOrdering.h
ST/TypeVisitor.h
ST/UnresolvedSet.h
ST/UsuallyTinyPtrVector.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/PrintfFormatString.h
nalysis/Analyses/ReachableCode.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/AnalysisDiagnostic.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/BumpVector.h
nalysis/Support/SaveAndRestore.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
asic/Builtins.def
asic/Builtins.h
asic/BuiltinsARM.def
asic/BuiltinsPPC.def
asic/BuiltinsX86.def
asic/CMakeLists.txt
asic/ConvertUTF.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/Linkage.h
asic/MacroBuilder.h
asic/Makefile
asic/OnDiskHashTable.h
asic/OperatorKinds.def
asic/OperatorKinds.h
asic/PartialDiagnostic.h
asic/PrettyStackTrace.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/Specifiers.h
asic/TargetBuiltins.h
asic/TargetInfo.h
asic/TargetOptions.h
asic/TemplateKinds.h
asic/TokenKinds.def
asic/TokenKinds.h
asic/TypeTraits.h
asic/Version.h
MakeLists.txt
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/BugReporter/PathDiagnostic.h
hecker/Checkers/DereferenceChecker.h
hecker/Checkers/LocalCheckers.h
hecker/DomainSpecific/CocoaConventions.h
hecker/ManagerRegistry.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRExprEngineBuilders.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRStateTrait.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SummaryManager.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
odeGen/CodeGenOptions.h
odeGen/ModuleBuilder.h
river/Action.h
river/Arg.h
river/ArgList.h
river/CC1Options.h
river/CC1Options.td
river/CMakeLists.txt
river/Compilation.h
river/Driver.h
river/DriverDiagnostic.h
river/HostInfo.h
river/Job.h
river/Makefile
river/OptParser.td
river/OptSpecifier.h
river/OptTable.h
river/Option.h
river/Options.h
river/Options.td
river/Phases.h
river/Tool.h
river/ToolChain.h
river/Types.def
river/Types.h
river/Util.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/Analyses.def
rontend/AnalysisConsumer.h
rontend/ChainedDiagnosticClient.h
rontend/CodeGenAction.h
rontend/CommandLineSourceLoc.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/DeclContextXML.def
rontend/DeclXML.def
rontend/DependencyOutputOptions.h
rontend/DiagnosticOptions.h
rontend/DocumentXML.def
rontend/DocumentXML.h
rontend/FixItRewriter.h
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendDiagnostic.h
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
rontend/HeaderSearchOptions.h
rontend/LangStandard.h
rontend/LangStandards.def
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/PathDiagnosticClients.h
rontend/PreprocessorOptions.h
rontend/PreprocessorOutputOptions.h
rontend/StmtXML.def
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/TypeXML.def
rontend/Utils.h
rontend/VerifyDiagnosticsClient.h
ndex/ASTLocation.h
ndex/Analyzer.h
ndex/CallGraph.h
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/GlobalSelector.h
ndex/Handlers.h
ndex/IndexProvider.h
ndex/Indexer.h
ndex/Program.h
ndex/STLExtras.h
ndex/SelectorMap.h
ndex/TranslationUnit.h
ndex/Utils.h
ex/DirectoryLookup.h
ex/ExternalPreprocessorSource.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/LexDiagnostic.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Pragma.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ex/Token.h
ex/TokenConcatenation.h
ex/TokenLexer.h
akefile
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseDiagnostic.h
arse/Parser.h
arse/Scope.h
arse/Template.h
ewrite/DeltaTree.h
ewrite/HTMLRewrite.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
ema/CodeCompleteConsumer.h
ema/ExternalSemaSource.h
ema/ParseAST.h
ema/SemaConsumer.h
ema/SemaDiagnostic.h
40d63d2c8b4cedfec60ffcbb7a6b45bf38dcc993 04-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Added a field to BlockDeclRefExpr for future use.
No functionality change yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105479 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
89f9d3a7651d1225f3f56ae3387c83b98a26da00 04-Jun-2010 Fariborz Jahanian <fjahanian@apple.com> Added a field to BlockDeclRefExpr for future use.
No functionality change yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105479 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
72a13ef8379a9d8f017e2ff2a865a6ee97fd48be 04-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Model dsymutil properly, as a separate action/tool kind which is
added as the last output step, instead of just hacking it into the link step.
- Among other things, this fixes dSYM generation when using multiple -arch options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105475 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
be1cc3eec682ca73361edb4109a7969452d3dbeb 04-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Model dsymutil properly, as a separate action/tool kind which is
added as the last output step, instead of just hacking it into the link step.
- Among other things, this fixes dSYM generation when using multiple -arch options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105475 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
321ca092f1b9707d18951871de50b731ede84a9f 04-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit dsymutil action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105474 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
6e0f25483b1a801cd1155ea89c2b725feab16332 04-Jun-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add an explicit dsymutil action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105474 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
a43dea209d7c936286e7f1099fde4e9dae27f1a1 04-Jun-2010 John McCall <rjmccall@apple.com> Restructure how we interpret block-literal declarators. Correctly handle
the case where we pick up block arguments from a typedef. Save the block
signature as it was written, and preserve same through PCH.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
82dc00948fe7116edd31bfa07a728fda98648be1 04-Jun-2010 John McCall <rjmccall@apple.com> Restructure how we interpret block-literal declarators. Correctly handle
the case where we pick up block arguments from a typedef. Save the block
signature as it was written, and preserve same through PCH.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
67e508d3f226b9c1efd099b418fa44d6fa8f2414 04-Jun-2010 Douglas Gregor <doug.gregor@gmail.com> When checking for equality of template parameter lists, a template
type parameter pack is distinct from a template type parameter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105464 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a417b87e5d0f0508c7b18824d89d489bb55b7bd1 04-Jun-2010 Douglas Gregor <dgregor@apple.com> When checking for equality of template parameter lists, a template
type parameter pack is distinct from a template type parameter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105464 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cccca6285dd16a8c7345667ca560b1787d384908 03-Jun-2010 Jordy Rose <jediknil@belkadan.com> Test commit: fix method summary comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105385 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SVals.h
d6db976dd4c48b556862d093fb564b9cbc09aae3 03-Jun-2010 Jordy Rose <jediknil@belkadan.com> Test commit: fix method summary comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105385 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SVals.h
60d14ff16083101abbc6348f09103f753473c090 01-Jun-2010 John McCall <rjmccall@apple.com> Alter the ExternalASTSource interface to permit by-name lookups. PCH continues to
bring in the entire lookup table at once.

Also, give ExternalSemaSource's vtable a home. This is important because otherwise
any reference to it will cause RTTI to be emitted, and since clang is compiled
with -fno-rtti, that RTTI will contain unresolved references (to ExternalASTSource's
RTTI). So this change makes it possible to subclass ExternalSemaSource from projects
compiled with RTTI, as long as the subclass's home is compiled with -fno-rtti.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
rontend/PCHReader.h
ema/ExternalSemaSource.h
76bd1f387e6a7b7abfe53f63b3bd429b97bb80f0 01-Jun-2010 John McCall <rjmccall@apple.com> Alter the ExternalASTSource interface to permit by-name lookups. PCH continues to
bring in the entire lookup table at once.

Also, give ExternalSemaSource's vtable a home. This is important because otherwise
any reference to it will cause RTTI to be emitted, and since clang is compiled
with -fno-rtti, that RTTI will contain unresolved references (to ExternalASTSource's
RTTI). So this change makes it possible to subclass ExternalSemaSource from projects
compiled with RTTI, as long as the subclass's home is compiled with -fno-rtti.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/ExternalASTSource.h
rontend/PCHReader.h
ema/ExternalSemaSource.h
576182f65a694e4f3d9b156c81eafa39cc161999 01-Jun-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add support for calloc() in MallocChecker. Patch by Jordy Rose, with my
modification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105264 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
a5ce966d1a23d84aa5e849cf0ed62494e736ea6a 01-Jun-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add support for calloc() in MallocChecker. Patch by Jordy Rose, with my
modification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105264 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
c5eaffb5be9680aaf5907975f308756b869af603 31-May-2010 Douglas Gregor <doug.gregor@gmail.com> When we see the a '[' in a postfix expression in Objective-C, perform
a simple, quick check to determine whether the expression starting
with '[' can only be an Objective-C message send. If so, don't parse
it as an array subscript expression. This improves recovery for, e.g.,

[a method1]
[a method2]

so that we now produce

t.m:10:13: error: expected ';' after expression
[a method]
^

instead of some mess about expecting ']'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105221 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1b730e847ded503f2e615154035c083c4f94a067 31-May-2010 Douglas Gregor <dgregor@apple.com> When we see the a '[' in a postfix expression in Objective-C, perform
a simple, quick check to determine whether the expression starting
with '[' can only be an Objective-C message send. If so, don't parse
it as an array subscript expression. This improves recovery for, e.g.,

[a method1]
[a method2]

so that we now produce

t.m:10:13: error: expected ';' after expression
[a method]
^

instead of some mess about expecting ']'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105221 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1bbb7b72fd33f1af39a17ced293ef6cad4bb1f86 31-May-2010 Chris Lattner <sabre@nondot.org> make #warning warnings end up in their own diagnostic category.
rdar://8042673


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
672bbf249175f6ff7a150cfef1882eee7bc4bb0b 31-May-2010 Chris Lattner <sabre@nondot.org> make #warning warnings end up in their own diagnostic category.
rdar://8042673


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
69fbbc295019f5760c3a7c6d7da3927e97c5d560 31-May-2010 Sean Hunt <rideau3@gmail.com> Move .td files from AST to Basic.

Parse will need to see these files because it needs to know how to parse
attributes. The generated files are still placed in the appropriate directory so
as to preserve layering. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/DeclNodes.td
ST/Makefile
ST/StmtNodes.td
asic/DeclNodes.td
asic/StmtNodes.td
8b9b742ec13a210f5df7d0c9be37f185c1615a41 31-May-2010 Sean Hunt <rideau3@gmail.com> Move .td files from AST to Basic.

Parse will need to see these files because it needs to know how to parse
attributes. The generated files are still placed in the appropriate directory so
as to preserve layering. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/DeclNodes.td
ST/Makefile
ST/StmtNodes.td
asic/DeclNodes.td
asic/StmtNodes.td
b7be965ff561d784a5de8d794b56a442085c8760 30-May-2010 Sean Hunt <rideau3@gmail.com> Convert DeclNodes to use TableGen.

The macros required for DeclNodes use have changed to match the use of
StmtNodes. The FooFirst enumerator constants have been named firstFoo
to match usage elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclNodes.td
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclVisitor.h
ST/Makefile
ST/RecursiveASTVisitor.h
ST/Stmt.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
9a55591af3e5506b95a9718e15380129fbfc5ebc 30-May-2010 Sean Hunt <rideau3@gmail.com> Convert DeclNodes to use TableGen.

The macros required for DeclNodes use have changed to match the use of
StmtNodes. The FooFirst enumerator constants have been named firstFoo
to match usage elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclNodes.td
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclVisitor.h
ST/Makefile
ST/RecursiveASTVisitor.h
ST/Stmt.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
a147bc905efda975cc9ec691291e565efed7b8e5 30-May-2010 Douglas Gregor <doug.gregor@gmail.com> Teach code completion to adjust its completion priorities based on the
type that we expect to see at a given point in the grammar, e.g., when
initializing a variable, returning a result, or calling a function. We
don't prune the candidate set at all, just adjust priorities to favor
things that should type-check, using an ultra-simplified type system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105128 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
5ac3bdb2cb0113b640c54f01468d21985c08b252 30-May-2010 Douglas Gregor <dgregor@apple.com> Teach code completion to adjust its completion priorities based on the
type that we expect to see at a given point in the grammar, e.g., when
initializing a variable, returning a result, or calling a function. We
don't prune the candidate set at all, just adjust priorities to favor
things that should type-check, using an ultra-simplified type system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105128 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
9f4a48046015db5e98723bda6ad613ad00aa5678 29-May-2010 Fariborz Jahanian <fjahanian@apple.com> Changed text of 'empty enum' diagnostics to say so.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2a480e356e45be74c3c3afe586b77cf923cd4181 29-May-2010 Fariborz Jahanian <fjahanian@apple.com> Changed text of 'empty enum' diagnostics to say so.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
fc32004b95ba1d6c6d2f95d6d05955f36409d947 29-May-2010 Fariborz Jahanian <fjahanian@apple.com> Empty enum in c is now error to match gcc's behavior.
(radar 8040068).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105011 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
0511552e20c79ec48638038b9a10a70a34654e5c 29-May-2010 Fariborz Jahanian <fjahanian@apple.com> Empty enum in c is now error to match gcc's behavior.
(radar 8040068).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105011 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
33bf24b6c409519bd3bff02fca66988e073d85e4 28-May-2010 John McCall <rjmccall@apple.com> Roll back r104941.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
2b7baf0816a40af3fde3a3e174192a549b785a50 28-May-2010 John McCall <rjmccall@apple.com> Roll back r104941.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
65c142e3f6681b65406f8c9f0ac7cf3de866e010 28-May-2010 John McCall <rjmccall@apple.com> Add a new attribute on records, __attribute__((adl_invisible)), and define
the x86-64 __va_list_tag with this attribute. The attribute causes the
affected type to behave like a fundamental type when considered by ADL.

(x86-64 is the only target we currently provide with a struct-based
__builtin_va_list)

Fixes PR6762.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
1d0a5856d066f9030efbe3e0d9bbbb50ea597b99 28-May-2010 John McCall <rjmccall@apple.com> Add a new attribute on records, __attribute__((adl_invisible)), and define
the x86-64 __va_list_tag with this attribute. The attribute causes the
affected type to behave like a fundamental type when considered by ADL.

(x86-64 is the only target we currently provide with a struct-based
__builtin_va_list)

Fixes PR6762.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
854ad9590e3487cce804481cbc05c5e186ef6289 28-May-2010 Douglas Gregor <doug.gregor@gmail.com> Implement a code-completion hook for the receiver of an Objective-C
message. This completion gives better results than just using the
"expression" completion, which is effectively what happened before.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104895 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
8e254cfe5a6ab4202c7fcc4b64bdd1ca0fe071ac 28-May-2010 Douglas Gregor <dgregor@apple.com> Implement a code-completion hook for the receiver of an Objective-C
message. This completion gives better results than just using the
"expression" completion, which is effectively what happened before.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104895 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e42dc4b23a7a5f9b7bbae6006e56b5efcaca4c52 27-May-2010 Dan Gohman <gohman@apple.com> Add a comment to mention the memory ownership situation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104886 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
690c2e22d48c37fa590e9e93595fc5c5ee0d1eab 27-May-2010 Dan Gohman <gohman@apple.com> Add a comment to mention the memory ownership situation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104886 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
4c48d4d3633e9da77c7707bc44ef6d476ef0ddc8 27-May-2010 Daniel Dunbar <daniel@zuster.org> Parse/Sema: Add support for '#pragma options align=packed', which, it should be
noted, is not the same as __attribute__((packed)). That would be ridiculous!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104865 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6f739145b94ede1ca98b5a5e0e179c817c405d7b 27-May-2010 Daniel Dunbar <daniel@zuster.org> Parse/Sema: Add support for '#pragma options align=packed', which, it should be
noted, is not the same as __attribute__((packed)). That would be ridiculous!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104865 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
245e2498f97ef68d19756afddef04763a949a026 27-May-2010 Daniel Dunbar <daniel@zuster.org> Parse/Sema: Add support for '#pragma options align=native'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104864 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
638e7cf3a09436dce7f3150ff8e4f27d190bd2ed 27-May-2010 Daniel Dunbar <daniel@zuster.org> Parse/Sema: Add support for '#pragma options align=native'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104864 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
883cbd144b0009b90d242bd3029714a71b34bf72 27-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed missing initialization of member. Should we enable unused argument warning?.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104829 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
25a0fe2a99aaf2d1bf5bdfdae7ab11e2a5e7622f 27-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed missing initialization of member. Should we enable unused argument warning?.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104829 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
1220d1f789ef685f31253da0be018c5ee7390ed6 27-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for -m[no-]relax-all, and make it the default at -O0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104815 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
9929800b8dfced61e9c97dc8d6e71e144ebf8acc 27-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for -m[no-]relax-all, and make it the default at -O0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104815 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f1818a1b5d2e88240fd840caa0718fd044a34f85 27-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add clang -cc1 -mrelax-all option, which sets relaxes all instructions when using -integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104807 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
4ecc9b73b3716775ed4e09091e300796a9a72378 27-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add clang -cc1 -mrelax-all option, which sets relaxes all instructions when using -integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104807 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
2da5d143b02c2fdcfba7ba6ccc2976b8af46bb92 27-May-2010 Daniel Dunbar <daniel@zuster.org> AST: Add AlignMac68kAttr, not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
4e9255f4ad5f87217995eeb488a7c5b336bb732d 27-May-2010 Daniel Dunbar <daniel@zuster.org> AST: Add AlignMac68kAttr, not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
8df8ff1b1d982e97d323d354379234802b6b9b3d 27-May-2010 Daniel Dunbar <daniel@zuster.org> AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
8a2c92cab213bd7e28ff669577e815cd70bafbe3 27-May-2010 Daniel Dunbar <daniel@zuster.org> AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
9451c5428d52c675c93eb968c2fc3e595f8d2f01 27-May-2010 Daniel Dunbar <daniel@zuster.org> Sema: Reject '#pragma options align=mac68k' everywhere except i386-apple-darwin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
613fd67e575ff1c038535b18dafebca070f3ed91 27-May-2010 Daniel Dunbar <daniel@zuster.org> Sema: Reject '#pragma options align=mac68k' everywhere except i386-apple-darwin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
4b3e90d9c924862933f15b67d8550f3d579db99a 27-May-2010 Daniel Dunbar <daniel@zuster.org> Sema: Support for #pragma options align={reset,natural}. '#pragma options align'
shares the stack with '#pragma pack', who knew!?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ea75a8286fb87ce7549e08d9dcb597f91479f54d 27-May-2010 Daniel Dunbar <daniel@zuster.org> Sema: Support for #pragma options align={reset,natural}. '#pragma options align'
shares the stack with '#pragma pack', who knew!?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3332a0eed02457716aa9a6d11e3a2a7d0d9803d2 27-May-2010 Daniel Dunbar <daniel@zuster.org> Parse: Add support for '#pragma options align'.

Also, fix a source location bug with the rparen in #pragma pack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104784 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
861800c676004eabed5927f0552620d06c80a40a 27-May-2010 Daniel Dunbar <daniel@zuster.org> Parse: Add support for '#pragma options align'.

Also, fix a source location bug with the rparen in #pragma pack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104784 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
d914a9c586b15f09028624ee8815ee4e6f30aea9 27-May-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce priorities into the code-completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104751 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
12e131385e892e3723483a1081a89bcad29c8a84 27-May-2010 Douglas Gregor <dgregor@apple.com> Introduce priorities into the code-completion results.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104751 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
5efd361ffeae941a9212f44fe3eecc9d501faeaa 26-May-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on flexible array diagnostics (PR7029).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c0a54031c98721460806e78e0e10da093d3fd72 26-May-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on flexible array diagnostics (PR7029).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3abc1353833e0b2bb9f6dd2803daa49660939b9f 26-May-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes misc. flexible array bugs in c++ (PR7029).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104733 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4142cebf70fe6c3855570c98b8042431797a65fd 26-May-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes misc. flexible array bugs in c++ (PR7029).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104733 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
061dc86f5a198f4fe456c44d4108f15726c74f11 26-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e935fdb06d60398bef724fd50bba84c1b921b40e 26-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Fixed comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5dfbaf6afc3278ee7164daf8454712acbb83f086 26-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added source order to CXXBaseOrMemberInitializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104712 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a0af3b453160fc4c67363c204da13820b0586909 26-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added source order to CXXBaseOrMemberInitializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104712 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bd052e4fcb9d924fe5d2532039a84a1ae17a1282 26-May-2010 Anders Carlsson <andersca@mac.com> ASTRecordLayoutBuilder is no longer a friend of ASTRecordLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
1a972998db7768bbdf59e283897c5b6446f58653 26-May-2010 Anders Carlsson <andersca@mac.com> ASTRecordLayoutBuilder is no longer a friend of ASTRecordLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
07a3b1c020b491d5a59e7a991023df836073ce9d 26-May-2010 Douglas Gregor <doug.gregor@gmail.com> Tell the string literal parser when it's not permitted to emit
diagnostics. That would be while we're parsing string literals for the
sole purpose of producing a diagnostic about them. Fixes
<rdar://problem/8026030>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104684 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
b90f4b3fb94056609da9cca5eef7358d95a363b2 26-May-2010 Douglas Gregor <dgregor@apple.com> Tell the string literal parser when it's not permitted to emit
diagnostics. That would be while we're parsing string literals for the
sole purpose of producing a diagnostic about them. Fixes
<rdar://problem/8026030>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104684 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
28dbf3f71d0e5acf64263672f87a6645292772b9 26-May-2010 Anders Carlsson <andersca@mac.com> No need to use the PrimaryBaseInfo struct in the builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
28fdd0a8b450c1329b3303e5cf8e8a788a0ef85a 26-May-2010 Anders Carlsson <andersca@mac.com> No need to use the PrimaryBaseInfo struct in the builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
aebeba9254afa91c936d7e902e61b629eaca23c3 26-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove extents of dead symbolic regions when RemoveDeadBindings.
This requires creating new persistent states due to the nature of GDM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104668 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
95798981b4859f61c1a3d4df26cb033b3e91518a 26-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove extents of dead symbolic regions when RemoveDeadBindings.
This requires creating new persistent states due to the nature of GDM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104668 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
5c336528495f889677e7ab8b3297f290242cedd1 25-May-2010 Douglas Gregor <doug.gregor@gmail.com> Only enable code patterns (e.g., try { statements } catch (...) {
statements }) in the code-completion results if explicitly requested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104637 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
d8e8a58ee35ab334ab9d0c2154dca029c1822e8a 25-May-2010 Douglas Gregor <dgregor@apple.com> Only enable code patterns (e.g., try { statements } catch (...) {
statements }) in the code-completion results if explicitly requested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104637 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInstance.h
rontend/FrontendOptions.h
ema/CodeCompleteConsumer.h
56b90f8c7fc63125c4cb72b622b172b4cc8a7133 25-May-2010 Ted Kremenek <kremenek@apple.com> Allocate the contents of TemplateArgumentList using ASTContext's allocator. This fixes
a massive memory leak when using a BumpPtrAllocator in ASTContext.

Added a FIXME, as the Destroy method for TemplateArgumentList isn't getting called.
This means we will instead leak when using the MallocAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
3458d43b68cc2fd1cb2b2304614e1dc3419820d8 25-May-2010 Ted Kremenek <kremenek@apple.com> Allocate the contents of TemplateArgumentList using ASTContext's allocator. This fixes
a massive memory leak when using a BumpPtrAllocator in ASTContext.

Added a FIXME, as the Destroy method for TemplateArgumentList isn't getting called.
This means we will instead leak when using the MallocAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
446527d739618c599d4b1308ab3fc391c3c655eb 25-May-2010 Douglas Gregor <doug.gregor@gmail.com> Add Redeclarable boilerplate to TypedefDecl, from Peter Collingbourne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ff3dc395ba08b3a3cadc8d3121a4cb086ab287d6 25-May-2010 Douglas Gregor <dgregor@apple.com> Add Redeclarable boilerplate to TypedefDecl, from Peter Collingbourne!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cddae629ede973537d1fce280ff1e9b156d03fb6 25-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add -emit-codegen-only, for running irgen + codegen but not the
.s printer or .o writer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104623 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenAction.h
rontend/FrontendOptions.h
32148cef25570a4fbe3ad0ec497ce3ae2cf1b774 25-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add -emit-codegen-only, for running irgen + codegen but not the
.s printer or .o writer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104623 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CodeGenAction.h
rontend/FrontendOptions.h
09e261c84e3521bcafcd86bda79196082f7b0aaf 25-May-2010 Douglas Gregor <doug.gregor@gmail.com> Put -Wvla into the -Wgnu warning group

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
b453c530647acda78e6dc56d086e99566e59e5b1 25-May-2010 Douglas Gregor <dgregor@apple.com> Put -Wvla into the -Wgnu warning group

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
d64251d5282af2290094048cd9c2c44b8b6f86b9 25-May-2010 Douglas Gregor <doug.gregor@gmail.com> Improve code completion in failure cases in two ways:
1) Suppress diagnostics as soon as we form the code-completion
token, so we don't get any error/warning spew from the early
end-of-file.
2) If we consume a code-completion token when we weren't expecting
one, go into a code-completion recovery path that produces the best
results it can based on the context that the parser is in.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104585 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
dc8453422bec3bbf70c03920e01498d75783d122 25-May-2010 Douglas Gregor <dgregor@apple.com> Improve code completion in failure cases in two ways:
1) Suppress diagnostics as soon as we form the code-completion
token, so we don't get any error/warning spew from the early
end-of-file.
2) If we consume a code-completion token when we weren't expecting
one, go into a code-completion recovery path that produces the best
results it can based on the context that the parser is in.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104585 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
b4824a2c97bce8d1f817b29b805b435b1d22cc69 25-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> CastSizeChecker checks when casting a malloc'ed symbolic region to type T,
whether the size of the symbolic region is a multiple of the size of T.
Fixes PR6123 and PR7217.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104584 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
ab28099e3bd4859585ccb316f9f571c8c6b035fd 25-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> CastSizeChecker checks when casting a malloc'ed symbolic region to type T,
whether the size of the symbolic region is a multiple of the size of T.
Fixes PR6123 and PR7217.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104584 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
5d5c9a64c3b1f550e10867bf6bd4c76f0aa35cac 25-May-2010 Nick Lewycky <nicholas@mxc.ca> Make this class useful as a base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104578 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
45806fe5b89de739af95bea2e0d1a5822d53ae9b 25-May-2010 Nick Lewycky <nicholas@mxc.ca> Make this class useful as a base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104578 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
915b210806ed1ca402bdc83fba9c4a1050795587 24-May-2010 Chris Lattner <sabre@nondot.org> add a few more categories.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
6a143ffd46a339b17ab5b0c9c20bfdb99c5cfee3 24-May-2010 Chris Lattner <sabre@nondot.org> add a few more categories.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104566 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
1e1db427b2a9015418e28285e2c564631a427c6a 24-May-2010 Chris Lattner <sabre@nondot.org> missed an svn add


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104562 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCategories.td
9ecb63646a15f0925b05ec954af1b803e4070ceb 24-May-2010 Chris Lattner <sabre@nondot.org> missed an svn add


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104562 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCategories.td
4abe43f86c1aba0e9753eead2d48056b3fb435fd 24-May-2010 Chris Lattner <sabre@nondot.org> push categories forward a bit more: document them, add some
major buckets to catch parser and sema issues, add inline asm
category, and make diag groups take precedence over the
sweeping categories just added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
3f14538ec2651b5a2e02fd5e80d0b8886f52eb46 24-May-2010 Chris Lattner <sabre@nondot.org> push categories forward a bit more: document them, add some
major buckets to catch parser and sema issues, add inline asm
category, and make diag groups take precedence over the
sweeping categories just added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
9cc1849b2f77272958824dc3e9663d5980a2c69d 24-May-2010 Douglas Gregor <doug.gregor@gmail.com> Downgrade deletion of a void* from an error (which is should be) to an
extension warning (which other compilers seem to use). Works around a
known bug in Xalan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104509 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
94a615718d06704816c6e31a811f823c05e39f52 24-May-2010 Douglas Gregor <dgregor@apple.com> Downgrade deletion of a void* from an error (which is should be) to an
extension warning (which other compilers seem to use). Works around a
known bug in Xalan.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104509 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e629b8ba96edc3ff60af670b32381843da8270d 23-May-2010 Douglas Gregor <doug.gregor@gmail.com> It turns out that people love using VLAs in templates, too. Weaken our
VLA restrictions so that one can use VLAs in templates (even
accidentally), but not as part of a non-type template parameter (which
would be very bad).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a481ec4150ad203440852a2bfee0883dd26f7530 23-May-2010 Douglas Gregor <dgregor@apple.com> It turns out that people love using VLAs in templates, too. Weaken our
VLA restrictions so that one can use VLAs in templates (even
accidentally), but not as part of a non-type template parameter (which
would be very bad).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bf157ea685aa3251115f4dddb8b8836e355e004a 23-May-2010 Douglas Gregor <doug.gregor@gmail.com> Complain about sizeof(overloaded function) rather than crashing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104470 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9ba6af8bedba28d10a6906c62c19d43f81c5d386 23-May-2010 Douglas Gregor <dgregor@apple.com> Complain about sizeof(overloaded function) rather than crashing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104470 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
76bda258ee7feb86f569666d95cc403b37f82555 23-May-2010 Douglas Gregor <doug.gregor@gmail.com> Move OverloadExpr over to a ASTContext-allocated pointer for its
storage, rather than an UnresolvedSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/UnresolvedSet.h
928e6fcf66fc4f342bcf7cc96bf56986c9c2a833 23-May-2010 Douglas Gregor <dgregor@apple.com> Move OverloadExpr over to a ASTContext-allocated pointer for its
storage, rather than an UnresolvedSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/UnresolvedSet.h
d6a9427b13d3f1d5762de2d683268821c7853fdd 23-May-2010 Douglas Gregor <doug.gregor@gmail.com> Provide the overloaded functions for UnresolvedLookupExpr and
UnresolvedMemberExpr in their constructors, rather than adding them
after the fact. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
5a84dec38cfa9e084377a3167b474c79283c82fa 23-May-2010 Douglas Gregor <dgregor@apple.com> Provide the overloaded functions for UnresolvedLookupExpr and
UnresolvedMemberExpr in their constructors, rather than adding them
after the fact. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
75a9505863ea5d3b903e8827830f5d3e00d0f9b4 23-May-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of all of the class and function template's "common"
pointers in the ASTContext, so that the folding sets stored inside
them will be deallocated when the ASTContext is destroyed (under
-disable-free). <rdar://problem/7998824>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
0054531488928a424666ac11fcdc6bcc5112de52 23-May-2010 Douglas Gregor <dgregor@apple.com> Keep track of all of the class and function template's "common"
pointers in the ASTContext, so that the folding sets stored inside
them will be deallocated when the ASTContext is destroyed (under
-disable-free). <rdar://problem/7998824>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
2ba99bfee8a9db7d8e80bba78f0dbeb3f9801989 23-May-2010 Douglas Gregor <doug.gregor@gmail.com> Put the VLA-is-an-extension warning into its own warning group (-Wvla)
so that it can be selectively enabled/disabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
db4da82e7248eb0eec249028506ed082c6807c2a 23-May-2010 Douglas Gregor <dgregor@apple.com> Put the VLA-is-an-extension warning into its own warning group (-Wvla)
so that it can be selectively enabled/disabled.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
603794e83eaaaf4230626b7fc27aa87499378f5b 22-May-2010 Douglas Gregor <doug.gregor@gmail.com> Implement support for variable length arrays in C++. VLAs are limited
in several important ways:

- VLAs of non-POD types are not permitted.
- VLAs cannot be used in conjunction with C++ templates.

These restrictions are intended to keep VLAs out of the parts of the
C++ type system where they cause the most trouble. Fixes PR5678 and
<rdar://problem/8013618>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104443 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0fddb97901dbe36a8253dee29961cba8e0a87cf6 22-May-2010 Douglas Gregor <dgregor@apple.com> Implement support for variable length arrays in C++. VLAs are limited
in several important ways:

- VLAs of non-POD types are not permitted.
- VLAs cannot be used in conjunction with C++ templates.

These restrictions are intended to keep VLAs out of the parts of the
C++ type system where they cause the most trouble. Fixes PR5678 and
<rdar://problem/8013618>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104443 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9eab9dbafb622beb6ad5bdb99b7a429c38e6e164 22-May-2010 Chandler Carruth <chandlerc@gmail.com> Daniel re-educated me about what Alias does and does not do. Turn that off for
'-fasm' and explicitly map from that flag to -fgnu-keywords in the driver. Turn
off the driver in the lexer test for this madness and add a test to the driver
that the translation actually works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104428 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c304ba341a7daa88da42faf8f86310b764dd7b6a 22-May-2010 Chandler Carruth <chandlerc@gmail.com> Daniel re-educated me about what Alias does and does not do. Turn that off for
'-fasm' and explicitly map from that flag to -fgnu-keywords in the driver. Turn
off the driver in the lexer test for this madness and add a test to the driver
that the translation actually works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104428 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
2e04bb57a98d2892e80338a9d2f8720f99645e97 22-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add Tool::ShortName, intended to be a human readable name for the tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104416 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
3038204fd8f6ff22082dd18e4b12ed252b75a5e4 22-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add Tool::ShortName, intended to be a human readable name for the tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104416 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
fdc4c1323390741f6cd57a4fe2a667fe2fbb9633 22-May-2010 Douglas Gregor <doug.gregor@gmail.com> Improve recovery when we see a dependent template name that is missing
the required "template" keyword, using the same heuristics we do for
dependent template names in member access expressions, e.g.,

test/SemaTemplate/dependent-template-recover.cpp:11:8: error: use 'template'
keyword to treat 'getAs' as a dependent template name
T::getAs<U>();
^
template

Fixes PR5404.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104409 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d5ab9b0a0ae24f7d0f49f6f10fd1b247e64b3306 22-May-2010 Douglas Gregor <dgregor@apple.com> Improve recovery when we see a dependent template name that is missing
the required "template" keyword, using the same heuristics we do for
dependent template names in member access expressions, e.g.,

test/SemaTemplate/dependent-template-recover.cpp:11:8: error: use 'template'
keyword to treat 'getAs' as a dependent template name
T::getAs<U>();
^
template

Fixes PR5404.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104409 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e0e3fb07040d590422f63ece1bcac9b46ba8516f 22-May-2010 Fariborz Jahanian <fjahanian@apple.com> Clang missing warning about conflicting declaration vs. definition
for variable arguments list methods. (radar 8006060).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
561da7e046ea6b39f4e632c68128fd01c985b46b 22-May-2010 Fariborz Jahanian <fjahanian@apple.com> Clang missing warning about conflicting declaration vs. definition
for variable arguments list methods. (radar 8006060).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2f8de9c5c052392e2f10e7ac0a73e97c5a8b5a3a 22-May-2010 Douglas Gregor <doug.gregor@gmail.com> Improve parser recovery when we encounter a dependent template name
that is missing the 'template' keyword, e.g.,

t->getAs<T>()

where getAs is a member of an unknown specialization. C++ requires
that we treat "getAs" as a value, but that would fail to parse since T
is the name of a type. We would then fail at the '>', since a type
cannot be followed by a '>'.

This is a very common error for C++ programmers to make, especially
since GCC occasionally allows it when it shouldn't (as does Visual
C++). So, when we are in this case, we use tentative parsing to see if
the tokens starting at "<" can only be parsed as a template argument
list. If so, we produce a diagnostic with a fix-it that states that
the 'template' keyword is needed:

test/SemaTemplate/dependent-template-recover.cpp:5:8: error: 'template' keyword
is required to treat 'getAs' as a dependent template name
t->getAs<T>();
^
template

This is just a start of this patch; I'd like to apply the same
approach to everywhere that a template-id with dependent template name
can be parsed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104406 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
1fd6d44d7ca97631497551bbf98866263143d706 22-May-2010 Douglas Gregor <dgregor@apple.com> Improve parser recovery when we encounter a dependent template name
that is missing the 'template' keyword, e.g.,

t->getAs<T>()

where getAs is a member of an unknown specialization. C++ requires
that we treat "getAs" as a value, but that would fail to parse since T
is the name of a type. We would then fail at the '>', since a type
cannot be followed by a '>'.

This is a very common error for C++ programmers to make, especially
since GCC occasionally allows it when it shouldn't (as does Visual
C++). So, when we are in this case, we use tentative parsing to see if
the tokens starting at "<" can only be parsed as a template argument
list. If so, we produce a diagnostic with a fix-it that states that
the 'template' keyword is needed:

test/SemaTemplate/dependent-template-recover.cpp:5:8: error: 'template' keyword
is required to treat 'getAs' as a dependent template name
t->getAs<T>();
^
template

This is just a start of this patch; I'd like to apply the same
approach to everywhere that a template-id with dependent template name
can be parsed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104406 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
15135984ec91bb94ba742f5cba85b61d4fb41910 22-May-2010 Nick Lewycky <nicholas@mxc.ca> Outdent this file by 2 spaces per the coding standards, and also clean up
whitespace at the end of lines since I'm already touching the whole file
anyways.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
db3f847cb883fdb19d79c7223fa032e7266c0ee5 22-May-2010 Nick Lewycky <nicholas@mxc.ca> Outdent this file by 2 spaces per the coding standards, and also clean up
whitespace at the end of lines since I'm already touching the whole file
anyways.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
7dff079a1f312fd1db7376c8362f5e9a96c7fb48 21-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Improved TypeLoc::getSourceRange().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e4aec0eae303e926643c7239cf7b0197ea9f63e2 21-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Improved TypeLoc::getSourceRange().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
973cacc0c894666f112192441f78e8eb3c27736b 21-May-2010 John McCall <rjmccall@apple.com> Propagate access specifiers to anonymous union members nested within classes.
Fixes <rdar://problem/7987650>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104376 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
aec0371e62be013a2e6466688ccf6a7460880262 21-May-2010 John McCall <rjmccall@apple.com> Propagate access specifiers to anonymous union members nested within classes.
Fixes <rdar://problem/7987650>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104376 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
90f2dca178e6c2076cd74dc78fb4b22128e0f048 21-May-2010 Douglas Gregor <doug.gregor@gmail.com> Use CanQualType to enforce the use of a canonical type argument to
CXXBasePaths::isAmbiguous(), rather than just asserting that we have a
canonical type. Fixes PR7176.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
e0d5fe2a417b84ac8b51927ebeb8f1c9ae492760 21-May-2010 Douglas Gregor <dgregor@apple.com> Use CanQualType to enforce the use of a canonical type argument to
CXXBasePaths::isAmbiguous(), rather than just asserting that we have a
canonical type. Fixes PR7176.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
b4141fd89f03dedd8dbbbd1f6aa17db30a498584 21-May-2010 Chris Lattner <sabre@nondot.org> don't make _Bool be a keyword in -fms-extensions mode, patch by
Steven Watanabe!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
34d7c4d62863ca0d5bcf705da0e1001878386c26 21-May-2010 Chris Lattner <sabre@nondot.org> don't make _Bool be a keyword in -fms-extensions mode, patch by
Steven Watanabe!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
d72e7d2c73e5fce898efecafafb0a02c2eded3ce 21-May-2010 Nick Lewycky <nicholas@mxc.ca> TypeVisitor doesn't visit Stmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
74d4031b9a7dbb6204c4f97062d44bd26e21b014 21-May-2010 Nick Lewycky <nicholas@mxc.ca> TypeVisitor doesn't visit Stmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
9a5ba2e5d2637ed234e1ec0bf6ef9f4fdc3b3395 21-May-2010 Chandler Carruth <chandlerc@gmail.com> Teach the RecursiveASTVisitor to enter parts of the AST previously missed.
Factor its implementation to ease the addition of these custom edges to
traverse. With this patch we get initializer expressions, block bodies, type
source info, and function argument, result, and exception types. There are
probably still some more missed edges.

While we're here, clean up and flesh out a bunch of comments.

Patch by Zhanyong Wan; I've done a cursory review, but further review
appreciated. This is fast becoming one of the most important public APIs to the
AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
facfc77487a890bfb7b5eee7e21cd2b395a9faaf 21-May-2010 Chandler Carruth <chandlerc@gmail.com> Teach the RecursiveASTVisitor to enter parts of the AST previously missed.
Factor its implementation to ease the addition of these custom edges to
traverse. With this patch we get initializer expressions, block bodies, type
source info, and function argument, result, and exception types. There are
probably still some more missed edges.

While we're here, clean up and flesh out a bunch of comments.

Patch by Zhanyong Wan; I've done a cursory review, but further review
appreciated. This is fast becoming one of the most important public APIs to the
AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b3f7ed710d899ec70a2aa0b65c82f37a04e4e340 21-May-2010 John McCall <rjmccall@apple.com> Introduce a method to get from an anonymous struct or union record declaration
to the associated object declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104309 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bc365c53606ab90537576cb48d93a54ce3fb0cb5 21-May-2010 John McCall <rjmccall@apple.com> Introduce a method to get from an anonymous struct or union record declaration
to the associated object declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104309 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
95c7430958128b10df1ef4be8f4ec4479672cb74 21-May-2010 Chris Lattner <sabre@nondot.org> make -Wc++-hex-floats be a member of -Wc++0x-compat,
thanks to doug for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
63dfd58c14b6e7819a04620a183b16964fddee1d 21-May-2010 Chris Lattner <sabre@nondot.org> make -Wc++-hex-floats be a member of -Wc++0x-compat,
thanks to doug for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
9fcba431c12813ecb5c35c22ef0b67d7f2c3e2ad 21-May-2010 Chris Lattner <sabre@nondot.org> Don't warn about use of hex floats in c++ mode by default,
matching G++'s behavior.

Warn when -pedantic or -Wc++-hex-floats is passed, and
don't warn if -pedantic -Wno-c++-hex-floats are both passed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104295 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ac0f5e5ed0a45ac96a5958e5832e4bdb45734324 21-May-2010 Chris Lattner <sabre@nondot.org> Don't warn about use of hex floats in c++ mode by default,
matching G++'s behavior.

Warn when -pedantic or -Wc++-hex-floats is passed, and
don't warn if -pedantic -Wno-c++-hex-floats are both passed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104295 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
72480e5292c1950721a8ab8483305037f08ae08c 21-May-2010 Douglas Gregor <doug.gregor@gmail.com> Add a new failure kind, FK_Incomplete, to InitializationSequence, to
capture failures when we try to initialize an incomplete
type. Previously, we would (ab)use FK_ConversionFailed, then
occasionally dereference a null pointer when trying to diagnose the
failure. Fixes <rdar://problem/7959007>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
72a43bbf6802c8fcfd04dcb2be8eafcb0b8fe29c 21-May-2010 Douglas Gregor <dgregor@apple.com> Add a new failure kind, FK_Incomplete, to InitializationSequence, to
capture failures when we try to initialize an incomplete
type. Previously, we would (ab)use FK_ConversionFailed, then
occasionally dereference a null pointer when trying to diagnose the
failure. Fixes <rdar://problem/7959007>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f3e34924d5da4f9898d4f9db8f8a195a3c5d5f91 20-May-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1as: Add -help, -version, and -mllvm support.

Also, fix output defaulting to match llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104246 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
c673af7fe67e5db4d10dd414237df247d35dd9d9 20-May-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1as: Add -help, -version, and -mllvm support.

Also, fix output defaulting to match llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104246 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.td
94021a23b85be096d2fbe3b46a7ccddc015bc703 20-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/MC: Add 'clang -cc1as' integrated assembler tool, currently accepts approximately the same interface as 'llvm-mc'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104239 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.h
river/CC1AsOptions.td
river/CMakeLists.txt
river/Makefile
41b5b17445ab3bdf957ebd4be6c8670f09a212a8 20-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/MC: Add 'clang -cc1as' integrated assembler tool, currently accepts approximately the same interface as 'llvm-mc'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104239 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1AsOptions.h
river/CC1AsOptions.td
river/CMakeLists.txt
river/Makefile
4041ec10a1f4467c0a13b60fa6bc8fd81ebcb9b4 20-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move some argument lookup utilities into driver::ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104237 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
03e8ab2947a848fb0ce723dcebb1c19697614307 20-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Move some argument lookup utilities into driver::ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104237 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
ff92ad2e768122cf2adf1d4ac818bde68491c4c0 20-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TemplateArgumentListInfo to FunctionTemplateSpecializationInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104226 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
e03db98d67111ebf7622d9086951aacc24406b66 20-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added TemplateArgumentListInfo to FunctionTemplateSpecializationInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104226 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
77e8e18b02560741e07052f35f29894f0a787091 20-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Renamed misleading getSourceRange -> getLocalSourceRange and getFullSourceRange -> getSourceRange for TypeLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104220 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
bd054dba8a3023821f2a0951b0fae05e3522a7c9 20-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Renamed misleading getSourceRange -> getLocalSourceRange and getFullSourceRange -> getSourceRange for TypeLoc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104220 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
0e9cf205e0a9094757d3b415a3c691e934161710 20-May-2010 Douglas Gregor <doug.gregor@gmail.com> Various small fixes for construction/destruction of Objective-C++
instance variables:
- Use isRecordType() rather than isa<RecordType>(), so that we see
through typedefs in ivar types.
- Mark the destructor as referenced
- Perform C++ access control on the destructor


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104206 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
68dd3ee3b5ae5b7694b4a21e34b4355431ed0457 20-May-2010 Douglas Gregor <dgregor@apple.com> Various small fixes for construction/destruction of Objective-C++
instance variables:
- Use isRecordType() rather than isa<RecordType>(), so that we see
through typedefs in ivar types.
- Mark the destructor as referenced
- Perform C++ access control on the destructor


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104206 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
357f3b377abe85dd33a59122c90a361ea4226353 20-May-2010 John McCall <rjmccall@apple.com> Support implicitly closing on 'this' in a block. Fixed PR7165.

(the codegen works here, too, but that's annoying to test without execution)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ea1471e0e967548c596a71469702f8846dbaf3c0 20-May-2010 John McCall <rjmccall@apple.com> Support implicitly closing on 'this' in a block. Fixed PR7165.

(the codegen works here, too, but that's annoying to test without execution)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
699e6bdb52ad5cc144a678dd80bc346b66a9e977 20-May-2010 Chris Lattner <sabre@nondot.org> switch TemplateArgumentListBuilder to hold its flat argument list in a smallvector
instead of new[]'d. This greatly reduces the number of new[]'s, and guess what,
they were all leaked.

This adds a fixme in this hunk:

unsigned NumPackArgs = NumFlatArgs - PackBeginIndex;
+ // FIXME: NumPackArgs shouldn't be negative here???
if (NumPackArgs)
- PackArgs = &FlatArgs[PackBeginIndex];
+ PackArgs = FlatArgs.data()+PackBeginIndex;

where test/SemaTemplate/variadic-class-template-2.cpp is accessing the vector
out of range and NumPackArgs is negative. I assume variadic template args are
completely hosed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
98d279ba8092186f606abaa8298f13a0816b9cf2 20-May-2010 Chris Lattner <sabre@nondot.org> switch TemplateArgumentListBuilder to hold its flat argument list in a smallvector
instead of new[]'d. This greatly reduces the number of new[]'s, and guess what,
they were all leaked.

This adds a fixme in this hunk:

unsigned NumPackArgs = NumFlatArgs - PackBeginIndex;
+ // FIXME: NumPackArgs shouldn't be negative here???
if (NumPackArgs)
- PackArgs = &FlatArgs[PackBeginIndex];
+ PackArgs = FlatArgs.data()+PackBeginIndex;

where test/SemaTemplate/variadic-class-template-2.cpp is accessing the vector
out of range and NumPackArgs is negative. I assume variadic template args are
completely hosed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
8f782aa0b75cff1481e87720af7c22aed21cb7ff 20-May-2010 Chris Lattner <sabre@nondot.org> fix the TemplateArgumentList copy constructor to not
be a copy constructor (since it isn't one semantically)
and fix the ownership bits it sets to be correct!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104192 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
885989109ade7cb4dc493e25da41456c64b3cf6a 20-May-2010 Chris Lattner <sabre@nondot.org> fix the TemplateArgumentList copy constructor to not
be a copy constructor (since it isn't one semantically)
and fix the ownership bits it sets to be correct!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104192 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
bc7412f5096d9329664f5a1119d09f75d035e13a 20-May-2010 Chris Lattner <sabre@nondot.org> Clarify TemplateArgumentList ownership over its "flat" and
"structure" arg lists, the first step to fixing some massive
memory leaks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104191 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
56ef550c5eeea0714c635782776389df2a177584 20-May-2010 Chris Lattner <sabre@nondot.org> Clarify TemplateArgumentList ownership over its "flat" and
"structure" arg lists, the first step to fixing some massive
memory leaks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104191 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
50be5101831a8e3679e18775b41816c9ddfc39ca 19-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added basic source locations to Elaborated and DependentName types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e4da7a034a2fcf4b14d0bcc28d05de0878159061 19-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added basic source locations to Elaborated and DependentName types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
3fc091df2d07bc3b13e91d915050d5309cb83c11 19-May-2010 Fariborz Jahanian <fjahanian@apple.com> Adds support for ObjC++'s GC attribute on declaration of
object variables and functions returning such objects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2390a72a3ebd37737fec5ba1385db9c3bb22fc59 19-May-2010 Fariborz Jahanian <fjahanian@apple.com> Adds support for ObjC++'s GC attribute on declaration of
object variables and functions returning such objects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
949d2c031f173ec539d1aa667bba503fda7fb763 19-May-2010 Douglas Gregor <doug.gregor@gmail.com> Cache the linkage of a type within its canonical type, eliminating
some seriously non-linear performance with deeply nested template
instantiations, as shown in PR6998.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
60e7064d78f1a29cf969f255a19a9ae25e6bc128 19-May-2010 Douglas Gregor <dgregor@apple.com> Cache the linkage of a type within its canonical type, eliminating
some seriously non-linear performance with deeply nested template
instantiations, as shown in PR6998.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
dc4d6feb0c4f81110cef67e785e3e8374384ba5f 19-May-2010 Ted Kremenek <kremenek@apple.com> Add clang support for IBOutletCollection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104135 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
857e918a8a40deb128840308a318bf623d68295f 19-May-2010 Ted Kremenek <kremenek@apple.com> Add clang support for IBOutletCollection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104135 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
01890a8487ae3330abc501b455e2092545d54775 18-May-2010 Douglas Gregor <doug.gregor@gmail.com> Add support for Microsoft's __thiscall, from Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104026 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Type.h
asic/TokenKinds.def
arse/AttributeList.h
f813a2c03fcb05381b3252010435f557eb6b3cde 18-May-2010 Douglas Gregor <dgregor@apple.com> Add support for Microsoft's __thiscall, from Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104026 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Type.h
asic/TokenKinds.def
arse/AttributeList.h
f4d35912dc6a2f46a9ea2a4392aa29098af661be 18-May-2010 Sean Hunt <rideau3@gmail.com> Switch over the tablegen to use much prettier range technology
Also rename ABSTRACT to ABSTRACT_STMT, in keeping with the other .def
files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104017 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtVisitor.h
7381d5cfbd599fa2b9e215011ad7cbd449de231a 18-May-2010 Sean Hunt <rideau3@gmail.com> Switch over the tablegen to use much prettier range technology
Also rename ABSTRACT to ABSTRACT_STMT, in keeping with the other .def
files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104017 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
ST/Stmt.h
ST/StmtVisitor.h
623d389d3c6690af472c88aa6abce59135facce1 18-May-2010 John McCall <rjmccall@apple.com> If a switch condition is constant, don't warn about missing enum cases.
If a switch condition is constant, warn if there's no case for it.

Constant switch conditions do come up in reasonable template code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104010 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0fb97083cc0f8a82e404e22991ae80d2216e71d5 18-May-2010 John McCall <rjmccall@apple.com> If a switch condition is constant, don't warn about missing enum cases.
If a switch condition is constant, warn if there's no case for it.

Constant switch conditions do come up in reasonable template code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104010 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
62f0c356fe4509df60876dd69cc9a81e72206055 18-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add option '-analyzer-max-loop', which specifies the maximum
number of times the analyzer will go through a loop.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104007 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalysisConsumer.h
6362b893731ccf4480a96527db9e55e04b801503 18-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add option '-analyzer-max-loop', which specifies the maximum
number of times the analyzer will go through a loop.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104007 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalysisConsumer.h
1e94f8cb4678256a3438a69879b9e346038108d8 18-May-2010 Nick Lewycky <nicholas@mxc.ca> Add a 'Base' type to RecursiveASTVisitor to make recursing easier and document
how you're supposed to use it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
2fe0025a1300689b2d2517bb89ecadbab8b62ac5 18-May-2010 Nick Lewycky <nicholas@mxc.ca> Add a 'Base' type to RecursiveASTVisitor to make recursing easier and document
how you're supposed to use it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
cca3b567dafc1d3125f476ae19bf82d84b16e4c1 18-May-2010 John McCall <rjmccall@apple.com> Comments and assorted cleanups for the Objective C type AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e175a6f6ede0ae31165a18ac8bf4e8d2681b39f8 18-May-2010 John McCall <rjmccall@apple.com> Comments and assorted cleanups for the Objective C type AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a0e80100a3079c3c2410fb48f3b14ef621c2a42d 16-May-2010 John McCall <rjmccall@apple.com> Be sure to initialize the "has base type as written" field of an
ObjCObjectTypeLoc. This should clear up some valgrind errors we've
been seeing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ca6773808f8e75ffa86847e9d12885c69e9de53e 16-May-2010 John McCall <rjmccall@apple.com> Be sure to initialize the "has base type as written" field of an
ObjCObjectTypeLoc. This should clear up some valgrind errors we've
been seeing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
f4f254c60f644f08dea9cfbe0865016a5ef748a6 15-May-2010 John McCall <rjmccall@apple.com> Substantially alter the design of the Objective C type AST by introducing
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list of protocols.
An ObjCObjectPointerType is therefore just a pointer which always points to
one of these types (possibly sugared). ObjCInterfaceType is now just a kind
of ObjCObjectType which happens to not carry any protocols.

Alter a rather large number of use sites to use ObjCObjectType instead of
ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather
than hashing them in a FoldingSet. Remove some number of methods that are no
longer used, at least after this patch.

By simplifying ObjCObjectPointerType, we are now able to easily remove and apply
pointers to Objective-C types, which is crucial for a certain kind of ObjC++
metaprogramming common in WebKit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
c12c5bba6ceb6acd4e51e7a0fc03257da9cfd44e 15-May-2010 John McCall <rjmccall@apple.com> Substantially alter the design of the Objective C type AST by introducing
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list of protocols.
An ObjCObjectPointerType is therefore just a pointer which always points to
one of these types (possibly sugared). ObjCInterfaceType is now just a kind
of ObjCObjectType which happens to not carry any protocols.

Alter a rather large number of use sites to use ObjCObjectType instead of
ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather
than hashing them in a FoldingSet. Remove some number of methods that are no
longer used, at least after this patch.

By simplifying ObjCObjectPointerType, we are now able to easily remove and apply
pointers to Objective-C types, which is crucial for a certain kind of ObjC++
metaprogramming common in WebKit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/RecursiveASTVisitor.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
8b9ae4311f89abe3c417577a4e6e23a504f5d33f 15-May-2010 Douglas Gregor <doug.gregor@gmail.com> Implement semantic analysis and an AST representation for the named
return value optimization. Sema marks return statements with their
NRVO candidates (which may or may not end up using the NRVO), then, at
the end of a function body, computes and marks those variables that
can be allocated into the return slot.

I've checked this locally with some debugging statements (not
committed), but there won't be any tests until CodeGen comes along.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103865 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Stmt.h
5077c3876beeaed32280af88244e8050078619a8 15-May-2010 Douglas Gregor <dgregor@apple.com> Implement semantic analysis and an AST representation for the named
return value optimization. Sema marks return statements with their
NRVO candidates (which may or may not end up using the NRVO), then, at
the end of a function body, computes and marks those variables that
can be allocated into the return slot.

I've checked this locally with some debugging statements (not
committed), but there won't be any tests until CodeGen comes along.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103865 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Stmt.h
bc34e45429666fec96b31e42d8d06713b7eee334 15-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Make -fverbose-asm the default for platforms where the integrated
assembler defaults to on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103825 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
1b71848c5238747ede9650b7907172f8a7e088a5 15-May-2010 Daniel Dunbar <daniel@zuster.org> Driver: Make -fverbose-asm the default for platforms where the integrated
assembler defaults to on.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103825 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
25b91a5424ca030fc44be4c12811ca69c376ab99 14-May-2010 Chris Lattner <sabre@nondot.org> fit in 80 cols, remove prototypes for handling #assert since apparently noone cares.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103782 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
321c2688198f6f1a4086964e505f239683423cec 14-May-2010 Chris Lattner <sabre@nondot.org> fit in 80 cols, remove prototypes for handling #assert since apparently noone cares.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103782 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f2a9db01ec058f46629814633b4a162ee877d6f6 14-May-2010 Chris Lattner <sabre@nondot.org> Refactor ParseFunctionDeclaratorIdentifierList to have the first
identifier in the identifier list consumed before it is called.
No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103781 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
83a944763b0948c608eb48f101ec10a1ae5da46a 14-May-2010 Chris Lattner <sabre@nondot.org> Refactor ParseFunctionDeclaratorIdentifierList to have the first
identifier in the identifier list consumed before it is called.
No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103781 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1fa068248824ae0e40c8120ed65406a13c859a74 14-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added Expr::EvaluateAsAnyLValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e17a6436b429e4b18a5e157061fb13bbc677b3b0 14-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added Expr::EvaluateAsAnyLValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4d7353a63e9957701befb8527d7d59de89d000e0 14-May-2010 Daniel Dunbar <daniel@zuster.org> Revert r103770, "Added basic source locations to Elaborated and DependentName
types.", it is breaking Clang bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103775 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
a63db84b164d3f1c987a3ea6251e3092db4f317b 14-May-2010 Daniel Dunbar <daniel@zuster.org> Revert r103770, "Added basic source locations to Elaborated and DependentName
types.", it is breaking Clang bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103775 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ef012445d431eb51de6ce033e117106624a1dc73 14-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added basic source locations to Elaborated and DependentName types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
5431299f6e1e1d14b39b924fe24bf04035f4ae42 14-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Added basic source locations to Elaborated and DependentName types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e41da3379808d2abaed1219ffe9bbec2b5b025a4 14-May-2010 Douglas Gregor <doug.gregor@gmail.com> Namespaces can only be defined at global or namespace scope. Fixes PR6596.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
95f1b15ce1b281c8517d77792abe540753fbcc12 14-May-2010 Douglas Gregor <dgregor@apple.com> Namespaces can only be defined at global or namespace scope. Fixes PR6596.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
a78927d6476067d6c7a68d6bc21c93d66f265594 13-May-2010 Douglas Gregor <doug.gregor@gmail.com> Rework when and how vtables are emitted, by tracking where vtables are
"used" (e.g., we will refer to the vtable in the generated code) and
when they are defined (i.e., because we've seen the key function
definition). Previously, we were effectively tracking "potential
definitions" rather than uses, so we were a bit too eager about emitting
vtables for classes without key functions.

The new scheme:
- For every use of a vtable, Sema calls MarkVTableUsed() to indicate
the use. For example, this occurs when calling a virtual member
function of the class, defining a constructor of that class type,
dynamic_cast'ing from that type to a derived class, casting
to/through a virtual base class, etc.
- For every definition of a vtable, Sema calls MarkVTableUsed() to
indicate the definition. This happens at the end of the translation
unit for classes whose key function has been defined (so we can
delay computation of the key function; see PR6564), and will also
occur with explicit template instantiation definitions.
- For every vtable defined/used, we mark all of the virtual member
functions of that vtable as defined/used, unless we know that the key
function is in another translation unit. This instantiates virtual
member functions when needed.
- At the end of the translation unit, Sema tells CodeGen (via the
ASTConsumer) which vtables must be defined (CodeGen will define
them) and which may be used (for which CodeGen will define the
vtables lazily).

From a language perspective, both the old and the new schemes are
permissible: we're allowed to instantiate virtual member functions
whenever we want per the standard. However, all other C++ compilers
were more lazy than we were, and our eagerness was both a performance
issue (we instantiated too much) and a portability problem (we broke
Boost test cases, which now pass).

Notes:
(1) There's a ton of churn in the tests, because the order in which
vtables get emitted to IR has changed. I've tried to isolate some of
the larger tests from these issues.
(2) Some diagnostics related to
implicitly-instantiated/implicitly-defined virtual member functions
have moved to the point of first use/definition. It's better this
way.
(3) I could use a review of the places where we MarkVTableUsed, to
see if I missed any place where the language effectively requires a
vtable.

Fixes PR7114 and PR6564.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
6fb745bdf1ff1e32caf07e42093a7920726892c1 13-May-2010 Douglas Gregor <dgregor@apple.com> Rework when and how vtables are emitted, by tracking where vtables are
"used" (e.g., we will refer to the vtable in the generated code) and
when they are defined (i.e., because we've seen the key function
definition). Previously, we were effectively tracking "potential
definitions" rather than uses, so we were a bit too eager about emitting
vtables for classes without key functions.

The new scheme:
- For every use of a vtable, Sema calls MarkVTableUsed() to indicate
the use. For example, this occurs when calling a virtual member
function of the class, defining a constructor of that class type,
dynamic_cast'ing from that type to a derived class, casting
to/through a virtual base class, etc.
- For every definition of a vtable, Sema calls MarkVTableUsed() to
indicate the definition. This happens at the end of the translation
unit for classes whose key function has been defined (so we can
delay computation of the key function; see PR6564), and will also
occur with explicit template instantiation definitions.
- For every vtable defined/used, we mark all of the virtual member
functions of that vtable as defined/used, unless we know that the key
function is in another translation unit. This instantiates virtual
member functions when needed.
- At the end of the translation unit, Sema tells CodeGen (via the
ASTConsumer) which vtables must be defined (CodeGen will define
them) and which may be used (for which CodeGen will define the
vtables lazily).

From a language perspective, both the old and the new schemes are
permissible: we're allowed to instantiate virtual member functions
whenever we want per the standard. However, all other C++ compilers
were more lazy than we were, and our eagerness was both a performance
issue (we instantiated too much) and a portability problem (we broke
Boost test cases, which now pass).

Notes:
(1) There's a ton of churn in the tests, because the order in which
vtables get emitted to IR has changed. I've tried to isolate some of
the larger tests from these issues.
(2) Some diagnostics related to
implicitly-instantiated/implicitly-defined virtual member functions
have moved to the point of first use/definition. It's better this
way.
(3) I could use a review of the places where we MarkVTableUsed, to
see if I missed any place where the language effectively requires a
vtable.

Fixes PR7114 and PR6564.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
6f52e3c5663a669ec61379e933e0fe7ad2f1a566 13-May-2010 Chris Lattner <sabre@nondot.org> add a couple of key functions for classes without them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103688 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
bef0efd11bc4430a3ee437a3213cec5c18af855a 13-May-2010 Chris Lattner <sabre@nondot.org> add a couple of key functions for classes without them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103688 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
8f4b74e651450b38ef1b217fcf9b6c430424230a 13-May-2010 Chris Lattner <sabre@nondot.org> "this patch properly addresses escaping < and > which might appear
(e.g. for C++ operators) in the xml dump.

I also re-enabled the unit test for ast-print-xml (or so I think)
at least, make test didn't fail..."

patch by Sebastien Binet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103671 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DocumentXML.h
edd8df9cd260a74cfeea3c921a78d5f33c659573 13-May-2010 Chris Lattner <sabre@nondot.org> "this patch properly addresses escaping < and > which might appear
(e.g. for C++ operators) in the xml dump.

I also re-enabled the unit test for ast-print-xml (or so I think)
at least, make test didn't fail..."

patch by Sebastien Binet!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103671 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DocumentXML.h
0d225d54d4cfdccbaa0fb7e68f3b05b989e5c60e 12-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin/i386: Don't allow compiling C++ with -fapple-kext, we don't support the necessary ABI yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103632 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
b30575c22f249c0697df0cd2aa872d14d4fa9c57 12-May-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin/i386: Don't allow compiling C++ with -fapple-kext, we don't support the necessary ABI yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103632 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
b6a682e09b458a1e123b0bb6b7c415eb62fe2ecc 12-May-2010 John McCall <rjmccall@apple.com> When checking scopes for indirect goto, be more permissive (but still safe)
about the permitted scopes. Specifically:
1) Permit labels and gotos to appear after a prologue of variable initializations.
2) Permit indirect gotos to jump out of scopes that don't require cleanup.
3) Diagnose possible attempts to indirect-jump out of scopes that do require
cleanup.
This requires a substantial reinvention of the algorithm for checking indirect
goto. The current algorithm is Omega(M*N), with M = the number of unique
scopes being jumped from and N = the number of unique scopes being jumped to,
with an additional factor that is probably (worst-case) linear in the depth
of scopes. Thus the entire thing is likely cubic given some truly bizarre
ill-formed code; on well-formed code the additional factor collapses to
an amortized constant (when amortized over the entire function) and so
the algorithm is quadratic. Even this requires every label to appear in
its own scope, which would be very unusual for indirect-goto code (and
extremely unlikely for well-formed code); it is far more likely that
all labels will be in the same scope and so the algorithm becomes linear.
For such a marginal feature, I am fairly happy with this result.

(this is using JumpDiagnostic's definition of scope, where successive
variables in a block appear in their own scope)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103536 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ddb0b4d5391d3e6bc9dcf93dc42310b20c96b6fc 12-May-2010 John McCall <rjmccall@apple.com> When checking scopes for indirect goto, be more permissive (but still safe)
about the permitted scopes. Specifically:
1) Permit labels and gotos to appear after a prologue of variable initializations.
2) Permit indirect gotos to jump out of scopes that don't require cleanup.
3) Diagnose possible attempts to indirect-jump out of scopes that do require
cleanup.
This requires a substantial reinvention of the algorithm for checking indirect
goto. The current algorithm is Omega(M*N), with M = the number of unique
scopes being jumped from and N = the number of unique scopes being jumped to,
with an additional factor that is probably (worst-case) linear in the depth
of scopes. Thus the entire thing is likely cubic given some truly bizarre
ill-formed code; on well-formed code the additional factor collapses to
an amortized constant (when amortized over the entire function) and so
the algorithm is quadratic. Even this requires every label to appear in
its own scope, which would be very unusual for indirect-goto code (and
extremely unlikely for well-formed code); it is far more likely that
all labels will be in the same scope and so the algorithm becomes linear.
For such a marginal feature, I am fairly happy with this result.

(this is using JumpDiagnostic's definition of scope, where successive
variables in a block appear in their own scope)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103536 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ab1f1819386bd718899582eb6426b2619b11e2cf 11-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Merged Elaborated and QualifiedName types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/RecursiveASTVisitor.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/TypeXML.def
465d41b92b2c862f3062c412a0538db65c6a2661 11-May-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Merged Elaborated and QualifiedName types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/RecursiveASTVisitor.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/TypeXML.def
dec66e7d561ef6363f0cf77832b105c960e2a80a 11-May-2010 Douglas Gregor <doug.gregor@gmail.com> The C++98/03 standard is disturbingly silent about out-of-scope
explicit instantiations of template. C++0x clarifies the intent
(they're ill-formed in some cases; see [temp.explicit] for
details). However, one could squint at the C++98/03 standard and
conclude they are permitted, so reduce the error to a warning
(controlled by -Wc++0x-compat) in C++98/03 mode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
2166beba8d939d2938c5401af2c8d3687afd5d8c 11-May-2010 Douglas Gregor <dgregor@apple.com> The C++98/03 standard is disturbingly silent about out-of-scope
explicit instantiations of template. C++0x clarifies the intent
(they're ill-formed in some cases; see [temp.explicit] for
details). However, one could squint at the C++98/03 standard and
conclude they are permitted, so reduce the error to a warning
(controlled by -Wc++0x-compat) in C++98/03 mode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f9c47f2d86e4cf90f50b2f2e44c48705f4c9bbde 11-May-2010 Douglas Gregor <doug.gregor@gmail.com> Fixes for compilation with Microsoft Visual Studio 2010, from Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103458 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
nalysis/ProgramPoint.h
arse/Ownership.h
a5fdd9ce694b1c2dbfd225cb6f55ef743d1ab562 11-May-2010 Douglas Gregor <dgregor@apple.com> Fixes for compilation with Microsoft Visual Studio 2010, from Steven Watanabe!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103458 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
nalysis/ProgramPoint.h
arse/Ownership.h
40cb1b8a4b306732502de20a60e3498fbcf0ed3f 11-May-2010 John McCall <rjmccall@apple.com> Refactor the constant-evaluator so that it only supports a single form
of constant-evaluation. Formerly you could control whether it accepted
local l-values or not; now it always evaluates local l-values in the core
routines, but filters them out where consumed by the top-level routines.
This will make it much easier to cache evaluability.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103444 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
42c8f87eb60958170c46767273bf93e6c96125bf 11-May-2010 John McCall <rjmccall@apple.com> Refactor the constant-evaluator so that it only supports a single form
of constant-evaluation. Formerly you could control whether it accepted
local l-values or not; now it always evaluates local l-values in the core
routines, but filters them out where consumed by the top-level routines.
This will make it much easier to cache evaluability.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103444 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9b5950a974c52c637cde314bc810e1d639aae6a5 10-May-2010 Ted Kremenek <kremenek@apple.com> Allocate most of DeclarationNamesTable using ASTContext's allcocator. The only things that
aren't allocated this way are the internal FoldingSets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
45d9c2d2b1b4ada29160edadc071db9779c0ec07 10-May-2010 Ted Kremenek <kremenek@apple.com> Allocate most of DeclarationNamesTable using ASTContext's allcocator. The only things that
aren't allocated this way are the internal FoldingSets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
d245d9a6a359e2e5c7b3d949bf8161e6412010e3 10-May-2010 Ted Kremenek <kremenek@apple.com> Start converting pieces of DeclarationNameTable to be allocated using ASTContext's allocator.
While DeclarationNameTable doesn't leak, it uses 'malloc' too often. Start with having
'CXXLiteralOperatorNames' allocated using ASTContext's allocator and add a 'DoDestroy()' method
to DeclarationNameTable that is called by ~ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclarationName.h
ac9590effa90406767a544005ed1de52e258306b 10-May-2010 Ted Kremenek <kremenek@apple.com> Start converting pieces of DeclarationNameTable to be allocated using ASTContext's allocator.
While DeclarationNameTable doesn't leak, it uses 'malloc' too often. Start with having
'CXXLiteralOperatorNames' allocated using ASTContext's allocator and add a 'DoDestroy()' method
to DeclarationNameTable that is called by ~ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclarationName.h
9b92799c22e4763de73b8143738963b518327a75 10-May-2010 Ted Kremenek <kremenek@apple.com> Convert CXXTempory[] in CXXExprWithTemporaries to be allocated using ASTContext's allocator. Fixes <rdar://problem/7961605>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103421 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d04ed416be7c55bddddab1fa3fd38a0113a6b3da 10-May-2010 Ted Kremenek <kremenek@apple.com> Convert CXXTempory[] in CXXExprWithTemporaries to be allocated using ASTContext's allocator. Fixes <rdar://problem/7961605>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103421 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f60cac43575e3fa97a7c405b0b4de60b760daf3b 10-May-2010 Douglas Gregor <doug.gregor@gmail.com> Improved -ast-print-xml for C++, from Sebastien Binet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103412 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
rontend/DocumentXML.h
rontend/TypeXML.def
4bd98e886012817fcfd40aa4c8329fa48f69b0a9 10-May-2010 Douglas Gregor <dgregor@apple.com> Improved -ast-print-xml for C++, from Sebastien Binet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103412 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
rontend/DocumentXML.h
rontend/TypeXML.def
ab97c573784cd225ac9c00fbe75ece29850f8580 10-May-2010 Douglas Gregor <doug.gregor@gmail.com> Alternative workaround for MSVC compilation failure, from Dimitry Andric

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103409 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c896ea80bb7289a3f7eef57d3acdcd445b6851db 10-May-2010 Douglas Gregor <dgregor@apple.com> Alternative workaround for MSVC compilation failure, from Dimitry Andric

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103409 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f4304a25d5df6f5a44db3b4d49a35fa55417ae4b 10-May-2010 Chris Lattner <sabre@nondot.org> pch'ify CXXNewExpr and CXXZeroInitValueExpr



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
5921863d8f24084797863b5df37842113bac4352 10-May-2010 Chris Lattner <sabre@nondot.org> pch'ify CXXNewExpr and CXXZeroInitValueExpr



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
8ac9cd508f6f74b94749b4e96163e863e842086c 10-May-2010 Chandler Carruth <chandlerc@gmail.com> Doxygen-ify a comment and add an example of when this AST node is required.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103389 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ddfe960d252a93525692b547945236d361d1929f 10-May-2010 Chandler Carruth <chandlerc@gmail.com> Doxygen-ify a comment and add an example of when this AST node is required.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103389 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
2a29863f61f241641ffa8c7398233e4e5f32abe0 10-May-2010 Chris Lattner <sabre@nondot.org> pchify CXXTemporary, CXXBindTemporaryExpr, and
CXXExprWithTemporaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103387 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
d2598368876cfe40bc8465540033bc5b5e58d8af 10-May-2010 Chris Lattner <sabre@nondot.org> pchify CXXTemporary, CXXBindTemporaryExpr, and
CXXExprWithTemporaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103387 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
3569924fe651bd875a27a52fe5add823a17aa827 09-May-2010 Chandler Carruth <chandlerc@gmail.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103378 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
5ce667770652016e73dae991372effb5d6f6bb0f 09-May-2010 Chandler Carruth <chandlerc@gmail.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103378 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
31a064dad51d5659cd05a6ab87843e5cf00238b5 09-May-2010 Chris Lattner <sabre@nondot.org> pch'ify default argument definitions and uses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103376 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
030854b95f7bfd86aaa8afd9ae1aff9768a37e9a 09-May-2010 Chris Lattner <sabre@nondot.org> pch'ify default argument definitions and uses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103376 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
d5f99d18d76cc4f105361876e34c2a0f703efeb3 09-May-2010 Chris Lattner <sabre@nondot.org> pch'ify 'this' and 'throw'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
2fbdfcdf3bbf7b941853d38b123930755e837437 09-May-2010 Chris Lattner <sabre@nondot.org> pch'ify 'this' and 'throw'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
b6538bba80f90fb335518f7cc1f06b441db35702 09-May-2010 Chris Lattner <sabre@nondot.org> pch'ify typeid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
14ab24f01e36d495fce183aa67b41e45cdd54f39 09-May-2010 Chris Lattner <sabre@nondot.org> pch'ify typeid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
f7557522cd45846f3c017490748ed7b2b97bdd83 09-May-2010 Chris Lattner <sabre@nondot.org> pchify CXXMemberCallExpr correctly. Before it would serialize
and deserialize as a CallExpr which is close, but ends up
deserializing with the wrong stmt class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
1817bd483b538fd3f4530649f5cb900bad9e8a76 09-May-2010 Chris Lattner <sabre@nondot.org> pchify CXXMemberCallExpr correctly. Before it would serialize
and deserialize as a CallExpr which is close, but ends up
deserializing with the wrong stmt class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
070aaeac417cf0f715968b1f4974c651f1f147ad 09-May-2010 Anders Carlsson <andersca@mac.com> Actually compute the empty subobject sizes. No functionality change yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103363 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
836fc14e6cdad2362fc31f11bf7b14832cba34b9 09-May-2010 Anders Carlsson <andersca@mac.com> Actually compute the empty subobject sizes. No functionality change yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103363 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
f4be20c3c45287bb2971efcf6959e91620b15371 09-May-2010 Anders Carlsson <andersca@mac.com> Add a SizeOfLargestEmptySubobject member to ASTRecordLayout. For C++ classes this will hold the largest empty subobject or 0 if the class doesn't have any empty subobjects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103359 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
c3fddeb4384de2238ec03c77be6bee606725609e 09-May-2010 Anders Carlsson <andersca@mac.com> Add a SizeOfLargestEmptySubobject member to ASTRecordLayout. For C++ classes this will hold the largest empty subobject or 0 if the class doesn't have any empty subobjects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103359 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
bca935e66657a4eae5fa48c8d59d5e0592e5bd86 09-May-2010 Douglas Gregor <doug.gregor@gmail.com> Attempted workaround for MSVC compile error

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103358 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1f10962edd40e86c999f037c16137ada4d080b62 09-May-2010 Douglas Gregor <dgregor@apple.com> Attempted workaround for MSVC compile error

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103358 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e5ae4387a39699967565520bc4169dec43d7f147 08-May-2010 Douglas Gregor <doug.gregor@gmail.com> When printing an overload candidate that failed due to SFINAE, print a
specific message that includes the template arguments, e.g.,

test/SemaTemplate/overload-candidates.cpp:27:20: note: candidate template
ignored: substitution failure [with T = int *]
typename T::type get_type(const T&); // expected-note{{candidate ...
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ec20f46740a59758b12c22108002395bcf5b6f9b 08-May-2010 Douglas Gregor <dgregor@apple.com> When printing an overload candidate that failed due to SFINAE, print a
specific message that includes the template arguments, e.g.,

test/SemaTemplate/overload-candidates.cpp:27:20: note: candidate template
ignored: substitution failure [with T = int *]
typename T::type get_type(const T&); // expected-note{{candidate ...
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
afb1d517a6c0a9802685cbd6a93aeba7290a12cf 08-May-2010 Douglas Gregor <doug.gregor@gmail.com> Improve overload-candidate diagnostic for a function template that
failed because the explicitly-specified template arguments did not
match its template parameters, e.g.,

test/SemaTemplate/overload-candidates.cpp:18:8: note: candidate
template
ignored: invalid explicitly-specified argument for template
parameter 'I'
void get(const T&);
^
test/SemaTemplate/overload-candidates.cpp:20:8: note: candidate
template
ignored: invalid explicitly-specified argument for 1st template
parameter
void get(const T&);
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103344 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f1a8445036a2d047c7165d4170e3058cdeaba6eb 08-May-2010 Douglas Gregor <dgregor@apple.com> Improve overload-candidate diagnostic for a function template that
failed because the explicitly-specified template arguments did not
match its template parameters, e.g.,

test/SemaTemplate/overload-candidates.cpp:18:8: note: candidate
template
ignored: invalid explicitly-specified argument for template
parameter 'I'
void get(const T&);
^
test/SemaTemplate/overload-candidates.cpp:20:8: note: candidate
template
ignored: invalid explicitly-specified argument for 1st template
parameter
void get(const T&);
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103344 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ca8d79a0dc1b31a73626e366e17f0ddb95250b19 08-May-2010 Douglas Gregor <doug.gregor@gmail.com> When template argument deduction fails because the call had too
many/too few arguments, use the same diagnostic we use for arity
mismatches in non-templates (but note that it's a function template).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103341 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a18592ec62e898aed7ed71e1f09c314590ce9ec7 08-May-2010 Douglas Gregor <dgregor@apple.com> When template argument deduction fails because the call had too
many/too few arguments, use the same diagnostic we use for arity
mismatches in non-templates (but note that it's a function template).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103341 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a4f7ff4959c7a5a0ff5e093facad76671e176f28 08-May-2010 Douglas Gregor <doug.gregor@gmail.com> When printing a non-viable overload candidate that failed due to
conflicting deduced template argument values, give a more specific
reason along with those values, e.g.,

test/SemaTemplate/overload-candidates.cpp:4:10: note: candidate template
ignored: deduced conflicting types for parameter 'T' ('int' vs. 'long')
const T& min(const T&, const T&);
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
a933319ebf754396623165f9dc0a29c2a48879f5 08-May-2010 Douglas Gregor <dgregor@apple.com> When printing a non-viable overload candidate that failed due to
conflicting deduced template argument values, give a more specific
reason along with those values, e.g.,

test/SemaTemplate/overload-candidates.cpp:4:10: note: candidate template
ignored: deduced conflicting types for parameter 'T' ('int' vs. 'long')
const T& min(const T&, const T&);
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
asic/DiagnosticSemaKinds.td
15d6c2fb6d490811b41792b7d90331fb9c16694e 08-May-2010 Douglas Gregor <doug.gregor@gmail.com> When we encounter a non-dependent type during template instantiation,
mark any declarations we see inside of that type as
"referenced". Fixes PR7079.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b4eeaff1595b7d0a8fbc2b3c8bec7dc63f48b7fd 08-May-2010 Douglas Gregor <dgregor@apple.com> When we encounter a non-dependent type during template instantiation,
mark any declarations we see inside of that type as
"referenced". Fixes PR7079.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
34554d5a66067c6aec5d0aa846c1ce041156c76d 08-May-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a recursive AST visitor that makes it trivial to recursively
walk an entire AST, including all of the types, declarations,
statements, and expressions, and allowing one to easily override the
behavior of the walk at any particular node kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
d30bf2eb6d6bbebd41236bf205d3a6dfc51a3659 08-May-2010 Douglas Gregor <dgregor@apple.com> Introduce a recursive AST visitor that makes it trivial to recursively
walk an entire AST, including all of the types, declarations,
statements, and expressions, and allowing one to easily override the
behavior of the walk at any particular node kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecursiveASTVisitor.h
b063d153c55d662ec34f4773387bc45d2289ff74 07-May-2010 Chris Lattner <sabre@nondot.org> add PCH support for a bunch of C++ Decls, patch by
Andrew Sutton!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103301 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
6ad9ac097918fbdeb443ea7b99d4db9e49b28534 07-May-2010 Chris Lattner <sabre@nondot.org> add PCH support for a bunch of C++ Decls, patch by
Andrew Sutton!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103301 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
33ca89e76b3797cc73c0e1540370614e7a7127c3 07-May-2010 Chris Lattner <sabre@nondot.org> add more types to -ast-print-xml, PR5006


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103294 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TypeXML.def
fde75965ced8f09b9136f6d9a0f2ec35309e1a35 07-May-2010 Chris Lattner <sabre@nondot.org> add more types to -ast-print-xml, PR5006


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103294 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TypeXML.def
11198d21ca469374ead88920b60b5bbbe89808f8 07-May-2010 Ted Kremenek <kremenek@apple.com> Add NamedDecl::printName() for clients that to use getNameAsString() but are already using a raw_ostream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0b2227e1ca4eb7b2deaec3da963b7777f0bd7f7b 07-May-2010 Ted Kremenek <kremenek@apple.com> Add NamedDecl::printName() for clients that to use getNameAsString() but are already using a raw_ostream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cf4d346eac81f9f25f32ed2a905eef44e41892fa 07-May-2010 Douglas Gregor <doug.gregor@gmail.com> Add a stub frontend action for BoostCon, for next week's workshop.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103258 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
f78cc4360eb4284091d0d38f3055084360f8c753 07-May-2010 Douglas Gregor <dgregor@apple.com> Add a stub frontend action for BoostCon, for next week's workshop.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103258 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
c70306e9aecfba0dbc325d9a9df3d8033a8a0d19 07-May-2010 Chris Lattner <sabre@nondot.org> reimplement the caching in the SourceManager::isBeforeInTranslationUnit()
method to be correct. Right now it correctly computes the cache, then
goes ahead and computes the result the hard way, then asserts that they
match. Next I'll actually turn it on.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
dcb1d68f6ffa183f3919aee6b554aec3793bf13e 07-May-2010 Chris Lattner <sabre@nondot.org> reimplement the caching in the SourceManager::isBeforeInTranslationUnit()
method to be correct. Right now it correctly computes the cache, then
goes ahead and computes the result the hard way, then asserts that they
match. Next I'll actually turn it on.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
4c29b9f0bd9a3b396eb233e5b0db0ea291bbcf4a 06-May-2010 Chris Lattner <sabre@nondot.org> ignore *.orig when installing, patch by Brooks Davis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103200 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
a3cb8ee5282193017af454cab0a54b810246ef66 06-May-2010 Chris Lattner <sabre@nondot.org> ignore *.orig when installing, patch by Brooks Davis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103200 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
da6871e83713cd3fe914a4c44fd4b03898c465e3 06-May-2010 Douglas Gregor <doug.gregor@gmail.com> Fixed DISABLE_SMART_POINTERS breakage

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103198 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
eecf38f821fe8e113722096b77da7d68b26d28d1 06-May-2010 Douglas Gregor <dgregor@apple.com> Fixed DISABLE_SMART_POINTERS breakage

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103198 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
dfe1a118ad79275e18f385f45d2860a93f122c41 06-May-2010 Rafael Espindola <rafael.espindola@gmail.com> Handle -ffunction-sections and -fdata-sections in the driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103197 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
9cf933a67e54bea5475c5027fee2c1cf7365ee05 06-May-2010 Rafael Espindola <rafael.espindola@gmail.com> Handle -ffunction-sections and -fdata-sections in the driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103197 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
04561e7b100727086be536206e1e411ae57f5e44 06-May-2010 Douglas Gregor <doug.gregor@gmail.com> Try to work around a Visual C++ bug with copy-assignment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103190 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
64219a2aee02e98a978dbd60d863f488c3369880 06-May-2010 Douglas Gregor <dgregor@apple.com> Try to work around a Visual C++ bug with copy-assignment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103190 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ceb8f0bff12c7c148c9e64c7d133d5ac0f01c653 06-May-2010 Douglas Gregor <doug.gregor@gmail.com> Rework our handling of temporary objects within the conditions of
if/switch/while/do/for statements. Previously, we would end up either:

(1) Forgetting to destroy temporaries created in the condition (!),
(2) Destroying the temporaries created in the condition *before*
converting the condition to a boolean value (or, in the case of a
switch statement, to an integral or enumeral value), or
(3) In a for statement, destroying the condition's temporaries at
the end of the increment expression (!).

We now destroy temporaries in conditions at the right times. This
required some tweaking of the Parse/Sema interaction, since the parser
was building full expressions too early in many places.

Fixes PR7067.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103187 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
586596fd7f7a336a2847b300c80614dcf39ab6d5 06-May-2010 Douglas Gregor <dgregor@apple.com> Rework our handling of temporary objects within the conditions of
if/switch/while/do/for statements. Previously, we would end up either:

(1) Forgetting to destroy temporaries created in the condition (!),
(2) Destroying the temporaries created in the condition *before*
converting the condition to a boolean value (or, in the case of a
switch statement, to an integral or enumeral value), or
(3) In a for statement, destroying the condition's temporaries at
the end of the increment expression (!).

We now destroy temporaries in conditions at the right times. This
required some tweaking of the Parse/Sema interaction, since the parser
was building full expressions too early in many places.

Fixes PR7067.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103187 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
dd757aeb8cc31d73e3c83044e438d429d0506945 06-May-2010 John McCall <rjmccall@apple.com> Push TypeSourceInfo::getTypeLoc() into a header file so that it's
inlineable. That header file has to be TypeLoc.h, which means that
TypeLoc.h needs to depend on Decl.h because TypeSourceInfo doesn't
have its own header. That could be remedied, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/TypeLoc.h
3c385c28cf1f27b193a620d2e51f814873362ceb 06-May-2010 John McCall <rjmccall@apple.com> Push TypeSourceInfo::getTypeLoc() into a header file so that it's
inlineable. That header file has to be TypeLoc.h, which means that
TypeLoc.h needs to depend on Decl.h because TypeSourceInfo doesn't
have its own header. That could be remedied, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/TypeLoc.h
d32e9f2752bcd182a1c3ced3039139a5b0dcee18 06-May-2010 John McCall <rjmccall@apple.com> Kill a never-defined, never-used member function. Thanks, Enea.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103175 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
04a025e9980a5d9ce4bebbeff53e76ffb8377fe0 06-May-2010 John McCall <rjmccall@apple.com> Kill a never-defined, never-used member function. Thanks, Enea.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103175 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
1060a03c4a8637ff3b7da7ad4c688201068cd4ac 06-May-2010 John McCall <rjmccall@apple.com> Rearchitect -Wconversion and -Wsign-compare. Instead of computing them
"bottom-up" when implicit casts and comparisons are inserted, compute them
"top-down" when the full expression is finished. Makes it easier to
coordinate warnings and thus implement -Wconversion for signedness
conversions without double-warning with -Wsign-compare. Also makes it possible
to realize that a signedness conversion is okay because the context is
performing the inverse conversion. Also simplifies some logic that was
trying to calculate the ultimate comparison/result type and getting it wrong.
Also fixes a problem with the C++ explicit casts which are often "implemented"
in the AST with a series of implicit cast expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103174 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
323ed74658bc8375278eabf074b4777458376540 06-May-2010 John McCall <rjmccall@apple.com> Rearchitect -Wconversion and -Wsign-compare. Instead of computing them
"bottom-up" when implicit casts and comparisons are inserted, compute them
"top-down" when the full expression is finished. Makes it easier to
coordinate warnings and thus implement -Wconversion for signedness
conversions without double-warning with -Wsign-compare. Also makes it possible
to realize that a signedness conversion is okay because the context is
performing the inverse conversion. Also simplifies some logic that was
trying to calculate the ultimate comparison/result type and getting it wrong.
Also fixes a problem with the C++ explicit casts which are often "implemented"
in the AST with a series of implicit cast expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103174 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2ba5f6ed00499333dc72435d27c59a500d0f6ec 06-May-2010 John McCall <rjmccall@apple.com> Remember the number of positive and negative bits used by the enumerators of
an enum in the enum decl itself. Use some spare bits from TagDecl for this
purpose.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1b5a618c59025898806160ed5e7f0ff5bb79e482 06-May-2010 John McCall <rjmccall@apple.com> Remember the number of positive and negative bits used by the enumerators of
an enum in the enum decl itself. Use some spare bits from TagDecl for this
purpose.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5ed9818c4f1e9efae459a35b7d237616ceb52ce0 06-May-2010 Chandler Carruth <chandlerc@gmail.com> Remove a dependency on Frontend headers in the Driver library. Also saves
building and passing arguments to cc1 layer when setting values to their
defaults.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103162 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
c40f73c6e715044d327409564bf3656254101d46 06-May-2010 Chandler Carruth <chandlerc@gmail.com> Remove a dependency on Frontend headers in the Driver library. Also saves
building and passing arguments to cc1 layer when setting values to their
defaults.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103162 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
b27ccd3543e83a46978f71f20809cd2c79788ed1 06-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Turn -analyzer-inline-call on for C functions. This also fixed a bug that
after inlining post-call checking shouldn't be done.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103161 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
1c625f25055331bf76ab5479a8060d2b0f61e8b8 06-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Turn -analyzer-inline-call on for C functions. This also fixed a bug that
after inlining post-call checking shouldn't be done.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103161 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
73361dc73a0970d16bce096df7f15c202e416f74 06-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make -analyzer-inline-call not a separate analysis. Instead it's a boolean
flag now, and can be used with other analyses. Only turned it on for C++
methods for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103160 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalysisConsumer.h
7b99d12b4ca67fccdf5090761ba257732e954e75 06-May-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make -analyzer-inline-call not a separate analysis. Instead it's a boolean
flag now, and can be used with other analyses. Only turned it on for C++
methods for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103160 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalysisConsumer.h
84e55065156b3e56d6997b97daf748c99953e9c4 06-May-2010 Douglas Gregor <doug.gregor@gmail.com> Partial and full specializations of a class template may have a
different tag kind ("struct" vs. "class") than the primary template,
which has an affect on access control.

Should fix the last remaining Boost.Accumulors failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103144 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
13c8577201e4fc0ddac5f09d05fd1778832137d1 06-May-2010 Douglas Gregor <dgregor@apple.com> Partial and full specializations of a class template may have a
different tag kind ("struct" vs. "class") than the primary template,
which has an affect on access control.

Should fix the last remaining Boost.Accumulors failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103144 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
20e7979ca05e7f33ed9b9ef1f071c392650f481f 06-May-2010 John McCall <rjmccall@apple.com> Add IgnoreParenImpCasts() to Expr, which is basically like IgnoreParenCasts
except it only skips implicit casts.

Also fix ObjCImplicitGetterSetterRefExpr's child_begin to skip the base expression
if it's actually a type reference (which you get with static property references).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2fc46bf1a9bc31d50f82de37c70ea257d3cded27 06-May-2010 John McCall <rjmccall@apple.com> Add IgnoreParenImpCasts() to Expr, which is basically like IgnoreParenCasts
except it only skips implicit casts.

Also fix ObjCImplicitGetterSetterRefExpr's child_begin to skip the base expression
if it's actually a type reference (which you get with static property references).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
10250b5323c9c3d19a405b6ff110092038e9a6f6 05-May-2010 Fariborz Jahanian <fjahanian@apple.com> This patch deals with Sema Part of Setter/Getter synthesis
of properties which are of C++ objects. Code Gen to follow
(Radar 7468090).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103123 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
17cb326cb62a59f53d92236394af40eaae4eddbd 05-May-2010 Fariborz Jahanian <fjahanian@apple.com> This patch deals with Sema Part of Setter/Getter synthesis
of properties which are of C++ objects. Code Gen to follow
(Radar 7468090).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103123 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
ef2008e92d1b320db947c63bc9e795d2ae39e2a2 05-May-2010 Sean Hunt <rideau3@gmail.com> Reapplying patch to change StmtNodes.def to StmtNodes.td, this time
with no whitespace. This will allow statements to be referred to in
attribute TableGen files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Makefile
ST/Stmt.h
ST/StmtNodes.def
ST/StmtNodes.td
ST/StmtVisitor.h
MakeLists.txt
akefile
4bfe1968410ea8ffe3b4f629addd7c4bcf484765 05-May-2010 Sean Hunt <rideau3@gmail.com> Reapplying patch to change StmtNodes.def to StmtNodes.td, this time
with no whitespace. This will allow statements to be referred to in
attribute TableGen files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Makefile
ST/Stmt.h
ST/StmtNodes.def
ST/StmtNodes.td
ST/StmtVisitor.h
MakeLists.txt
akefile
fa2ce27369f457c7a0c5ae5f682a793316cc587d 05-May-2010 Sean Hunt <rideau3@gmail.com> Revert r103072; I accidentally ended up deleting a bunch of trailing
whitespace which makes this patch unreadable. Will recommit without the
whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103086 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Makefile
ST/Stmt.h
ST/StmtNodes.def
ST/StmtNodes.td
ST/StmtVisitor.h
MakeLists.txt
akefile
c302113179a1c2b1254224ea9b6f5316ceeb375c 05-May-2010 Sean Hunt <rideau3@gmail.com> Revert r103072; I accidentally ended up deleting a bunch of trailing
whitespace which makes this patch unreadable. Will recommit without the
whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103086 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Makefile
ST/Stmt.h
ST/StmtNodes.def
ST/StmtNodes.td
ST/StmtVisitor.h
MakeLists.txt
akefile
420114dbe1c13c99e6246675e10ee916ad4d1cca 05-May-2010 Douglas Gregor <doug.gregor@gmail.com> Support for 'template' as a disambiguator (PR7030)

ParseOptionalCXXScopeSpecifier() only annotates the subset of
template-ids which are not subject to lexical ambiguity. Add support
for the more general case in ParseUnqualifiedId() to handle cases
such as A::template B().

Also improve some diagnostic locations.

Fixes PR7030, from Alp Toker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0278e123b4606ea15dbfa717e9c5a76a5ef2bc7d 05-May-2010 Douglas Gregor <dgregor@apple.com> Support for 'template' as a disambiguator (PR7030)

ParseOptionalCXXScopeSpecifier() only annotates the subset of
template-ids which are not subject to lexical ambiguity. Add support
for the more general case in ParseUnqualifiedId() to handle cases
such as A::template B().

Also improve some diagnostic locations.

Fixes PR7030, from Alp Toker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
654b71fa852b0cc963dc2748142fda6eb3991346 05-May-2010 Chris Lattner <sabre@nondot.org> add a new --print-diagnostic-categories option, which causes the driver to
print out all of the category numbers with their description. This is useful
for clients that want to map the numbers produced by
--fdiagnostics-show-category=id to their human readable string form. The
output is simple but utilitarian:

$ clang --print-diagnostic-categories
1,Format String
2,Something Else

This implements rdar://7928193


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103080 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
c3d26cc4eea5187ce13ed180b479ff8ef41015a7 05-May-2010 Chris Lattner <sabre@nondot.org> add a new --print-diagnostic-categories option, which causes the driver to
print out all of the category numbers with their description. This is useful
for clients that want to map the numbers produced by
--fdiagnostics-show-category=id to their human readable string form. The
output is simple but utilitarian:

$ clang --print-diagnostic-categories
1,Format String
2,Something Else

This implements rdar://7928193


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103080 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d131290ee2068b996311073e68d5aba798632cb7 05-May-2010 Douglas Gregor <doug.gregor@gmail.com> Reimplement code generation for copying fields in the
implicitly-generated copy constructor. Previously, Sema would perform
some checking and instantiation to determine which copy constructors,
etc., would be called, then CodeGen would attempt to figure out which
copy constructor to call... but would get it wrong, or poke at an
uninstantiated default argument, or fail in other ways.

The new scheme is similar to what we now do for the implicit
copy-assignment operator, where Sema performs all of the semantic
analysis and builds specific ASTs that look similar to the ASTs we'd
get from explicitly writing the copy constructor, so that CodeGen need
only do a direct translation.

However, it's not quite that simple because one cannot explicit write
elementwise copy-construction of an array. So, I've extended
CXXBaseOrMemberInitializer to contain a list of indexing variables
used to copy-construct the elements. For example, if we have:

struct A { A(const A&); };

struct B {
A array[2][3];
};

then we generate an implicit copy assignment operator for B that looks
something like this:

B::B(const B &other) : array[i0][i1](other.array[i0][i1]) { }

CodeGen will loop over the invented variables i0 and i1 to visit all
elements in the array, so that each element in the destination array
will be copy-constructed from the corresponding element in the source
array. Of course, if we're dealing with arrays of scalars or class
types with trivial copy-assignment operators, we just generate a
memcpy rather than a loop.

Fixes PR6928, PR5989, and PR6887. Boost.Regex now compiles and passes
all of its regression tests.

Conspicuously missing from this patch is handling for the exceptional
case, where we need to destruct those objects that we have
constructed. I'll address that case separately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
fb8cc253420e93cee33d29df5a2bdae6aaf16e39 05-May-2010 Douglas Gregor <dgregor@apple.com> Reimplement code generation for copying fields in the
implicitly-generated copy constructor. Previously, Sema would perform
some checking and instantiation to determine which copy constructors,
etc., would be called, then CodeGen would attempt to figure out which
copy constructor to call... but would get it wrong, or poke at an
uninstantiated default argument, or fail in other ways.

The new scheme is similar to what we now do for the implicit
copy-assignment operator, where Sema performs all of the semantic
analysis and builds specific ASTs that look similar to the ASTs we'd
get from explicitly writing the copy constructor, so that CodeGen need
only do a direct translation.

However, it's not quite that simple because one cannot explicit write
elementwise copy-construction of an array. So, I've extended
CXXBaseOrMemberInitializer to contain a list of indexing variables
used to copy-construct the elements. For example, if we have:

struct A { A(const A&); };

struct B {
A array[2][3];
};

then we generate an implicit copy assignment operator for B that looks
something like this:

B::B(const B &other) : array[i0][i1](other.array[i0][i1]) { }

CodeGen will loop over the invented variables i0 and i1 to visit all
elements in the array, so that each element in the destination array
will be copy-constructed from the corresponding element in the source
array. Of course, if we're dealing with arrays of scalars or class
types with trivial copy-assignment operators, we just generate a
memcpy rather than a loop.

Fixes PR6928, PR5989, and PR6887. Boost.Regex now compiles and passes
all of its regression tests.

Conspicuously missing from this patch is handling for the exceptional
case, where we need to destruct those objects that we have
constructed. I'll address that case separately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
94e4b0ce66c64b61aa1a11a686f32e383c166219 05-May-2010 Sean Hunt <rideau3@gmail.com> Add forgotten CMakeFiles.txt

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
391c40cdfbffa85f2404ba96b5faffdd9c9de3f2 05-May-2010 Sean Hunt <rideau3@gmail.com> Add forgotten CMakeFiles.txt

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CMakeLists.txt
c418cd479d17c9f5ded9cb0f54b07d6bfe12ac73 05-May-2010 Sean Hunt <rideau3@gmail.com> Change StmtNodes.def to StmtNodes.td in anticipation of a rewrite of attributes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103072 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Makefile
ST/Stmt.h
ST/StmtNodes.def
ST/StmtNodes.td
ST/StmtVisitor.h
MakeLists.txt
akefile
9d90d62e1661720d9cf533290b4227c4fde780a4 05-May-2010 Sean Hunt <rideau3@gmail.com> Change StmtNodes.def to StmtNodes.td in anticipation of a rewrite of attributes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103072 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Makefile
ST/Stmt.h
ST/StmtNodes.def
ST/StmtNodes.td
ST/StmtVisitor.h
MakeLists.txt
akefile
d7b1b0252ec628aaa782bf0f9dc041f10b1a449b 04-May-2010 Chris Lattner <sabre@nondot.org> add a new -fdiagnostics-show-category=none/id/name option, giving control
over choice of:

t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]

dox to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103056 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
6fbe8398ba1680ffc5daa7395850ff8765b7905b 04-May-2010 Chris Lattner <sabre@nondot.org> add a new -fdiagnostics-show-category=none/id/name option, giving control
over choice of:

t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]

dox to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103056 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
ff1c25eea3870b8220aa484b3b51e348c90d2566 04-May-2010 Chris Lattner <sabre@nondot.org> When -fdiagnostics-print-source-range-info is specified,
print the diagnostic category number in the [] at the end
of the line. For example:

$ cat t.c
#include <stdio.h>
void foo() {
printf("%s", 4);
}
$ clang t.c -fsyntax-only -fdiagnostics-print-source-range-info
t.c:3:11:{3:10-3:12}{3:15-3:16}: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
printf("%s", 4);
~^ ~
1 warning generated.

Clients that want category information can now pick the number
out of the output, rdar://7928231.

More coming.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c9b889044c8e1e2d6ab194e34e8b74f6998094fa 04-May-2010 Chris Lattner <sabre@nondot.org> When -fdiagnostics-print-source-range-info is specified,
print the diagnostic category number in the [] at the end
of the line. For example:

$ cat t.c
#include <stdio.h>
void foo() {
printf("%s", 4);
}
$ clang t.c -fsyntax-only -fdiagnostics-print-source-range-info
t.c:3:11:{3:10-3:12}{3:15-3:16}: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
printf("%s", 4);
~^ ~
1 warning generated.

Clients that want category information can now pick the number
out of the output, rdar://7928231.

More coming.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
38d0f2ffd306c187fd862aabb22e01311b78468d 04-May-2010 Chris Lattner <sabre@nondot.org> add the ability to associate 'category' names with diagnostics
and diagnostic groups. This allows the compiler to group
diagnostics together (e.g. "Logic Warning",
"Format String Warning", etc) like the static analyzer does.
This is not exposed through anything in the compiler yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticGroups.td
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
27b0f510d1d4f9ed5668eec1195f04b4a74a4426 04-May-2010 Chris Lattner <sabre@nondot.org> add the ability to associate 'category' names with diagnostics
and diagnostic groups. This allows the compiler to group
diagnostics together (e.g. "Logic Warning",
"Format String Warning", etc) like the static analyzer does.
This is not exposed through anything in the compiler yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticGroups.td
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
9690fb779e330e800ecbe4af654426df396fb59a 04-May-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a limit on the depth of the macro instantiation backtrace
printed in a diagnostic, similar to the limit we already have on the
depth of the template instantiation backtrace. The macro instantiation
backtrace is limited to 10 "instantiated from:" diagnostics; when it's
longer than that, we'll show the first half, then say how many were
suppressed, then show the second half. The limit can be changed with
-fmacro-instantiation-limit=N, and turned off with N=0.

This eliminates a lot of note spew with libraries making use of the
Boost.Preprocess library.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
rontend/TextDiagnosticPrinter.h
6c1cb9916e9988dcdd65b9266dbe24afd173427a 04-May-2010 Douglas Gregor <dgregor@apple.com> Introduce a limit on the depth of the macro instantiation backtrace
printed in a diagnostic, similar to the limit we already have on the
depth of the template instantiation backtrace. The macro instantiation
backtrace is limited to 10 "instantiated from:" diagnostics; when it's
longer than that, we'll show the first half, then say how many were
suppressed, then show the second half. The limit can be changed with
-fmacro-instantiation-limit=N, and turned off with N=0.

This eliminates a lot of note spew with libraries making use of the
Boost.Preprocess library.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
rontend/TextDiagnosticPrinter.h
34381083e2621df53741e829d718f898cebb9fed 04-May-2010 Douglas Gregor <doug.gregor@gmail.com> When creating a call to a base subobject's operator= in an
implicitly-defined copy assignment operator, suppress the protected
access check. This eliminates the remaining failure in the
Boost.SmartPtr library (that was a product of the copy-assignment
generation rewrite) and, presumably, the Boost.TR1 library as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103010 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
6cdc161527a513f28dfc6f6ec27eb287f8268024 04-May-2010 Douglas Gregor <dgregor@apple.com> When creating a call to a base subobject's operator= in an
implicitly-defined copy assignment operator, suppress the protected
access check. This eliminates the remaining failure in the
Boost.SmartPtr library (that was a product of the copy-assignment
generation rewrite) and, presumably, the Boost.TR1 library as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103010 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
736558e2d2981e16f7d75a1000cf52d76090ed91 03-May-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose unused exception parameters under a different warning group
(-Wunused-exception-parameter) than normal variables, since it's more
common to name and then ignore an exception parameter. This warning is
neither enabled by default nor by -Wall. Fixes <rdar://problem/7931045>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
324b54d3f60d92a82815512119791ce1c285b63e 03-May-2010 Douglas Gregor <dgregor@apple.com> Diagnose unused exception parameters under a different warning group
(-Wunused-exception-parameter) than normal variables, since it's more
common to name and then ignore an exception parameter. This warning is
neither enabled by default nor by -Wall. Fixes <rdar://problem/7931045>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3226ea3e3a18b9c7e1914d127ff554c70cf3347c 03-May-2010 Douglas Gregor <doug.gregor@gmail.com> Complain when we try to initialize an object of Objective-C class type
(which is ill-formed) with an initializer list. Also, change the
fallback from an assertion to a generic error message, which is far
friendlier. Fixes <rdar://problem/7730948>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4d9e7388ccdfdab97f92caac5db9b87a530742f4 03-May-2010 Douglas Gregor <dgregor@apple.com> Complain when we try to initialize an object of Objective-C class type
(which is ill-formed) with an initializer list. Also, change the
fallback from an assertion to a generic error message, which is far
friendlier. Fixes <rdar://problem/7730948>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9908c93616ef57e9278b825c735fdd4a3a86cba1 03-May-2010 Anders Carlsson <andersca@mac.com> The array form of 'new' can never have initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
48c950137e4318abb1080f438208fda8c14ca8b9 03-May-2010 Anders Carlsson <andersca@mac.com> The array form of 'new' can never have initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
128fc95d96572a0f2282acaab4dd77a74052ce17 03-May-2010 Benjamin Kramer <benny.kra@googlemail.com> Replace a char*/size pair with stringref.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102902 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d56638180014e60538cd666cd11fde6d4698e051 03-May-2010 Benjamin Kramer <benny.kra@googlemail.com> Replace a char*/size pair with stringref.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102902 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ae6d8b1e1d16d096c4cd5866f23606b47a8466b6 03-May-2010 Anders Carlsson <andersca@mac.com> Change CXXConstructExpr::Create to take a ConstructionKind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
fcaeef2ae00ec643eb024e0aca2c98701cf5627c 03-May-2010 Anders Carlsson <andersca@mac.com> Change CXXConstructExpr::Create to take a ConstructionKind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f7b163b082977c92c96e8c584fd50b4c4054e2d6 03-May-2010 Anders Carlsson <andersca@mac.com> Pass the construction kind down to EmitCXXConstructorCall.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
24eb78e38aba55c507bc3c05c37035a9ab2defa7 03-May-2010 Anders Carlsson <andersca@mac.com> Pass the construction kind down to EmitCXXConstructorCall.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f6920f6e926e81aa5e5815d011e8b85e3d252b89 03-May-2010 Anders Carlsson <andersca@mac.com> Add an enum to CXXConstructExpr so we can determine if the construction expression constructs a non-virtual or virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102879 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
72e96fd181b19b8d01144a685cda6e955584c7ea 03-May-2010 Anders Carlsson <andersca@mac.com> Add an enum to CXXConstructExpr so we can determine if the construction expression constructs a non-virtual or virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102879 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
82ffffd44d4de0ccb064b855cbcbe7916a693393 01-May-2010 Douglas Gregor <doug.gregor@gmail.com> Complete reimplementation of the synthesis for implicitly-defined copy
assignment operators.

Previously, Sema provided type-checking and template instantiation for
copy assignment operators, then CodeGen would synthesize the actual
body of the copy constructor. Unfortunately, the two were not in sync,
and CodeGen might pick a copy-assignment operator that is different
from what Sema chose, leading to strange failures, e.g., link-time
failures when CodeGen called a copy-assignment operator that was not
instantiation, run-time failures when copy-assignment operators were
overloaded for const/non-const references and the wrong one was
picked, and run-time failures when by-value copy-assignment operators
did not have their arguments properly copy-initialized.

This implementation synthesizes the implicitly-defined copy assignment
operator bodies in Sema, so that the resulting ASTs encode exactly
what CodeGen needs to do; there is no longer any special code in
CodeGen to synthesize copy-assignment operators. The synthesis of the
body is relatively simple, and we generate one of three different
kinds of copy statements for each base or member:

- For a class subobject, call the appropriate copy-assignment
operator, after overload resolution has determined what that is.
- For an array of scalar types or an array of class types that have
trivial copy assignment operators, construct a call to
__builtin_memcpy.
- For an array of class types with non-trivial copy assignment
operators, synthesize a (possibly nested!) for loop whose inner
statement calls the copy constructor.
- For a scalar type, use built-in assignment.

This patch fixes at least a few tests cases in Boost.Spirit that were
failing because CodeGen picked the wrong copy-assignment operator
(leading to link-time failures), and I suspect a number of undiagnosed
problems will also go away with this change.

Some of the diagnostics we had previously have gotten worse with this
change, since we're going through generic code for our
type-checking. I will improve this in a subsequent patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
06a9f3680d22529a2fcf20c52d71cf221d99d910 01-May-2010 Douglas Gregor <dgregor@apple.com> Complete reimplementation of the synthesis for implicitly-defined copy
assignment operators.

Previously, Sema provided type-checking and template instantiation for
copy assignment operators, then CodeGen would synthesize the actual
body of the copy constructor. Unfortunately, the two were not in sync,
and CodeGen might pick a copy-assignment operator that is different
from what Sema chose, leading to strange failures, e.g., link-time
failures when CodeGen called a copy-assignment operator that was not
instantiation, run-time failures when copy-assignment operators were
overloaded for const/non-const references and the wrong one was
picked, and run-time failures when by-value copy-assignment operators
did not have their arguments properly copy-initialized.

This implementation synthesizes the implicitly-defined copy assignment
operator bodies in Sema, so that the resulting ASTs encode exactly
what CodeGen needs to do; there is no longer any special code in
CodeGen to synthesize copy-assignment operators. The synthesis of the
body is relatively simple, and we generate one of three different
kinds of copy statements for each base or member:

- For a class subobject, call the appropriate copy-assignment
operator, after overload resolution has determined what that is.
- For an array of scalar types or an array of class types that have
trivial copy assignment operators, construct a call to
__builtin_memcpy.
- For an array of class types with non-trivial copy assignment
operators, synthesize a (possibly nested!) for loop whose inner
statement calls the copy constructor.
- For a scalar type, use built-in assignment.

This patch fixes at least a few tests cases in Boost.Spirit that were
failing because CodeGen picked the wrong copy-assignment operator
(leading to link-time failures), and I suspect a number of undiagnosed
problems will also go away with this change.

Some of the diagnostics we had previously have gotten worse with this
change, since we're going through generic code for our
type-checking. I will improve this in a subsequent patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b25932702102e3b4659dccf5ecca468d70b00876 01-May-2010 Douglas Gregor <doug.gregor@gmail.com> Bump default template instantiation depth to 1024, as required by C++0x

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102847 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e2e69ef80ac09a489d00ce104e2e87867dc3dd26 01-May-2010 Douglas Gregor <dgregor@apple.com> Bump default template instantiation depth to 1024, as required by C++0x

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102847 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
42660bea99e13a24ad7ff4a34195c2c0d0d67a21 30-Apr-2010 Daniel Dunbar <daniel@zuster.org> Move include installation steps to better location, inside each include dir instead of at the top-level.

Also, don't set NO_INSTALL=1 for c-index-test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102724 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
25cf7b4e9198026c8872203874d04b36831af969 30-Apr-2010 Daniel Dunbar <daniel@zuster.org> Move include installation steps to better location, inside each include dir instead of at the top-level.

Also, don't set NO_INSTALL=1 for c-index-test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102724 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
36f4117b6022697e305ecfda8ddfe135e982274c 30-Apr-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Add calling convention related attributes to related declaration. Mark attributes invalid on type related checking so to add them to declarations only when everything is ok.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102710 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
e215f7232dd4aa65ebf2a1ecd07cd95fe1ce3481 30-Apr-2010 Abramo Bagnara <abramo.bagnara@gmail.com> Add calling convention related attributes to related declaration. Mark attributes invalid on type related checking so to add them to declarations only when everything is ok.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102710 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
8375c580a7e7511e13d2ffdacfc9da7e2dd48af1 30-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a sequence number into class template partial
specializations, which keeps track of the order in which they were
originally declared. We use this number so that we can always walk the
list of partial specializations in a predictable order during matching
or template instantiation. This also fixes a failure in Boost.Proto,
where SourceManager::isBeforeInTranslationUnit was behaving
poorly in inconsistent ways.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
dc60c1eb4acbde6edcec9760de92f9098593d915 30-Apr-2010 Douglas Gregor <dgregor@apple.com> Introduce a sequence number into class template partial
specializations, which keeps track of the order in which they were
originally declared. We use this number so that we can always walk the
list of partial specializations in a predictable order during matching
or template instantiation. This also fixes a failure in Boost.Proto,
where SourceManager::isBeforeInTranslationUnit was behaving
poorly in inconsistent ways.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
a8d7ca6e37fb2aba356c16ca9c31cafa7ae68584 30-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> When we start the definition of a class template, set the
InjectedClassNameType's Decl to point at the definition. It's a little
messy, but we do the same thing with classes and their record types,
since much of Clang expects that the TagDecl* one gets out of a type
is the definition. Fixes several Boost.Proto failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9ffce2182e4fe72052d620698d272207f494b1cf 30-Apr-2010 Douglas Gregor <dgregor@apple.com> When we start the definition of a class template, set the
InjectedClassNameType's Decl to point at the definition. It's a little
messy, but we do the same thing with classes and their record types,
since much of Clang expects that the TagDecl* one gets out of a type
is the definition. Fixes several Boost.Proto failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0735908236b79ce2d8b4aebac3acda52a8449d68 30-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Refactor the AnalysisConsumer to analyze functions after the whole
translation unit is parsed. This enables us to inline some calls when still
analyzing one function at a time.

Actions are classified into Function, CXXMethod, ObjCMethod,
ObjCImplementation.

This does not hurt performance much. The analysis time for sqlite3.c:

before:
real 17m52.440s
user 17m49.460s
sys 0m2.010s

after:
real 18m0.500s
user 17m56.900s
sys 0m2.330s

DisplayProgress option is broken now. -inine-call action is removed. It
will be reenabled in another form, perhaps as an indenpendant option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102689 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
ed8afacb8118b71bcfa8017059e51da325e7691b 30-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Refactor the AnalysisConsumer to analyze functions after the whole
translation unit is parsed. This enables us to inline some calls when still
analyzing one function at a time.

Actions are classified into Function, CXXMethod, ObjCMethod,
ObjCImplementation.

This does not hurt performance much. The analysis time for sqlite3.c:

before:
real 17m52.440s
user 17m49.460s
sys 0m2.010s

after:
real 18m0.500s
user 17m56.900s
sys 0m2.330s

DisplayProgress option is broken now. -inine-call action is removed. It
will be reenabled in another form, perhaps as an indenpendant option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102689 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
584dfa221f1428b2164e375c4137339e3ab7d6d7 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Add FunctionDecl::isVariadic() to match BlockDecl::isVariadic() and ObjCMethodDecl::isVariadic().
Do some minor refactoring along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102635 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9498d388810d284d3970aef0d69fa4d069fd6caf 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Add FunctionDecl::isVariadic() to match BlockDecl::isVariadic() and ObjCMethodDecl::isVariadic().
Do some minor refactoring along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102635 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f9898e8c59239c9737a57c6b1a3d1a007347d2fa 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Rename BlockDecl::IsVariadic() to BlockDecl::isVariadic() to match the casing
for similar methods. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
db9a0aec04cfd95830d3745b17b0bab5b87b16d1 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Rename BlockDecl::IsVariadic() to BlockDecl::isVariadic() to match the casing
for similar methods. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
829e5c4ef0b3a181f7d5103fe2774e9860e97a86 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Bump Clang version number.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
5ac28332220692f7b0095a7fd0de2c230ea6cd82 29-Apr-2010 Ted Kremenek <kremenek@apple.com> Bump Clang version number.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
089b1bece1d6f9ecb72db87e0e01965be9a91742 29-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Teach __builtin_offsetof to compute the offsets of members of base
classes, since we only warn (not error) on offsetof() for non-POD
types. We store the base path within the OffsetOfExpr itself, then
evaluate the offsets within the constant evaluator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cc8a5d5f90bbbbcb46f342117b851b7e07ec34f1 29-Apr-2010 Douglas Gregor <dgregor@apple.com> Teach __builtin_offsetof to compute the offsets of members of base
classes, since we only warn (not error) on offsetof() for non-POD
types. We store the base path within the OffsetOfExpr itself, then
evaluate the offsets within the constant evaluator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f2800bc5c579b96a51407623453f84a2459e75f1 29-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for -fobjc-abi-version=.
- <rdar://problem/7919678>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102559 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
5e2a8ac6599f0c68b14afb2f328ac98b264f770a 29-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for -fobjc-abi-version=.
- <rdar://problem/7919678>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102559 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
39cbe124df5cfa1223669ff61f49f6d02edc8995 29-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose __builtin_offsetof expressions that refer to bit-fields

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102548 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d5d60ff8d7991234abcc6a9fe9903db930be0a1 29-Apr-2010 Douglas Gregor <dgregor@apple.com> Diagnose __builtin_offsetof expressions that refer to bit-fields

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102548 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ce6b353d4b551b98c4282486fd13ef3b3bcf6e31 29-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Completely reimplement __builtin_offsetof, based on a patch by Roberto
Amadini.

This change introduces a new expression node type, OffsetOfExpr, that
describes __builtin_offsetof. Previously, __builtin_offsetof was
implemented using a unary operator whose subexpression involved
various synthesized array-subscript and member-reference expressions,
which was ugly and made it very hard to instantiate as a
template. OffsetOfExpr represents the AST more faithfully, with proper
type source information and a more compact representation.

OffsetOfExpr also has support for dependent __builtin_offsetof
expressions; it can be value-dependent, but will never be
type-dependent (like sizeof or alignof). This commit introduces
template instantiation for __builtin_offsetof as well.

There are two major caveats to this patch:

1) CodeGen cannot handle the case where __builtin_offsetof is not a
constant expression, so it produces an error. So, to avoid
regressing in C, we retain the old UnaryOperator-based
__builtin_offsetof implementation in C while using the shiny new
OffsetOfExpr implementation in C++. The old implementation can go
away once we have proper CodeGen support for this case, which we
expect won't cause much trouble in C++.

2) __builtin_offsetof doesn't work well with non-POD class types,
particularly when the designated field is found within a base
class. I will address this in a subsequent patch.

Fixes PR5880 and a bunch of assertions when building Boost.Python
tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102542 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
hecker/PathSensitive/GRExprEngine.h
rontend/PCHBitCodes.h
rontend/StmtXML.def
8ecdb65716cd7914ffb2eeee993fa9039fcd31e8 29-Apr-2010 Douglas Gregor <dgregor@apple.com> Completely reimplement __builtin_offsetof, based on a patch by Roberto
Amadini.

This change introduces a new expression node type, OffsetOfExpr, that
describes __builtin_offsetof. Previously, __builtin_offsetof was
implemented using a unary operator whose subexpression involved
various synthesized array-subscript and member-reference expressions,
which was ugly and made it very hard to instantiate as a
template. OffsetOfExpr represents the AST more faithfully, with proper
type source information and a more compact representation.

OffsetOfExpr also has support for dependent __builtin_offsetof
expressions; it can be value-dependent, but will never be
type-dependent (like sizeof or alignof). This commit introduces
template instantiation for __builtin_offsetof as well.

There are two major caveats to this patch:

1) CodeGen cannot handle the case where __builtin_offsetof is not a
constant expression, so it produces an error. So, to avoid
regressing in C, we retain the old UnaryOperator-based
__builtin_offsetof implementation in C while using the shiny new
OffsetOfExpr implementation in C++. The old implementation can go
away once we have proper CodeGen support for this case, which we
expect won't cause much trouble in C++.

2) __builtin_offsetof doesn't work well with non-POD class types,
particularly when the designated field is found within a base
class. I will address this in a subsequent patch.

Fixes PR5880 and a bunch of assertions when building Boost.Python
tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102542 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
hecker/PathSensitive/GRExprEngine.h
rontend/PCHBitCodes.h
rontend/StmtXML.def
5ec92586b706c909381ae0b72d9c5d1f7b51f726 28-Apr-2010 Chris Lattner <sabre@nondot.org> add regex support for -verify mode. You can now do things like
expected-error-re {{someregex}}

Patch by mike-m!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102516 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/VerifyDiagnosticsClient.h
60909e1242f19aa8b1b87110aaa8e394f329ae96 28-Apr-2010 Chris Lattner <sabre@nondot.org> add regex support for -verify mode. You can now do things like
expected-error-re {{someregex}}

Patch by mike-m!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102516 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/VerifyDiagnosticsClient.h
b539d102e1ea422fd034283578a5bbae9aaccfaa 28-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> More of Sema to implement initialization of
ivar of c++ object types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e4498c6d66a8f472cba29b6158a2e86dfc60d0ef 28-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> More of Sema to implement initialization of
ivar of c++ object types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
de27f52df1dad2ac0d7ff06f5c6642715df76e2c 27-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> When explicitly building a temporary object (CXXTemporaryObjectExpr),
keep track of whether we need to zero-initialize storage prior to
calling its constructor. Previously, we were only tracking this when
implicitly constructing the object (a CXXConstructExpr).

Fixes Boost's value-initialization tests, which means that the
Boost.Config library now passes all of its tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
1c63b9c15d48cb8c833a4b2d6fd6c496c0766e88 27-Apr-2010 Douglas Gregor <dgregor@apple.com> When explicitly building a temporary object (CXXTemporaryObjectExpr),
keep track of whether we need to zero-initialize storage prior to
calling its constructor. Previously, we were only tracking this when
implicitly constructing the object (a CXXConstructExpr).

Fixes Boost's value-initialization tests, which means that the
Boost.Config library now passes all of its tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d7f5c204840d5f44ba1d1643258bd1a945b10fb1 27-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose the use of abstract types as array element types. Previously,
we were relying on checking for abstract class types when an array
type was actually used to declare a variable, parameter, etc. However,
we need to check when the construct the array for, e.g., SFINAE
purposes (see DR337). Fixes problems with Boost's is_abstract type
trait.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
138bb2366baa3856088bae94f36f2d96b2c995b9 27-Apr-2010 Douglas Gregor <dgregor@apple.com> Diagnose the use of abstract types as array element types. Previously,
we were relying on checking for abstract class types when an array
type was actually used to declare a variable, parameter, etc. However,
we need to check when the construct the array for, e.g., SFINAE
purposes (see DR337). Fixes problems with Boost's is_abstract type
trait.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
95c54dfa43c5159d2854910c21cc03374238e94e 27-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> During template instantiation, set the naming class of
UnresolvedLookupExpr and UnresolvedMemberExpr by substituting the
naming class we computed when building the expression in the
template...

... which we didn't always do correctly. Teach
UnresolvedMemberExpr::getNamingClass() all about the new
representation of injected-class-names in templates, so that it can
return a naming class that is the current instantiation.

Also, when decomposing a template-id into its template name and its
arguments, be sure to set the naming class on the LookupResult
structure.

Fixes PR6947 the right way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102448 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c96be1ea33cdf63d07cec48d18fe8e3afea48f8d 27-Apr-2010 Douglas Gregor <dgregor@apple.com> During template instantiation, set the naming class of
UnresolvedLookupExpr and UnresolvedMemberExpr by substituting the
naming class we computed when building the expression in the
template...

... which we didn't always do correctly. Teach
UnresolvedMemberExpr::getNamingClass() all about the new
representation of injected-class-names in templates, so that it can
return a naming class that is the current instantiation.

Also, when decomposing a template-id into its template name and its
arguments, be sure to set the naming class on the LookupResult
structure.

Fixes PR6947 the right way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102448 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
67ce775bb0d6b2d8cd67f5d9c91218808d00b736 27-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Move CollectIvarsToConstructOrDestruct to Sema
from AST, consider ivar array of objects
(per Doug's comment).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102446 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
786cd154f2a48d2b464679d33fcd5df0cd794c06 27-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Move CollectIvarsToConstructOrDestruct to Sema
from AST, consider ivar array of objects
(per Doug's comment).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102446 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a99c63e4b17bc28e8011b8a23409b2de99284920 27-Apr-2010 Daniel Dunbar <daniel@zuster.org> Add Driver support for -fno-constant-cfstrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102431 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f35f14d474632142280ec1526d16e87706ce6625 27-Apr-2010 Daniel Dunbar <daniel@zuster.org> Add Driver support for -fno-constant-cfstrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102431 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
cb9f7afc761b3b704f274204b6009b69146fc4dd 27-Apr-2010 John McCall <rjmccall@apple.com> Improve the diagnostic you get when making a qualified member access
with a qualifier referencing a different type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102409 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
110acc1ae8d978f9b423394eaf0cace61b1339f0 27-Apr-2010 John McCall <rjmccall@apple.com> Improve the diagnostic you get when making a qualified member access
with a qualifier referencing a different type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102409 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4578a3a1441eb22b68d909fa35d82e6ee7204e38 27-Apr-2010 John McCall <rjmccall@apple.com> Make the InjectedClassNameType the canonical type of the current instantiation
of a class template or class template partial specialization. That is to
say, in
template <class T> class A { ... };
or
template <class T> class B<const T*> { ... };
make 'A<T>' and 'B<const T*>' sugar for the corresponding InjectedClassNameType
when written inside the appropriate context. This allows us to track the
current instantiation appropriately even inside AST routines. It also allows
us to compute a DeclContext for a type much more efficiently, at some extra
cost every time we write a template specialization (which can be optimized,
but I've left it simple in this patch).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Type.h
ST/TypeNodes.def
31f17ecbef57b5679c017c375db330546b7b5145 27-Apr-2010 John McCall <rjmccall@apple.com> Make the InjectedClassNameType the canonical type of the current instantiation
of a class template or class template partial specialization. That is to
say, in
template <class T> class A { ... };
or
template <class T> class B<const T*> { ... };
make 'A<T>' and 'B<const T*>' sugar for the corresponding InjectedClassNameType
when written inside the appropriate context. This allows us to track the
current instantiation appropriately even inside AST routines. It also allows
us to compute a DeclContext for a type much more efficiently, at some extra
cost every time we write a template specialization (which can be optimized,
but I've left it simple in this patch).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Type.h
ST/TypeNodes.def
1271d6f682ac66067db6d3ca309a8d3707891ebf 27-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> New method to construct/destruct ivars that have non-trivial default
constructors or destructors, not used yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
184d7900e0202ac468710b731e42075129bb6000 27-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> New method to construct/destruct ivars that have non-trivial default
constructors or destructors, not used yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f5b3dfc64b7c705cfb60f73767d0f7efc49f20be 27-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve source-location information in a C++ typeid (type) expression
by using TypeSourceInfo, cleaning up the representation
somewhat. Teach getTypeOperand() to strip references and
cv-qualifiers, providing the semantic view of the type without
requiring any extra storage (the unmodified type remains within the
TypeSourceInfo). This fixes a bug found by Boost's call_traits test.

Finally, clean up semantic analysis, by splitting the ActOnCXXTypeid
routine into ActOnCXXTypeId (the parser action) and two BuildCXXTypeId
functions, which perform the semantic analysis for typeid(type) and
typeid(expression), respectively. We now perform less work at template
instantiation time (we don't look for std::type_info again) and can
give better diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
57fdc8a4382164955c7b30d09f4ce46fc7e67659 27-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve source-location information in a C++ typeid (type) expression
by using TypeSourceInfo, cleaning up the representation
somewhat. Teach getTypeOperand() to strip references and
cv-qualifiers, providing the semantic view of the type without
requiring any extra storage (the unmodified type remains within the
TypeSourceInfo). This fixes a bug found by Boost's call_traits test.

Finally, clean up semantic analysis, by splitting the ActOnCXXTypeid
routine into ActOnCXXTypeId (the parser action) and two BuildCXXTypeId
functions, which perform the semantic analysis for typeid(type) and
typeid(expression), respectively. We now perform less work at template
instantiation time (we don't look for std::type_info again) and can
give better diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
0a68cb3e09c5aaf560f40bfd794a811a3a46e3d2 27-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose declaration of reference typed ivars.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0b7bc8e937735e2b3608c049752c4aa48a283d2a 27-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose declaration of reference typed ivars.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9f0a704bc0ef0855b053ad9f12c2db5ac9cd579b 26-Apr-2010 Chris Lattner <sabre@nondot.org> wordsmith an objc warning, rdar://7900756


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bc0b915148688033e37e9175ddf7629333e45d43 26-Apr-2010 Chris Lattner <sabre@nondot.org> wordsmith an objc warning, rdar://7900756


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6cb535784c071d1a662aeac8e548e8757dd1a969 26-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce Type::isStructureOrClassType(), which does the obvious
thing. Audit all uses of Type::isStructure(), changing those calls to
isStructureOrClassType() as needed (which is alsmost
everywhere). Fixes the remaining failure in Boost.Utility/Swap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
fb87b89fc9eb103e19fb8e4b925c23f0bd091b99 26-Apr-2010 Douglas Gregor <dgregor@apple.com> Introduce Type::isStructureOrClassType(), which does the obvious
thing. Audit all uses of Type::isStructure(), changing those calls to
isStructureOrClassType() as needed (which is alsmost
everywhere). Fixes the remaining failure in Boost.Utility/Swap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
6dfe98fad7326c5c22bb83f6135c37eda3aa24f9 26-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for implicit property references in
Objective-C++. This is the last bit of (non-blocks-related) template
instantiation logic for Objective-C++. Yay!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
9cbfdd212ee0167f2487363d6fac7faaf7c65b64 26-Apr-2010 Douglas Gregor <dgregor@apple.com> Implement template instantiation for implicit property references in
Objective-C++. This is the last bit of (non-blocks-related) template
instantiation logic for Objective-C++. Yay!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102382 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
4a1d3d039af0d74537ecb4ff8f55bb881319b2af 26-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for ObjCPropertyRefExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102379 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
e330354c6bfbb0d7856432fa9055d5236f1b2fa4 26-Apr-2010 Douglas Gregor <dgregor@apple.com> Implement template instantiation for ObjCPropertyRefExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102379 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
0033ad86713a3f6024fbc2111fa3c207d2ce8373 26-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for value-dependent Objective-C ivar
references and isa expressions. Also, test template instantiation of
unresolved member references to Objective-C ivar references and isa
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
f9b9eab747e911ded499924b2616d8712d65efce 26-Apr-2010 Douglas Gregor <dgregor@apple.com> Implement template instantiation for value-dependent Objective-C ivar
references and isa expressions. Also, test template instantiation of
unresolved member references to Objective-C ivar references and isa
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
8fcbd122a3363d801e4fb4a3cbd69afbc8f004f0 26-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Refactor Objective-C @catch parameter checking by detangling it from
function-parameter checking and splitting it into the normal
ActOn*/Build* pair in Sema. We now use VarDecl to represent the @catch
parameter rather than the ill-fitting ParmVarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
160b5630aa781ac348303e1ae088d27016637778 26-Apr-2010 Douglas Gregor <dgregor@apple.com> Refactor Objective-C @catch parameter checking by detangling it from
function-parameter checking and splitting it into the normal
ActOn*/Build* pair in Sema. We now use VarDecl to represent the @catch
parameter rather than the ill-fitting ParmVarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
ff0b45f255aedeca5155e50ef2c603c26142f4fc 26-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Make the static type of the exception variable in an Objective-C
@catch a VarDecl. The dynamic type is still a ParmVarDecl, but that
will change soon. No effective functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102341 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtObjC.h
c00d8e18ad3d903acfeb5d05163ce90713066a3f 26-Apr-2010 Douglas Gregor <dgregor@apple.com> Make the static type of the exception variable in an Objective-C
@catch a VarDecl. The dynamic type is still a ParmVarDecl, but that
will change soon. No effective functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102341 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtObjC.h
f1c7432582fab04c68d0c438e0468236f2c5b7b6 25-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve the diagnostic when we find something we did not expect in a
member expression (p-> or x.), by showing the type we looked into and
what we did actually find.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b0fd483ad64865cc0233981cfddc36a7c9795e5e 25-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve the diagnostic when we find something we did not expect in a
member expression (p-> or x.), by showing the type we looked into and
what we did actually find.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3e93ab1a7228f50b8051c167af25cafcffed2852 25-Apr-2010 Anders Carlsson <andersca@mac.com> Add an explicit UsuallyTinyPtrVector that takes a single element.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UsuallyTinyPtrVector.h
8f2abbc791bad003f5d190e70b01d7eafa2a7be1 25-Apr-2010 Anders Carlsson <andersca@mac.com> Add an explicit UsuallyTinyPtrVector that takes a single element.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UsuallyTinyPtrVector.h
701a98167bae2eacad9b04a829a52dc9f5140e8b 24-Apr-2010 Anders Carlsson <andersca@mac.com> Convert more call sites over to the new GetAddressOfBaseClass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fc89c31a329eb6b36c6dbd8b7cb945d1a831650e 24-Apr-2010 Anders Carlsson <andersca@mac.com> Convert more call sites over to the new GetAddressOfBaseClass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fa2d7b260177e9d7f9c4a7a900ab69690c520576 24-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> When we attempt to create a temporary object of class type, be sure
that the type we're copying is complete.

Boost.Regex now builds, although it's failing its regression tests
with our favorite "Sema doesn't consider destructor as used."
assertion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102271 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f86fcb341116e72c5497e6b57695f46eca5f29e9 24-Apr-2010 Douglas Gregor <dgregor@apple.com> When we attempt to create a temporary object of class type, be sure
that the type we're copying is complete.

Boost.Regex now builds, although it's failing its regression tests
with our favorite "Sema doesn't consider destructor as used."
assertion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102271 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
302137f2ccb3843246d7a3dbb0a045e61e7012db 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add base paths for CK_BaseToDerived and CK_BaseToDerivedMemberPointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f9d68e1dd015972318b2448f75115ff4fc3d5008 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add base paths for CK_BaseToDerived and CK_BaseToDerivedMemberPointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
edb8f575c58dd3d2b3624d64fc0d5d44f4aa11b8 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add base paths to CK_UncheckedDerivedToBase and CK_DerivedToBaseMemberPointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cee22421929c91b481f4d1bb85cd48c0f6b7510b 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add base paths to CK_UncheckedDerivedToBase and CK_DerivedToBaseMemberPointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b12093a3bb6fe8578e3f33318030a13da928de38 24-Apr-2010 Anders Carlsson <andersca@mac.com> Actually produce base paths for CastExprs of kind CK_DerivedToBase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102259 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5cf86ba6b5a724bf91cb52feade1158f1fbeb605 24-Apr-2010 Anders Carlsson <andersca@mac.com> Actually produce base paths for CastExprs of kind CK_DerivedToBase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102259 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a0494768db49126986e425913f6ad77f9e3dfdce 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add BasePath arguments to all cast expr constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
41b2dcd465f1e438502c420effc9d0c747f9db8f 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add BasePath arguments to all cast expr constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
b9421286fab2bf4dc529511a4cb675bc243c741f 24-Apr-2010 Daniel Dunbar <daniel@zuster.org> NeXT: Clean up dispatch method policy selection.
- Replace -cc1 level -fobjc-legacy-dispatch with -fobjc-dispatch-method={legacy,non-legacy,mixed}.

- Lift "mixed" vs "non-mixed" policy choice up to driver level, instead of being buried in CGObjCMac.cpp.

- No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102255 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/ToolChain.h
f643b9b338b797a824447207d7eab5f1187f4f34 24-Apr-2010 Daniel Dunbar <daniel@zuster.org> NeXT: Clean up dispatch method policy selection.
- Replace -cc1 level -fobjc-legacy-dispatch with -fobjc-dispatch-method={legacy,non-legacy,mixed}.

- Lift "mixed" vs "non-mixed" policy choice up to driver level, instead of being buried in CGObjCMac.cpp.

- No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102255 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/ToolChain.h
8bf515b1f6e8ecdcbd3ebcc99fe08ea22fc7fd95 24-Apr-2010 Anders Carlsson <andersca@mac.com> CastExpr should not hold a pointer to the base path. More cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/UsuallyTinyPtrVector.h
f1b48b7014992155286d58bb1676f9f51031d18b 24-Apr-2010 Anders Carlsson <andersca@mac.com> CastExpr should not hold a pointer to the base path. More cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/UsuallyTinyPtrVector.h
fdf43162f6fe27ae92d0e64bd70a59bba40db42d 24-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Be more careful around dependent nested-name-specifiers, complaining
when they are not complete (since we could not match them up to
anything) and ensuring that enum parsing can cope with dependent
elaborated-type-specifiers. Fixes PR6915 and PR6649.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
48c89f4aa708e28310cb0c94b2d9d044b0ab806c 24-Apr-2010 Douglas Gregor <dgregor@apple.com> Be more careful around dependent nested-name-specifiers, complaining
when they are not complete (since we could not match them up to
anything) and ensuring that enum parsing can cope with dependent
elaborated-type-specifiers. Fixes PR6915 and PR6649.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e6867ce8ab3d1ec6c32be66fa145ff1682bd5526 24-Apr-2010 Anders Carlsson <andersca@mac.com> Rename InheritancePath to BasePath, rename CastExpr::CXXBaseVector to CXXBaseSpecifierArray. More to come.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7ab9d574d27ecee1f130e5755aa403e5ab529b6b 24-Apr-2010 Anders Carlsson <andersca@mac.com> Rename InheritancePath to BasePath, rename CastExpr::CXXBaseVector to CXXBaseSpecifierArray. More to come.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1a7697cc5fa364c548f50fd8931d22e84cecc74d 24-Apr-2010 John McCall <rjmccall@apple.com> Recommit r102215, this time being more careful to only set the "principal
declaration" (i.e. the only which will actually be looked up) to have the
non-member-operator bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
76d326448d7e4c10b2896edc2ee855d1e68d1b88 24-Apr-2010 John McCall <rjmccall@apple.com> Recommit r102215, this time being more careful to only set the "principal
declaration" (i.e. the only which will actually be looked up) to have the
non-member-operator bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
fe52a675aa4ca1019099e1b0379ebe00e0f111dc 24-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Teach clang -fixit to modify files in-place, or -fixit=suffix to create new
files with the additional suffix in the middle.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102230 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FixItRewriter.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
ba5f6eced29937e4e4851a2c0980744768413d66 24-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Teach clang -fixit to modify files in-place, or -fixit=suffix to create new
files with the additional suffix in the middle.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102230 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FixItRewriter.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
6742ed0fae1d786bcc2e6c9b4cca19f35fd13bd6 24-Apr-2010 Devang Patel <dpatel@apple.com> Revert r102215. This causes clang crash while compiling a test case from gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f0bf4d554f2513cbb4bec952c81ced59279ad91e 24-Apr-2010 Devang Patel <dpatel@apple.com> Revert r102215. This causes clang crash while compiling a test case from gdb testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6e4785e419b650170441901e02795a841eddf59b 24-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> With -fno-constant-cfstrrings, class NSConstantString
must be there or it is error (Next runtime).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a4377697161c5087e27cc40d6e0682f0cd1fa20 24-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> With -fno-constant-cfstrrings, class NSConstantString
must be there or it is error (Next runtime).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b8e5c14993759f1507e2713e25dd034a7751707d 24-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Rework Parser-Sema interface for Objective-C @catch exception object
arguments. Rather than having the parser call ActOnParamDeclarator
(which is a bit of a hack), call a new ActOnObjCExceptionDecl
action. We'll be moving more functionality into this handler to
perform earlier checking of @catch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102222 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
4e6c0d19b7c072758922cf80525a81aeefc6e64b 24-Apr-2010 Douglas Gregor <dgregor@apple.com> Rework Parser-Sema interface for Objective-C @catch exception object
arguments. Rather than having the parser call ActOnParamDeclarator
(which is a bit of a hack), call a new ActOnObjCExceptionDecl
action. We'll be moving more functionality into this handler to
perform earlier checking of @catch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102222 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1a2c1a806b8322d095e20481a2815bc4275900aa 24-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve the AST representation of Objective-C @try/@catch/@finally
statements. Instead of the @try having a single @catch, where all of
the @catch's were chained (using an O(n^2) algorithm nonetheless),
@try just holds an array of its @catch blocks. The resulting AST is
slightly more compact (not important) and better represents the actual
language semantics (good).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102221 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtObjC.h
arse/Action.h
8f5e3dd32e443768d9dbbad7191e123e6733750c 24-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve the AST representation of Objective-C @try/@catch/@finally
statements. Instead of the @try having a single @catch, where all of
the @catch's were chained (using an O(n^2) algorithm nonetheless),
@try just holds an array of its @catch blocks. The resulting AST is
slightly more compact (not important) and better represents the actual
language semantics (good).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102221 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtObjC.h
arse/Action.h
d973415fc7134449ae45582c934adcda521f6968 24-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> More -fno-constant-cfstrings API work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ec951e0c2fc0db00c36bc60c900331dde32c1b43 24-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> More -fno-constant-cfstrings API work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
301ea81936fb6061341b17d73c34d9fbd2fdb423 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add an InheritancePath parameter to the ImplicitCastExpr constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
88465d3e996e627bbaa11099b039ddab66d5af2c 24-Apr-2010 Anders Carlsson <andersca@mac.com> Add an InheritancePath parameter to the ImplicitCastExpr constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e5b8fd3a48d3c993d29d3a262ff21a36b8a6521d 23-Apr-2010 John McCall <rjmccall@apple.com> Transition the last acceptable-result filter kind in LookupResult over to use
a simple IDNS mask by introducing a namespace for non-member operators.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102215 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f88b0d6c99e6473e78331271935986535dc4603c 23-Apr-2010 John McCall <rjmccall@apple.com> Transition the last acceptable-result filter kind in LookupResult over to use
a simple IDNS mask by introducing a namespace for non-member operators.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102215 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1a184adfc02d645b05d7509fc9052e50e8cb02c3 23-Apr-2010 Argiris Kirtzidis <akyrtzi@gmail.com> Make Parser::ConsumeAndStoreUntil() more consistent with Parser::SkipUntil().

ConsumeAndStoreUntil would stop at tok::unknown when caching an inline method
definition while SkipUntil would go past it while parsing the method.

Fixes PR 6903.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102214 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
14b91628961ab50cc6e724bbcd408fdee100662d 23-Apr-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make Parser::ConsumeAndStoreUntil() more consistent with Parser::SkipUntil().

ConsumeAndStoreUntil would stop at tok::unknown when caching an inline method
definition while SkipUntil would go past it while parsing the method.

Fixes PR 6903.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102214 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
dc010fabb200bef288416ed2943b4a8fe87648fa 23-Apr-2010 Anders Carlsson <andersca@mac.com> Destroy the inheritance path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a3bddeda81ca784bed5501d79e1e7c53befaa91d 23-Apr-2010 Anders Carlsson <andersca@mac.com> Destroy the inheritance path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
650d862f7ddfc6215a15da62645cc5e47f93124f 23-Apr-2010 Anders Carlsson <andersca@mac.com> Add an inheritance path member variable to CastExpr. For now it's always null but for derived-to-base and base-to-derived cast expressions it will contain the full base path. This is needed to avoid ambiguities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102210 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
409c99edb8b623403fade6f3a9e9c86acda74455 23-Apr-2010 Anders Carlsson <andersca@mac.com> Add an inheritance path member variable to CastExpr. For now it's always null but for derived-to-base and base-to-derived cast expressions it will contain the full base path. This is needed to avoid ambiguities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102210 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
170d1b88f0c77ec5b81f22419f197cefc7b175d6 23-Apr-2010 Anders Carlsson <andersca@mac.com> Turn CXXMethodVector into a generic class template.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102208 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/UsuallyTinyPtrVector.h
046861b912ed72bdc364d7905180ee63e5b08870 23-Apr-2010 Anders Carlsson <andersca@mac.com> Turn CXXMethodVector into a generic class template.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102208 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/UsuallyTinyPtrVector.h
b057bb40702a9fb498d623a3be6f110fad650761 23-Apr-2010 John McCall <rjmccall@apple.com> Recommit my change to how C++ does elaborated type lookups, now with
two bugfixes which fix selfhost and (hopefully) the nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102198 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
asic/DiagnosticSemaKinds.td
0d6b1640eb4d1a4a0203235cfdfcdaf3335af36d 23-Apr-2010 John McCall <rjmccall@apple.com> Recommit my change to how C++ does elaborated type lookups, now with
two bugfixes which fix selfhost and (hopefully) the nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102198 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
asic/DiagnosticSemaKinds.td
03da329d5ebfb989a382b8e36fd4dc46e54ac87f 23-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on my previous diagnostics: per Doug's comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102190 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
055117640dabf88e4e7d35e72c98a5f3bbdac256 23-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on my previous diagnostics: per Doug's comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102190 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f0b08496aea4aaa2fbe12b8c3af61072c206a30c 23-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> More work toward implementing
NeXt's -fno-constant-cfstrings - wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/TargetInfo.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
2bb5ddaff86ee73d2cea7ec1835978afc88a83f0 23-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> More work toward implementing
NeXt's -fno-constant-cfstrings - wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/TargetInfo.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
f0881b098ee3ecc09a078ef4555d78a2a25ece8a 23-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Trying to improve on a diagnostics for properties.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ca5cec3b5da9aa6b41c4aeccd0ee1c177825bca4 23-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Trying to improve on a diagnostics for properties.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a003315f688d26ea2b7ca10e57b4e88e630d7c06 23-Apr-2010 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
37de281ac149a5c5f14e4935a3738d87370da3ed 23-Apr-2010 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e20b812c499916b8b1c6fbd52823ca6b4c6413ec 23-Apr-2010 Chris Lattner <sabre@nondot.org> david conrad points out that {|} in inline assembly on arm are not asm
variants. This fixes neon inline asm which my patch for PR6780 broke.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9bffb0701d02a10e77e1ac0f196074eed6466ed0 23-Apr-2010 Chris Lattner <sabre@nondot.org> david conrad points out that {|} in inline assembly on arm are not asm
variants. This fixes neon inline asm which my patch for PR6780 broke.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
224f7914a1a4144edf8d45611ecfed9de563121d 23-Apr-2010 Daniel Dunbar <daniel@zuster.org> Revert "C++ doesn't really use "namespaces" for different kinds of names the same", which seems to break most C++ nightly test apps.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102174 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.td
00b40d3f2fb8b2f9043daf3dd4558bff98346b3c 23-Apr-2010 Daniel Dunbar <daniel@zuster.org> Revert "C++ doesn't really use "namespaces" for different kinds of names the same", which seems to break most C++ nightly test apps.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102174 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.td
174c1d45482c22b589fb3a5e456088f0f3210965 23-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Strip cv-qualifiers when building C++ constructor and destructor
names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
20b3c9dda95e6808865110a21bfec25f95ebcaa7 23-Apr-2010 Douglas Gregor <dgregor@apple.com> Strip cv-qualifiers when building C++ constructor and destructor
names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
22027ada592fa7f72418cd53934d6000bfcf8c38 23-Apr-2010 Anders Carlsson <andersca@mac.com> Add another 'catch all' access diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102169 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0e313bd4795c005f23c43f127039fd948c3e0bd9 23-Apr-2010 Anders Carlsson <andersca@mac.com> Add another 'catch all' access diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102169 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c51fdda5ba5bd2a30276d3084769b76055309f57 23-Apr-2010 John McCall <rjmccall@apple.com> C++ doesn't really use "namespaces" for different kinds of names the same
way that C does. Among other differences, elaborated type specifiers
are defined to skip "non-types", which, as you might imagine, does not
include typedefs. Rework our use of IDNS masks to capture the semantics
of different kinds of declarations better, and remove most current lookup
filters. Removing the last remaining filter is more complicated and will
happen in a separate patch.

Fixes PR 6885 as well some spectrum of unfiled bugs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.td
d04efc98d08731e31bd73f430803acc5ffa9040a 23-Apr-2010 John McCall <rjmccall@apple.com> C++ doesn't really use "namespaces" for different kinds of names the same
way that C does. Among other differences, elaborated type specifiers
are defined to skip "non-types", which, as you might imagine, does not
include typedefs. Rework our use of IDNS masks to capture the semantics
of different kinds of declarations better, and remove most current lookup
filters. Removing the last remaining filter is more complicated and will
happen in a separate patch.

Fixes PR 6885 as well some spectrum of unfiled bugs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.td
a19f6bd327360b1ca2d540071ea28acfa1da746d 23-Apr-2010 Anders Carlsson <andersca@mac.com> Change the 'declared at' diagnostic to say 'declared here'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d1aa800a19c956c72319025dd302ae78ed47f9ee 23-Apr-2010 Anders Carlsson <andersca@mac.com> Change the 'declared at' diagnostic to say 'declared here'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d7298f54400d484b4b04393e48bdbe5c2cf3a5a3 23-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Make TemplateDecl and ObjCContainerDecl abstract

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
baf633b41fc1cb42fd5e128954550bf1853f2a8d 23-Apr-2010 Douglas Gregor <dgregor@apple.com> Make TemplateDecl and ObjCContainerDecl abstract

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
9761a64100c53e687c57a5529f9ca54fef11e1aa 23-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Kill off IDNS_ObjCImplementation and IDNS_ObjCCategoryName; they
aren't and never were used. There's a gap in the bit pattern for IDNS
now, but I'm sure *someone* will fill it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
bd4187bb6f4a0cfe7d6d2c8e8856b16bca2f0748 23-Apr-2010 Douglas Gregor <dgregor@apple.com> Kill off IDNS_ObjCImplementation and IDNS_ObjCCategoryName; they
aren't and never were used. There's a gap in the bit pattern for IDNS
now, but I'm sure *someone* will fill it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b33c766ae8d0e73ae511dff8698d811044968849 22-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Check for -fno-constant-cfstrings consistency
in pch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102130 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
4c9d8d0eca5ca635d9a30222f690db9140e98325 22-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Check for -fno-constant-cfstrings consistency
in pch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102130 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
b2df6b5289dd2d3b7e4b077ae4555145f6fc9c61 22-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Support for -fno-constant-cfstrings option - wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
33e982bf782d851bfe5767acb1336fcf3419ac6b 22-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Support for -fno-constant-cfstrings option - wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
7da31c178c1982b1fb3c28ae1aa280c05a32601e 22-Apr-2010 John McCall <rjmccall@apple.com> Use the naming class from the overloaded lookup when access-checking an
address of overloaded function, instead of assuming that a nested name
specifier was used. A nested name specifier is not required for static
functions.

Fixes PR6886.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102107 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e9ee23edd17c4bb7f271e67f8790792b4de677fc 22-Apr-2010 John McCall <rjmccall@apple.com> Use the naming class from the overloaded lookup when access-checking an
address of overloaded function, instead of assuming that a nested name
specifier was used. A nested name specifier is not required for static
functions.

Fixes PR6886.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102107 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d43994fbedf40dde3a016c3c8991aa2085646cd9 22-Apr-2010 Anders Carlsson <andersca@mac.com> Re-land the patch that merges two diagnostics into one now that it passes self-host :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3b8c53b619c1c3d77632734d227566071459b9f5 22-Apr-2010 Anders Carlsson <andersca@mac.com> Re-land the patch that merges two diagnostics into one now that it passes self-host :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0b01765e44e0766a1d3e6d78de2c95d5cb393db8 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> Revert "Unify two diagnostics into one.", it breaks with an assertion failure on bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102043 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4b2853cec72abdaa6821aabc372d538dfbc2429 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> Revert "Unify two diagnostics into one.", it breaks with an assertion failure on bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102043 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
060da325bbd975c2b7f6a08df297ecbdcc71e71f 22-Apr-2010 Anders Carlsson <andersca@mac.com> Unify two diagnostics into one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102040 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
792898b58a27ea9034dd95710d388ed30cc693af 22-Apr-2010 Anders Carlsson <andersca@mac.com> Unify two diagnostics into one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102040 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
82d10e709325891eaf37609ad9d6178c11fe6b22 22-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Whenever we complain about a failed initialization of a function or
method parameter, provide a note pointing at the parameter itself so
the user does not have to manually look for the function/method being
called and match up parameters to arguments. For example, we now get:

t.c:4:5: warning: incompatible pointer types passing 'long *' to
parameter of
type 'int *' [-pedantic]
f(long_ptr);
^~~~~~~~
t.c:1:13: note: passing argument to parameter 'x' here
void f(int *x);
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a41a8c5972c2632247ae7913cf6ce65d45f7e702 22-Apr-2010 Douglas Gregor <dgregor@apple.com> Whenever we complain about a failed initialization of a function or
method parameter, provide a note pointing at the parameter itself so
the user does not have to manually look for the function/method being
called and match up parameters to arguments. For example, we now get:

t.c:4:5: warning: incompatible pointer types passing 'long *' to
parameter of
type 'int *' [-pedantic]
f(long_ptr);
^~~~~~~~
t.c:1:13: note: passing argument to parameter 'x' here
void f(int *x);
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
008452a502ebc69b0bc26655f5f341b71e139196 22-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Implement parsing for message sends in Objective-C++. Message sends in
Objective-C++ have a more complex grammar than in Objective-C
(surprise!), because

(1) The receiver of an instance message can be a qualified name such
as ::I or identity<I>::type.
(2) Expressions in C++ can start with a type.

The receiver grammar isn't actually ambiguous; it just takes a bit of
work to parse past the type before deciding whether we have a type or
expression. We do this in two places within the grammar: once for
message sends and once when we're determining whether a []'d clause in
an initializer list is a message send or a C99 designated initializer.

This implementation of Objective-C++ message sends contains one known
extension beyond GCC's implementation, which is to permit a
typename-specifier as the receiver type for a class message, e.g.,

[typename compute_receiver_type<T>::type method];

Note that the same effect can be achieved in GCC by way of a typedef,
e.g.,

typedef typename computed_receiver_type<T>::type Computed;
[Computed method];

so this is merely a convenience.

Note also that message sends still cannot involve dependent types or
values.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102031 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
6aa14d832704ae176c92d4e0f22dfb3f3d83a70a 22-Apr-2010 Douglas Gregor <dgregor@apple.com> Implement parsing for message sends in Objective-C++. Message sends in
Objective-C++ have a more complex grammar than in Objective-C
(surprise!), because

(1) The receiver of an instance message can be a qualified name such
as ::I or identity<I>::type.
(2) Expressions in C++ can start with a type.

The receiver grammar isn't actually ambiguous; it just takes a bit of
work to parse past the type before deciding whether we have a type or
expression. We do this in two places within the grammar: once for
message sends and once when we're determining whether a []'d clause in
an initializer list is a message send or a C99 designated initializer.

This implementation of Objective-C++ message sends contains one known
extension beyond GCC's implementation, which is to permit a
typename-specifier as the receiver type for a class message, e.g.,

[typename compute_receiver_type<T>::type method];

Note that the same effect can be achieved in GCC by way of a typedef,
e.g.,

typedef typename computed_receiver_type<T>::type Computed;
[Computed method];

so this is merely a convenience.

Note also that message sends still cannot involve dependent types or
values.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102031 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b78dc9814ff816750a3499ab372056eb2673880b 21-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Migrate the responsibility for turning the receiver name in an
Objective-C class message expression into a type from the parser
(which was doing so in two places) to Action::getObjCMessageKind()
which, in the case of Sema, reduces the number of name lookups we need
to perform.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102026 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1569f95831a8c99e9f664137bf8f40e47ee3d90f 21-Apr-2010 Douglas Gregor <dgregor@apple.com> Migrate the responsibility for turning the receiver name in an
Objective-C class message expression into a type from the parser
(which was doing so in two places) to Action::getObjCMessageKind()
which, in the case of Sema, reduces the number of name lookups we need
to perform.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102026 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f36e10ef71ece964bcd7997b170a7cb48c12901f 21-Apr-2010 Anders Carlsson <andersca@mac.com> Diagnose access to fields with private constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102025 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b99c666a940e93bcfcaeddc01515c94472e28a20 21-Apr-2010 Anders Carlsson <andersca@mac.com> Diagnose access to fields with private constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102025 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc1ec854fa9a150a195bf004926aeb3736b2b218 21-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Rework the Parser-Sema interaction for Objective-C message
sends. Major changes include:

- Expanded the interface from two actions (ActOnInstanceMessage,
ActOnClassMessage), where ActOnClassMessage also handled sends to
"super" by checking whether the identifier was "super", to three
actions (ActOnInstanceMessage, ActOnClassMessage,
ActOnSuperMessage). Code completion has the same changes.
- The parser now resolves the type to which we are sending a class
message, so ActOnClassMessage now accepts a TypeTy* (rather than
an IdentifierInfo *). This opens the door to more interesting
types (for Objective-C++ support).
- Split ActOnInstanceMessage and ActOnClassMessage into parser
action functions (with their original names) and semantic
functions (BuildInstanceMessage and BuildClassMessage,
respectively). At present, this split is onyl used by
ActOnSuperMessage, which decides which kind of super message it
has and forwards to the appropriate Build*Message. In the future,
Build*Message will be used by template instantiation.
- Use getObjCMessageKind() within the disambiguation of Objective-C
message sends vs. array designators.

Two notes about substandard bits in this patch:
- There is some redundancy in the code in ParseObjCMessageExpr and
ParseInitializerWithPotentialDesignator; this will be addressed
shortly by centralizing the mapping from identifiers to type names
for the message receiver.
- There is some #if 0'd code that won't likely ever be used---it
handles the use of 'super' in methods whose class does not have a
superclass---but could be used to model GCC's behavior more
closely. This code will die in my next check-in, but I want it in
Subversion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
2725ca8eb3354975ca77ed4b88ede7b60b216b9a 21-Apr-2010 Douglas Gregor <dgregor@apple.com> Rework the Parser-Sema interaction for Objective-C message
sends. Major changes include:

- Expanded the interface from two actions (ActOnInstanceMessage,
ActOnClassMessage), where ActOnClassMessage also handled sends to
"super" by checking whether the identifier was "super", to three
actions (ActOnInstanceMessage, ActOnClassMessage,
ActOnSuperMessage). Code completion has the same changes.
- The parser now resolves the type to which we are sending a class
message, so ActOnClassMessage now accepts a TypeTy* (rather than
an IdentifierInfo *). This opens the door to more interesting
types (for Objective-C++ support).
- Split ActOnInstanceMessage and ActOnClassMessage into parser
action functions (with their original names) and semantic
functions (BuildInstanceMessage and BuildClassMessage,
respectively). At present, this split is onyl used by
ActOnSuperMessage, which decides which kind of super message it
has and forwards to the appropriate Build*Message. In the future,
Build*Message will be used by template instantiation.
- Use getObjCMessageKind() within the disambiguation of Objective-C
message sends vs. array designators.

Two notes about substandard bits in this patch:
- There is some redundancy in the code in ParseObjCMessageExpr and
ParseInitializerWithPotentialDesignator; this will be addressed
shortly by centralizing the mapping from identifiers to type names
for the message receiver.
- There is some #if 0'd code that won't likely ever be used---it
handles the use of 'super' in methods whose class does not have a
superclass---but could be used to model GCC's behavior more
closely. This code will die in my next check-in, but I want it in
Subversion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
500acd6be7b449d0982cf0a9e63ee282a2a6376c 21-Apr-2010 Anders Carlsson <andersca@mac.com> Keep tack of whether a base in an InitializedEntity is an inherited virtual base or not. Use this in CheckConstructorAccess.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
711f34adb886cce8ba86c7b1b6513a1eaaf63bb5 21-Apr-2010 Anders Carlsson <andersca@mac.com> Keep tack of whether a base in an InitializedEntity is an inherited virtual base or not. Use this in CheckConstructorAccess.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b83d227f3071159f3b64e84478336ab0ad5f6a9 21-Apr-2010 Anders Carlsson <andersca@mac.com> Pass the InitializedEntity to Sema::CheckConstructorAccess and use it to report different diagnostics depending on which entity is being initialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102010 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9a68a67c6ae4982001815cc04f69b8781058263a 21-Apr-2010 Anders Carlsson <andersca@mac.com> Pass the InitializedEntity to Sema::CheckConstructorAccess and use it to report different diagnostics depending on which entity is being initialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102010 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e8741c165985f3c310b77e21a04eaac970d7f3e5 21-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
d2ec7268da536871ae05769d776c4f7caf88dbd7 21-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
80f35bd41307b833ba0e89c0463485aba029789e 21-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add more const to ConstExprIterator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/Stmt.h
1705fe9ec0efb65f77a46e669e48302923204fe8 21-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add more const to ConstExprIterator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/Stmt.h
4a0a0aeb4b8c3906a4c510e1874a6322e02c7a01 21-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> CXXNamedCastExpr is actually an abstract expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
d8383d45e41ba2316610e5d638d2872e37b67cfb 21-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> CXXNamedCastExpr is actually an abstract expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
3651ce8ac4d89a17f28a7b73021fd34734fe4dd7 21-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Reword the note we emit when suppressing template instantiation contexts, per John's advice

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3fb53bd53037872040396225736914fcb75c1fec 21-Apr-2010 Douglas Gregor <dgregor@apple.com> Reword the note we emit when suppressing template instantiation contexts, per John's advice

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5497b5ef7da4e0a570e2ce2c9c9e0d84e8b803b6 21-Apr-2010 John McCall <rjmccall@apple.com> Use const_cast instead of a C cast. Safer, plus it suppresses a gcc warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101982 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
5fae1d67ac199755dd26a102e1bddc881edab19c 21-Apr-2010 John McCall <rjmccall@apple.com> Use const_cast instead of a C cast. Safer, plus it suppresses a gcc warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101982 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
09bbc68a8388f1e4cd019e66aa6d3f4a375735fe 21-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add initial support for C++ delete expr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101980 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
6b8513829895e56a7b97e787ea74520bc626512e 21-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add initial support for C++ delete expr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101980 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
aa598756ea06cb4de58fa775892e02f57e71537b 21-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Overhaul the AST representation of Objective-C message send
expressions, to improve source-location information, clarify the
actual receiver of the message, and pave the way for proper C++
support. The ObjCMessageExpr node represents four different kinds of
message sends in a single AST node:

1) Send to a object instance described by an expression (e.g., [x method:5])
2) Send to a class described by the class name (e.g., [NSString method:5])
3) Send to a superclass class (e.g, [super method:5] in class method)
4) Send to a superclass instance (e.g., [super method:5] in instance method)

Previously these four cases where tangled together. Now, they have
more distinct representations. Specific changes:

1) Unchanged; the object instance is represented by an Expr*.

2) Previously stored the ObjCInterfaceDecl* referring to the class
receiving the message. Now stores a TypeSourceInfo* so that we know
how the class was spelled. This both maintains typedef information
and opens the door for more complicated C++ types (e.g., dependent
types). There was an alternative, unused representation of these
sends by naming the class via an IdentifierInfo *. In practice, we
either had an ObjCInterfaceDecl *, from which we would get the
IdentifierInfo *, or we fell into the case below...

3) Previously represented by a class message whose IdentifierInfo *
referred to "super". Sema and CodeGen would use isStr("super") to
determine if they had a send to super. Now represented as a
"class super" send, where we have both the location of the "super"
keyword and the ObjCInterfaceDecl* of the superclass we're
targetting (statically).

4) Previously represented by an instance message whose receiver is a
an ObjCSuperExpr, which Sema and CodeGen would check for via
isa<ObjCSuperExpr>(). Now represented as an "instance super" send,
where we have both the location of the "super" keyword and the
ObjCInterfaceDecl* of the superclass we're targetting
(statically). Note that ObjCSuperExpr only has one remaining use in
the AST, which is for "super.prop" references.

The new representation of ObjCMessageExpr is 2 pointers smaller than
the old one, since it combines more storage. It also eliminates a leak
when we loaded message-send expressions from a precompiled header. The
representation also feels much cleaner to me; comments welcome!

This patch attempts to maintain the same semantics we previously had
with Objective-C message sends. In several places, there are massive
changes that boil down to simply replacing a nested-if structure such
as:

if (message has a receiver expression) {
// instance message
if (isa<ObjCSuperExpr>(...)) {
// send to super
} else {
// send to an object
}
} else {
// class message
if (name->isStr("super")) {
// class send to super
} else {
// send to class
}
}

with a switch

switch (E->getReceiverKind()) {
case ObjCMessageExpr::SuperInstance: ...
case ObjCMessageExpr::Instance: ...
case ObjCMessageExpr::SuperClass: ...
case ObjCMessageExpr::Class:...
}

There are quite a few places (particularly in the checkers) where
send-to-super is effectively ignored. I've placed FIXMEs in most of
them, and attempted to address send-to-super in a reasonable way. This
could use some review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
hecker/BugReporter/BugReporter.h
04badcf84c8d504d8491c7c7e29b58f52cb16640 21-Apr-2010 Douglas Gregor <dgregor@apple.com> Overhaul the AST representation of Objective-C message send
expressions, to improve source-location information, clarify the
actual receiver of the message, and pave the way for proper C++
support. The ObjCMessageExpr node represents four different kinds of
message sends in a single AST node:

1) Send to a object instance described by an expression (e.g., [x method:5])
2) Send to a class described by the class name (e.g., [NSString method:5])
3) Send to a superclass class (e.g, [super method:5] in class method)
4) Send to a superclass instance (e.g., [super method:5] in instance method)

Previously these four cases where tangled together. Now, they have
more distinct representations. Specific changes:

1) Unchanged; the object instance is represented by an Expr*.

2) Previously stored the ObjCInterfaceDecl* referring to the class
receiving the message. Now stores a TypeSourceInfo* so that we know
how the class was spelled. This both maintains typedef information
and opens the door for more complicated C++ types (e.g., dependent
types). There was an alternative, unused representation of these
sends by naming the class via an IdentifierInfo *. In practice, we
either had an ObjCInterfaceDecl *, from which we would get the
IdentifierInfo *, or we fell into the case below...

3) Previously represented by a class message whose IdentifierInfo *
referred to "super". Sema and CodeGen would use isStr("super") to
determine if they had a send to super. Now represented as a
"class super" send, where we have both the location of the "super"
keyword and the ObjCInterfaceDecl* of the superclass we're
targetting (statically).

4) Previously represented by an instance message whose receiver is a
an ObjCSuperExpr, which Sema and CodeGen would check for via
isa<ObjCSuperExpr>(). Now represented as an "instance super" send,
where we have both the location of the "super" keyword and the
ObjCInterfaceDecl* of the superclass we're targetting
(statically). Note that ObjCSuperExpr only has one remaining use in
the AST, which is for "super.prop" references.

The new representation of ObjCMessageExpr is 2 pointers smaller than
the old one, since it combines more storage. It also eliminates a leak
when we loaded message-send expressions from a precompiled header. The
representation also feels much cleaner to me; comments welcome!

This patch attempts to maintain the same semantics we previously had
with Objective-C message sends. In several places, there are massive
changes that boil down to simply replacing a nested-if structure such
as:

if (message has a receiver expression) {
// instance message
if (isa<ObjCSuperExpr>(...)) {
// send to super
} else {
// send to an object
}
} else {
// class message
if (name->isStr("super")) {
// class send to super
} else {
// send to class
}
}

with a switch

switch (E->getReceiverKind()) {
case ObjCMessageExpr::SuperInstance: ...
case ObjCMessageExpr::Instance: ...
case ObjCMessageExpr::SuperClass: ...
case ObjCMessageExpr::Class:...
}

There are quite a few places (particularly in the checkers) where
send-to-super is effectively ignored. I've placed FIXMEs in most of
them, and attempted to address send-to-super in a reasonable way. This
could use some review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
hecker/BugReporter/BugReporter.h
eb599b04d8f1d7b71e04caf2b6de3b3360662c0c 21-Apr-2010 Anders Carlsson <andersca@mac.com> Remove an unused parameter from isImplicitlyDefined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
10dc0f8c355c6a726f206aefcb249cb2fafbce17 21-Apr-2010 Anders Carlsson <andersca@mac.com> Remove an unused parameter from isImplicitlyDefined.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d1af63ce83d16bd87e384423c83aad7fbba431e1 20-Apr-2010 Chris Lattner <sabre@nondot.org> change FullSourceLoc to have a *const* SourceManager&, eliminating
a const_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
rontend/TextDiagnosticPrinter.h
5c5db4e94bd1243ba92563acba51ba66afa94917 20-Apr-2010 Chris Lattner <sabre@nondot.org> change FullSourceLoc to have a *const* SourceManager&, eliminating
a const_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
rontend/TextDiagnosticPrinter.h
d8dc8f7f327f2d7f4517e71b54ddaf38b6e7c3e9 20-Apr-2010 Chris Lattner <sabre@nondot.org> push some source location information down through the compiler,
into ContentCache::getBuffer. This allows it to produce
diagnostics on the broken #include line instead of without a
location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Preprocessor.h
e127a0d80155b45dafe77f2b4380e5fa111a3345 20-Apr-2010 Chris Lattner <sabre@nondot.org> push some source location information down through the compiler,
into ContentCache::getBuffer. This allows it to produce
diagnostics on the broken #include line instead of without a
location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Preprocessor.h
0a40dacf833d9b68b6c8a5cd3c4ed4ec0ec3d69b 20-Apr-2010 Chris Lattner <sabre@nondot.org> enhance sourcemgr to detect various UTF BOM's and emit a fatal error
about it instead of producing tons of garbage from the lexer.

It would be even better for sourcemgr to dynamically transcode (e.g.
from UTF16 -> UTF8).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101924 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
38caec48bc1c9816ca59b8d164a64447ee208c2e 20-Apr-2010 Chris Lattner <sabre@nondot.org> enhance sourcemgr to detect various UTF BOM's and emit a fatal error
about it instead of producing tons of garbage from the lexer.

It would be even better for sourcemgr to dynamically transcode (e.g.
from UTF16 -> UTF8).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101924 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
91330e6d7da91efa05ff0ff63b3f8f47f48fa8c4 20-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Keep proper source location information for the type in an Objective-C
@encode expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
81d3466d037dc5844234c7a93dab21a6ad986e7d 20-Apr-2010 Douglas Gregor <dgregor@apple.com> Keep proper source location information for the type in an Objective-C
@encode expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
c693861122503dacd40daf3b2fba092db42513c6 20-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a limit on the depth of the template instantiation backtrace
we will print with each error that occurs during template
instantiation. When the backtrace is longer than that, we will print
N/2 of the innermost backtrace entries and N/2 of the outermost
backtrace entries, then skip the middle entries with a note such as:

note: suppressed 2 template instantiation contexts; use
-ftemplate-backtrace-limit=N to change the number of template
instantiation entries shown

This should eliminate some excessively long backtraces that aren't
providing any value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
575cf3791216c33770ba950430493cdd43099f8f 20-Apr-2010 Douglas Gregor <dgregor@apple.com> Introduce a limit on the depth of the template instantiation backtrace
we will print with each error that occurs during template
instantiation. When the backtrace is longer than that, we will print
N/2 of the innermost backtrace entries and N/2 of the outermost
backtrace entries, then skip the middle entries with a note such as:

note: suppressed 2 template instantiation contexts; use
-ftemplate-backtrace-limit=N to change the number of template
instantiation entries shown

This should eliminate some excessively long backtraces that aren't
providing any value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
c5a66dfb93dff2edf9a9b1ea2a9a7b600a75ff2d 20-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Improve handling of CXXNewExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101862 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
b17b1b3cc2b0d4d3b263b9384571bbc7f3995771 20-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Improve handling of CXXNewExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101862 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
a6e7cc1036bee04fe556448413ed69349a9030cd 20-Apr-2010 Chris Lattner <sabre@nondot.org> add __builtin_[r]index. Perhaps all LIBBUILTIN's should get
these or something?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101858 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d764d6567ca56d23efc2d63b62b156c415fe5fae 20-Apr-2010 Chris Lattner <sabre@nondot.org> add __builtin_[r]index. Perhaps all LIBBUILTIN's should get
these or something?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101858 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
944c37abb8acd1e14e73176922ee351db6a0f62f 20-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of the actual storage specifier written on a variable or
function declaration, since it may end up being changed (e.g.,
"extern" can become "static" if a prior declaration was static). Patch
by Enea Zaffanella and Paolo Bolzoni.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
arse/DeclSpec.h
16573fa9705b546b7597c273b25b85d6321e2b33 20-Apr-2010 Douglas Gregor <dgregor@apple.com> Keep track of the actual storage specifier written on a variable or
function declaration, since it may end up being changed (e.g.,
"extern" can become "static" if a prior declaration was static). Patch
by Enea Zaffanella and Paolo Bolzoni.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
arse/DeclSpec.h
24fa15567be0d11ba3c43bb53735016cf23e3cda 19-Apr-2010 Chris Lattner <sabre@nondot.org> add a PPCallback handler for a skipped #include, patch by
Zhanyong Wan!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101813 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
6fbe3ebeaef08665a37423f8425314c90b8b5bcf 19-Apr-2010 Chris Lattner <sabre@nondot.org> add a PPCallback handler for a skipped #include, patch by
Zhanyong Wan!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101813 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
056f377b25606c6413732c62543bfbb5faeed997 19-Apr-2010 Eric Christopher <echristo@apple.com> Remove the argument number from the constant integer diagnostic.
Update all of the testcases accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101795 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5e8965525282a48fd34af05183b8c3705a5b00d5 19-Apr-2010 Eric Christopher <echristo@apple.com> Remove the argument number from the constant integer diagnostic.
Update all of the testcases accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101795 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7c5d9538c7621a5b4eb922bf14360fdd6e1d4c6a 19-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Some renaming of methods, fixes typo
(related to PR6769).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
63326a53418b4853a83b360ce1dbdb10c5739fc7 19-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Some renaming of methods, fixes typo
(related to PR6769).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f659b239aa691ee558fd4ba0ef0a68ce396857d3 19-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101786 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
cb421fa690da545b58a720abe5f1c49b166dbde7 19-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101786 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
525310b7e252b3b0495affdba337042d63702a55 19-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move all C++ expression evaluation logic into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101772 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
cb7464ab402d057849dda9749d62a62d86c35ab8 19-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move all C++ expression evaluation logic into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101772 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
5fa5b9f8a9e7eeb9883ca13c07895db79db1b38f 19-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Analyzer: add support for CXXNewExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101771 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
856c6bcaea56e05255e9f3997ddd56b5c18a14f0 19-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Analyzer: add support for CXXNewExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101771 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
f573eaf3c7ff85ebd18b6f2861097e1a8b3d1d3f 18-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Local static variables must be available module-wise
as they are accessible in static methods in a class
local to the same function. Fixes PR6769.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
65ad5a42cca954e070428dcc499b62393aa7a6d3 18-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Local static variables must be available module-wise
as they are accessible in static methods in a class
local to the same function. Fixes PR6769.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
317e07ea35a2b1269d0b9095bdde70f2685f7015 18-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve our handling of user-defined conversions as part of overload
resolution. There are two sources of problems involving user-defined
conversions that this change eliminates, along with providing simpler
interfaces for checking implicit conversions:

- It eliminates a case of infinite recursion found in Boost.

- It eliminates the search for the constructor needed to copy a temporary
generated by an implicit conversion from overload
resolution. Overload resolution assumes that, if it gets a value
of the parameter's class type (or a derived class thereof), there
is a way to copy if... even if there isn't. We now model this
properly.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3fbaf3e5d524bfff219d1e3e9ac4801a8411590f 18-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve our handling of user-defined conversions as part of overload
resolution. There are two sources of problems involving user-defined
conversions that this change eliminates, along with providing simpler
interfaces for checking implicit conversions:

- It eliminates a case of infinite recursion found in Boost.

- It eliminates the search for the constructor needed to copy a temporary
generated by an implicit conversion from overload
resolution. Overload resolution assumes that, if it gets a value
of the parameter's class type (or a derived class thereof), there
is a way to copy if... even if there isn't. We now model this
properly.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1cfbc68a39712b410f0b5859b87b57f9ff749cea 17-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Add support for '-fgnu-keywords' and '-fasm' to Clang's driver. They are not
implemented precisely the same as GCC, but the distinction GCC makes isn't
useful to represent. This allows parsing code which uses GCC-specific keywords
('asm', etc.) without parsing in a fully GNU mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
eb5d7b752651283de5abfcc2f91df7227582a08d 17-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Add support for '-fgnu-keywords' and '-fasm' to Clang's driver. They are not
implemented precisely the same as GCC, but the distinction GCC makes isn't
useful to represent. This allows parsing code which uses GCC-specific keywords
('asm', etc.) without parsing in a fully GNU mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
ac31224820a92c7e38e632c807a8ee55dbfa69a3 17-Apr-2010 Anders Carlsson <andersca@mac.com> Vtable -> VTable renames across the board.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
046c294a43024874ff35656c6e785b64e72f1f36 17-Apr-2010 Anders Carlsson <andersca@mac.com> Vtable -> VTable renames across the board.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
566e7eca199ecccb73cd8305faae30d2dbe8efb6 17-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add printName to DeclarationName which prints the human-readable name on a
raw_ostream. Use it in getAsString and NamedDecl's raw_ostream operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclarationName.h
f6cde77d7bc34bbee26b086ff192637af8e9da59 17-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add printName to DeclarationName which prints the human-readable name on a
raw_ostream. Use it in getAsString and NamedDecl's raw_ostream operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclarationName.h
13946c261d641cd1745b59d36ae1420c2aea20ae 17-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream.

The next step is to print the name directly into the stream, avoiding a temporary std::string copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
900fc6388e803868a34b9483510c345e9b49d7eb 17-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream.

The next step is to print the name directly into the stream, avoiding a temporary std::string copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
96d5f0ff7e7486013a97fc56187f65aa19c322f3 17-Apr-2010 Eric Christopher <echristo@apple.com> Consolidate most of the integer constant expression builtin requirement
checking into a single function and use that throughout. Remove some
now unnecessary diagnostics and update tests with now more accurate
diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
691ebc3f3225542e5abd85e107ebdbec907cf510 17-Apr-2010 Eric Christopher <echristo@apple.com> Consolidate most of the integer constant expression builtin requirement
checking into a single function and use that throughout. Remove some
now unnecessary diagnostics and update tests with now more accurate
diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bd344d9ce594b0bd536c00e31d7c7cbb5b2408c7 17-Apr-2010 Chris Lattner <sabre@nondot.org> make our existing "switch on bool" warning work for C. Since
the result of comparisons are 'int' in C, it doesn't work to
test just the result type of the expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
2b334bb3126a67895813e49e6228dad4aec0b4d6 17-Apr-2010 Chris Lattner <sabre@nondot.org> make our existing "switch on bool" warning work for C. Since
the result of comparisons are 'int' in C, it doesn't work to
test just the result type of the expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
b76c03eb4cfd2b99f928da6f1c140dd0f69fcd82 16-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Add a write(raw_ostream&) method to RewriteBuffer. This uses an inefficient
implementation today but is the right place if we want to make it faster some
day.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101521 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
0ade808e0ac411baa2dbc1f76ad352b9b6d6d3f8 16-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Add a write(raw_ostream&) method to RewriteBuffer. This uses an inefficient
implementation today but is the right place if we want to make it faster some
day.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101521 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
294d66bba4dd35b1b682f2bc76f1dfca3d10a10a 16-Apr-2010 Chris Lattner <sabre@nondot.org> allow mapping fatal errors to errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101516 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
d0fe3e9a97459477e64ad1df312fd29b86a3c3cb 16-Apr-2010 Chris Lattner <sabre@nondot.org> allow mapping fatal errors to errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101516 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
d0b42aa4601a5ecc96c9fce70bb916d9a91f1b7e 16-Apr-2010 Anders Carlsson <andersca@mac.com> Start working on handling wide bitfields in C++

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101464 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
72468ecb98efa158c5f1e2eb39ad413c8e28ebe0 16-Apr-2010 Anders Carlsson <andersca@mac.com> Start working on handling wide bitfields in C++

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101464 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
638c4e2d6299d73b5f7009474d67090726051f78 16-Apr-2010 Eric Christopher <echristo@apple.com> Expand the argument diagnostics for too many arguments and give
both number seen and number expected.

Finishes fixing PR6501.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ccfa9639f8d09733bcf1c2572c5bd3daba5bd632 16-Apr-2010 Eric Christopher <echristo@apple.com> Expand the argument diagnostics for too many arguments and give
both number seen and number expected.

Finishes fixing PR6501.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed6d04519bf61948802ab0aa504fa9a7c3d0435a 16-Apr-2010 Eric Christopher <echristo@apple.com> Expand argument diagnostic for too few arguments to give the number
of arguments both seen and expected.

Fixes PR6501.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d77b9a29651d748f0e30a8dad8969635fc04f725 16-Apr-2010 Eric Christopher <echristo@apple.com> Expand argument diagnostic for too few arguments to give the number
of arguments both seen and expected.

Fixes PR6501.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
697bbe8c8174b8ad339d9ebab8269b2bec930d87 16-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Feed proper source-location information into Sema::LookupSingleResult,
in case it ends up doing something that might trigger diagnostics
(template instantiation, ambiguity reporting, access
reporting). Noticed while working on PR6831.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101412 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c83c6874e3bf1432d3df5e8d3530f8561ff5441f 16-Apr-2010 Douglas Gregor <dgregor@apple.com> Feed proper source-location information into Sema::LookupSingleResult,
in case it ends up doing something that might trigger diagnostics
(template instantiation, ambiguity reporting, access
reporting). Noticed while working on PR6831.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101412 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f5e7dbf23d5a94f0b29927e8f86633a0637018a5 15-Apr-2010 Anders Carlsson <andersca@mac.com> Improve the bit-field too wide error message.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c75d6ccf16170af42d31508a026b42382ab8f118 15-Apr-2010 Anders Carlsson <andersca@mac.com> Improve the bit-field too wide error message.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
912e11a0708e23088cfb85d224d691517296332a 15-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose attempts to throw an abstract class type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bf422f9d7e2e3454b2296b02202f4d5ae12644f6 15-Apr-2010 Douglas Gregor <dgregor@apple.com> Diagnose attempts to throw an abstract class type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
279ac317a9a1a8b5bc8d3684ac88a11de012eb36 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Add a -fno-bitfield-type-align option, for my own testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
fb937b8c5f1c5dc9cfd4223b5cae230cc42b0287 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Add a -fno-bitfield-type-align option, for my own testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
3d1c024dc8dba472a520f00053a4422154614cf0 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Tweak spelling (Bitfield -> BitField)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b6830d616a068971f13e1e213e06a945c8c93cea 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Tweak spelling (Bitfield -> BitField)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
44e64d8461f2b4c565061fa2ecdf8268ac3d2351 15-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Teach -fixit to modify all of its inputs instead of just the main file, unless
-fixit-at specified a particular fixit to fix, or the -o flag was used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101359 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
ewrite/Rewriter.h
d4a97a18ea3cda3ba095e7c0c6708e7a39cf31db 15-Apr-2010 Nick Lewycky <nicholas@mxc.ca> Teach -fixit to modify all of its inputs instead of just the main file, unless
-fixit-at specified a particular fixit to fix, or the -o flag was used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101359 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
ewrite/Rewriter.h
ffa6d1ca26643972b8b6bf394e0cc1cb757643ef 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::useBitfieldTypeAlignment().
- Used to determine whether the alignment of the type in a bit-field is
respected when laying out structures. The default is true, targets can
override this as needed.

- This is designed to correspond to the PCC_BITFIELD_TYPE_MATTERS macro in
gcc. The AST/Sema implementation only affects one line, unless I have
forgotten something. I'd appreciate further review.

- IRgen still needs to be updated to fully support this (which is effectively
PR5591).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101356 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b6a169395c1b30c76daffebcbd2164b6247a5d21 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::useBitfieldTypeAlignment().
- Used to determine whether the alignment of the type in a bit-field is
respected when laying out structures. The default is true, targets can
override this as needed.

- This is designed to correspond to the PCC_BITFIELD_TYPE_MATTERS macro in
gcc. The AST/Sema implementation only affects one line, unless I have
forgotten something. I'd appreciate further review.

- IRgen still needs to be updated to fully support this (which is effectively
PR5591).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101356 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
85a48e3c8e72f61fb888510213917546e6b4fdec 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add support for -mllvm, which forwards options to the LLVM option parser.
- Note that this is a behavior change, previously -mllvm at the driver level forwarded to clang -cc1. The driver does a little magic to make sure that '-mllvm -disable-llvm-optzns' works correctly, but other users will need to be updated to use -Xclang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101354 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
3f87fb08dd502309960646db01099fb4c1be9a7c 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add support for -mllvm, which forwards options to the LLVM option parser.
- Note that this is a behavior change, previously -mllvm at the driver level forwarded to clang -cc1. The driver does a little magic to make sure that '-mllvm -disable-llvm-optzns' works correctly, but other users will need to be updated to use -Xclang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101354 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
ead0e63d97e8d96b3ed450ad2012264441feea8b 15-Apr-2010 Eric Christopher <echristo@apple.com> Rewrite handling of 64-bit palignr intrinsics to be vector shuffles.
Stop multiplying constant by 8 accordingly in the header and change
intrinsic definition for what types we expect.

Add to existing palignr test to check that we're emitting the correct things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
e57aa9e367af227214140e1a174cc561aabaa0b9 15-Apr-2010 Eric Christopher <echristo@apple.com> Rewrite handling of 64-bit palignr intrinsics to be vector shuffles.
Stop multiplying constant by 8 accordingly in the header and change
intrinsic definition for what types we expect.

Add to existing palignr test to check that we're emitting the correct things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
ff27fa606ff2dc40b115523b42ed44a6081ef1d9 15-Apr-2010 Ted Kremenek <kremenek@apple.com> Teach ASTVector::append() about the case where 'NumInputs' is 0. This hopefully fixes
a crash in InitListExpr's ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
b13c170a280673f4cf4d7d11ec818392407254d4 15-Apr-2010 Ted Kremenek <kremenek@apple.com> Teach ASTVector::append() about the case where 'NumInputs' is 0. This hopefully fixes
a crash in InitListExpr's ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
9ba6661319b4b1fa03b8a7d09597f70effa37a4f 15-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Warn about non-aggregate classes with no user-declared constructors
that have reference or const scalar members, since those members can
never be initializer or modified. Fixes <rdar://problem/7804350>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
325e593a83b20d9bce3628aa78fda983b554814e 15-Apr-2010 Douglas Gregor <dgregor@apple.com> Warn about non-aggregate classes with no user-declared constructors
that have reference or const scalar members, since those members can
never be initializer or modified. Fixes <rdar://problem/7804350>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
57b3f7533957905e360e48e5993a9e42f9c5a0c0 15-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Always diagnose and complain about problems in
ResolveAddressOfOverloadedFunction when asked to complain. Previously,
we had some weird handshake where ResolveAddressOfOverloadedFunction
expected its caller to handle some of the diagnostics but not others,
and yet there was no way for the caller to know which case we were
in. Eliminate this madness, fixing <rdar://problem/7765884>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1a8cf73a825ef35917eede448817237b5fd47b05 15-Apr-2010 Douglas Gregor <dgregor@apple.com> Always diagnose and complain about problems in
ResolveAddressOfOverloadedFunction when asked to complain. Previously,
we had some weird handshake where ResolveAddressOfOverloadedFunction
expected its caller to handle some of the diagnostics but not others,
and yet there was no way for the caller to know which case we were
in. Eliminate this madness, fixing <rdar://problem/7765884>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e1e4187656e16bead3702efa068aadfb0055f962 15-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Once we've emitted a fatal diagnostic, keep counting errors but with a
separate count of "suppressed" errors. This way, semantic analysis
bits that depend on the error count to determine whether problems
occured (e.g., some template argument deduction failures, jump-scope
checking) will not get confused.

The actual problem here is that a missing #include (which is a fatal
error) could cause the jump-scope checker to run on invalid code,
which it is not prepared to do. Trivial fix for both
<rdar://problem/7775941> and <rdar://problem/7775709>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1864f2eb59471d07db51adfc3e5b1a229eed631a 15-Apr-2010 Douglas Gregor <dgregor@apple.com> Once we've emitted a fatal diagnostic, keep counting errors but with a
separate count of "suppressed" errors. This way, semantic analysis
bits that depend on the error count to determine whether problems
occured (e.g., some template argument deduction failures, jump-scope
checking) will not get confused.

The actual problem here is that a missing #include (which is a fatal
error) could cause the jump-scope checker to run on invalid code,
which it is not prepared to do. Trivial fix for both
<rdar://problem/7775941> and <rdar://problem/7775709>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101297 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c00ec0db7119d3acf22b0933faaa018234406c8a 14-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> When diagnosing suspicious precedence or assignments, move the fix-it
that adds parentheses from the main diagnostic down to a new
note. This way, when the fix-it represents a choice between two
options, each of the options is associted with a note. There is no
default option in such cases. For example:

/Users/dgregor/t.c:2:9: warning: & has lower precedence than ==; ==
will be
evaluated first [-Wparentheses]
if (x & y == 0) {
^~~~~~~~
/Users/dgregor/t.c:2:9: note: place parentheses around the &
expression to
evaluate it first
if (x & y == 0) {
^
( )
/Users/dgregor/t.c:2:9: note: place parentheses around the ==
expression to
silence this warning
if (x & y == 0) {
^
( )



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101249 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
55b38842d12ffd9f9ff3a0e16fae2cfe61ab0fe6 14-Apr-2010 Douglas Gregor <dgregor@apple.com> When diagnosing suspicious precedence or assignments, move the fix-it
that adds parentheses from the main diagnostic down to a new
note. This way, when the fix-it represents a choice between two
options, each of the options is associted with a note. There is no
default option in such cases. For example:

/Users/dgregor/t.c:2:9: warning: & has lower precedence than ==; ==
will be
evaluated first [-Wparentheses]
if (x & y == 0) {
^~~~~~~~
/Users/dgregor/t.c:2:9: note: place parentheses around the &
expression to
evaluate it first
if (x & y == 0) {
^
( )
/Users/dgregor/t.c:2:9: note: place parentheses around the ==
expression to
silence this warning
if (x & y == 0) {
^
( )



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101249 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f5e2a56a70376b7076db5a89a70be03b3d45a7d 14-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move GRStmtNodeBuilder::MakeNode() out of line. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101239 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
868e78d59d2dfaf9cda511925e5a58f3a712db96 14-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move GRStmtNodeBuilder::MakeNode() out of line. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101239 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
04127894699ea33976f8b7a4a138a279fdefff30 14-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add support for CXXBoolLiteralExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101238 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ValueManager.h
477323d58a0de352c6a61e08b5a83127c4adc904 14-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add support for CXXBoolLiteralExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101238 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ValueManager.h
6e8f13abb2926832914caaeab9a3be1240a50082 14-Apr-2010 Chris Lattner <sabre@nondot.org> add builtin for __builtin_vsprintf, patch by Paul Davey


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
270083146ffd71d4ba35c0cda0b7461dea99e031 14-Apr-2010 Chris Lattner <sabre@nondot.org> add builtin for __builtin_vsprintf, patch by Paul Davey


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
9520402122df38f8744cb71ee30e5eadc448e7cc 14-Apr-2010 Chris Lattner <sabre@nondot.org> make the token paste avoidance logic turn "..." into ".. ." instead of ". . ."
when avoiding paste. Patch by David Peixotto!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101218 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenConcatenation.h
8877321ca66b2887c2f377a7f724a62f34fdf1cd 14-Apr-2010 Chris Lattner <sabre@nondot.org> make the token paste avoidance logic turn "..." into ".. ." instead of ". . ."
when avoiding paste. Patch by David Peixotto!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101218 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenConcatenation.h
2b3730baddad5e06c1498de980ca3efe66e5d893 14-Apr-2010 Chris Lattner <sabre@nondot.org> implement altivec.h and a bunch of support code, patch by Anton Yartsev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsPPC.def
dd17394d225b06376e9ae1d23f36cec463fdef01 14-Apr-2010 Chris Lattner <sabre@nondot.org> implement altivec.h and a bunch of support code, patch by Anton Yartsev!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsPPC.def
cf90f4c267b51a6a782d9aebf145198d0b5b9b41 14-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Implement typo correction for Objective-C message sends when the
receiver is a mis-typed class name. Previously, we would give a non-specific
typo-correction diagnostic from the expression-parsing code, but there
was no fix-it because it was too late to recover. Now, we give a nice
diagnostic

honk.m:6:4: error: unknown receiver 'Hnk'; did you mean 'Honk'?
[Hnk method];
^~~
Honk
honk.m:1:1: note: 'Honk' declared here
@interface Honk
^

which includes a fix-it.

We still need to recover better from mis-typing "super".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
47bd54392a4fd0f10e04de6a0420fd4838caaa0e 14-Apr-2010 Douglas Gregor <dgregor@apple.com> Implement typo correction for Objective-C message sends when the
receiver is a mis-typed class name. Previously, we would give a non-specific
typo-correction diagnostic from the expression-parsing code, but there
was no fix-it because it was too late to recover. Now, we give a nice
diagnostic

honk.m:6:4: error: unknown receiver 'Hnk'; did you mean 'Honk'?
[Hnk method];
^~~
Honk
honk.m:1:1: note: 'Honk' declared here
@interface Honk
^

which includes a fix-it.

We still need to recover better from mis-typing "super".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
61ab13961128a99e59c4c9bb15cb4e32a828001f 14-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a parsing action to distinguish between class, instance, and
super message sends in Objective-C. No actual functionality change
here, but it provides a hook so that Sema can typo-correct the
receiver in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101207 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1dbca6ea983231b4cab1a8f1edda8f6e13c21f12 14-Apr-2010 Douglas Gregor <dgregor@apple.com> Introduce a parsing action to distinguish between class, instance, and
super message sends in Objective-C. No actual functionality change
here, but it provides a hook so that Sema can typo-correct the
receiver in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101207 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6e1f2241cecf3eebbc551d4bc83938136d12ea78 14-Apr-2010 Ted Kremenek <kremenek@apple.com> Use ASTVector instead of std::vector for the Exprs in InitListExpr. Performance
measurements of '-fsyntax-only' on combine.c (403.gcc) shows no real performance
change, but now the vector isn't leaked.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
709210feee317b8d6690dd1d15c2b74cfe55e261 14-Apr-2010 Ted Kremenek <kremenek@apple.com> Use ASTVector instead of std::vector for the Exprs in InitListExpr. Performance
measurements of '-fsyntax-only' on combine.c (403.gcc) shows no real performance
change, but now the vector isn't leaked.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
210af35577729de05120c0e86547dfbeeacd8204 14-Apr-2010 Ted Kremenek <kremenek@apple.com> Introduce ASTVector, which is a std::vector-like class that allocates all memory
using the allocator associated with an ASTContext. This is largely copy-and-paste
from SmallVector, and should be refactored one day.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
9c9bd84383f742513b3cfd656948bab16d752937 14-Apr-2010 Ted Kremenek <kremenek@apple.com> Introduce ASTVector, which is a std::vector-like class that allocates all memory
using the allocator associated with an ASTContext. This is largely copy-and-paste
from SmallVector, and should be refactored one day.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTVector.h
f85dad13171f398cad222114a718c21f62746e61 13-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a cc1 option to specify the max number of nodes the analyzer can explore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101120 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalysisConsumer.h
c09289d104b8e01ecd998e3f08b2b0561049e1dc 13-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a cc1 option to specify the max number of nodes the analyzer can explore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101120 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/AnalysisManager.h
river/CC1Options.td
rontend/AnalysisConsumer.h
2d91a1377ad849f233142ccf2b00ea7e2df6620d 13-Apr-2010 Chris Lattner <sabre@nondot.org> add frontend support for -fdata-sections and -ffunction-sections,
patch by Sylvere Teissier!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101108 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
bbea7168326d810eff18dfb8bc43c7790fd55010 13-Apr-2010 Chris Lattner <sabre@nondot.org> add frontend support for -fdata-sections and -ffunction-sections,
patch by Sylvere Teissier!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101108 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
27565f77ca93d96cdea71cd6d3d129c02f1e8f82 13-Apr-2010 John McCall <rjmccall@apple.com> Diagnose declarations of conversion functions with declarators other than '()'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a3f8137d9f7cd1af7a6cbe736b9419f7eb99e86c 13-Apr-2010 John McCall <rjmccall@apple.com> Diagnose declarations of conversion functions with declarators other than '()'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
db32f0eee66682b5023179ce31968f6eab3e6244 12-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6814 - Only print [-pedantic] on a diagnostic if -pedantic
actually turned it on. If a diag is produced by a warning which
is an extension but defaults to on, and has no warning group, don't
print any option info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
04e442714c292d9381cad2ac14087991132bddca 12-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6814 - Only print [-pedantic] on a diagnostic if -pedantic
actually turned it on. If a diag is produced by a warning which
is an extension but defaults to on, and has no warning group, don't
print any option info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c4d2b25bbd9d93b9db96582e061e5366e21709e2 12-Apr-2010 Chris Lattner <sabre@nondot.org> fix rdar://7852959 - Use of super within a block is actually ok.
(aka, Fariborz was right ;-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101046 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
454006d625f9f5f48cd80096f1afa0f5985ec25e 12-Apr-2010 Chris Lattner <sabre@nondot.org> fix rdar://7852959 - Use of super within a block is actually ok.
(aka, Fariborz was right ;-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101046 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
cb50023b877a154be8a9da8938aa35dedb7e4762 12-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Fix a crash-on-invalid involving name lookup of tag names, where we
ended up finding a function template that we didn't expect. Recover
more gracefully, and fix a similar issue for class templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101040 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
57265e35292897e383d70bbd1d552209fac37b39 12-Apr-2010 Douglas Gregor <dgregor@apple.com> Fix a crash-on-invalid involving name lookup of tag names, where we
ended up finding a function template that we didn't expect. Recover
more gracefully, and fix a similar issue for class templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101040 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
93950a22367838ae323d68afd854a03070e9fd85 12-Apr-2010 Chris Lattner <sabre@nondot.org> change Scope::WithinElse to be a normal scope flag, widen the
fields to two 16-bit values instead of using bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101020 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
966c78b79004061c1f64feff96818b9f1d68ea58 12-Apr-2010 Chris Lattner <sabre@nondot.org> change Scope::WithinElse to be a normal scope flag, widen the
fields to two 16-bit values instead of using bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101020 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
e1046a5974f7d27850e00f50fc0f00a2c5726c57 12-Apr-2010 Chris Lattner <sabre@nondot.org> Have the parser decide whether a message to super is a variable or
type, instead of having sema do it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101016 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
15faee19fdb9017dd6d08a690427b18c3b062c2d 12-Apr-2010 Chris Lattner <sabre@nondot.org> Have the parser decide whether a message to super is a variable or
type, instead of having sema do it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101016 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
580de3c5ca180bdef2f4e1c0b721fb3bf48a9ef2 12-Apr-2010 Anders Carlsson <andersca@mac.com> Have the CXXBaseOrMemberInitializer keep track of whether an initializer initializes a virtual base or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
80638c5e6395344c1e6096542b0ff3b8bfb2139e 12-Apr-2010 Anders Carlsson <andersca@mac.com> Have the CXXBaseOrMemberInitializer keep track of whether an initializer initializes a virtual base or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6d1911999998c88e8d7cc13d4bc8e3733be70151 11-Apr-2010 Chris Lattner <sabre@nondot.org> avoid double negatives


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b9342fb79bfa84c70188e207a0f212574653b2c7 11-Apr-2010 Chris Lattner <sabre@nondot.org> avoid double negatives


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
43a925d90e57f8ddc897439c6e788fed5691cbec 11-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6811 by not parsing 'super' as a magic expression in
LookupInObjCMethod. Doing so allows all sorts of invalid code
to slip through to codegen. This patch does not change the
AST representation of super, though that would now be a natural
thing to do since it can only be in the receiver position and
in the base of a ObjCPropertyRefExpr.

There are still several ugly areas handling super in the parser,
but this is definitely a step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100959 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
eb483eb3ee80300f15d6d13573d82493c2194461 11-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6811 by not parsing 'super' as a magic expression in
LookupInObjCMethod. Doing so allows all sorts of invalid code
to slip through to codegen. This patch does not change the
AST representation of super, though that would now be a natural
thing to do since it can only be in the receiver position and
in the base of a ObjCPropertyRefExpr.

There are still several ugly areas handling super in the parser,
but this is definitely a step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100959 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
095e284e099479579bfe3d3c8d623c429d7337cd 10-Apr-2010 Anders Carlsson <andersca@mac.com> Rename -dump-record-layouts to -fdump-record-layouts now that the option behaves like aa flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100943 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
46116ce06ae28e3fc3a34c513f2f63ac02d9a194 10-Apr-2010 Anders Carlsson <andersca@mac.com> Rename -dump-record-layouts to -fdump-record-layouts now that the option behaves like aa flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100943 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
d7801260901ccfa844f31e9ac8607eba279f3e55 10-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Ignore -fobjc-gc and -fobjc-gc-only for platforms which don't support them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ToolChain.h
43a9b3263cb0bcb050cc75c15b3e6a8951e6b97a 10-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Ignore -fobjc-gc and -fobjc-gc-only for platforms which don't support them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ToolChain.h
3a3bcf9e91f43c970ebb7105d589aa9d070558ad 10-Apr-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When a member pointer is dereferenced, the class it points into must be complete. Enforce this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100925 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
59fc2690e622e9db7f7a8f5036562b19d3bfb2b5 10-Apr-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When a member pointer is dereferenced, the class it points into must be complete. Enforce this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100925 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c00d11494ad511cc3b09bdf89442e57a48e35876 10-Apr-2010 John McCall <rjmccall@apple.com> Diagnose more cases of initializing distinct members of an anonymous union
member. Use a better diagnostic for this case. Also fix a bug with nested
anonymous structs/unions for -Wreorder; this last was PR6575.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3c3ccdbe73cb43bdf39a9102f5f7eb842fb71952 10-Apr-2010 John McCall <rjmccall@apple.com> Diagnose more cases of initializing distinct members of an anonymous union
member. Use a better diagnostic for this case. Also fix a bug with nested
anonymous structs/unions for -Wreorder; this last was PR6575.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
22afa4bde37ee17753101f3830f5903593938388 10-Apr-2010 John McCall <rjmccall@apple.com> Diagnose misordered initializers in constructor templates immediately instead of
when they're instantiated. Merge the note into the -Wreorder warning; it
doesn't really contribute much, and it was splitting a thought across diagnostics
anyway. Don't crash in the parser when a constructor's initializers end in a
comma and there's no body; the recovery here is still terrible, but anything's
better than a crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100922 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d6ca8da0f5a4115813055729faaa5128e994806d 10-Apr-2010 John McCall <rjmccall@apple.com> Diagnose misordered initializers in constructor templates immediately instead of
when they're instantiated. Merge the note into the -Wreorder warning; it
doesn't really contribute much, and it was splitting a thought across diagnostics
anyway. Don't crash in the parser when a constructor's initializers end in a
comma and there's no body; the recovery here is still terrible, but anything's
better than a crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100922 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5a8258076ffe50f595b593c8e0fb3773c857eb85 09-Apr-2010 Ted Kremenek <kremenek@apple.com> Remove copy of 'Optional' in Clang tree, and convert clients to use the one now in the LLVM tree.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100891 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
66d5142ab5026aa77ab6f1d7e4d9bdb0b438d55a 09-Apr-2010 Ted Kremenek <kremenek@apple.com> Remove copy of 'Optional' in Clang tree, and convert clients to use the one now in the LLVM tree.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100891 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
93c3df2694b2d8b59b9a8e6287ad56f2e752a3b6 09-Apr-2010 Ted Kremenek <kremenek@apple.com> Remove fixit for string literal comparison. Telling the user to use 'strcmp' is bad, and
we don't have enough information to tell them how to use 'strncmp'. Instead, change the
diagnostic to indicate they should use 'strncmp'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
03a4bee558b63ead66e942c6b26381df9a8b1754 09-Apr-2010 Ted Kremenek <kremenek@apple.com> Remove fixit for string literal comparison. Telling the user to use 'strcmp' is bad, and
we don't have enough information to tell them how to use 'strncmp'. Instead, change the
diagnostic to indicate they should use 'strncmp'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d2a205a6a0f5f8d6bfcc9c23dcfdc252bfe42932 09-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100887 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
c53e3658e667fed25d428d58204f295209b81d45 09-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100887 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
8d59c0029279004361496af14fa86775136997b8 09-Apr-2010 John McCall <rjmccall@apple.com> Argh, I modified the .inc file locally, not the .td.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100881 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
380509aa107c550d0e77ee2db4069e127709427c 09-Apr-2010 John McCall <rjmccall@apple.com> Argh, I modified the .inc file locally, not the .td.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100881 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
668fa2d5ad91a48c2fb2dc7c5f0ad3107ea4fcf3 09-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics like "initializing <type> from an expression of
type..." with "initializing <type> with an expression of type...",
which reads better. Thanks to John for the improved wording.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
08a41901e18aeb91b87d031b93df70374af02564 09-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostics like "initializing <type> from an expression of
type..." with "initializing <type> with an expression of type...",
which reads better. Thanks to John for the improved wording.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b33ebd3aa2318ef1938cac5f5720f122342ff798 09-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a regression caused by implementing cstyle methods
for objc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100865 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4ecb25fa94897b2c03510292acace710e5262ba5 09-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a regression caused by implementing cstyle methods
for objc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100865 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
06b452bc5cfcd82a80f49865500c8526fb9b4c15 09-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics when we fail to convert from a source type to a
destination type for initialization, assignment, parameter-passing,
etc. The main issue fixed here is that we used rather confusing
wording for diagnostics such as

t.c:2:9: warning: initializing 'char const [2]' discards qualifiers,
expected 'char *' [-pedantic]
char *name = __func__;
^ ~~~~~~~~

We're not initializing a 'char const [2]', we're initializing a 'char
*' with an expression of type 'char const [2]'. Similar problems
existed for other diagnostics in this area, so I've normalized them all
with more precise descriptive text to say what we're
initializing/converting/assigning/etc. from and to. The warning for
the code above is now:

t.c:2:9: warning: initializing 'char *' from an expression of type
'char const [2]' discards qualifiers [-pedantic]
char *name = __func__;
^ ~~~~~~~~

Fixes <rdar://problem/7447179>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4eea8362605807327735727a9098abe1eb23b19 09-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostics when we fail to convert from a source type to a
destination type for initialization, assignment, parameter-passing,
etc. The main issue fixed here is that we used rather confusing
wording for diagnostics such as

t.c:2:9: warning: initializing 'char const [2]' discards qualifiers,
expected 'char *' [-pedantic]
char *name = __func__;
^ ~~~~~~~~

We're not initializing a 'char const [2]', we're initializing a 'char
*' with an expression of type 'char const [2]'. Similar problems
existed for other diagnostics in this area, so I've normalized them all
with more precise descriptive text to say what we're
initializing/converting/assigning/etc. from and to. The warning for
the code above is now:

t.c:2:9: warning: initializing 'char *' from an expression of type
'char const [2]' discards qualifiers [-pedantic]
char *name = __func__;
^ ~~~~~~~~

Fixes <rdar://problem/7447179>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b223c6baa6596c5b021b09fe755277dd56b7fb67 09-Apr-2010 Ted Kremenek <kremenek@apple.com> For 'open' check in UnixAPIChecker, hard code value of 'O_CREAT' on Darwin.
This is still not an ideal solution, but should disable the check for other
targets where the value of O_CREAT is different.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100818 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
bace4ba042d87a0ed0ec15dbe6caad946b97bd33 09-Apr-2010 Ted Kremenek <kremenek@apple.com> For 'open' check in UnixAPIChecker, hard code value of 'O_CREAT' on Darwin.
This is still not an ideal solution, but should disable the check for other
targets where the value of O_CREAT is different.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100818 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
0a0e4f3037e67cb7713609ce301868e02633dd08 09-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Reorder diagnostics to separate the Sema::AssignmentAction diagnostics from other diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8804bdcac242741528036d7e62f26ae5b6a01261 09-Apr-2010 Douglas Gregor <dgregor@apple.com> Reorder diagnostics to separate the Sema::AssignmentAction diagnostics from other diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
70215ec6c46b8d5a701be9ce33e5a11d91d82d0e 08-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Downgrade the "declaration does not declare anything" error to a
warning. It's not harmful to have such pointless declarations, and GCC
does not diagnose this issue consistently.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
cb821d045f5e445384f34d05a526955036073c4a 08-Apr-2010 Douglas Gregor <dgregor@apple.com> Downgrade the "declaration does not declare anything" error to a
warning. It's not harmful to have such pointless declarations, and GCC
does not diagnose this issue consistently.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
5739fe3c388afdb288db79183b966aeb96dead6e 08-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Implement method type encoding in the presense
of c-style arguments. Completes radar 7445205.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100813 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7732cc9c0fdc97a2f8cce4e5933d8103213d1aef 08-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Implement method type encoding in the presense
of c-style arguments. Completes radar 7445205.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100813 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
bf8f5a373ea4441978b1aa732ddc25b26ba5576f 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Match GCC's behavior and do not include '-Wunused-parameter' in '-Wunused'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100810 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
b4c0c2df7a40c753f2eddd8726f807877be4be07 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Match GCC's behavior and do not include '-Wunused-parameter' in '-Wunused'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100810 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
638ae62141b81cbef0e6ba3a10464828129f9624 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Include all warnings under '-Wunused' in '-Wmost' and '-Wall'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
e1fcf29951432de60e9fba243d500d069e929900 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Include all warnings under '-Wunused' in '-Wmost' and '-Wall'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
7e3622c53566a4013476340cb09f39fd5c7b9caf 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Sort entries in diagnostic group "Most".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
bbf3fe4852026548bbaeb1b4f92e936f6f3ab206 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Sort entries in diagnostic group "Most".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
ad36d2fbfc683dfd22a2bef574320df5ab8e2747 08-Apr-2010 John McCall <rjmccall@apple.com> Maybe we should store template arguments in the position we allocated for them
instead of scribbling over random memory. Maybe.

Hopefully this fixes the -vg buildbot.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
33cab704d9b3b5b0218d578a20593bdfb0b1eb23 08-Apr-2010 John McCall <rjmccall@apple.com> Maybe we should store template arguments in the position we allocated for them
instead of scribbling over random memory. Maybe.

Hopefully this fixes the -vg buildbot.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
bb65e4697e4cc2e9014b3df33fc0ef721b5ccb94 08-Apr-2010 Jeffrey Yasskin <jyasskin@google.com> Make CXXScopeSpec invalid when incomplete, and propagate that into any
Declarator that depends on it. This fixes several redundant errors and bad
recoveries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100779 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
9ab14541716928894821cf5d53d6b4c95ffdf3a3 08-Apr-2010 Jeffrey Yasskin <jyasskin@google.com> Make CXXScopeSpec invalid when incomplete, and propagate that into any
Declarator that depends on it. This fixes several redundant errors and bad
recoveries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100779 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
ded708ad2f2931c5974a3254a9705408523d6a51 08-Apr-2010 John McCall <rjmccall@apple.com> Implement dependent friend function template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclFriend.h
ST/DeclTemplate.h
af2094e7cecadf36667deb61a83587ffdd979bd3 08-Apr-2010 John McCall <rjmccall@apple.com> Implement dependent friend function template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclFriend.h
ST/DeclTemplate.h
bc9820dd532c8e9fc7d5a6ab51566a640cd52780 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> Fronted: Kill overly specialized RecordLayoutDumper, just make -dump-record-layouts a bit that Sema honors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
b69eca5d2196c06870d3eeb62d689feebaaa8a4d 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> Fronted: Kill overly specialized RecordLayoutDumper, just make -dump-record-layouts a bit that Sema honors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
e41639e4277f1104b3a4d724c727645bda80231d 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Move C++ record layout dumping to ASTContext::DumpRecordLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bf9e48cbaaa23d990dbedf9489513500bd0b9751 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Move C++ record layout dumping to ASTContext::DumpRecordLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c18207ca266360c49f038ec6a41738d213ad436f 08-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to implement gcc's cstyle arguments in objc
methods. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100734 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
4f4fd92c6c64ecbc65507f63ddd09211f732622c 08-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to implement gcc's cstyle arguments in objc
methods. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100734 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
85c95262de036719f872ae38187d751e575df82e 08-Apr-2010 Jeffrey Yasskin <jyasskin@google.com> When a template (without arguments) is passed as a template type
parameter, explicitly ask the user to give it arguments. We used to
complain that it wasn't a type and expect the user to figure it out.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
asic/DiagnosticSemaKinds.td
db88d8ad74097e2601d81ee863ce46a8a48a7034 08-Apr-2010 Jeffrey Yasskin <jyasskin@google.com> When a template (without arguments) is passed as a template type
parameter, explicitly ask the user to give it arguments. We used to
complain that it wasn't a type and expect the user to figure it out.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
asic/DiagnosticSemaKinds.td
020ba89c2aa02c5b4f803a8a3a51d91971de2d3e 08-Apr-2010 Eric Christopher <echristo@apple.com> Add support for stpncpy_chk.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100711 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
19063cda59391f92d1c717d0ca1d2de8ee9dc6fd 08-Apr-2010 Eric Christopher <echristo@apple.com> Add support for stpncpy_chk.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100711 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
3b432a4a3971302608924758289cf4fe09f527f0 07-Apr-2010 Chris Lattner <sabre@nondot.org> add a new driver-level -ferror-limit=412 option, which causes clang to stop
emitting diagnostics after it has produced that many errors. Give this a
default value of 20 which produces plenty of errors for people to fix before
recompiling but not so many that their entire console scrolls away when the
compiler gets confused. The experience looks like this:

$ clang foo.c
<tons of crap>
foo.c:102:3: error: unknown type name 'somethingbad'
somethingbad x;
^
fatal error: too many errors emitted, stopping now
36 warnings and 20 errors generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100689 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0f0c963f9b7ac6f0176c34d405d48fcb005dfab6 07-Apr-2010 Chris Lattner <sabre@nondot.org> add a new driver-level -ferror-limit=412 option, which causes clang to stop
emitting diagnostics after it has produced that many errors. Give this a
default value of 20 which produces plenty of errors for people to fix before
recompiling but not so many that their entire console scrolls away when the
compiler gets confused. The experience looks like this:

$ clang foo.c
<tons of crap>
foo.c:102:3: error: unknown type name 'somethingbad'
somethingbad x;
^
fatal error: too many errors emitted, stopping now
36 warnings and 20 errors generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100689 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0f96ef65426bcb7db60a4f1d4ca31d90b46b0e5f 07-Apr-2010 Chris Lattner <sabre@nondot.org> add clang -cc1 level support for "-ferror-limit 42"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100687 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/CC1Options.td
rontend/DiagnosticOptions.h
c100214fdc41a7ea215f75d433eb1cb829fd4330 07-Apr-2010 Chris Lattner <sabre@nondot.org> add clang -cc1 level support for "-ferror-limit 42"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100687 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/CC1Options.td
rontend/DiagnosticOptions.h
d21b55fdf392a252af792758302512a52cd2341a 07-Apr-2010 Chris Lattner <sabre@nondot.org> add capabilities to stop emitting errors after some limit.
Right now the limit is 0 (aka disabled)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticCommonKinds.td
b205ac9fcd22b87b41697172d1983c5ae9dabaaf 07-Apr-2010 Chris Lattner <sabre@nondot.org> add capabilities to stop emitting errors after some limit.
Right now the limit is 0 (aka disabled)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticCommonKinds.td
e6c39d3a3e77c17bb9aa97be6e2e1ae2dbd654db 07-Apr-2010 Shih-wei Liao <sliao@google.com> libbcc

Change-Id: Ieaa3ebd5a38f370752495549f8870b534eeedfc5
ST/APValue.h
ST/AST.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/ASTImporter.h
ST/Attr.h
ST/CXXInheritance.h
ST/CanonicalType.h
ST/CharUnits.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclContextInternals.h
ST/DeclGroup.h
ST/DeclNodes.def
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclVisitor.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/ExternalASTSource.h
ST/FullExpr.h
ST/NestedNameSpecifier.h
ST/ParentMap.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtNodes.def
ST/StmtObjC.h
ST/StmtVisitor.h
ST/TemplateBase.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
ST/TypeNodes.def
ST/TypeOrdering.h
ST/TypeVisitor.h
ST/UnresolvedSet.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/PrintfFormatString.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/AnalysisDiagnostic.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/BumpVector.h
nalysis/Support/Optional.h
nalysis/Support/SaveAndRestore.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
asic/Builtins.def
asic/Builtins.h
asic/BuiltinsPPC.def
asic/BuiltinsX86.def
asic/CMakeLists.txt
asic/ConvertUTF.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/Linkage.h
asic/MacroBuilder.h
asic/Makefile
asic/OnDiskHashTable.h
asic/OperatorKinds.def
asic/OperatorKinds.h
asic/PartialDiagnostic.h
asic/PrettyStackTrace.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/Specifiers.h
asic/TargetBuiltins.h
asic/TargetInfo.h
asic/TargetOptions.h
asic/TemplateKinds.h
asic/TokenKinds.def
asic/TokenKinds.h
asic/TypeTraits.h
asic/Version.h
MakeLists.txt
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/BugReporter/PathDiagnostic.h
hecker/Checkers/DereferenceChecker.h
hecker/Checkers/LocalCheckers.h
hecker/DomainSpecific/CocoaConventions.h
hecker/ManagerRegistry.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRExprEngineBuilders.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRStateTrait.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SummaryManager.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
odeGen/CodeGenOptions.h
odeGen/ModuleBuilder.h
river/Action.h
river/Arg.h
river/ArgList.h
river/CC1Options.h
river/CC1Options.td
river/CMakeLists.txt
river/Compilation.h
river/Driver.h
river/DriverDiagnostic.h
river/HostInfo.h
river/Job.h
river/Makefile
river/OptParser.td
river/OptSpecifier.h
river/OptTable.h
river/Option.h
river/Options.h
river/Options.td
river/Phases.h
river/Tool.h
river/ToolChain.h
river/Types.def
river/Types.h
river/Util.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/Analyses.def
rontend/AnalysisConsumer.h
rontend/ChainedDiagnosticClient.h
rontend/CommandLineSourceLoc.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/DeclContextXML.def
rontend/DeclXML.def
rontend/DependencyOutputOptions.h
rontend/DiagnosticOptions.h
rontend/DocumentXML.def
rontend/DocumentXML.h
rontend/FixItRewriter.h
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendDiagnostic.h
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
rontend/HeaderSearchOptions.h
rontend/LangStandard.h
rontend/LangStandards.def
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/PathDiagnosticClients.h
rontend/PreprocessorOptions.h
rontend/PreprocessorOutputOptions.h
rontend/StmtXML.def
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/TypeXML.def
rontend/Utils.h
rontend/VerifyDiagnosticsClient.h
ndex/ASTLocation.h
ndex/Analyzer.h
ndex/CallGraph.h
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/GlobalSelector.h
ndex/Handlers.h
ndex/IndexProvider.h
ndex/Indexer.h
ndex/Program.h
ndex/STLExtras.h
ndex/SelectorMap.h
ndex/TranslationUnit.h
ndex/Utils.h
ex/DirectoryLookup.h
ex/ExternalPreprocessorSource.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/LexDiagnostic.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Pragma.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ex/Token.h
ex/TokenConcatenation.h
ex/TokenLexer.h
akefile
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseDiagnostic.h
arse/Parser.h
arse/Scope.h
arse/Template.h
ewrite/DeltaTree.h
ewrite/HTMLRewrite.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
ema/CodeCompleteConsumer.h
ema/ExternalSemaSource.h
ema/ParseAST.h
ema/SemaConsumer.h
ema/SemaDiagnostic.h
9c669c7b673233e4aac507ecb3daf6acdfc2fba7 07-Apr-2010 Chris Lattner <sabre@nondot.org> Instead of counting totally diagnostics, split the count into a count
of errors and warnings. This allows us to emit something like this:

2 warnings and 1 error generated.

instead of:

3 diagnostics generated.

This also stops counting 'notes' because they are just follow-on information
about the previous diag, not a diagnostic in themselves.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100675 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
53eee7ba970d21ff15bbd4334164037a3b4cc4b8 07-Apr-2010 Chris Lattner <sabre@nondot.org> Instead of counting totally diagnostics, split the count into a count
of errors and warnings. This allows us to emit something like this:

2 warnings and 1 error generated.

instead of:

3 diagnostics generated.

This also stops counting 'notes' because they are just follow-on information
about the previous diag, not a diagnostic in themselves.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100675 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
094cff43e20c7ec8017a377fc7730c7bd8b88512 07-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve handling of friend types in several ways:
- When instantiating a friend type template, perform semantic
analysis on the resulting type.
- Downgrade the errors concerning friend type declarations that do
not refer to classes to ExtWarns in C++98/03. C++0x allows
practically any type to be befriended, and ignores the friend
declaration if the type is not a class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
06245bfb3ae40bb24a8bfb17eafeb266a4daf5ca 07-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve handling of friend types in several ways:
- When instantiating a friend type template, perform semantic
analysis on the resulting type.
- Downgrade the errors concerning friend type declarations that do
not refer to classes to ExtWarns in C++98/03. C++0x allows
practically any type to be befriended, and ignores the friend
declaration if the type is not a class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7049bdd68f79ec4be2b00e4a8a5ce091839ddcee 07-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
74626d6ef2e194fcc911e071556660ff331eb4a8 07-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
eefdcb60d6b7c947ab7c05fd0002f5a238e49936 07-Apr-2010 Jeffrey Yasskin <jyasskin@google.com> Deprecate CXXScopeSpec::isSet() in favor of isNotEmpty() or isValid().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100600 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
595f2698fe000b2c7703de8f6eafcd51366ec14a 07-Apr-2010 Jeffrey Yasskin <jyasskin@google.com> Deprecate CXXScopeSpec::isSet() in favor of isNotEmpty() or isValid().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100600 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
ae9aa4da09e5ffa4a3020851763bcf0d2670346f 07-Apr-2010 John McCall <rjmccall@apple.com> Check access for the implicit calls to destructors that occur when we
have a temporary object in C++.

Also fix a tag mismatch that Doug noticed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100593 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c91cc66e92b084acd1fdbaa1c3c74242741b3d46 07-Apr-2010 John McCall <rjmccall@apple.com> Check access for the implicit calls to destructors that occur when we
have a temporary object in C++.

Also fix a tag mismatch that Doug noticed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100593 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ec22ccda34f60d4f586cc8804fc7e520fb8c81b6 07-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on diagnostics when an objc class is used as
a stand-alone type declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e9f5581ad479e2c53703d5799828399249a4be65 07-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Improve on diagnostics when an objc class is used as
a stand-alone type declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ddd166595956e228bf60dd7b2019065c46cb546b 07-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Implement code completion for Objective-C method declarations and
definitions, e.g., after

-

or

- (id)

we'll find all of the "likely" instance methods that one would want to
declare or define at this point. In the latter case, we only produce
results whose return types match "id".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100587 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e8f5a1710a7738deff40e10efcd05b1bd6af184f 07-Apr-2010 Douglas Gregor <dgregor@apple.com> Implement code completion for Objective-C method declarations and
definitions, e.g., after

-

or

- (id)

we'll find all of the "likely" instance methods that one would want to
declare or define at this point. In the latter case, we only produce
results whose return types match "id".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100587 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7351ca993afc0c6cd622cf30808d298871ab083f 07-Apr-2010 John McCall <rjmccall@apple.com> Devote a special diagnostic to the typo
(void*) someFunction(5, 10, 15, 20);
where the cast is presumably meant to be to 'void'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
209acbd6d0c1b4444eb8c1682717753e1cbe38de 07-Apr-2010 John McCall <rjmccall@apple.com> Devote a special diagnostic to the typo
(void*) someFunction(5, 10, 15, 20);
where the cast is presumably meant to be to 'void'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e1cd8b0e2681559f4d085ac963606122d1891270 06-Apr-2010 John McCall <rjmccall@apple.com> Implement the protected access restriction ([class.protected]), which requires
that protected members be used on objects of types which derive from the
naming class of the lookup. My first N attempts at this were poorly-founded,
largely because the standard is very badly worded here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclAccessPair.h
ST/DeclCXX.h
ST/DependentDiagnostic.h
ST/Expr.h
ST/UnresolvedSet.h
161755a09898c95d21bfff33707da9ca41cd53c5 06-Apr-2010 John McCall <rjmccall@apple.com> Implement the protected access restriction ([class.protected]), which requires
that protected members be used on objects of types which derive from the
naming class of the lookup. My first N attempts at this were poorly-founded,
largely because the standard is very badly worded here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclAccessPair.h
ST/DeclCXX.h
ST/DependentDiagnostic.h
ST/Expr.h
ST/UnresolvedSet.h
4dcf536e5962635a4d142254b6e9fbaded04ac78 06-Apr-2010 Chris Lattner <sabre@nondot.org> teach clang to install the inline asm diagnostic handler,
allowing backend errors to be mapped through clang's
diagnostics subsystem, including the backend location info.

We now get:

$ clang asm.c -c -o t.o -integrated-as
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
1 diagnostic generated.

With colors, and correct "# diagnostics generated".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
6da9eb661616ffd702deeb37e6872dd2294c8fef 06-Apr-2010 Chris Lattner <sabre@nondot.org> teach clang to install the inline asm diagnostic handler,
allowing backend errors to be mapped through clang's
diagnostics subsystem, including the backend location info.

We now get:

$ clang asm.c -c -o t.o -integrated-as
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
1 diagnostic generated.

With colors, and correct "# diagnostics generated".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
a48848339a02b2830dfd40d5684e3084046d4b79 06-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Make code-completion for Objective-C message sends to "id" work in the
presence of precompiled headers by forcibly loading all of the
methods we know about from the PCH file before constructing our
code-completion list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHReader.h
719770dcfcb3987e8a2377dcca97955301445eb5 06-Apr-2010 Douglas Gregor <dgregor@apple.com> Make code-completion for Objective-C message sends to "id" work in the
presence of precompiled headers by forcibly loading all of the
methods we know about from the PCH file before constructing our
code-completion list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHReader.h
1a4ec81e504391316c55160ea8f138a1a7423432 06-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a Tool::hasGoodDiagnostics hook, and use it to simplify logic for
deciding when we need to emit an extra "command failed" diagnostic.
- This also fixes the case where we were emitting that extra diagnostics, even
when using clang w/ the integrated assembler, which has good diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100529 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
60a53f24b160724de0e8dd0e142009981540fd26 06-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add a Tool::hasGoodDiagnostics hook, and use it to simplify logic for
deciding when we need to emit an extra "command failed" diagnostic.
- This also fixes the case where we were emitting that extra diagnostics, even
when using clang w/ the integrated assembler, which has good diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100529 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
c7e067ddabdbf39335bdb2325abbc708cbd59e5e 06-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Make Diagnostic reference-counted, which is simpler than juggling
maybe-ownership vs. ownership.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
28019772db70d4547be05a042eb950bc910f134f 06-Apr-2010 Douglas Gregor <dgregor@apple.com> Make Diagnostic reference-counted, which is simpler than juggling
maybe-ownership vs. ownership.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
rontend/CompilerInstance.h
efe6c6158b22d5e04dfea48037d7a2f16bd10e3d 05-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Extend the type printing policy to allow one to turn off the printing
of file locations for anonymous tag types (e.g., "enum <anonymous at
t.h:15:6>"), which can get rather long.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
84139d6ef8967cfdb70d37378a7a65cc4827d44d 05-Apr-2010 Douglas Gregor <dgregor@apple.com> Extend the type printing policy to allow one to turn off the printing
of file locations for anonymous tag types (e.g., "enum <anonymous at
t.h:15:6>"), which can get rather long.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
0f3039072ad62586586cbef5a24faee2f1bcfd1c 05-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Clarify the ownership semantics of the Diagnostic object used by
ASTUnit. Previously, we would end up with use-after-free errors
because the Diagnostic object would be creating in one place (say,
CIndex) and its ownership would not be transferred into the
ASTUnit. Fixes <rdar://problem/7818608>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100464 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
3687e9d3a5dbfa9963af02a49a2b139d91310813 05-Apr-2010 Douglas Gregor <dgregor@apple.com> Clarify the ownership semantics of the Diagnostic object used by
ASTUnit. Previously, we would end up with use-after-free errors
because the Diagnostic object would be creating in one place (say,
CIndex) and its ownership would not be transferred into the
ASTUnit. Fixes <rdar://problem/7818608>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100464 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
e16de65fbe68aa6f063c51ea3d7cd8e1c3bd7e2a 05-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Make the ASTUnit constructor private; all ASTUnit clients should be using the static factory functions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100444 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
8b96253907c47141af0b7b2a44a368748d006a87 05-Apr-2010 Douglas Gregor <dgregor@apple.com> Make the ASTUnit constructor private; all ASTUnit clients should be using the static factory functions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100444 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
78a15014492f018930aaf30820095d15d3904fe7 05-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6782, an accept invalid. We weren't emitting the diagnostic
returned by SetTypeSpecType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100443 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5c5db553b5c256d0a6f55dde7325c1c829b88e8e 05-Apr-2010 Chris Lattner <sabre@nondot.org> fix PR6782, an accept invalid. We weren't emitting the diagnostic
returned by SetTypeSpecType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100443 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ae380213277a4a1ee0ee0dd751434c4c51948992 05-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Minor ASTUnit cleanups:
- Rename "Diagnostics" and related to "StoredDiagnostics", to better
capture what we're actually storing.
- Move SourceManager and FileManager to the heap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100441 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
405634b215f19eec7183bd8005e34aa5a02f64a1 05-Apr-2010 Douglas Gregor <dgregor@apple.com> Minor ASTUnit cleanups:
- Rename "Diagnostics" and related to "StoredDiagnostics", to better
capture what we're actually storing.
- Move SourceManager and FileManager to the heap.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100441 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
6c4e7875b76f4ab0709d008ade4c883ee61c75be 03-Apr-2010 Eric Christopher <echristo@apple.com> Add option and macro definition for AES instructions. Now produces real
assembly for testcases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100253 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
eea12d17ec3527f4f9474571fd3011f3d825c45a 03-Apr-2010 Eric Christopher <echristo@apple.com> Add option and macro definition for AES instructions. Now produces real
assembly for testcases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100253 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7e86fd6efe84041e686c23a707cd1b4890abc9da 03-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnosing when a method type does not start with '-'|'+'
when parsing. Fixes radar 7822196.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
05511fa6349ef0820a778f8c840d0b64e05e9aee 03-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnosing when a method type does not start with '-'|'+'
when parsing. Fixes radar 7822196.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
eaa54658da013e6191210ca3598ba13e3f6a7f2b 02-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Add ObjCIvarDecl::getContainingInterface().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
27a961a6adab85cfcf7e48485bbec9237719ae96 02-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Add ObjCIvarDecl::getContainingInterface().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d75d12a3c9260109eae7e197fe1e543854f34461 02-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> diagnose declaring class extension after its implementation
(radar 7822210).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
24e14089cc509ff48cf7f1e6f4f9070803dd739b 02-Apr-2010 Fariborz Jahanian <fjahanian@apple.com> diagnose declaring class extension after its implementation
(radar 7822210).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6b63ce63213dd5938d5ef862d112a5c61cdb7a9e 02-Apr-2010 Daniel Dunbar <daniel@zuster.org> Sema/Obj-C: Narrow type of ObjCIvarDecl::Create, and check additional invariants on the provided DeclContext.
- Doug, please see the FIXME in DeclObjC.cpp -- I am not sure what the right fix is.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a06549226f45d5b72169a3d054415616dd1014a2 02-Apr-2010 Daniel Dunbar <daniel@zuster.org> Sema/Obj-C: Narrow type of ObjCIvarDecl::Create, and check additional invariants on the provided DeclContext.
- Doug, please see the FIXME in DeclObjC.cpp -- I am not sure what the right fix is.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0fedc2fc0a4dc1cf55ece57b339ca0e20d342ff0 02-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Rework our handling of copy construction of temporaries, which was a
poor (and wrong) approximation of the actual rules governing when to
build a copy and when it can be elided.

The correct implementation is actually simpler than the
approximation. When we only enumerate constructors as part of
initialization (e.g., for direct initialization or when we're copying
from a class type or one of its derived classes), we don't create a
copy. When we enumerate all conversion functions, we do create a
copy. Before, we created some extra copies and missed some
others. The new test copy-initialization.cpp shows a case where we
missed creating a (required, non-elidable) copy as part of a
user-defined conversion, which resulted in a miscompile. This commit
also fixes PR6757, where the missing copy made us reject well-formed
code in the ternary operator.

This commit also cleans up our handling of copy elision in the case
where we create an extra copy of a temporary object, which became
necessary now that we produce the right copies. The code that seeks to
find the temporary object being copied has moved into
Expr::getTemporaryObject(); it used to have two different
not-quite-the-same implementations, one in Sema and one in CodeGen.

Note that we still do not attempt to perform the named return value
optimization, so we miss copy elisions for return values and throw
expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100196 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2f59979a7cc7929f53c9984423b0abeb83113442 02-Apr-2010 Douglas Gregor <dgregor@apple.com> Rework our handling of copy construction of temporaries, which was a
poor (and wrong) approximation of the actual rules governing when to
build a copy and when it can be elided.

The correct implementation is actually simpler than the
approximation. When we only enumerate constructors as part of
initialization (e.g., for direct initialization or when we're copying
from a class type or one of its derived classes), we don't create a
copy. When we enumerate all conversion functions, we do create a
copy. Before, we created some extra copies and missed some
others. The new test copy-initialization.cpp shows a case where we
missed creating a (required, non-elidable) copy as part of a
user-defined conversion, which resulted in a miscompile. This commit
also fixes PR6757, where the missing copy made us reject well-formed
code in the ternary operator.

This commit also cleans up our handling of copy elision in the case
where we create an extra copy of a temporary object, which became
necessary now that we produce the right copies. The code that seeks to
find the temporary object being copied has moved into
Expr::getTemporaryObject(); it used to have two different
not-quite-the-same implementations, one in Sema and one in CodeGen.

Note that we still do not attempt to perform the named return value
optimization, so we miss copy elisions for return values and throw
expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100196 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8edbcc8c7084a7311da0ba56df59c758bed0db87 02-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Resolve a layering violation by making AddTaggedVal public for
PartialDiagnostic objects, and hoisting the stream operator for QualType into
Type.h with the operator for the normal DiagnosticBuilder. Also remove the no
longer needed friend declaration for the DeclarationName stream operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/Type.h
asic/PartialDiagnostic.h
47c24b1d94f446c43e3a64732867eabed7d9c961 02-Apr-2010 Chandler Carruth <chandlerc@gmail.com> Resolve a layering violation by making AddTaggedVal public for
PartialDiagnostic objects, and hoisting the stream operator for QualType into
Type.h with the operator for the normal DiagnosticBuilder. Also remove the no
longer needed friend declaration for the DeclarationName stream operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/Type.h
asic/PartialDiagnostic.h
d6fca263d64854e60e33f3850ef421e25c18a526 01-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Overhaul checking of non-type template arguments that should refer to
an object or function. Our previous checking was too lax, and ended up
allowing missing or extraneous address-of operators, among other
evils. The new checking provides better diagnostics and adheres more
closely to the standard.

Fixes PR6563 and PR6749.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100125 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b7a09260204f2079e0f998bf7ee52b95122a4c5d 01-Apr-2010 Douglas Gregor <dgregor@apple.com> Overhaul checking of non-type template arguments that should refer to
an object or function. Our previous checking was too lax, and ended up
allowing missing or extraneous address-of operators, among other
evils. The new checking provides better diagnostics and adheres more
closely to the standard.

Fixes PR6563 and PR6749.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100125 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dd5363786ff4332ede0ec9794026fce405e13503 01-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for a CLANGXX_IS_PRODUCTION build variable, which enable
Clang++ support, even in "Production" mode (for testing purposes).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100119 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
5d93ed3c7a2dae0a8f422747e269963b3ef11d95 01-Apr-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add support for a CLANGXX_IS_PRODUCTION build variable, which enable
Clang++ support, even in "Production" mode (for testing purposes).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100119 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
90c191356f559f7c2b678545e48f0ba8a7fc996c 01-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Initial support for visiting CXXMemberCallExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100098 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
950db87e5efe2ff0c7234116929f8637aaf7ae7a 01-Apr-2010 Zhongxing Xu <xuzhongxing@gmail.com> Initial support for visiting CXXMemberCallExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100098 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
5aee3992690f4223477053791146555a06922974 01-Apr-2010 Eric Christopher <echristo@apple.com> First start at wmmintrin.h file with Intel AES-NI instructions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100077 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
33c903208e8e2f91b8986b0ba7e5f7e077398ea6 01-Apr-2010 Eric Christopher <echristo@apple.com> First start at wmmintrin.h file with Intel AES-NI instructions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100077 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
9feb1a3680892a470ae5744ad95be2f61ad9a1be 01-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics when an elaborated-type-specifer containing a
nested-name-specifier (e.g., "class T::foo") fails to find a tag
member in the scope nominated by the
nested-name-specifier. Previously, we gave a bland

error: 'Nested' does not name a tag member in the specified scope

which didn't actually say where we were looking, which was rather
horrible when the nested-name-specifier was instantiated. Now, we give
something a bit better:

error: no class named 'Nested' in 'NoDepBase<T>'




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1eabb7d0c30f6a876b0fd03ad4656c096c26b8d0 01-Apr-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostics when an elaborated-type-specifer containing a
nested-name-specifier (e.g., "class T::foo") fails to find a tag
member in the scope nominated by the
nested-name-specifier. Previously, we gave a bland

error: 'Nested' does not name a tag member in the specified scope

which didn't actually say where we were looking, which was rather
horrible when the nested-name-specifier was instantiated. Now, we give
something a bit better:

error: no class named 'Nested' in 'NoDepBase<T>'




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ec6d392c816684e9679a3d04f742fa3991f5fe1e 01-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Change the representation of dependent elaborated-type-specifiers
(such as "class T::foo") from an ElaboratedType of a TypenameType to a
DependentNameType, which more accurately models the underlying
concept.

Improve template instantiation for DependentNameType nodes that
represent nested-name-specifiers, by performing tag name lookup and
checking the resulting tag appropriately. Fixes PR5681.

There is still much testing and cleanup to do in this area.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100054 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4033642464e8ba0982f88f34cffad808d247b393 01-Apr-2010 Douglas Gregor <dgregor@apple.com> Change the representation of dependent elaborated-type-specifiers
(such as "class T::foo") from an ElaboratedType of a TypenameType to a
DependentNameType, which more accurately models the underlying
concept.

Improve template instantiation for DependentNameType nodes that
represent nested-name-specifiers, by performing tag name lookup and
checking the resulting tag appropriately. Fixes PR5681.

There is still much testing and cleanup to do in this area.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100054 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ca7a15360ebda535be0f3281baf6bd4310b9b6d4 31-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Extend DependentNameType with a keyword enum that specifies whether
this was parsed as a typename-specifier, elaborated-type-specifier
(including the kind), or just a dependent qualified type name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100039 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
4a2023f5014e82389d5980d307b89c545dbbac81 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Extend DependentNameType with a keyword enum that specifies whether
this was parsed as a typename-specifier, elaborated-type-specifier
(including the kind), or just a dependent qualified type name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100039 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
09cd869ae61b2fea52dfba48ffb897c06cb90d72 31-Mar-2010 Ted Kremenek <kremenek@apple.com> For reverse data flow analyses, enqueue the blocks in reverse order.
This more likely matches with the ideal order the blocks should be visited.
This shaves another 1% off the -fsyntax-only time for compare.c (403.gcc).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100030 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
0798df70753a5feee0e79f2b51f3d4f50127325d 31-Mar-2010 Ted Kremenek <kremenek@apple.com> For reverse data flow analyses, enqueue the blocks in reverse order.
This more likely matches with the ideal order the blocks should be visited.
This shaves another 1% off the -fsyntax-only time for compare.c (403.gcc).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100030 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
0d2aaec3c0c7e5b992f1c4fc083a673ec48da495 31-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Patch implements gcc's -Wno-protocol option to suppress warning
on unimplemented methods in protocols adopted by a class.
(radar 7056600).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
521468391c0abbbfcf6b257442630c70314b8576 31-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Patch implements gcc's -Wno-protocol option to suppress warning
on unimplemented methods in protocols adopted by a class.
(radar 7056600).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
387b0fc2d81da3b564801d77e2f20681ee868887 31-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Remove the AST statistics tracking I added yesterday; it didn't pan out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Statistics.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
ST/Type.h
db2eb5abf4c082d1f0c5c45e39d8cd0300f81e38 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Remove the AST statistics tracking I added yesterday; it didn't pan out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Statistics.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
ST/Type.h
23e07b259ca8de7666d30f2116bf143fe2e8bc00 31-Mar-2010 Ted Kremenek <kremenek@apple.com> Tweak DataFlowSolver's worklist data structure to have an ordered worklist
and a DenseSet for caching instead of using a single SmallPtrSet.
This makes the behavior of the DataFlowSolver more deterministic, and
reduces the -fsyntax-only time on compare.c (403.gcc) by 1%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100026 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
2405a0addc2bc627392d9bfe2874bd9431d81d55 31-Mar-2010 Ted Kremenek <kremenek@apple.com> Tweak DataFlowSolver's worklist data structure to have an ordered worklist
and a DenseSet for caching instead of using a single SmallPtrSet.
This makes the behavior of the DataFlowSolver more deterministic, and
reduces the -fsyntax-only time on compare.c (403.gcc) by 1%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100026 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
b88ea9f1d1a402b0c9479c1c71a10cf65a5d4157 31-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Reinstate my CodeModificationHint -> FixItHint renaming patch, without
the C-only "optimization".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100022 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
hecker/BugReporter/PathDiagnostic.h
rontend/TextDiagnosticPrinter.h
849b243d4065f56742a4677d6dc8277609a151f8 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Reinstate my CodeModificationHint -> FixItHint renaming patch, without
the C-only "optimization".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100022 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
hecker/BugReporter/PathDiagnostic.h
rontend/TextDiagnosticPrinter.h
725b41e4eefc6d19b6215f24489acbc2e1641765 31-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Rename TypenameType to DependentNameType in anticipation of some
refactoring work in this area.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100019 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/TypeXML.def
4714c12a1ab759156b78be8f109ea4c12213af57 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Rename TypenameType to DependentNameType in anticipation of some
refactoring work in this area.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100019 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/TypeXML.def
100fdef5f9490615be95cc921c88cdba11c36d85 31-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Revert r100008, which inexplicably breaks the clang-i686-darwin10 builder

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Statistics.h
asic/Diagnostic.h
asic/PartialDiagnostic.h
hecker/BugReporter/PathDiagnostic.h
rontend/TextDiagnosticPrinter.h
275313cbb0847f1f117f60d144d113804d4fa42d 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Revert r100008, which inexplicably breaks the clang-i686-darwin10 builder

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Statistics.h
asic/Diagnostic.h
asic/PartialDiagnostic.h
hecker/BugReporter/PathDiagnostic.h
rontend/TextDiagnosticPrinter.h
e885f84e7a6e363a54b9100afd1c63364808d959 31-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Rename CodeModificationHint to FixItHint, since we've been using the
term "fix-it" everywhere and even *I* get tired of long names
sometimes. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Statistics.h
asic/Diagnostic.h
asic/PartialDiagnostic.h
hecker/BugReporter/PathDiagnostic.h
rontend/TextDiagnosticPrinter.h
d0ebe080eee7c37e73754068b47fd90cc506e128 31-Mar-2010 Douglas Gregor <dgregor@apple.com> Rename CodeModificationHint to FixItHint, since we've been using the
term "fix-it" everywhere and even *I* get tired of long names
sometimes. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Statistics.h
asic/Diagnostic.h
asic/PartialDiagnostic.h
hecker/BugReporter/PathDiagnostic.h
rontend/TextDiagnosticPrinter.h
4928202296dbc7758e73536e5a57f2f432683292 31-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Minor include pruning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100007 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
6876fe615e16b0e76c7711e129e470305b7e9d41 31-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Minor include pruning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100007 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
a2a6e958853d61c9bcd6d613697339936e3356d9 31-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Define "exploded graph" by reference to a paper.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99990 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ExplodedGraph.h
b2213dc3dd8f58b611b91d2fce4834a767efcba7 31-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Define "exploded graph" by reference to a paper.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99990 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/ExplodedGraph.h
504813dc37b3b584f722ac1acdb3d2e64c78998f 31-Mar-2010 John McCall <rjmccall@apple.com> Regularize support for naming conversion functions in using decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
32daa4223ccb2c0afe5fbe151c6eb1ab64816957 31-Mar-2010 John McCall <rjmccall@apple.com> Regularize support for naming conversion functions in using decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
27160d35e436d2611ade7eb76d31da99b38a32ac 31-Mar-2010 John McCall <rjmccall@apple.com> Introduce a new kind of derived-to-base cast which bypasses the need for
null checks, and make sure we elide null checks when accessing base class
members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
23cba801e11b03929c44f8cf54578305963a3476 31-Mar-2010 John McCall <rjmccall@apple.com> Introduce a new kind of derived-to-base cast which bypasses the need for
null checks, and make sure we elide null checks when accessing base class
members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b7862e44093d09c495b8656269152c5c5d4a1148 31-Mar-2010 Daniel Dunbar <daniel@zuster.org> Formatting tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
69d66b28dc953ae7c2c0b877c78ccd9c691b44f1 31-Mar-2010 Daniel Dunbar <daniel@zuster.org> Formatting tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2ffdc0f8242c22c4bca8bbc2390be61a8a80e4b8 31-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Remember the regparm attribute in FunctionType::ExtInfo.
Fixes PR3782.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
425ef72306d4ff6b3698b744353e5f0e56b4b884 31-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Remember the regparm attribute in FunctionType::ExtInfo.
Fixes PR3782.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
0c525edf14d4cf5aaf8f6954433c0476d0bc6a65 30-Mar-2010 John McCall <rjmccall@apple.com> Propagate the "found declaration" (i.e. the using declaration instead of
the underlying/instantiated decl) through a lot of API, including "intermediate"
MemberExprs required for (e.g.) template instantiation. This is necessary
because of the access semantics of member accesses to using declarations:
only the base class *containing the using decl* need be accessible from the
naming class.

This allows us to complete an access-controlled selfhost, if there are no
recent regressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6bb8017bb9e828d118e15e59d71c66bba323c364 30-Mar-2010 John McCall <rjmccall@apple.com> Propagate the "found declaration" (i.e. the using declaration instead of
the underlying/instantiated decl) through a lot of API, including "intermediate"
MemberExprs required for (e.g.) template instantiation. This is necessary
because of the access semantics of member accesses to using declarations:
only the base class *containing the using decl* need be accessible from the
naming class.

This allows us to complete an access-controlled selfhost, if there are no
recent regressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1fcc6d593c85584900a084a3c584237f1b123ab1 30-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics when printing a template instantiation backtrace
involving substitution of deduced template arguments into a class
template partial specialization or function template, or when
substituting explicitly-specific template arguments into a function
template. We now print the actual deduced argument bindings so the
user can see what got deduced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5e40291d13ed2d7711235df947a2a18a925c7536 30-Mar-2010 Douglas Gregor <dgregor@apple.com> Improve diagnostics when printing a template instantiation backtrace
involving substitution of deduced template arguments into a class
template partial specialization or function template, or when
substituting explicitly-specific template arguments into a function
template. We now print the actual deduced argument bindings so the
user can see what got deduced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
433d7d2c70b9be3f9edd40579f512ecab8755049 30-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> the big refactoring bits of PR3782.

This introduces FunctionType::ExtInfo to hold the calling convention and the
noreturn attribute. The next patch will extend it to include the regparm
attribute and fix the bug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99920 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/ExprCXX.h
ST/Type.h
264ba48dc98f3f843935a485d5b086f7e0fdc4f1 30-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> the big refactoring bits of PR3782.

This introduces FunctionType::ExtInfo to hold the calling convention and the
noreturn attribute. The next patch will extend it to include the regparm
attribute and fix the bug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99920 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/ExprCXX.h
ST/Type.h
eb6c0f92e1ddc70ccce0c7ee92666a816773493d 30-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce new AST statistics that keep track of the number of isa (or
dyn_cast) invocations for C++ and Objective-C types, declarations,
expressions, and statements. The statistics will be printed when
-print-stats is provided to Clang -cc1, with results such as:

277073 clang - Number of checks for C++ declaration nodes
13311 clang - Number of checks for C++ expression nodes
18 clang - Number of checks for C++ statement nodes
174182 clang - Number of checks for C++ type nodes
92300 clang - Number of checks for Objective-C declaration nodes
9800 clang - Number of checks for Objective-C expression nodes
7 clang - Number of checks for Objective-C statement nodes
65733 clang - Number of checks for Objective-C type nodes

The statistics are only gathered when NDEBUG is not defined, since
they introduce potentially-expensive operations into very low-level
routines (isa).




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Statistics.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
ST/Type.h
f540305c5d834ad9412b41805b81a74249b7c5af 30-Mar-2010 Douglas Gregor <dgregor@apple.com> Introduce new AST statistics that keep track of the number of isa (or
dyn_cast) invocations for C++ and Objective-C types, declarations,
expressions, and statements. The statistics will be printed when
-print-stats is provided to Clang -cc1, with results such as:

277073 clang - Number of checks for C++ declaration nodes
13311 clang - Number of checks for C++ expression nodes
18 clang - Number of checks for C++ statement nodes
174182 clang - Number of checks for C++ type nodes
92300 clang - Number of checks for Objective-C declaration nodes
9800 clang - Number of checks for Objective-C expression nodes
7 clang - Number of checks for Objective-C statement nodes
65733 clang - Number of checks for Objective-C type nodes

The statistics are only gathered when NDEBUG is not defined, since
they introduce potentially-expensive operations into very low-level
routines (isa).




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99912 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Statistics.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtObjC.h
ST/Type.h
8b4dd8d60bb7f244c084c62d42b2ad3f0d46f9fd 30-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Add Support for 'warn_unused_result" attribute on
objective-c methods. (radar 7418262).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f031774aa2638b4d3f487e7e44180c1f89b867ef 30-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Add Support for 'warn_unused_result" attribute on
objective-c methods. (radar 7418262).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
da13b9eab70e530806bd2a57e44c854a25b96017 30-Mar-2010 Daniel Dunbar <daniel@zuster.org> Fix FileEntry declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ex/PreprocessorLexer.h
0cc70f1586874aed3337c57cb255b112cdac0948 30-Mar-2010 Daniel Dunbar <daniel@zuster.org> Fix FileEntry declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ex/PreprocessorLexer.h
2ff387f58d91043f1651c01a117482b5fe79985d 30-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> When copying a partial diagnostic into a DependentDiagnostic, allocate
storage for that partial diagnostic via the ASTContext's
BumpPtrAllocator rather than using up slots in the ASTContext's
cache. Now that we do this, we don't have to worry about destroying
dependent diagnostics when destroying a DependentStoredDeclsMap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
ST/DependentDiagnostic.h
asic/PartialDiagnostic.h
b836518bfc0a2ad5e22a670c82fa070ed83ea909 30-Mar-2010 Douglas Gregor <dgregor@apple.com> When copying a partial diagnostic into a DependentDiagnostic, allocate
storage for that partial diagnostic via the ASTContext's
BumpPtrAllocator rather than using up slots in the ASTContext's
cache. Now that we do this, we don't have to worry about destroying
dependent diagnostics when destroying a DependentStoredDeclsMap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
ST/DependentDiagnostic.h
asic/PartialDiagnostic.h
8072597e1d95bcd34bf81697f2eeff70c1a54909 30-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Optimize PartialDiagnostic's memory-allocation behavior by placing a
cache of PartialDiagnostic::Storage objects into an allocator within
the ASTContext. This eliminates a significant amount of malloc
traffic, for a 10% performance improvement in -fsyntax-only wall-clock
time with 403.gcc's combine.c.

Also, eliminate the RequireNonAbstractType hack I put in earlier,
which was but a symptom of this larger problem.

Fixes <rdar://problem/7806091>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/PartialDiagnostic.h
fe6b2d481d91140923f4541f273b253291884214 30-Mar-2010 Douglas Gregor <dgregor@apple.com> Optimize PartialDiagnostic's memory-allocation behavior by placing a
cache of PartialDiagnostic::Storage objects into an allocator within
the ASTContext. This eliminates a significant amount of malloc
traffic, for a 10% performance improvement in -fsyntax-only wall-clock
time with 403.gcc's combine.c.

Also, eliminate the RequireNonAbstractType hack I put in earlier,
which was but a symptom of this larger problem.

Fixes <rdar://problem/7806091>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/PartialDiagnostic.h
5755054fae2f0e8c32dbbe90d9232f793dfee25a 29-Mar-2010 Chris Lattner <sabre@nondot.org> add support for -MQ flag to quote targets in dependency file,
PR6661, patch by Ori Avtalion!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
3edbeb78fe5ea7fffea7a94575478cde19e830e0 29-Mar-2010 Chris Lattner <sabre@nondot.org> add support for -MQ flag to quote targets in dependency file,
PR6661, patch by Ori Avtalion!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
4a47dbe2988978fb5f6316fe82a34174ffee61a5 29-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Support __attribute__((packed)) (along with other attributes) at the
end of a struct/class/union in C++, from Justin Bogner!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99811 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0b4c9b5834a0a5520d2cd32227a53cf7f73fedca 29-Mar-2010 Douglas Gregor <dgregor@apple.com> Support __attribute__((packed)) (along with other attributes) at the
end of a struct/class/union in C++, from Justin Bogner!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99811 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
fdee3fd78798a34a1b2215f48199196c1fb0ad3a 29-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Be a bit more consistent in using operator->

This patch moves some methods from QualType to Type and changes the users to
use -> instead of .



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
802c66edc5073991f2315ea84ecace1867c6027f 29-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Be a bit more consistent in using operator->

This patch moves some methods from QualType to Type and changes the users to
use -> instead of .



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5f97216a4559c9219095ffe4849ce4b8e363961b 29-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Make default arguments to getFunctionNoProtoType an all or nothing option (as they already are in practise).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6a6aa53ec6c89ae0881309b0a0dd84b6868b576b 29-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Make default arguments to getFunctionNoProtoType an all or nothing option (as they already are in practise).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
99643944ad6b889d382f7ea56d6f8e3cdc3b25b3 29-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Drop default arguments no one is using.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1279deea7981fc66adeb941aa08f2753c096684c 29-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Drop default arguments no one is using.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0672dde9c095c3e894519ed66aed2bfff9fbf250 28-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> After performing template argument deduction for a function template,
check deduced non-type template arguments and template template
arguments against the template parameters for which they were deduced,
performing conversions as appropriate so that deduced template
arguments get the same treatment as explicitly-specified template
arguments. This is the bulk of PR6723.

Also keep track of whether deduction of a non-type template argument
came from an array bound (vs. anywhere else). With this information,
we enforce C++ [temp.deduct.type]p17, which requires exact type
matches when deduction deduces a non-type template argument from
something that is not an array bound.

Finally, when in a SFINAE context, translate the "zero sized
arrays are an extension" extension diagnostic into a hard error (for
better standard conformance), which was a minor part of PR6723.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99734 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
02024a9f0d8e6c898de276193af604c42ee41269 28-Mar-2010 Douglas Gregor <dgregor@apple.com> After performing template argument deduction for a function template,
check deduced non-type template arguments and template template
arguments against the template parameters for which they were deduced,
performing conversions as appropriate so that deduced template
arguments get the same treatment as explicitly-specified template
arguments. This is the bulk of PR6723.

Also keep track of whether deduction of a non-type template argument
came from an array bound (vs. anywhere else). With this information,
we enforce C++ [temp.deduct.type]p17, which requires exact type
matches when deduction deduces a non-type template argument from
something that is not an array bound.

Finally, when in a SFINAE context, translate the "zero sized
arrays are an extension" extension diagnostic into a hard error (for
better standard conformance), which was a minor part of PR6723.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99734 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
13c60517b38e70784e44a38c0c716258615001e2 27-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Checker: random include cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99731 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/DomainSpecific/CocoaConventions.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
5e2d2c2ee3cf410643e0f9a5701708e51409d973 27-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Checker: random include cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99731 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/DomainSpecific/CocoaConventions.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
5aaa6056a54d4c14f54e8292c90955e08c19076f 27-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics on incomplete implementation
of objc classes; including which methods
need be implemented and where they come from.
WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99724 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8822f7cda557ffa755c16b5c978dada23c37d6be 27-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics on incomplete implementation
of objc classes; including which methods
need be implemented and where they come from.
WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99724 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8b8e3a0b7b60524a996f116ff60a2915f92e12db 27-Mar-2010 John McCall <rjmccall@apple.com> Implement method friends in class templates and fix a few related problems.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b0cb022daec8671406ab25f4b5d5a6d48d823bc4 27-Mar-2010 John McCall <rjmccall@apple.com> Implement method friends in class templates and fix a few related problems.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
311fb48404a66a9dc0bcdb54f214a7c819c94de8 27-Mar-2010 Ted Kremenek <kremenek@apple.com> Fix comparison in isDiagnosticInFlight().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
5800f7ea9cf5621280089d690f677bd28064d6b5 27-Mar-2010 Ted Kremenek <kremenek@apple.com> Fix comparison in isDiagnosticInFlight().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
28fcab4e3ea33b0c4ec03e97ca3e0c063a6f040c 26-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> No need to specify ${CMAKE_CURRENT_BINARY_DIR}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
river/CMakeLists.txt
67e170623f51457a8edd045be95db43342424f2e 26-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> No need to specify ${CMAKE_CURRENT_BINARY_DIR}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99622 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
river/CMakeLists.txt
0b78b4be04aa2e9776faae391694b7dd147d7409 26-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Reinstate change to non-type template arguments of integral type, so
that we extend/truncate then correct the sign to convert the non-type
template argument to the template parameter's type. Previously, we
reported an error when the non-type template argument was out of
range; now we just warn.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1a6e03457ebafd6ac523cdcf5d6b6f411ea08772 26-Mar-2010 Douglas Gregor <dgregor@apple.com> Reinstate change to non-type template arguments of integral type, so
that we extend/truncate then correct the sign to convert the non-type
template argument to the template parameter's type. Previously, we
reported an error when the non-type template argument was out of
range; now we just warn.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
53e3c53565d28d6de1129cad9d936693d84ac699 26-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Revert attempted fix for integral template arguments. It seems to have broken tramp3d-v4.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0d4fd8ef35ecd73ce6388cb5a6fdcfb15171f5aa 26-Mar-2010 Douglas Gregor <dgregor@apple.com> Revert attempted fix for integral template arguments. It seems to have broken tramp3d-v4.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
64ac3debd659a8afb761bd926474a27b7344ff5e 25-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Warn when the conversion of an integral non-type template argument to
the type of its corresponding non-type template parameter changes the
value. Previously, we were diagnosing this as an error, which was
wrong. We give reasonably nice warnings like:

test/SemaTemplate/temp_arg_nontype.cpp:100:10: warning: non-type template
argument value '256' truncated to '0' for template parameter of type
'unsigned char'
Overflow<256> *overflow3; // expected-warning{{non-type template ...
^~~
test/SemaTemplate/temp_arg_nontype.cpp:96:24: note: template parameter is
declared here
template<unsigned char C> struct Overflow;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
684d096c204c5eef29c10777bce890400d235d8c 25-Mar-2010 Douglas Gregor <dgregor@apple.com> Warn when the conversion of an integral non-type template argument to
the type of its corresponding non-type template parameter changes the
value. Previously, we were diagnosing this as an error, which was
wrong. We give reasonably nice warnings like:

test/SemaTemplate/temp_arg_nontype.cpp:100:10: warning: non-type template
argument value '256' truncated to '0' for template parameter of type
'unsigned char'
Overflow<256> *overflow3; // expected-warning{{non-type template ...
^~~
test/SemaTemplate/temp_arg_nontype.cpp:96:24: note: template parameter is
declared here
template<unsigned char C> struct Overflow;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
78dc67e0d8836ec6de51c3091fd5bd0314b076f1 25-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Teach the diagnostic engine to provide more detailed information about
how to handle a diagnostic during template argument deduction, which
may be "substitution failure", "suppress", or "report". This keeps us
from, e.g., emitting warnings while performing template argument
deduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
eab5d1eaaa662c849f1f9920dc8c6a31d7c32d47 25-Mar-2010 Douglas Gregor <dgregor@apple.com> Teach the diagnostic engine to provide more detailed information about
how to handle a diagnostic during template argument deduction, which
may be "substitution failure", "suppress", or "report". This keeps us
from, e.g., emitting warnings while performing template argument
deduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
65996191d65b20494b4015b62642b0eff5675617 25-Mar-2010 John McCall <rjmccall@apple.com> Preserve type-source information in friend declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
ST/DeclTemplate.h
32f2fb53d9d7c28c94d8569fd0fcf06cccee0c3d 25-Mar-2010 John McCall <rjmccall@apple.com> Preserve type-source information in friend declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclFriend.h
ST/DeclTemplate.h
d39a5e7bb75d659025762c035dade1bfc2dddd2a 25-Mar-2010 Daniel Dunbar <daniel@zuster.org> Remove support for nand atomic builtins. They are inconsistently implemented in
gcc, and the common expectation seems to be that they are unused. If and when
someone cares we can add them back with well documented demantics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99522 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
7eff7c4153faf45b19b5919ef409ee5f6794eb25 25-Mar-2010 Daniel Dunbar <daniel@zuster.org> Remove support for nand atomic builtins. They are inconsistently implemented in
gcc, and the common expectation seems to be that they are unused. If and when
someone cares we can add them back with well documented demantics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99522 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
9913fcc2f352c63ea536aa5e1ecd5aabb76e4234 25-Mar-2010 Nuno Lopes <nunoplopes@sapo.pt> add dump() method to CanQual for debugging purposes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99505 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
d9ab76bbce7b8a563aa847cfcdcd39d8280f11bd 25-Mar-2010 Nuno Lopes <nunoplopes@sapo.pt> add dump() method to CanQual for debugging purposes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99505 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
0644185341f61f750582fff16d7331a3c431e4cf 25-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a utility method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99495 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SymbolManager.h
ef0df6a1c2a626f69dc11519cf88a50ca321065d 25-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a utility method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99495 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SymbolManager.h
dcebee4d43840bfac05064f12906f659b0eeb79d 25-Mar-2010 Ted Kremenek <kremenek@apple.com> Fix two bugs in format-string checking:
(1) Do not assume the data arguments start after the format string
(2) Do not use the fact that a function is variadic to treat it like a va_list printf function

Fixes PR 6697.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99480 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6ee765348b2855c702fa593fb030ef6abe0d01f6 25-Mar-2010 Ted Kremenek <kremenek@apple.com> Fix two bugs in format-string checking:
(1) Do not assume the data arguments start after the format string
(2) Do not use the fact that a function is variadic to treat it like a va_list printf function

Fixes PR 6697.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99480 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ac68a6884387554fb9bc0c779fcd77eaf6f9cdc5 25-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add methods to remove a GDM entry.
Instead of setting the ReturnExpr GDM to NULL, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99470 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
0541d106eae48f4238097df03a72028a610e0dce 25-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add methods to remove a GDM entry.
Instead of setting the ReturnExpr GDM to NULL, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99470 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
206a832dc8160b8a231cc0198087bb54e0d8564f 24-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Control warnings about GNU extensions with -Wgnu, which has a subgroup
for GNU designated-initializer syntax (-Wgnu-designator).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99421 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
02668985d9ae546ab391740a66fa498ebac09874 24-Mar-2010 Douglas Gregor <dgregor@apple.com> Control warnings about GNU extensions with -Wgnu, which has a subgroup
for GNU designated-initializer syntax (-Wgnu-designator).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99421 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
16d4b975a57ec29128a54004ed0ec65eaf776670 24-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Implement support for -nostdc++. Fixes PR6446.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99417 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/HeaderSearchOptions.h
4c2bcad7b843c10fd4a2ffd43da40bfefb4dc8ba 24-Mar-2010 Douglas Gregor <dgregor@apple.com> Implement support for -nostdc++. Fixes PR6446.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99417 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/HeaderSearchOptions.h
8d0e4cc4025742275594c78744bfc7ce7b267419 24-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics when ivar added to class
extension (radar 6812436).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99408 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f3c0bd58400b5a84d16376436e40af79e2d7b105 24-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Improve diagnostics when ivar added to class
extension (radar 6812436).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99408 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
98a1dadea132c8f5ba6c90f8ba8d262d11e04b39 24-Mar-2010 John McCall <rjmccall@apple.com> Support friend function specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99389 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7ad650f88ecbbe659f10f9f6b34a1f29ea9cf8f9 24-Mar-2010 John McCall <rjmccall@apple.com> Support friend function specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99389 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
490a4b524bc8ec4bf23fa20e4b7173135fda7e91 24-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> When a declaration of a function is missing an exception specification
that was present in a prior declaration, emit a warning rather than a
hard error (which we did before, and still do with mismatched
exception specifications). Moreover, provide a fix-it hint with the
throw() clause that should be added, e.g.,

t.C:10:7: warning: 'operator new' is missing exception specification
'throw(std::bad_alloc)'
void *operator new(unsigned long sz)
^
throw(std::bad_alloc)

As part of this, disable the warning when we're missing an exception
specification on operator new, operator new[], operator delete, or
operator delete[] when exceptions are turned off (-fno-exceptions).

Fixes PR5957.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
2eef829b19bdc59976a827fa39b409440e352bff 24-Mar-2010 Douglas Gregor <dgregor@apple.com> When a declaration of a function is missing an exception specification
that was present in a prior declaration, emit a warning rather than a
hard error (which we did before, and still do with mismatched
exception specifications). Moreover, provide a fix-it hint with the
throw() clause that should be added, e.g.,

t.C:10:7: warning: 'operator new' is missing exception specification
'throw(std::bad_alloc)'
void *operator new(unsigned long sz)
^
throw(std::bad_alloc)

As part of this, disable the warning when we're missing an exception
specification on operator new, operator new[], operator delete, or
operator delete[] when exceptions are turned off (-fno-exceptions).

Fixes PR5957.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
ce381cff11e5dc61e24621bb26d4f9f3c07444ea 24-Mar-2010 John McCall <rjmccall@apple.com> Implement a framework for the delay of arbitrary diagnostics within
templates. So delay access-control diagnostics when (for example) the target
of a friend declaration is a specific specialization of a template.

I was surprised to find that this was required for an access-controlled selfhost.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DependentDiagnostic.h
0c01d18094100db92d38daa923c95661512db203 24-Mar-2010 John McCall <rjmccall@apple.com> Implement a framework for the delay of arbitrary diagnostics within
templates. So delay access-control diagnostics when (for example) the target
of a friend declaration is a specific specialization of a template.

I was surprised to find that this was required for an access-controlled selfhost.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DependentDiagnostic.h
fec20e6dbd3c93a232a8f1e85f8aa5752e69f8bb 24-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Make sure to properly track the anonymous namespace that lives inside
each namespace, even when the outer namespace has multiple
definitions. As part of this, collapsed two pointers worth of storage
(original namespace and inner anonymous namespace) into a single
pointer with a distinguishing bit, since the two are mutually
exclusive, saving a pointer per NamespaceDecl. Fixes PR6620.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a418147c61a14cd21d4cce8f9c7a8750d2a59803 24-Mar-2010 Douglas Gregor <dgregor@apple.com> Make sure to properly track the anonymous namespace that lives inside
each namespace, even when the outer namespace has multiple
definitions. As part of this, collapsed two pointers worth of storage
(original namespace and inner anonymous namespace) into a single
pointer with a distinguishing bit, since the two are mutually
exclusive, saving a pointer per NamespaceDecl. Fixes PR6620.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cd2f20c3de88eeb5a53346e876123e47e1a37e66 24-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Implement computation of the final overriders for each virtual
function within a class hierarchy (C++ [class.virtual]p2).

We use the final-overrider computation to determine when a particular
class is ill-formed because it has multiple final overriders for a
given virtual function (e.g., because two virtual functions override
the same virtual function in the same virtual base class). Fixes
PR5973.

We also use the final-overrider computation to determine which virtual
member functions are pure when determining whether a class is
abstract or diagnosing the improper use of an abstract class. The
prior approach to determining whether there were any pure virtual
functions in a class didn't cope with virtual base class subobjects
properly, and could not easily be fixed to deal with the oddities of
subobject hiding. Fixes PR6631.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99351 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
7b2fc9d3c97f2526528a8b686af1589054025ca0 24-Mar-2010 Douglas Gregor <dgregor@apple.com> Implement computation of the final overriders for each virtual
function within a class hierarchy (C++ [class.virtual]p2).

We use the final-overrider computation to determine when a particular
class is ill-formed because it has multiple final overriders for a
given virtual function (e.g., because two virtual functions override
the same virtual function in the same virtual base class). Fixes
PR5973.

We also use the final-overrider computation to determine which virtual
member functions are pure when determining whether a class is
abstract or diagnosing the improper use of an abstract class. The
prior approach to determining whether there were any pure virtual
functions in a class didn't cope with virtual base class subobjects
properly, and could not easily be fixed to deal with the oddities of
subobject hiding. Fixes PR6631.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99351 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
95f50922434fe2bec3cd70dcad90aa77a6edb7be 23-Mar-2010 Ted Kremenek <kremenek@apple.com> Improve diagnostic for @property/ivar type mismatch by including the types of the
ivar and @property respectively.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f921a4868cf1876636f6684e7f68697b18c0cb47 23-Mar-2010 Ted Kremenek <kremenek@apple.com> Improve diagnostic for @property/ivar type mismatch by including the types of the
ivar and @property respectively.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e85773d9ce04de52df0cca4d7296646aebd00aa1 23-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Bind the constructed object value to CXXConstructExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99271 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
8e18c1b840882d26039503629d7e4ad4822f3bda 23-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Bind the constructed object value to CXXConstructExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99271 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
9b83b0538d6dea46bf109e17ebc0414f0312dbcf 23-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a AggExprVisitor class. It contains lots of boiler
plate code for evaluating expressions of C++ class type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99267 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
7b71c1977cccafa23f9ecb3b0b22199e61ae634c 23-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a AggExprVisitor class. It contains lots of boiler
plate code for evaluating expressions of C++ class type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99267 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
4e23ad955904b39bf926ac393cc6100c11b64d08 23-Mar-2010 Daniel Dunbar <daniel@zuster.org> PPCallbacks: Add hook for reaching the end of the main file, and fix DependencyFile to not do work in its destructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99257 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/Preprocessor.h
dbd8209b33e6c9f151e4913a9c095d64a95439c4 23-Mar-2010 Daniel Dunbar <daniel@zuster.org> PPCallbacks: Add hook for reaching the end of the main file, and fix DependencyFile to not do work in its destructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99257 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/Preprocessor.h
cfe95341b5d475f43f7a74f08aa891a7d715960b 23-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Since we now may have basicblocks with the same block is in different function,
change the block counter map from unsigned -> unsigned to
<StackFrameContext*, unsigned> -> unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99255 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
d9e0c0fc47d5881a609ec34372d554e3652db66c 23-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Since we now may have basicblocks with the same block is in different function,
change the block counter map from unsigned -> unsigned to
<StackFrameContext*, unsigned> -> unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99255 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
839bff1203adf923e1a75ed2695b8fd824810920 23-Mar-2010 Ted Kremenek <kremenek@apple.com> Only perform CFG-based warnings on 'static inline' functions that
are called (transitively) by regular functions/blocks within a
translation untion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
d064fdc4b7b64ca55b40b70490c79d6f569df78e 23-Mar-2010 Ted Kremenek <kremenek@apple.com> Only perform CFG-based warnings on 'static inline' functions that
are called (transitively) by regular functions/blocks within a
translation untion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
70cc35dc26270a23f17de6e1f08f3b9ca4fa88b2 22-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose miuse of property dot-syntax instead of crashing.
(radar 7634653).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8149a5786def747af783a9e3c22714bb7ab42b9c 22-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose miuse of property dot-syntax instead of crashing.
(radar 7634653).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bd7f8bd1770382eb4698989acc0c3af94cb89553 22-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes access rues for ivars declared in class
implementations (radar 7547942).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
01f1bfc3284d5817517d35217885ea9ecb252817 22-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes access rues for ivars declared in class
implementations (radar 7547942).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
778abf2acd5ebf1f252ddc77a5b7f7d5167e02d2 22-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> More clean up of ivars which are either in class extensions and
implementation or synthesized into an implementation. Also,
fixes a code gen. bug when ivars are itroduced in interleaved
implementations. (related to radar 7547942).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3bfacdf6f0706987c1b33c625cd68fb880881c22 22-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> More clean up of ivars which are either in class extensions and
implementation or synthesized into an implementation. Also,
fixes a code gen. bug when ivars are itroduced in interleaved
implementations. (related to radar 7547942).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4f6f0f8ad4780a121b81cdaccca6e2a0ea195f76 22-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce the notion of a single "delayed" diagnostic into the
Diagnostic subsystem, which is used in the rare case where we find a
serious problem (i.e., an inconsistency in the file system) while
we're busy formatting another diagnostic. In this case, the delayed
diagnostic will be emitted after we're done with the other
diagnostic. This is only to be used for fatal conditions detected at
very inconvenient times, where we can neither stop the current
diagnostic in flight nor can we suppress the second error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
93ea5cb0edf8e509c5113e70cb05ee247c9bdf6b 22-Mar-2010 Douglas Gregor <dgregor@apple.com> Introduce the notion of a single "delayed" diagnostic into the
Diagnostic subsystem, which is used in the rare case where we find a
serious problem (i.e., an inconsistency in the file system) while
we're busy formatting another diagnostic. In this case, the delayed
diagnostic will be emitted after we're done with the other
diagnostic. This is only to be used for fatal conditions detected at
very inconvenient times, where we can neither stop the current
diagnostic in flight nor can we suppress the second error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
08e30999cc236800c13eb0cfde355499028500b5 22-Mar-2010 Chandler Carruth <chandlerc@gmail.com> Add very limited support for GCC's '-B' flag. This allows us to support unusual
toolchain configurations and is a small step toward FreeBSD support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99159 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.td
48ad6094679ca2bf4f3593068e02e7a208c1a73c 22-Mar-2010 Chandler Carruth <chandlerc@gmail.com> Add very limited support for GCC's '-B' flag. This allows us to support unusual
toolchain configurations and is a small step toward FreeBSD support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99159 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.td
a80645719e6a724695641d997c6f831b4ddf7177 21-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of the size/modification time of each file source-location
entry in a precompiled header, so that we can detect modified files
even when we miss in the stat cache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99149 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
2d52be56ff595341be3c6cec337af6763804ce66 21-Mar-2010 Douglas Gregor <dgregor@apple.com> Keep track of the size/modification time of each file source-location
entry in a precompiled header, so that we can detect modified files
even when we miss in the stat cache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99149 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
35616ad5d13728e791b14173cc579521caaaec41 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Reapply r99024 (but with the memory issue now fixed).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99064 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
ff7f736211070be873df0a345295fd1453ee7c50 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Reapply r99024 (but with the memory issue now fixed).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99064 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
d42d60fe07651b591d1673c0e9c261e892e7e142 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Check if a BugReporterVisitor has already been added to a BugReporterContext.
This avoids redundant diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99063 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
1b431023814196f87515a540ebcb9e9f1a9176a1 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Check if a BugReporterVisitor has already been added to a BugReporterContext.
This avoids redundant diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99063 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
34cdf5c43b97f172bbcfe4e1640722bf5f9e98d0 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Fix use-of-invalid-memory found by Valgrind and Windows buildbots.
We were inserting a value into a std::vector<> while iterating over
it, which could cause the underlying memory to get deallocated
and reallocated. While not the best solution, use an llvm::ImmutableList
for now as it is safely supports insertions during iteration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99058 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
6493b8153a56cbff9f89c1a53f04b6af424b383a 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Fix use-of-invalid-memory found by Valgrind and Windows buildbots.
We were inserting a value into a std::vector<> while iterating over
it, which could cause the underlying memory to get deallocated
and reallocated. While not the best solution, use an llvm::ImmutableList
for now as it is safely supports insertions during iteration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99058 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
463110daf084b2a348615e0201fe1065cf915e23 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support CC_PRINT_OPTIONS, used for logging the compile commands (in -v style) to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Driver.h
4c00fcdf98d3d7c4cb47b64f8b770f8f4bff1357 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Support CC_PRINT_OPTIONS, used for logging the compile commands (in -v style) to a file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Driver.h
eac8f355d7f502e5c3e4ba19ef809a6341ec2612 20-Mar-2010 Eric Christopher <echristo@apple.com> Add sse4.2 header and builtin support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
67a5936a1d60fff1ec12441de63fd27ea50b0130 20-Mar-2010 Eric Christopher <echristo@apple.com> Add sse4.2 header and builtin support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
a2343f6332f54fb0d9d6ef251b26c4f1774446d9 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Revert r99024, "Augment path diagnostics to include displaying when a message
expression", statistical evidence indicates it has some kind of memory error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99040 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
0f2c907b2b5ee8896f5f0c51e35f80447b49b2c0 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Revert r99024, "Augment path diagnostics to include displaying when a message
expression", statistical evidence indicates it has some kind of memory error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99040 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
e2a6a781c8824ddde4d2d8b2d92ee37cddff8732 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> C++: Add support for -fno-use-cxa-atexit.
- So much typing, so little gain...

Also, rename the __cxx_global_initialization function just to match llvm-gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99039 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/Options.td
efb0fa9e11f75af51744a6159530ef7cc8efa24a 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> C++: Add support for -fno-use-cxa-atexit.
- So much typing, so little gain...

Also, rename the __cxx_global_initialization function just to match llvm-gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99039 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/Options.td
78218da42f3b94f4e1e0143bc5135c9766caa4a6 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Augment path diagnostics to include displaying when a message expression
is not evaluated because the receiver is nil.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99024 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
2d46f4dc297b32eff154a26c0e3bc16b6c66b78c 20-Mar-2010 Ted Kremenek <kremenek@apple.com> Augment path diagnostics to include displaying when a message expression
is not evaluated because the receiver is nil.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99024 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
a307d44a3bcff3d5a3e40d02e5393f5f0c174dc7 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Force joining of "-l" "foo", the linker doesn't eat that format.

<rdar://problem/7641151> clang must eat spaces after -l

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99023 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
365b0bd38964c57f7e9fcace1eaf9877fb3b0485 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Force joining of "-l" "foo", the linker doesn't eat that format.

<rdar://problem/7641151> clang must eat spaces after -l

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99023 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
33fe4845b5f3bcc46d48da919638ba912e6c67cb 20-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Optimize region-of-interest based cursor walks through the
preprocessed entities by grouping preprocessed entities by file
ID. This drastically improves performance of repeated
clang_getCursor() calls local tests, although it is a bit ugly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99015 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
788f5a1242c04762f91eaa7565c07b9865846d88 20-Mar-2010 Douglas Gregor <dgregor@apple.com> Optimize region-of-interest based cursor walks through the
preprocessed entities by grouping preprocessed entities by file
ID. This drastically improves performance of repeated
clang_getCursor() calls local tests, although it is a bit ugly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99015 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
effc786f47716410eb470ac4ed0294abe4deb3b6 19-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Remove the capture, serialization, and deserialization of comment
ranges as part of the ASTContext. This code is not and was never used,
but contributes ~250k to the size of the Cocoa.h precompiled
header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
arse/Action.h
arse/Parser.h
c6fbbedb3e90ff2f04828c36fd839e01468679f5 19-Mar-2010 Douglas Gregor <dgregor@apple.com> Remove the capture, serialization, and deserialization of comment
ranges as part of the ASTContext. This code is not and was never used,
but contributes ~250k to the size of the Cocoa.h precompiled
header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
arse/Action.h
arse/Parser.h
ea132360e95c97cd75d9fe3600657d530a1ce532 19-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Robustify PreprocessingRecord slightly, by only creating macro
instantiations when we have the corresponding macro definition and by
removing macro definition information from our table when the macro is
undefined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99004 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
1b058e8956ea29a7fb7649fdee2b80581dcbdf39 19-Mar-2010 Douglas Gregor <dgregor@apple.com> Robustify PreprocessingRecord slightly, by only creating macro
instantiations when we have the corresponding macro definition and by
removing macro definition information from our table when the macro is
undefined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99004 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
ea1881b7369a4b0ad8b95cdced0fb0cc25b7379a 19-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Implement serialization and lazy deserialization of the preprocessing
record (which includes all macro instantiations and definitions). As
with all lay deserialization, this introduces a new external source
(here, an external preprocessing record source) that loads all of the
preprocessed entities prior to iterating over the entities.

The preprocessing record is an optional part of the precompiled header
that is disabled by default (enabled with
-detailed-preprocessing-record). When the preprocessor given to the
PCH writer has a preprocessing record, that record is written into the
PCH file. When the PCH reader is given a PCH file that contains a
preprocessing record, it will be lazily loaded (which, effectively,
implicitly adds -detailed-preprocessing-record). This is the first
case where we have sections of the precompiled header that are
added/removed based on a compilation flag, which is
unfortunate. However, this data consumes ~550k in the PCH file for
Cocoa.h (out of ~9.9MB), and there is a non-trivial cost to gathering
this detailed preprocessing information, so it's too expensive to turn
on by default. In the future, we should investigate a better encoding
of this information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99002 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ex/PreprocessingRecord.h
6a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bc 19-Mar-2010 Douglas Gregor <dgregor@apple.com> Implement serialization and lazy deserialization of the preprocessing
record (which includes all macro instantiations and definitions). As
with all lay deserialization, this introduces a new external source
(here, an external preprocessing record source) that loads all of the
preprocessed entities prior to iterating over the entities.

The preprocessing record is an optional part of the precompiled header
that is disabled by default (enabled with
-detailed-preprocessing-record). When the preprocessor given to the
PCH writer has a preprocessing record, that record is written into the
PCH file. When the PCH reader is given a PCH file that contains a
preprocessing record, it will be lazily loaded (which, effectively,
implicitly adds -detailed-preprocessing-record). This is the first
case where we have sections of the precompiled header that are
added/removed based on a compilation flag, which is
unfortunate. However, this data consumes ~550k in the PCH file for
Cocoa.h (out of ~9.9MB), and there is a non-trivial cost to gathering
this detailed preprocessing information, so it's too expensive to turn
on by default. In the future, we should investigate a better encoding
of this information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99002 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ex/PreprocessingRecord.h
ec83747fc128470f55688e5b0db8432a20c0db27 19-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> More coherent diagnostics when ivar is placed n categories.
(related to radar 7538989).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d52cbdce856d6498a5c454b8e113498e645cc4d 19-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> More coherent diagnostics when ivar is placed n categories.
(related to radar 7538989).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4ddafccd046e2cf7ccc9b46aab21c6ac57b54edb 19-Mar-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Kill off -empty-input only, and replace with -init-only which is an
actual action.
- This is easier to use, and more reliable for timing the thing this was
actually meant to be useful for.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98978 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
2758595023c5c7c0495f19260089f975022c50dc 19-Mar-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Kill off -empty-input only, and replace with -init-only which is an
actual action.
- This is easier to use, and more reliable for timing the thing this was
actually meant to be useful for.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98978 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendActions.h
rontend/FrontendOptions.h
54f28d292786be2548a8612f28c5265dcd8e423c 19-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Make the preprocessing record a PPCallbacks subclass itself,
eliminating the extra PopulatePreprocessingRecord object. This will
become useful once we start writing the preprocessing record to
precompiled headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98966 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
ex/Preprocessor.h
b9e1b75772db2c7db566c6034ba90a07f22e35eb 19-Mar-2010 Douglas Gregor <dgregor@apple.com> Make the preprocessing record a PPCallbacks subclass itself,
eliminating the extra PopulatePreprocessingRecord object. This will
become useful once we start writing the preprocessing record to
precompiled headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98966 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
ex/Preprocessor.h
05a9da2a3af572e6976705528bf15dce9814b440 19-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Optionally store a PreprocessingRecord in the preprocessor itself, and
tie its creation to a CC1 flag -detailed-preprocessing-record.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98963 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTUnit.h
rontend/PCHWriter.h
rontend/PreprocessorOptions.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
94dc8f640ebea52241412512ed48601626edbc58 19-Mar-2010 Douglas Gregor <dgregor@apple.com> Optionally store a PreprocessingRecord in the preprocessor itself, and
tie its creation to a CC1 flag -detailed-preprocessing-record.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98963 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTUnit.h
rontend/PCHWriter.h
rontend/PreprocessorOptions.h
ex/PreprocessingRecord.h
ex/Preprocessor.h
2423e99c455d06b310f87644d963e5d97f968e18 19-Mar-2010 John McCall <rjmccall@apple.com> Pretty-print anonymous types using their kind and presumed location.
Fixes PR6643. Patch by Mike M!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
73061d054128e486e70e0f2874b23d6eca067e5b 19-Mar-2010 John McCall <rjmccall@apple.com> Pretty-print anonymous types using their kind and presumed location.
Fixes PR6643. Patch by Mike M!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
69969963d321e2001ed1ebfc6d17107604d75b12 19-Mar-2010 John McCall <rjmccall@apple.com> Remember the "found declaration" for an overload candidate, which is the
entity (if applicable) which was actually looked up. If a candidate was found
via a using declaration, this is the UsingShadowDecl; otherwise, if
the candidate is template specialization, this is the template; otherwise,
this is the function.

The point of this exercise is that "found declarations" are the entities
we do access control for, not their underlying declarations. Broadly speaking,
this patch fixes access control for using declarations.

There is a *lot* of redundant code calling into the overload-resolution APIs;
we really ought to clean that up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98945 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
9aa472c45d2bd81b7b52c225e8acc560d716db97 19-Mar-2010 John McCall <rjmccall@apple.com> Remember the "found declaration" for an overload candidate, which is the
entity (if applicable) which was actually looked up. If a candidate was found
via a using declaration, this is the UsingShadowDecl; otherwise, if
the candidate is template specialization, this is the template; otherwise,
this is the function.

The point of this exercise is that "found declarations" are the entities
we do access control for, not their underlying declarations. Broadly speaking,
this patch fixes access control for using declarations.

There is a *lot* of redundant code calling into the overload-resolution APIs;
we really ought to clean that up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98945 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
42bd56c8c7545a3e1b6d510712139551e0da43f7 18-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Some cleanup, change diagnostic when assigning to
a property which is not lvalue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
90c71268f04369328e8f579007b8b4f1da9feea0 18-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Some cleanup, change diagnostic when assigning to
a property which is not lvalue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
9a4e46d5048854ad8b63295d9e724a4a13a6fcf0 18-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Explicitly link macro instantiations to macro definitions in the
preprocessing record. Use that link with clang_getCursorReferenced()
and clang_getCursorDefinition() to match instantiations of a macro to
the definition of the macro.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98842 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
bf7efa2742dc94363d3561d284c9d634fc5a780f 18-Mar-2010 Douglas Gregor <dgregor@apple.com> Explicitly link macro instantiations to macro definitions in the
preprocessing record. Use that link with clang_getCursorReferenced()
and clang_getCursorDefinition() to match instantiations of a macro to
the definition of the macro.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98842 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
23e75cef2e744cdd4940f22cbdf3a214ca526b5d 18-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Expose macro definitions as CIndex cursors. These can still only be
generated by clang_annotateTokens().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98837 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
572feb2a190b5e8b04fb06c4ac50ee0f61e93ff0 18-Mar-2010 Douglas Gregor <dgregor@apple.com> Expose macro definitions as CIndex cursors. These can still only be
generated by clang_annotateTokens().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98837 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessingRecord.h
d8b10596e1b3ea7346c465b19afc59f18bf00a24 18-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce the notion of a "preprocessing record", which keeps track of
the macro definitions and macro instantiations that are found
during preprocessing. Preprocessing records are *not* generated by
default; rather, we provide a PPCallbacks subclass that hooks into the
existing callback mechanism to record this activity.

The only client of preprocessing records is CIndex, which keeps track
of macro definitions and instantations so that they can be exposed via
cursors. At present, only token annotation uses these facilities, and
only for macro instantiations; both will change in the near
future. However, with this change, token annotation properly annotates
macro instantiations that do not produce any tokens and instantiations
of macros that are later undef'd, improving our consistency.

Preprocessing directives that are not macro definitions are still
handled by clang_annotateTokens() via re-lexing, so that we don't have
to track every preprocessing directive in the preprocessing record.

Performance impact of preprocessing records is still TBD, although it
is limited to CIndex and therefore out of the path of the main compiler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98836 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/PreprocessingRecord.h
4ae8f298b1ea51b4c2234f9148e2e4349c9bdd23 18-Mar-2010 Douglas Gregor <dgregor@apple.com> Introduce the notion of a "preprocessing record", which keeps track of
the macro definitions and macro instantiations that are found
during preprocessing. Preprocessing records are *not* generated by
default; rather, we provide a PPCallbacks subclass that hooks into the
existing callback mechanism to record this activity.

The only client of preprocessing records is CIndex, which keeps track
of macro definitions and instantations so that they can be exposed via
cursors. At present, only token annotation uses these facilities, and
only for macro instantiations; both will change in the near
future. However, with this change, token annotation properly annotates
macro instantiations that do not produce any tokens and instantiations
of macros that are later undef'd, improving our consistency.

Preprocessing directives that are not macro definitions are still
handled by clang_annotateTokens() via re-lexing, so that we don't have
to track every preprocessing directive in the preprocessing record.

Performance impact of preprocessing records is still TBD, although it
is limited to CIndex and therefore out of the path of the main compiler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98836 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ex/PreprocessingRecord.h
00f425d0b483d49c7893453be479953938a1d0e6 18-Mar-2010 Ted Kremenek <kremenek@apple.com> Bump clang minor version (1.5).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98801 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
7133c1aa1c55cb8b9c86a5e1f1318a0d82658c31 18-Mar-2010 Ted Kremenek <kremenek@apple.com> Bump clang minor version (1.5).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98801 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
df0c21f52b544a4d7ba1119a0ccef51ca17227f9 18-Mar-2010 Ted Kremenek <kremenek@apple.com> Turn several PCH reader assertions into compiler errors, thus making
the PCHReader more robust to corrupt or invalid PCH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
d5d7b3f61f82b0fed9d6f02839bc72e528332911 18-Mar-2010 Ted Kremenek <kremenek@apple.com> Turn several PCH reader assertions into compiler errors, thus making
the PCHReader more robust to corrupt or invalid PCH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
db5980861dc9061cf0d87db38a4eabc0feb7a135 17-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Reduce the default alignment for ASTContext and Stmt/Expr allocation
from 16 bytes to 8 bytes, since we don't ever use those low 4
bits. Should save some storage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Stmt.h
f4e689b8528770001f4792f1f4ebdfb09d859e3d 17-Mar-2010 Douglas Gregor <dgregor@apple.com> Reduce the default alignment for ASTContext and Stmt/Expr allocation
from 16 bytes to 8 bytes, since we don't ever use those low 4
bits. Should save some storage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98754 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Stmt.h
e796ee8892936888e36a6dc9e6daea0aaf392597 17-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Remove warning about shadowing a built-in; built-ins aren't actually
considered to be a part of the translation unit unless they're named
in a way that brings them into existence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98729 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c48c916b8cebba954429715f15bd5b5e8e4d4574 17-Mar-2010 Douglas Gregor <dgregor@apple.com> Remove warning about shadowing a built-in; built-ins aren't actually
considered to be a part of the translation unit unless they're named
in a way that brings them into existence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98729 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7be95146135fbf8399324f631f0115f74c62ae19 17-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Entering the main source file in the preprocessor can fail if the
source file has been changed. Handle that failure more gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98727 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
dbf8ee630e4c86e5150492eaf8dbceea3c718ee1 17-Mar-2010 Douglas Gregor <dgregor@apple.com> Entering the main source file in the preprocessor can fail if the
source file has been changed. Handle that failure more gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98727 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
1071378ede1eeb42f1230ebc65fcbeb22418a518 17-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Use a simple diagnostic (file modified) when we detect that a file has
changed, rather than trying to point out how it changed. The "why"
doesn't matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
e39b600582f9183e3301c3e6cb48b76ac5087119 17-Mar-2010 Douglas Gregor <dgregor@apple.com> Use a simple diagnostic (file modified) when we detect that a file has
changed, rather than trying to point out how it changed. The "why"
doesn't matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98725 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
523b4cb03581c20983589e520b1461853aa022d2 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Simplify ProcessWarningOptions since it can't fail

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98721 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
5bf932bd0d5db98273938675dbf81cbb2f5ffff7 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Simplify ProcessWarningOptions since it can't fail

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98721 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
cd5a90abe7d13e86b52935eb3dae4c56ac12e1e1 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove useless forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98720 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ce45414dd8c9631eda43b17a04e560da530168d0 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove useless forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98720 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
b21cedc32e3bcb010ab2d0f3e095fd863db38b5f 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Issue a proper diagnostic if we couldn't open dump file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98719 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
3d67b1e25847319a5a271f9d5a8d607ef18d804a 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Issue a proper diagnostic if we couldn't open dump file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98719 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
9707db19f2ac123ede8678026bd621165e72feec 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove useless foward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98718 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
78fbbfe0fe66cf3bbee744a1b702da95ad7fcd13 17-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove useless foward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98718 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
238d3ff0a3d0a6af094b97a416fe6afa724250db 17-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Mark CXXThisRegion in the current or parent stack frame context as live so that
their bindings are not removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98705 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
17ddf1c108bb847fb05111fec09d664c9bb2e49b 17-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Mark CXXThisRegion in the current or parent stack frame context as live so that
their bindings are not removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98705 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
6d6ec3a5a4e5418a4fa2825166ecf59eb58e6ff9 17-Mar-2010 John McCall <rjmccall@apple.com> Make -faccess-control and -fno-access-control driver options.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98703 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
3ddd6e026a173e9519e84e27f8d6aed5473b8b4e 17-Mar-2010 John McCall <rjmccall@apple.com> Make -faccess-control and -fno-access-control driver options.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98703 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d3a26c7179128a12ed30f34ebeb15fec36e39815 17-Mar-2010 John McCall <rjmccall@apple.com> Clean up after ourselves when there's an error parsing the base clause.
Fixes the crash-on-invalid in PR6629.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98698 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
db7bb4a4e7d9744cbc994c90932e6f056228e1ff 17-Mar-2010 John McCall <rjmccall@apple.com> Clean up after ourselves when there's an error parsing the base clause.
Fixes the crash-on-invalid in PR6629.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98698 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9bec00f10ef63d6483eeffdfd6174d94bec0231e 17-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> objective-c patch to provide type safty when blocks are passing or
returning objc objects. There will be a corresponding objective-c++
patch soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
132f2a2da34f378fc675b9e174564b0f52c31d98 17-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> objective-c patch to provide type safty when blocks are passing or
returning objc objects. There will be a corresponding objective-c++
patch soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
147177da525a09e65f2d1f5b7b7ee51311cc66b0 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Teach SourceManager's content cache to keep track of whether its
buffer was invalid when it was created, and use that bit to always set
the "Invalid" flag according to whether the buffer is invalid. This
ensures that all accesses to an invalid buffer are marked invalid,
improving recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98690 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c815108d08b0417c6f1104e7df70dc5278839406 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Teach SourceManager's content cache to keep track of whether its
buffer was invalid when it was created, and use that bit to always set
the "Invalid" flag according to whether the buffer is invalid. This
ensures that all accesses to an invalid buffer are marked invalid,
improving recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98690 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2c9c4584acb6ca7ef35bde8b96f81acc9e66ee75 16-Mar-2010 John McCall <rjmccall@apple.com> Implement -Wshadow. Based on a patch by Mike M.!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8472af4df9292e02fb25c952d25a81f3ca296252 16-Mar-2010 John McCall <rjmccall@apple.com> Implement -Wshadow. Based on a patch by Mike M.!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98684 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8884f1af9c258316326940a81250f88600676e59 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Update get*LineNumber() and get*ColumnNumber() functions to pass the
Invalid bit through; there are no safety-critical callers of these
functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98674 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
64e462dff03492c586be0349ec6aa3ad5cd92720 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Update get*LineNumber() and get*ColumnNumber() functions to pass the
Invalid bit through; there are no safety-critical callers of these
functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98674 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
3d5c30c7576189dbe10bf1ca86dca307b4b04319 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Audit all callers of SourceManager::getCharacterData(); update some of
them to recover more gracefully on failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ex/Preprocessor.h
a543016fe07030f695d6d56fd22c8c8da617e0d7 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Audit all callers of SourceManager::getCharacterData(); update some of
them to recover more gracefully on failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ex/Preprocessor.h
2c3e2821703459a03c37e258dd2d70fdf87efbc2 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Audit all getBuffer() callers (for both the FullSourceLoc and
SourceManager versions), updating those callers that need to recover
gracefully from failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98665 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
aae58b0c3efb5fa9f97a3e4b1c1a2d31077efe5b 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Audit all getBuffer() callers (for both the FullSourceLoc and
SourceManager versions), updating those callers that need to recover
gracefully from failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98665 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
146db93765420b4594464143f13a24fcda4bf73f 16-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix forwarding of -fno-lax-vector-conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98639 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
8c6fa84b2e4a30317b7b214a7657cb593d67773b 16-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Fix forwarding of -fno-lax-vector-conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98639 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a4b6668060ff348c352839427da6cb7b3b6f808f 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Fix header-search problems with precompiled headers, where the
presence or absence of header map arguments when using the precompiled
header would cause Clang to get confused about which headers had
already been included/imported, along with their controlling
macros. The fundamental problem is that the serialization of the
header search information was relying on the UIDs of FileEntry objects
at PCH generation time and PCH load time to be equivalent, which
effectively means that we had to probe the same files in the same
order. Differing header map arguments caused an extra FileEntry
lookup, but it's easy to imagine other minor command-line arguments
triggering this problem.

Header-search information is now encoded along with the
source-location entry for a file, so that we register information
about a file's properties as a header at the same time we create the
FileEntry for that file.

Fixes <rdar://problem/7743243>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98636 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
ex/HeaderSearch.h
12fab31aa5868b1a6b52246b5a87daa48a338fe2 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Fix header-search problems with precompiled headers, where the
presence or absence of header map arguments when using the precompiled
header would cause Clang to get confused about which headers had
already been included/imported, along with their controlling
macros. The fundamental problem is that the serialization of the
header search information was relying on the UIDs of FileEntry objects
at PCH generation time and PCH load time to be equivalent, which
effectively means that we had to probe the same files in the same
order. Differing header map arguments caused an extra FileEntry
lookup, but it's easy to imagine other minor command-line arguments
triggering this problem.

Header-search information is now encoded along with the
source-location entry for a file, so that we register information
about a file's properties as a header at the same time we create the
FileEntry for that file.

Fixes <rdar://problem/7743243>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98636 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
ex/HeaderSearch.h
12f7326e2cbd006859816b79326e9e665f902213 16-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Switch another function to StringRef instead of char pointer pairs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ceafc4b63599d14f0b5b10ff92e22bf242682dce 16-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Switch another function to StringRef instead of char pointer pairs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98631 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
5fb9b355e182d1ec046cdc061855d3ffb691e967 16-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Let SourceManager::getBufferData return StringRef instead of a pair of two const char*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f6ac97b101c8840efa92bf29166077ce4049e293 16-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Let SourceManager::getBufferData return StringRef instead of a pair of two const char*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9ed3fbc43e7e8acac2f584f19f4e4f2f05c65121 16-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add VisitCXXContructExpr logic to the analyzer. This still has not fully worked
since RemoveDeadBinding mistakenly remove the binding to CXXThisRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98629 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
c506357c3778092c2a3251243f12524e8eb89274 16-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add VisitCXXContructExpr logic to the analyzer. This still has not fully worked
since RemoveDeadBinding mistakenly remove the binding to CXXThisRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98629 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
5d9aa7f89bf11d9b37bc429199f960e3205e91e5 16-Mar-2010 John McCall <rjmccall@apple.com> Access control for implicit calls to copy assignment operators and copy
constructors from implicitly-defined members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b020748a9954c995f2e616f50bb9ed4fe2df1f72 16-Mar-2010 John McCall <rjmccall@apple.com> Access control for implicit calls to copy assignment operators and copy
constructors from implicitly-defined members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
25460408052b508d9d60153a4d29ba881758a1d5 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Don't consume tokens past the end-of-file in an @interface. Fixes
<rdar://problem/7735566>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
c3d43b783dfb1a1502aa8b31ab1985cf237b1f77 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Don't consume tokens past the end-of-file in an @interface. Fixes
<rdar://problem/7735566>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
a90c7d6d992ced031c4a790733142a89a90f9d04 16-Mar-2010 John McCall <rjmccall@apple.com> Perform access control for the implicit base and member destructor calls
required when emitting a destructor definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
58e6f34e4d2c668562e1c391162ee9de7b05fbb2 16-Mar-2010 John McCall <rjmccall@apple.com> Perform access control for the implicit base and member destructor calls
required when emitting a destructor definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
1226abb6ed8d1f9afad889d618b79fb3c7bd4e9e 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce optional "Invalid" parameters to routines that invoke the
SourceManager's getBuffer() and, therefore, could fail, along with
Preprocessor::getSpelling(). Use the Invalid parameters in the literal
parsers (string, floating point, integral, character) to make them
robust against errors that stem from, e.g., PCH files that are not
consistent with the underlying file system.

I still need to audit every use caller to all of these routines, to
determine which ones need specific handling of error conditions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Preprocessor.h
50f6af7a6d6951a63f3da7d4c5a7d3965bf73b63 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Introduce optional "Invalid" parameters to routines that invoke the
SourceManager's getBuffer() and, therefore, could fail, along with
Preprocessor::getSpelling(). Use the Invalid parameters in the literal
parsers (string, floating point, integral, character) to make them
robust against errors that stem from, e.g., PCH files that are not
consistent with the underlying file system.

I still need to audit every use caller to all of these routines, to
determine which ones need specific handling of error conditions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Preprocessor.h
331eb3639454b3470a666553cd798f32a42a9c2e 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Use SourceManager's Diagnostic object for all file-reading errors,
simplifying the SourceManager interfaces somewhat.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/SourceManager.h
36c35ba0aca641e60e5dbee8efbc620c08b9bd61 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Use SourceManager's Diagnostic object for all file-reading errors,
simplifying the SourceManager interfaces somewhat.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/SourceManager.h
40e0148c249727d064c9aef48aca7c896c8d21c1 16-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Give SourceManager a Diagnostic object with which to report errors,
and start simplifying the interfaces in SourceManager that can fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/SourceManager.h
rontend/ASTUnit.h
f715ca12bfc9fddfde75f98a197424434428b821 16-Mar-2010 Douglas Gregor <dgregor@apple.com> Give SourceManager a Diagnostic object with which to report errors,
and start simplifying the interfaces in SourceManager that can fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/SourceManager.h
rontend/ASTUnit.h
e294260bd6b733d4563d182528129f69b76b33e3 16-Mar-2010 Eric Christopher <echristo@apple.com> Add remaining sse4.1 intrinsics and builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98587 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
7bd0dfd322d7a2d6a5461dcbdb2a83fd729dd8e2 16-Mar-2010 Eric Christopher <echristo@apple.com> Add remaining sse4.1 intrinsics and builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98587 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
72898076bbfe83ff42f2c478fb10e5391948123b 15-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new BufferResult class to act as the return type of
SourceManager's getBuffer() (and similar) operations. This abstract
can be used to force callers to cope with errors in getBuffer(), such
as missing files and changed files. Fix a bunch of callers to use the
new interface.

Add some very basic checks for file consistency (file size,
modification time) into ContentCache::getBuffer(), although these
checks don't help much until we've updated the main callers (e.g.,
SourceManager::getSpelling()).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticCommonKinds.td
asic/SourceManager.h
aea67dbd653a2dd6dd5cc2159279e81e855b2482 15-Mar-2010 Douglas Gregor <dgregor@apple.com> Introduce a new BufferResult class to act as the return type of
SourceManager's getBuffer() (and similar) operations. This abstract
can be used to force callers to cope with errors in getBuffer(), such
as missing files and changed files. Fix a bunch of callers to use the
new interface.

Add some very basic checks for file consistency (file size,
modification time) into ContentCache::getBuffer(), although these
checks don't help much until we've updated the main callers (e.g.,
SourceManager::getSpelling()).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticCommonKinds.td
asic/SourceManager.h
950c119aee83ad009dad80836de21bd9a19cc676 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Move method FindPropertyVisibleInPrimaryClass() from ObjCContainerDecl to ObjCInterfaceDecl.
Also change this method to lookup property declarations using DeclContext::lookup().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
37cafb077ad5b170acae77e566638603011ef4c0 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Move method FindPropertyVisibleInPrimaryClass() from ObjCContainerDecl to ObjCInterfaceDecl.
Also change this method to lookup property declarations using DeclContext::lookup().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3ae69a5219df72a1a976ec03370cf8f78f50191e 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Change ObjCCategoryDecl::FindPropertyDeclaration() to lookup
property decls using DeclContext::lookup().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
de09d0c9694f01a99870a8825266d44a29ebb325 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Change ObjCCategoryDecl::FindPropertyDeclaration() to lookup
property decls using DeclContext::lookup().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0ce756b8d20f6ceea8e810d8ced84fe150314b1a 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Make 'findPropertyDecl()' a static method of ObjCPropertyDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9f550ff05d496e6b9480e5619a21d9da0c9e27c1 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Make 'findPropertyDecl()' a static method of ObjCPropertyDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
81cee0b6ea4b4734eac7500d36dea4262508e8be 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Add comment to CFG to 'buildCFG()' arguments indicating that scope
support is not fully implemented.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98555 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
8efb5812b8f49e6c5cb4635e39e4cacafd1ae73c 15-Mar-2010 Ted Kremenek <kremenek@apple.com> Add comment to CFG to 'buildCFG()' arguments indicating that scope
support is not fully implemented.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98555 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
64f5cbc9ca2a03280705c2af175e9047c87b7d84 15-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove useless forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2d684c2499bd80e28451c1db0e2e040ef00c53bc 15-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove useless forward decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
479f3d4f292c4bbaf42cd9bb1539df16d105975a 15-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> During C++ name lookup, use DeclContext::Equals() rather than
comparing DeclContext pointers, to avoid having to remember to call
getPrimaryContext() everywhere. This is the last part PR6594.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
dbdf5e7d0b6f1f8d8c496c1a0ada6f706cddf100 15-Mar-2010 Douglas Gregor <dgregor@apple.com> During C++ name lookup, use DeclContext::Equals() rather than
comparing DeclContext pointers, to avoid having to remember to call
getPrimaryContext() everywhere. This is the last part PR6594.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3dace0b21f73ddaca879ac59890b33a12cfa509e 15-Mar-2010 John McCall <rjmccall@apple.com> Add support for -Wwrite-strings. Patch by Mike M! Fixes PR 4804.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
4b7a834e0fecddd9eaf1f4567867c718e4eebf50 15-Mar-2010 John McCall <rjmccall@apple.com> Add support for -Wwrite-strings. Patch by Mike M! Fixes PR 4804.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
e88b6e3c31125b4bb55d60aa3b982735d308c792 15-Mar-2010 John McCall <rjmccall@apple.com> Remember declaration scope qualifiers in the AST. Imposes no memory overhead
on unqualified declarations.

Patch by Enea Zaffanella! Minimal adjustments: allocate the ExtInfo nodes
with the ASTContext and delete them during Destroy(). I audited a bunch of
Destroy methods at the same time, to ensure that the correct teardown was
being done.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b6217665c6a987f2d6c8665fd70365d7719ac4df 15-Mar-2010 John McCall <rjmccall@apple.com> Remember declaration scope qualifiers in the AST. Imposes no memory overhead
on unqualified declarations.

Patch by Enea Zaffanella! Minimal adjustments: allocate the ExtInfo nodes
with the ASTContext and delete them during Destroy(). I audited a bunch of
Destroy methods at the same time, to ensure that the correct teardown was
being done.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d2adbba2406e58a4ffefa47676b970ab656f357d 15-Mar-2010 John McCall <rjmccall@apple.com> Remember access paths for visible conversion decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98539 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b05b5f35f114505182b076aa70002843c0669beb 15-Mar-2010 John McCall <rjmccall@apple.com> Remember access paths for visible conversion decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98539 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b80c2261f94adad406167b1c50001cd290e02de2 13-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Add missing space.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b031c87ca32993fc54da732fced871bdd5b2a69e 13-Mar-2010 Rafael Espindola <rafael.espindola@gmail.com> Add missing space.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98448 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6dbd14d0949144ebc64cd964b74c1b872e62b019 13-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Use SmallString instead of SmallVector

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98436 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
193575455e00eca03fd7177f60e3f2e6263cb661 13-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Use SmallString instead of SmallVector

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98436 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
5570021146ec9ed50c891a0af626fec316db896f 12-Mar-2010 John McCall <rjmccall@apple.com> Remember whether a ParmVarDecl was spelled with a default argument or
whether it inherited one from a previous declaration.

Patch by Enea Zaffanella!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98362 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bf73b352acb7a2d041ce8b50171dd7f8e2b2c1bb 12-Mar-2010 John McCall <rjmccall@apple.com> Remember whether a ParmVarDecl was spelled with a default argument or
whether it inherited one from a previous declaration.

Patch by Enea Zaffanella!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98362 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e3bbdba82e339b894a8433a752459aef291d762a 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Make IdentifierTable::get(StringRef) "primary" (no functionality change)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
6488292f5e204fed99bb43ab23b8342ddc03ce89 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Make IdentifierTable::get(StringRef) "primary" (no functionality change)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
a77101d10a81e558346c1a7b9ed5b6f6ecc06c07 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Add IdentifierTable::get() overload and start using it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98343 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
811f4267aa1ebd727c31594b8ed94048e2c10ad6 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Add IdentifierTable::get() overload and start using it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98343 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
038358998fe2a143f33fade9b4f09a4eecb620fc 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Cleanup using StringRef

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
2781deb126663ca1bd412044a1e66577585987b3 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Cleanup using StringRef

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
8e7cf4fc3dbd3bef86bb9cbb15253e7b702ceaa7 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Switch over IdentifierInfoLookup to StringRef

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98337 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/PTHManager.h
700030ebddb987936d4fee14d9412821d96e4840 12-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Switch over IdentifierInfoLookup to StringRef

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98337 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/PTHManager.h
897c3169affd0817efe175993965ad4ad2739dc0 12-Mar-2010 John McCall <rjmccall@apple.com> Extend the builtin syntax to allow address-space qualifiers on pointers and
references. Based on a patch by Arnaud de Grandmaison!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98327 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
187ab37a05b8f7015b9f39cc8cd9129a0c6d0b48 12-Mar-2010 John McCall <rjmccall@apple.com> Extend the builtin syntax to allow address-space qualifiers on pointers and
references. Based on a patch by Arnaud de Grandmaison!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98327 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
0612eb975cad24213aee96e8d6746d781f764cf6 12-Mar-2010 Eric Christopher <echristo@apple.com> Add SSE4 packed integer comparisons and corresponding intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
0c2b4f40ac17156a424d4faa20ba5d862ecc8416 12-Mar-2010 Eric Christopher <echristo@apple.com> Add SSE4 packed integer comparisons and corresponding intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
e67d87863563c575c611fe2d45cc0aac5ad3330c 12-Mar-2010 John McCall <rjmccall@apple.com> Implement basic support for friend types and functions in non-dependent
contexts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclFriend.h
d60e22e601852ae1345f01514318a0951dc09f89 12-Mar-2010 John McCall <rjmccall@apple.com> Implement basic support for friend types and functions in non-dependent
contexts.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclFriend.h
755efc993c384007d8eb0c97a54288b3aaaa1dbc 11-Mar-2010 Ted Kremenek <kremenek@apple.com> For ivars created using @synthesize, set their DeclContext to be
the @implementation (instead of the @interface) and actually add
the ivar to the DeclContext (which we weren't doing before).

This allows us to simplify ASTContext::CollectNonClassIvars() by
removing ASTContext::CollectProtocolSynthesizedIvars(). Now all
ivars can be found by either inspecting the ObjCInterfaceDecl and
its companion ObjCImplementationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7d2aa11c5c3b85a9d727ff868de666ba3bff5b59 11-Mar-2010 Ted Kremenek <kremenek@apple.com> For ivars created using @synthesize, set their DeclContext to be
the @implementation (instead of the @interface) and actually add
the ivar to the DeclContext (which we weren't doing before).

This allows us to simplify ASTContext::CollectNonClassIvars() by
removing ASTContext::CollectProtocolSynthesizedIvars(). Now all
ivars can be found by either inspecting the ObjCInterfaceDecl and
its companion ObjCImplementationDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bdf5263c109e7147dad6d27e372280f1614072a6 11-Mar-2010 John McCall <rjmccall@apple.com> Warn about comparing an unsigned expression with 0 in tautological ways.
Patch by mikem!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d1b47bf17fde73fac67d8664bd65273742c00ecd 11-Mar-2010 John McCall <rjmccall@apple.com> Warn about comparing an unsigned expression with 0 in tautological ways.
Patch by mikem!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
652f18e702323dd3dd9179b11b46196760bce9bd 11-Mar-2010 John McCall <rjmccall@apple.com> Implement -Wmissing-field-initializers. Patch by mikem!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
80639debfb2d90b2f1ffdbcd9a391f744cb0a393 11-Mar-2010 John McCall <rjmccall@apple.com> Implement -Wmissing-field-initializers. Patch by mikem!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
8d766796bdcdde4476d8b2c618a1bde8b3d7f058 11-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Add tentative support for accessing local variables with
external linkage (static, extern, etc.) in blocks in
rewriter. wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6cb6eb4c792b504ad652d9230640656852e18ee9 11-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Add tentative support for accessing local variables with
external linkage (static, extern, etc.) in blocks in
rewriter. wip.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
81021af73452240c8ac822400dbce9aaf4db99af 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free Action objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98263 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
32c1a2ae8b31f32e478c8e504ed81db8c8d25713 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free Action objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98263 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
061484b534350106d6d5b25fc25f0e56a9075efa 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free synthesized derived arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98262 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
fd48cb31d409cb1f8e1f119426965e498652e2d1 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free synthesized derived arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98262 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
f63023e069af1cf8dd3a890193903b40a73e73c8 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free jobs in JobList and PipedJob instances.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98261 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
9d44023453094832ada2770941e9e4c96ce0e75e 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> Driver: Free jobs in JobList and PipedJob instances.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98261 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
e62539e7e553de6a944f5662e9ad4d3b6efc73a7 11-Mar-2010 John McCall <rjmccall@apple.com> Split C++ friend declarations into their own header/implementation file.
I'm expecting this portion of the AST to grow and change, and I'd like to
be able to do that with minimal recompilation. If this proves unnecessary
when access control is fully-implemented, I'll fold the classes back into
DeclCXX.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclVisitor.h
92b7f70c924cbf4514e9e434cea7def51ab49860 11-Mar-2010 John McCall <rjmccall@apple.com> Split C++ friend declarations into their own header/implementation file.
I'm expecting this portion of the AST to grow and change, and I'd like to
be able to do that with minimal recompilation. If this proves unnecessary
when access control is fully-implemented, I'll fold the classes back into
DeclCXX.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclFriend.h
ST/DeclVisitor.h
388749b8c3c70bbf5dfb8823d173d9ee4e7e4239 11-Mar-2010 Anders Carlsson <andersca@mac.com> Replace the class offset vectors in RecordLayoutBuilder with maps instead so we'll have faster lookup and so we can detect duplicates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
147b5ddc6c8618a9d70a83f90de409e444ae705b 11-Mar-2010 Anders Carlsson <andersca@mac.com> Replace the class offset vectors in RecordLayoutBuilder with maps instead so we'll have faster lookup and so we can detect duplicates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
d880d5093e51b7190fe22be5d7ffab982fe8ca48 11-Mar-2010 Ted Kremenek <kremenek@apple.com> Remove unused 'IVars' field from ObjCInterfaceDecl. That functionality
has migrated to DeclContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
568eb6c87896db19dfb27b394669e05b8cbb27b3 11-Mar-2010 Ted Kremenek <kremenek@apple.com> Remove unused 'IVars' field from ObjCInterfaceDecl. That functionality
has migrated to DeclContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
98624359b74071fdf2575b5b1afb5d3a3a86b4a3 10-Mar-2010 John McCall <rjmccall@apple.com> When pretty-printing tag types, only print the tag if we're in C (and
therefore not creating ElaboratedTypes, which are still pretty-printed
with the written tag).

Most of these testcase changes were done by script, so don't feel too
sorry for my fingers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
7c2342dd4c9947806842e5aca3d2bb2e542853c9 10-Mar-2010 John McCall <rjmccall@apple.com> When pretty-printing tag types, only print the tag if we're in C (and
therefore not creating ElaboratedTypes, which are still pretty-printed
with the written tag).

Most of these testcase changes were done by script, so don't feel too
sorry for my fingers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
6d7b68bd47850e53cdb0b9a7872675ea43715566 10-Mar-2010 John McCall <rjmccall@apple.com> Allow the fast path through ASTContext::getTypeDeclType to be inlined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
becb8d5a6ab5103393eac5344ae69bcb860601dd 10-Mar-2010 John McCall <rjmccall@apple.com> Allow the fast path through ASTContext::getTypeDeclType to be inlined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cf782a9505cc3747309933f6a245600bfb6fd285 10-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add use-after-free check to MallocChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98136 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SVals.h
c8023788ace75cf0a0417b9b88e643ceebae91e2 10-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add use-after-free check to MallocChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98136 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SVals.h
55851d6d117e79db3a891bcb821acd19592b2178 10-Mar-2010 John McCall <rjmccall@apple.com> Create a new InjectedClassNameType to represent bare-word references to the
injected class name of a class template or class template partial specialization.
This is a non-canonical type; the canonical type is still a template
specialization type. This becomes the TypeForDecl of the pattern declaration,
which cleans up some amount of code (and complicates some other parts, but
whatever).

Fixes PR6326 and probably a few others, primarily by re-establishing a few
invariants about TypeLoc sizes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
3cb0ebd5f76abcb776f7cb4062bd79e3268c0dc4 10-Mar-2010 John McCall <rjmccall@apple.com> Create a new InjectedClassNameType to represent bare-word references to the
injected class name of a class template or class template partial specialization.
This is a non-canonical type; the canonical type is still a template
specialization type. This becomes the TypeForDecl of the pattern declaration,
which cleans up some amount of code (and complicates some other parts, but
whatever).

Fixes PR6326 and probably a few others, primarily by re-establishing a few
invariants about TypeLoc sizes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
d86c6299ce44f713f34f278d3fc589693bc38415 09-Mar-2010 John McCall <rjmccall@apple.com> Value-initialize the written-builtin-specifiers field of DeclSpec, which
wasn't being initialized properly along the implicit-definition path.
Found by the valgrind buildbot.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98093 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
b91570a51f9c9583bb27fdfe43ce9c487623999a 09-Mar-2010 John McCall <rjmccall@apple.com> Value-initialize the written-builtin-specifiers field of DeclSpec, which
wasn't being initialized properly along the implicit-definition path.
Found by the valgrind buildbot.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98093 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
f769e8ab4bd15a1552a6f198a2cd34afa1f02d9a 08-Mar-2010 Ted Kremenek <kremenek@apple.com> Allocate ASTRecordLayout objects using the allocator associated with ASTContext.
This allows them to be allocated using a BumpPtrAllocated
in the common case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97978 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
503524acc73f2f8280080ca0d200377406001b65 08-Mar-2010 Ted Kremenek <kremenek@apple.com> Allocate ASTRecordLayout objects using the allocator associated with ASTContext.
This allows them to be allocated using a BumpPtrAllocated
in the common case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97978 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
d9e98228e366032d84834ed1c32b202d158eb3e1 08-Mar-2010 John McCall <rjmccall@apple.com> Rename -Wbad-literal to -Wliteral-range.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9fd4f8989725aa430c0962ced3bb4c8a2662dc3b 08-Mar-2010 John McCall <rjmccall@apple.com> Rename -Wbad-literal to -Wliteral-range.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f632112b74a7bf5cf966420526faaa6f299ca6e5 08-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Improve XML output for C++ classes, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97954 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
07425c9ae12e62572eebc541522c70a73a819c2b 08-Mar-2010 Douglas Gregor <dgregor@apple.com> Improve XML output for C++ classes, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97954 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
f03f5f6c50378476d7fd10edfa0ed8f4c01e38da 08-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Extend ObjCMessageExpr for class method sends with the source location
of the class name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
c2350e553b853ad00914faf23fa731e5fc4a8a5c 08-Mar-2010 Douglas Gregor <dgregor@apple.com> Extend ObjCMessageExpr for class method sends with the source location
of the class name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
44032ab343048030bd4332b3e5ccb59974908918 08-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of type source information in the return type of an
Objective-C method declaration, e.g., for

- (Foo *)myMethod;

we now have TypeSourceInfo for the Foo*.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4bc1cb6aa635a5bf8fae99bf69c56c724c1e786c 08-Mar-2010 Douglas Gregor <dgregor@apple.com> Keep track of type source information in the return type of an
Objective-C method declaration, e.g., for

- (Foo *)myMethod;

we now have TypeSourceInfo for the Foo*.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a6e3243b91839273ab7e8645d35f8a80b240615c 08-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Downgrade errors when trying to catch a pointer or reference to
incomplete type to warnings; GCC (and EDG in GCC compatibility mode)
permit such handles. Fixes PR6527.

(For real this time)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97927 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a2762918ecc636c9af207ce2a9ce705edad2a444 08-Mar-2010 Douglas Gregor <dgregor@apple.com> Downgrade errors when trying to catch a pointer or reference to
incomplete type to warnings; GCC (and EDG in GCC compatibility mode)
permit such handles. Fixes PR6527.

(For real this time)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97927 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fb43c41d0b8a23d74b0067195e6ad8467251e299 07-Mar-2010 Chris Lattner <sabre@nondot.org> implement support for -Wno-deprecated, PR6534. While
I'm in there, change the altivec diagnostics to use 'double'
instead of "double" for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
ffaf4c5eb68718841399fc4396f6d53fedad24e2 07-Mar-2010 Chris Lattner <sabre@nondot.org> implement support for -Wno-deprecated, PR6534. While
I'm in there, change the altivec diagnostics to use 'double'
instead of "double" for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
43c2d99f703df1da9b6fd52e46f9c53990250ca4 07-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Rename to addPPCallbacks since we're effectively adding a callback and maybe chaining it to an existing one

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97913 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
a5d10c4df435964600e104ebef6a96b106e416b7 07-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Rename to addPPCallbacks since we're effectively adding a callback and maybe chaining it to an existing one

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97913 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
30f378ff6f3bc0d5babb16ec177be37751357172 07-Mar-2010 Eric Christopher <echristo@apple.com> Add in movntdqa intrinsic for load hint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
d6b162e7e6f0cc2be634f16f023b65db546cdc4e 07-Mar-2010 Eric Christopher <echristo@apple.com> Add in movntdqa intrinsic for load hint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97903 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
7184506fdebed93034d74600134818b373c44f0c 07-Mar-2010 Eric Christopher <echristo@apple.com> Add in dot product intrinsics for dpps and dppd.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97901 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
31b2ac71e40c02cb587ebcc24361a6f94f87a7c7 07-Mar-2010 Eric Christopher <echristo@apple.com> Add in dot product intrinsics for dpps and dppd.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97901 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
d0f1f3f71e8712cd32ebcf013519620f31d3e81a 07-Mar-2010 Tanya Lattner <tonic@nondot.org> Implement missing-braces warning and add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1e1d396dc55002a2a6355048db542a38b5137002 07-Mar-2010 Tanya Lattner <tonic@nondot.org> Implement missing-braces warning and add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97893 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
29a293a8c5e1679cfdfdbd598d989ede5720eff5 06-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Lowercase for consistency

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97878 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
e51dd7be67808d52c80c09b832d875e9655ce6e0 06-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Lowercase for consistency

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97878 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
dcd6adcc33de98d6c94c52f208b7f1408d78d3d6 06-Mar-2010 Eli Friedman <eli.friedman@gmail.com> PR6515: Implement __builtin_signbit and friends.

I'm reasonably sure my implementation is correct, but it would be nice if
someone could double-check.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
ba68b08a05587490ed4c2e3d26f3a742c995c660 06-Mar-2010 Eli Friedman <eli.friedman@gmail.com> PR6515: Implement __builtin_signbit and friends.

I'm reasonably sure my implementation is correct, but it would be nice if
someone could double-check.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
704334111420dc14e5787355626a903b34298bd2 05-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to build qualifier on objective-c
pointer types. Fixes radar 7626768.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a42286486c85402c65f9d30df17e6b1b037a6ade 05-Mar-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to build qualifier on objective-c
pointer types. Fixes radar 7626768.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cbc507a3f3660cfa5f3e5e745411b7a4efcf6183 05-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> The Windows build is just too weird; there's no real cost to doing the concurrency checks for ASTUnit in all builds

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97840 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
667514d92afd1485765cb4e2bbe452883adc989b 05-Mar-2010 Douglas Gregor <dgregor@apple.com> The Windows build is just too weird; there's no real cost to doing the concurrency checks for ASTUnit in all builds

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97840 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
4ae8f6b1ae99f3c56057508e840a8d00dcc0e755 05-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Switch from NDEBUG to _DEBUG, since our Windows build is funny

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97835 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
12312b807e7c00504c2e5b3b5e2d11bfbca4b8d8 05-Mar-2010 Douglas Gregor <dgregor@apple.com> Switch from NDEBUG to _DEBUG, since our Windows build is funny

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97835 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
3ccc4b432a29f24fc459f847c42a50521efd5f6e 05-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Only make __ptr64 and __w64 keywords when Microsoft extensions are enabled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
47c27a60b70d879495355833b0d6584c8d12296b 05-Mar-2010 Douglas Gregor <dgregor@apple.com> Only make __ptr64 and __w64 keywords when Microsoft extensions are enabled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
827cd390c1e7909937b6c1354a5f6befa1e132ce 05-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> A little hack to identify unwanted concurrency in CIndex

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97831 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
bdf6062bc10aa3b73b16402b440b8073310acd06 05-Mar-2010 Douglas Gregor <dgregor@apple.com> A little hack to identify unwanted concurrency in CIndex

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97831 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
19b65de9c64b1b4ef4d1300a725ebde33c200b1d 05-Mar-2010 Chris Lattner <sabre@nondot.org> Emit warning on indirect goto that potentially violates
scope instead of error, PR6517


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
02db31c62ae6c68b5cbbecd09acbbc09bc03d110 05-Mar-2010 Chris Lattner <sabre@nondot.org> Emit warning on indirect goto that potentially violates
scope instead of error, PR6517


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
69ce237e87c38ff60784afe9bec296f5414f9204 05-Mar-2010 Chris Lattner <sabre@nondot.org> address PR6502 by downgrading the scope checker's address
of label error to a warning controllable with a -W flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97815 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fc3a0700bd63716b89eaabfd6a3da34019ffdb2e 05-Mar-2010 Chris Lattner <sabre@nondot.org> address PR6502 by downgrading the scope checker's address
of label error to a warning controllable with a -W flag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97815 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e8cb63ddda3c7d3c4f641715bd2bc9f6d1ed61b2 05-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove reference to AnalysisContext in Environment. We already have LocationContext
information in ExplodedNode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97785 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/SymbolManager.h
c179a7fbb294fe3ff6cf5479f6239a10f39628c7 05-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove reference to AnalysisContext in Environment. We already have LocationContext
information in ExplodedNode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97785 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/SymbolManager.h
e9bc8eb41210a241e1b402366f4810c531b15918 05-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> When we invalidate a declaration, make it public, so that it doesn't
trigger access control or one of the many assertions we have for valid
access specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
42738573253da1bd61f9c44f8d77f600d3b0cd1c 05-Mar-2010 Douglas Gregor <dgregor@apple.com> When we invalidate a declaration, make it public, so that it doesn't
trigger access control or one of the many assertions we have for valid
access specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
8a1db93ddce4c6d7c81ce433b512806f3ed4f5b1 04-Mar-2010 Chris Lattner <sabre@nondot.org> add TCE target support, patch by Pekka J!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97746 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
3a47c4e0a3e8d13ee4fb06cc3a98f9cfa9982400 04-Mar-2010 Chris Lattner <sabre@nondot.org> add TCE target support, patch by Pekka J!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97746 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
72472f40fac205d41f7ba787c1071634820f3249 04-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> The FIXME is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97725 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
a857389a7d0dc24e3c89783939232d927391e66e 04-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> The FIXME is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97725 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
dca9e9898d5106e4634b07a795a4b425674eb8fe 04-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> When profiling Environment, also profile with AnalysisContext*, bacause
we now may have identical states with different analysis context.

Set the right AnalysisContext in state when entering and leaving a callee.

With both of the above changes, we can pass the test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97724 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
57d3b76761bdba265769deb497afa784935602be 04-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> When profiling Environment, also profile with AnalysisContext*, bacause
we now may have identical states with different analysis context.

Set the right AnalysisContext in state when entering and leaving a callee.

With both of the above changes, we can pass the test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97724 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Environment.h
hecker/PathSensitive/GRState.h
f889e52574b00be87e112ae29e2bc57db24f78e7 04-Mar-2010 John McCall <rjmccall@apple.com> Revert changes r97693, r97700, and r97718.

Our testing framework can't deal with disabled targets yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97719 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
468ec6c0266e48fccb26ce50d5b915c645bb3c7b 04-Mar-2010 John McCall <rjmccall@apple.com> Revert changes r97693, r97700, and r97718.

Our testing framework can't deal with disabled targets yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97719 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
850e20192ea602882f196f53457f9073a0bba1f4 04-Mar-2010 Eric Christopher <echristo@apple.com> Add in -msse4.1 and -msse4.2 options and continuing a rather
hacky solution for translating. Expanded on comment explaining
the hack a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97714 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
d39ebe2d2a24a331b89465191dce061fd9c6b5e4 04-Mar-2010 Eric Christopher <echristo@apple.com> Add in -msse4.1 and -msse4.2 options and continuing a rather
hacky solution for translating. Expanded on comment explaining
the hack a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97714 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
8cef3bac6f95ba6151becfa04577ae8ef6937f6b 04-Mar-2010 Eric Christopher <echristo@apple.com> Fix __builtin_ia32_roundss and __builtin_ia32_roundsd definitions.
Re-enable test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97707 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
2ac7472f87cdb157f23ef47422d3dcf1bc66013a 04-Mar-2010 Eric Christopher <echristo@apple.com> Fix __builtin_ia32_roundss and __builtin_ia32_roundsd definitions.
Re-enable test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97707 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
bbdb752100cfd5649ea5e1264e5be51950bdac25 04-Mar-2010 John McCall <rjmccall@apple.com> Create a TargetMachine whenever we create a CodeGenAction. The codegen of
some builtins will rely on target knowledge.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97693 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
c9fe644675503894e9e76e8ecd8e6519426548de 04-Mar-2010 John McCall <rjmccall@apple.com> Create a TargetMachine whenever we create a CodeGenAction. The codegen of
some builtins will rely on target knowledge.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97693 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
b45275280c16fb078d3eb2826a829a75eeb1fc89 03-Mar-2010 Chris Lattner <sabre@nondot.org> add framework for ARM builtins, Patch by Edmund Grimley Evans!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
asic/TargetBuiltins.h
2752c0137d95aa2f4ee1cdff4b564bac842e041b 03-Mar-2010 Chris Lattner <sabre@nondot.org> add framework for ARM builtins, Patch by Edmund Grimley Evans!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsARM.def
asic/TargetBuiltins.h
09039e83ed2d4679928c69865dc19a8a1ffbfb5a 03-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Implement name hiding for names found through virtual base subobjects
that are hidden by other derived base subobjects reached along a
lookup path that does *not* pass through the hiding subobject (C++
[class.member.lookup]p6). Fixes PR6462.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
4e6ba4be8ddeca2978da6b9bae02cbe9594f2ef4 03-Mar-2010 Douglas Gregor <dgregor@apple.com> Implement name hiding for names found through virtual base subobjects
that are hidden by other derived base subobjects reached along a
lookup path that does *not* pass through the hiding subobject (C++
[class.member.lookup]p6). Fixes PR6462.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e63aca1ffde2b363bbce66847a14672c354e6149 03-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Refactor CXXRecordDecl::lookupInBases() to push the recursion down a
level. No functionality change, and it obeys access control this
time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
89b7702c9a64e12093ed34fc02dc3cfbb6eb133a 03-Mar-2010 Douglas Gregor <dgregor@apple.com> Refactor CXXRecordDecl::lookupInBases() to push the recursion down a
level. No functionality change, and it obeys access control this
time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
38e21c3676cc46ef0ed2f3c2a09b7c5dc8d1384e 03-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Initialize your storage, dummy

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e4687ef4b9c72e1c476fce27d0abc1a2f78f739c 03-Mar-2010 Douglas Gregor <dgregor@apple.com> Initialize your storage, dummy

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0464fbe197b98ca4154939e3964b615d02729635 03-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the static map of overridden C++ methods, which was going to
come back to bite us at some point.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97607 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7d10b7eb670b821741b4c96f6cf7afbc3bb39abe 03-Mar-2010 Douglas Gregor <dgregor@apple.com> Eliminate the static map of overridden C++ methods, which was going to
come back to bite us at some point.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97607 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
da0d7e9f109e25fe13406cf43f83b51bbce0d2f1 02-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Bump the default maximum template-instantiation depth to 500, as in
GCC. Fixes PR6301.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
0268181bf8e1e561e2a51474ffad9f46b1c3f85d 02-Mar-2010 Douglas Gregor <dgregor@apple.com> Bump the default maximum template-instantiation depth to 500, as in
GCC. Fixes PR6301.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
befd3eac9dd217a76f139bddc714f35e26688467 02-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Diagnose the declaration of enum templates. Also, be a bit more
careful about value-dependent enumerators. Fixes PR5786.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
9b9edd619a7e616d3287435cb5a3f9b1aea648e8 02-Mar-2010 Douglas Gregor <dgregor@apple.com> Diagnose the declaration of enum templates. Also, be a bit more
careful about value-dependent enumerators. Fixes PR5786.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
4eb288f0e3e0faefaad0df73ab5cfba8fa260d28 02-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Move Emit24 to clang::io

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97569 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
be08ac7afbb2aca5f6718687787658a928599b21 02-Mar-2010 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Move Emit24 to clang::io

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97569 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
77bc0861dbaa71d07b49cfc29d5b4db6cf9f1c01 02-Mar-2010 John McCall <rjmccall@apple.com> Inspired by seeing "MIPS" go by in the commits, I've gone ahead and
implemented a (codegen) target hook for __builtin_extend_pointer.
I'm also making it return a uint64_t instead of an unsigned word; this
comports with typical usage (i.e. the one use I know of).

I don't know if any of the existing targets requires this hook to be
set (other than x86 and x86_64, which I know do not).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97547 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d0b76ca10feefcfda5cb16698e50197e87a7d876 02-Mar-2010 John McCall <rjmccall@apple.com> Inspired by seeing "MIPS" go by in the commits, I've gone ahead and
implemented a (codegen) target hook for __builtin_extend_pointer.
I'm also making it return a uint64_t instead of an unsigned word; this
comports with typical usage (i.e. the one use I know of).

I don't know if any of the existing targets requires this hook to be
set (other than x86 and x86_64, which I know do not).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97547 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
28bbcd9f68afe54de87957346328c8165afec53a 02-Mar-2010 John McCall <rjmccall@apple.com> After much consultation aimed at figuring out what this builtin actually
does, document the results and then implement __builtin_extend_pointer for
platforms where it's a no-op.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5e11085830d4d4c53ff75575ab75889ee5126854 02-Mar-2010 John McCall <rjmccall@apple.com> After much consultation aimed at figuring out what this builtin actually
does, document the results and then implement __builtin_extend_pointer for
platforms where it's a no-op.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
0d432abff06e87a821e4b337339857ff8ea713a4 02-Mar-2010 John McCall <rjmccall@apple.com> Split out types that are non-canonical unless dependent as their own
category. Use this in a few places to eliminate unnecessary TST cases and
do some future-proofing. Provide terrible manglings for typeof. Mangle
decltype with some hope of accuracy.

Our manglings for some of the cases covered in the testcase are different
from gcc's, which I've raised as an issue with the ABI list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeNodes.def
ad5e73887052193afda72db8efcb812bd083a4a8 02-Mar-2010 John McCall <rjmccall@apple.com> Split out types that are non-canonical unless dependent as their own
category. Use this in a few places to eliminate unnecessary TST cases and
do some future-proofing. Provide terrible manglings for typeof. Mangle
decltype with some hope of accuracy.

Our manglings for some of the cases covered in the testcase are different
from gcc's, which I've raised as an issue with the ABI list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeNodes.def
1087f6972103fe8a2e0a5026745dc8a9b352b483 02-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Unbreak the build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97519 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
d6d4fcf7fd2cdb8c75e6feb5ab1a7132784e96e1 02-Mar-2010 Douglas Gregor <dgregor@apple.com> Unbreak the build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97519 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
d7f8107698d90ee34b13606ffcb2c1b217e0d69f 02-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Keep an explicit stack of function and block scopes, each element of
which has the label map, switch statement stack, etc. Previously, we
had a single set of maps in Sema (for the function) along with a stack
of block scopes. However, this lead to funky behavior with nested
functions, e.g., in the member functions of local classes.

The explicit-stack approach is far cleaner, and we retain a 1-element
cache so that we're not malloc/free'ing every time we enter a
function. Fixes PR6382.

Also, tweaked the unused-variable warning suppression logic to look at
errors within a given Scope rather than within a given function. The
prior code wasn't looking at the right number-of-errors count when
dealing with blocks, since the block's count would be deallocated
before we got to ActOnPopScope. This approach works with nested
blocks/functions, and gives tighter error recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97518 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
9ea9bdbc14374f7bacdb50d3e52c664ff12150ff 02-Mar-2010 Douglas Gregor <dgregor@apple.com> Keep an explicit stack of function and block scopes, each element of
which has the label map, switch statement stack, etc. Previously, we
had a single set of maps in Sema (for the function) along with a stack
of block scopes. However, this lead to funky behavior with nested
functions, e.g., in the member functions of local classes.

The explicit-stack approach is far cleaner, and we retain a 1-element
cache so that we're not malloc/free'ing every time we enter a
function. Fixes PR6382.

Also, tweaked the unused-variable warning suppression logic to look at
errors within a given Scope rather than within a given function. The
prior code wasn't looking at the right number-of-errors count when
dealing with blocks, since the block's count would be deallocated
before we got to ActOnPopScope. This approach works with nested
blocks/functions, and gives tighter error recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97518 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
3cf7ccad96dc226ba1629be8545cddbbc000806d 01-Mar-2010 Chris Lattner <sabre@nondot.org> Implement jump checking for initialized c++ variables, implementing
a fixme and PR6451.

Only perform jump checking if the containing function has no errors,
and add the infrastructure needed to do this.

On the testcase in the PR, we produce:

t.cc:6:3: error: illegal goto into protected scope
goto later;
^
t.cc:7:5: note: jump bypasses variable initialization
X x;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6d97e5e4b7abdae710c2548b51f4ed0298e86d80 01-Mar-2010 Chris Lattner <sabre@nondot.org> Implement jump checking for initialized c++ variables, implementing
a fixme and PR6451.

Only perform jump checking if the containing function has no errors,
and add the infrastructure needed to do this.

On the testcase in the PR, we produce:

t.cc:6:3: error: illegal goto into protected scope
goto later;
^
t.cc:7:5: note: jump bypasses variable initialization
X x;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bbba89cb63b719b3295ee0955c6e8806e8012a13 01-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> Robustify instantiation of templates when there are errors in the
template definition. Do this both by being more tolerant of errors in
our asserts and by not dropping a variable declaration completely when
its initializer is ill-formed. Fixes the crash-on-invalid in PR6375,
but not the original issue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97463 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
00225547b51b42f7400eed36475b6672418a1151 01-Mar-2010 Douglas Gregor <dgregor@apple.com> Robustify instantiation of templates when there are errors in the
template definition. Do this both by being more tolerant of errors in
our asserts and by not dropping a variable declaration completely when
its initializer is ill-formed. Fixes the crash-on-invalid in PR6375,
but not the original issue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97463 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
4d11decf65a50cde9780eb46f92e7f7c90117856 01-Mar-2010 Douglas Gregor <doug.gregor@gmail.com> When looking for the instantiated declaration that corresponds to a
given declaration in a template, make sure that the context we're
searching through is complete. Fixes PR6376.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97444 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7c1e98f1cb37b40e619a0c8aee8b337f037b432b 01-Mar-2010 Douglas Gregor <dgregor@apple.com> When looking for the instantiated declaration that corresponds to a
given declaration in a template, make sure that the context we're
searching through is complete. Fixes PR6376.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97444 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1c9bebef96489ae7486ddc68449f3e043bf61074 01-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Since now we store the cast type with an ElementRegion, there is
no need to store a type with SymbolRegionValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97437 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
14d2328ecfc5102b077fa2c2c129dce1574c8831 01-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Since now we store the cast type with an ElementRegion, there is
no need to store a type with SymbolRegionValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97437 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
8bba8d7d4a3081b61bccb3230e607a2d7c0560cb 01-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97435 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SymbolManager.h
a51ff6380664b4846d846a4aee054668d89fa7d8 01-Mar-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97435 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SymbolManager.h
0cc133ed9027ddedb91c47539db95e83d50b203a 28-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Pass '-no-canonical-prefixes' on down to GCC. It's not specific to the Clang
driver and was in fact based on a feature in GCC. =]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97424 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
3363b35e518c28b504d4a600dc8cb168324b17d5 28-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Pass '-no-canonical-prefixes' on down to GCC. It's not specific to the Clang
driver and was in fact based on a feature in GCC. =]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97424 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
30d0edb5d589794e41e3cd2f293bc311f03cf2c6 28-Feb-2010 Chris Lattner <sabre@nondot.org> pull some altivec stuff out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97405 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1b49242de4e8bc718d7611c33a1d76ce35864020 28-Feb-2010 Chris Lattner <sabre@nondot.org> pull some altivec stuff out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97405 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
97d35a2f4f6cb1cc51e48cfd1841c7fd5a5f5377 28-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Warn about the deprecated string literal -> char* conversion. Fixes PR6428.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97404 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a9bff30776888977f580c9cac212fd1583ee963e 28-Feb-2010 Douglas Gregor <dgregor@apple.com> Warn about the deprecated string literal -> char* conversion. Fixes PR6428.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97404 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7e8e79e3189954e597867eb91104ff761f80be92 28-Feb-2010 Chris Lattner <sabre@nondot.org> Implement PR6423 by using one token of lookahead to disambiguate
an *almost* always incorrect case. This only does the lookahead
in the insanely unlikely case, so it shouldn't impact performance.

On this testcase:

struct foo {
}
typedef int x;

Before:

t.c:3:9: error: cannot combine with previous 'struct' declaration specifier
typedef int x;
^

After:

t.c:2:2: error: expected ';' after struct
}
^
;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97403 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b3a4e432c90be98c6d918087750397e86d030368 28-Feb-2010 Chris Lattner <sabre@nondot.org> Implement PR6423 by using one token of lookahead to disambiguate
an *almost* always incorrect case. This only does the lookahead
in the insanely unlikely case, so it shouldn't impact performance.

On this testcase:

struct foo {
}
typedef int x;

Before:

t.c:3:9: error: cannot combine with previous 'struct' declaration specifier
typedef int x;
^

After:

t.c:2:2: error: expected ';' after struct
}
^
;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97403 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0e0d6f7b998e5e1e445e460c5b628c019a5a078b 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Move method out-of-line. I thought this would be a candidate for inlining but I was wrong.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97330 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
51f5fe3f2527cd1640d798d8d134268b14de3e86 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Move method out-of-line. I thought this would be a candidate for inlining but I was wrong.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97330 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
882a9fe532294c81483fc7fb122c8e5b98a53bd8 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix thinko.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97323 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
a15e7eaea9e63f58d1a7e72ed167cbb244da438a 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix thinko.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97323 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
62755a5da7e2f51f0d1794024f58bd3797457dd6 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Add an overload of Preprocessor::getSpelling which takes a SmallVector and
returns a StringRef. Use it to simplify some repetitive code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97322 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ddeea5644367c9c153c9fee9e51bdea85ce43cbd 27-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Add an overload of Preprocessor::getSpelling which takes a SmallVector and
returns a StringRef. Use it to simplify some repetitive code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97322 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
42a563bcf606a8d7ee96a367b0ee96028bef15e3 27-Feb-2010 Ted Kremenek <kremenek@apple.com> Add reference to positional arguments documentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
de431c2dc7ec3592327ab23ae315fc915c549f05 27-Feb-2010 Ted Kremenek <kremenek@apple.com> Add reference to positional arguments documentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
62f46195bb61f91f9b3b476f4dcfa10126c18ff2 27-Feb-2010 Ted Kremenek <kremenek@apple.com> For printf format string checking, add support for positional format strings.
Along the way, coelesce some of the diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97297 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
efaff195ba1fa55b6fe0b0b2435b81451387d241 27-Feb-2010 Ted Kremenek <kremenek@apple.com> For printf format string checking, add support for positional format strings.
Along the way, coelesce some of the diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97297 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
372a8301ff5f833ee54ed0f9bd64803c4082bda6 27-Feb-2010 John McCall <rjmccall@apple.com> Put BadLiteral in the NonGCC group. I'd completely forgotten about this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
e71ef1a4235af7259fcd3a820ca28e2fbd35d169 27-Feb-2010 John McCall <rjmccall@apple.com> Put BadLiteral in the NonGCC group. I'd completely forgotten about this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97286 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
590e10016ca12b2a462099ae29801cc412fa8edd 27-Feb-2010 John McCall <rjmccall@apple.com> At sabre's request, drop the FP bounds diagnostics down to warnings and file
them under -Wbad-literal. They're still on by default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
2a0d7574acaa3a8d516e9ae4b720755460ebe8a8 27-Feb-2010 John McCall <rjmccall@apple.com> At sabre's request, drop the FP bounds diagnostics down to warnings and file
them under -Wbad-literal. They're still on by default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
42f1adfc93e40ec0d8d4e7ceaac2dd664b1cb727 26-Feb-2010 Ted Kremenek <kremenek@apple.com> For printf format string checking, move the tracking of the data argument index out of
Sema and into analyze_printf::ParseFormatString(). Also use a bitvector to determine
what arguments have been covered (instead of just checking to see if the last argument consumed is the max argument). This is prep. for support positional arguments (an IEEE extension).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97248 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
7f70dc85d5055c19c8003f43a59135de211ad1b9 26-Feb-2010 Ted Kremenek <kremenek@apple.com> For printf format string checking, move the tracking of the data argument index out of
Sema and into analyze_printf::ParseFormatString(). Also use a bitvector to determine
what arguments have been covered (instead of just checking to see if the last argument consumed is the max argument). This is prep. for support positional arguments (an IEEE extension).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97248 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
3ec1c920afae810cb73194dee7e3280e7ffbc786 26-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Make the destructor public. ddunbar, lemme know if you'd prefer a different
fix, just trying to get the build bots happy again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97223 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
f84df9f076038ad16e1ee412162c328cd091bc59 26-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Make the destructor public. ddunbar, lemme know if you'd prefer a different
fix, just trying to get the build bots happy again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97223 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
abdf33b89055602bb9234e7d45916c1687ccbe9f 26-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make GDM private.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97222 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
8fc19872bc0921d8f7af25e91bf95afd7c7cd6df 26-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Make GDM private.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97222 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
065a870017fed93c2515b83da406bb89c66e0a0b 26-Feb-2010 John McCall <rjmccall@apple.com> Fix an assertion-on-error during tentative constructor parsing by
propagating error conditions out of the various annotate-me-a-snowflake
routines. Generally (but not universally) removes redundant diagnostics
as well as, you know, not crashing on bad code. On the other hand,
I have just signed myself up to fix fiddly parser errors for the next
week. Again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97221 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9ba6166f4a78722e7df8ffbd64eb788bfdf2764a 26-Feb-2010 John McCall <rjmccall@apple.com> Fix an assertion-on-error during tentative constructor parsing by
propagating error conditions out of the various annotate-me-a-snowflake
routines. Generally (but not universally) removes redundant diagnostics
as well as, you know, not crashing on bad code. On the other hand,
I have just signed myself up to fix fiddly parser errors for the next
week. Again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97221 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d56fc0f9970dd972e6e0109a0d8d86cc7f91b59d 26-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement semantic analysis for C++ [expr.new]p18-20, which describe
how we find the operator delete that matches withe operator new we
found in a C++ new-expression.

This will also need CodeGen support. On a happy note, we're now a
"nans" away from building tramp3d-v4.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6d90870fe821a9b1a7822d3e28032042d03e5680 26-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement semantic analysis for C++ [expr.new]p18-20, which describe
how we find the operator delete that matches withe operator new we
found in a C++ new-expression.

This will also need CodeGen support. On a happy note, we're now a
"nans" away from building tramp3d-v4.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c9690daee4b38344cc1c7b7d01c8ecf21d2d1a92 26-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove derelict GRStmtNodeBuilder::LastNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97207 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
25108a5d52a302d9319099001ea50e7c684669a3 26-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove derelict GRStmtNodeBuilder::LastNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97207 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
cc392fc654e59b8d55df3901a82b193845ee44f4 26-Feb-2010 John McCall <rjmccall@apple.com> Use the power of types to track down another canonicalization bug in
the ABI-computation interface. Fixes <rdar://problem/7691046>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97197 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
ead608af31b6c9abeae1ca6d0b75094dac4641c0 26-Feb-2010 John McCall <rjmccall@apple.com> Use the power of types to track down another canonicalization bug in
the ABI-computation interface. Fixes <rdar://problem/7691046>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97197 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
5dfd9b7757839cadd1228e609ac9e098c4a3e279 25-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> When computing the composite pointer type for relational comparisons,
equality comparisons, and conditional operators, produce a composite
pointer type with the appropriate additional "const" qualifiers if the
pointer types would otherwise be incompatible. This is a small
extension (also present in GCC and EDG in a slightly different form)
that permits code like:

void** i; void const** j;
i == j;

with the following extwarn:

t.cpp:5:5: warning: comparison of distinct pointer types ('void **' and
'void const **') uses non-standard composite pointer type
'void const *const *' [-pedantic]
i == j;
~ ^ ~

Fixes PR6346, and I'll be filing a core issue about this with the C++
committee.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b2cb1cbd727469e1567a6f2535895e6b64e12c35 25-Feb-2010 Douglas Gregor <dgregor@apple.com> When computing the composite pointer type for relational comparisons,
equality comparisons, and conditional operators, produce a composite
pointer type with the appropriate additional "const" qualifiers if the
pointer types would otherwise be incompatible. This is a small
extension (also present in GCC and EDG in a slightly different form)
that permits code like:

void** i; void const** j;
i == j;

with the following extwarn:

t.cpp:5:5: warning: comparison of distinct pointer types ('void **' and
'void const **') uses non-standard composite pointer type
'void const *const *' [-pedantic]
i == j;
~ ^ ~

Fixes PR6346, and I'll be filing a core issue about this with the C++
committee.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c82b30d60137ab0f87ac75a1078c8f3285f7b630 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Move ~CodeGenAction out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97166 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
9ad1c0205ec478d64b3ed6d3dde5efaa9c9932c5 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Move ~CodeGenAction out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97166 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
17204fa2f4cf2aa94c7edfe0b7cfd6135b24e434 25-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Restore Zhongxing's commits r97122 r97127 r97129 r97131 which were reverted due to a Clang-on-Clang failure

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97162 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
102acd5369bbb17c0d6ab868af376671acff7a93 25-Feb-2010 Douglas Gregor <dgregor@apple.com> Restore Zhongxing's commits r97122 r97127 r97129 r97131 which were reverted due to a Clang-on-Clang failure

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97162 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
16a764c98d732a774c588be441a01c71e5c22eb9 25-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert patches r97122 r97127 r97129 r97131.
They were breaking clang-x86_64-darwin10-selfhost

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97138 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
2b706e56b57c9646dae8c9134d8614fe815a1873 25-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert patches r97122 r97127 r97129 r97131.
They were breaking clang-x86_64-darwin10-selfhost

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97138 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
9726c91b908dd4ae12c82a6f7c1fd2e282865c35 25-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move the dead bindings removal logic from CallInliner to GRExprEngine::ProcessCallExit().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97129 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
9a9f627f3bc0b0eb948a8b95806383afd72c374e 25-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move the dead bindings removal logic from CallInliner to GRExprEngine::ProcessCallExit().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97129 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRCoreEngine.h
9110ff960b44f6c5718dba26dbedd86dc37edc74 25-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Call inliner improvements:

This patch implements the CallEnter/CallExit idea of Ted.

Add two interfaces to GRSubEngine: ProcessCallEnter, ProcessCallExit.

The CallEnter program point uses caller's location context. The
CallExit program point uses callee's location context.

CallEnter is built by GRStmtNodeBuilder. CallExit is built by
GREndPathNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97122 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
833e50e6a2c246dbc4b3c17b7c9d657c5b5d333e 25-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Call inliner improvements:

This patch implements the CallEnter/CallExit idea of Ted.

Add two interfaces to GRSubEngine: ProcessCallEnter, ProcessCallExit.

The CallEnter program point uses caller's location context. The
CallExit program point uses callee's location context.

CallEnter is built by GRStmtNodeBuilder. CallExit is built by
GREndPathNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97122 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRSubEngine.h
d8fa1bf0cf60f7c0dd5a35288284215288264851 25-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Restore the invariant that a nested-name-specifier can only contain
class types, dependent types, and namespaces. I had previously
weakened this invariant while working on parsing pseudo-destructor
expressions, but recent work in that area has made these changes
unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97112 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
edc90500b1d2587bf0b698fada14537d6741fddf 25-Feb-2010 Douglas Gregor <dgregor@apple.com> Restore the invariant that a nested-name-specifier can only contain
class types, dependent types, and namespaces. I had previously
weakened this invariant while working on parsing pseudo-destructor
expressions, but recent work in that area has made these changes
unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97112 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2a0f7e6f0d52ccefe975e742e1f5cbc12d326c84 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add CodeGenAction::takeModule().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97111 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
b954e98893505d401acddac42650a81b83d8dc39 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Add CodeGenAction::takeModule().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97111 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CodeGenAction.h
862caa4ea60245bec0c4355ad0ada4ef99248b56 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Pull CodeGenAction out more, and eliminate CreateBackendConsumer.

This is the way I would like to move the frontend function towards -- distinct
pieces of functionality should be exposed only via FrontendAction
implementations which have clean and relatively-stable APIs.

This also isolates the surface area in clang which depends on LLVM CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97110 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/CodeGenAction.h
rontend/FrontendActions.h
4ee34616c6fa7700e27c0a5311718d844cbb7d2c 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Frontend: Pull CodeGenAction out more, and eliminate CreateBackendConsumer.

This is the way I would like to move the frontend function towards -- distinct
pieces of functionality should be exposed only via FrontendAction
implementations which have clean and relatively-stable APIs.

This also isolates the surface area in clang which depends on LLVM CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97110 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/CodeGenAction.h
rontend/FrontendActions.h
6fcbb37b212f4b27c8f31bd00375056f9b78a5e8 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Allow driver title (for --help) to be overridden by clients.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97106 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
43302d4144b5291961aa160d2fe191c09a9d8ad1 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Allow driver title (for --help) to be overridden by clients.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97106 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
2d70af2a2e753b67f986c7ed8611d7bc25344040 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Add TextDiagnosticPrinter::setPrefix, for adding a string to prefix diagnostic
messages with.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97101 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
b96b6709fbf5044ab06223ebfefccd58d7aaa88b 25-Feb-2010 Daniel Dunbar <daniel@zuster.org> Add TextDiagnosticPrinter::setPrefix, for adding a string to prefix diagnostic
messages with.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97101 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
7245a51b0677dec904fff139ee23b375c238a78d 25-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Use CXXPseudoDestructorExpr as the stored representation for dependent
expressions that look like pseudo-destructors, e.g.,

p->T::~T()

where p has dependent type.

At template instantiate time, we determine whether we actually have a
pseudo-destructor or a member access, and funnel down to the
appropriate routine in Sema.

Fixes PR6380.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a2e7dd2f4a50d835351153aee568d35ccc986310 25-Feb-2010 Douglas Gregor <dgregor@apple.com> Use CXXPseudoDestructorExpr as the stored representation for dependent
expressions that look like pseudo-destructors, e.g.,

p->T::~T()

where p has dependent type.

At template instantiate time, we determine whether we actually have a
pseudo-destructor or a member access, and funnel down to the
appropriate routine in Sema.

Fixes PR6380.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4f557fe5b848b1cdeafc57b615db27966cf328e6 25-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of the location of the '~' in a pseudo-destructor expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
fce46ee68f779e239826e69e45d01d4c8e5323ca 25-Feb-2010 Douglas Gregor <dgregor@apple.com> Keep track of the location of the '~' in a pseudo-destructor expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
73ec616e0974b9bcc911323653706a853589fc71 25-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Retain complete source information for the type after the '~' in a
CXXPseudoDestructorExpr.

Update template instantiation for pseudo-destructor expressions to use
this source information and to make use of
Sema::BuildPseudoDestructorExpr when the base expression is dependent
or refers to a scalar type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
26d4ac97fb514bb60c2536eae6f203dc569159d9 25-Feb-2010 Douglas Gregor <dgregor@apple.com> Retain complete source information for the type after the '~' in a
CXXPseudoDestructorExpr.

Update template instantiation for pseudo-destructor expressions to use
this source information and to make use of
Sema::BuildPseudoDestructorExpr when the base expression is dependent
or refers to a scalar type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
0bd6205193f5c0865b47202d1da8fd9c7ddfa569 24-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Retain source information for the "type-name ::" in a
pseudo-destructor expression such as

p->T::~T()



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97060 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e0601ea1220348957dacec5f3dd0707837365290 24-Feb-2010 Douglas Gregor <dgregor@apple.com> Retain source information for the "type-name ::" in a
pseudo-destructor expression such as

p->T::~T()



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97060 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
32c627e217b55256110f5d7adfd6bff6dd33169a 24-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> ActOnPseudoDestructorExpr now performs all semantic analysis for
pseudo-destructor expressions, and builds the CXXPseudoDestructorExpr
node directly. Currently, this only affects pseudo-destructor
expressions when they are parsed, but not after template
instantiation. That's coming next...

Improve parsing of pseudo-destructor-names. When parsing the
nested-name-specifier and we hit the sequence of tokens X :: ~, query
the actual module to determine whether X is a type-name (in which case
the X :: is part of the pseudo-destructor-name but not the
nested-name-specifier) or not (in which case the X :: is part of the
nested-name-specifier).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
77549080fb7b9af31606b3c1b4830a94429fb1fd 24-Feb-2010 Douglas Gregor <dgregor@apple.com> ActOnPseudoDestructorExpr now performs all semantic analysis for
pseudo-destructor expressions, and builds the CXXPseudoDestructorExpr
node directly. Currently, this only affects pseudo-destructor
expressions when they are parsed, but not after template
instantiation. That's coming next...

Improve parsing of pseudo-destructor-names. When parsing the
nested-name-specifier and we hit the sequence of tokens X :: ~, query
the actual module to determine whether X is a type-name (in which case
the X :: is part of the pseudo-destructor-name but not the
nested-name-specifier) or not (in which case the X :: is part of the
nested-name-specifier).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
fe7abb31d96e05180de719014c6a6d3a90d36e92 24-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Rework parsing of pseudo-destructor expressions and explicit
destructor calls, e.g.,

p->T::~T

We now detect when the member access that we've parsed, e.g.,

p-> or x.

may be a pseudo-destructor expression, either because the type of p or
x is a scalar or because it is dependent (and, therefore, may become a
scalar at template instantiation time).

We then parse the pseudo-destructor grammar specifically:

::[opt] nested-name-specifier[opt] type-name :: ∼ type-name

and hand those results to a new action, ActOnPseudoDestructorExpr,
which will cope with both dependent member accesses of destructors and
with pseudo-destructor expressions.

This commit affects the parsing of pseudo-destructors, only; the
semantic actions still go through the semantic actions for member
access expressions. That will change soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97045 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
d4dca08d6b7ed2e3e3718caa6fd735960b135e9a 24-Feb-2010 Douglas Gregor <dgregor@apple.com> Rework parsing of pseudo-destructor expressions and explicit
destructor calls, e.g.,

p->T::~T

We now detect when the member access that we've parsed, e.g.,

p-> or x.

may be a pseudo-destructor expression, either because the type of p or
x is a scalar or because it is dependent (and, therefore, may become a
scalar at template instantiation time).

We then parse the pseudo-destructor grammar specifically:

::[opt] nested-name-specifier[opt] type-name :: ∼ type-name

and hand those results to a new action, ActOnPseudoDestructorExpr,
which will cope with both dependent member accesses of destructors and
with pseudo-destructor expressions.

This commit affects the parsing of pseudo-destructors, only; the
semantic actions still go through the semantic actions for member
access expressions. That will change soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97045 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
b8b85cd2b6e01ef1b62ac10a88b7e8a4b5ec9854 24-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97020 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
152e785ce6cbbc068a5240daf7f3daacc7000bf4 24-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97020 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Checker.h
59b4e1fe167ba8d40d5de35825a40be2d241928b 24-Feb-2010 Ted Kremenek <kremenek@apple.com> Add support for '%C' and '%S' printf conversion specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97005 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
87260c7eabf88eb2009ba2ba20150cd897483241 24-Feb-2010 Ted Kremenek <kremenek@apple.com> Add support for '%C' and '%S' printf conversion specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97005 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
76741ab2cc358fa7b9287607d06b171ae9691d6b 23-Feb-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for the weakref attribute. We still produce "alias weak" as llvm-gcc does, but are more strict on what uses of weakref we accept.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
11e8ce7380856abee188b237c2600272df2ed09d 23-Feb-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for the weakref attribute. We still produce "alias weak" as llvm-gcc does, but are more strict on what uses of weakref we accept.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
48913fa37e15c0644911bffb2282c26aae253f40 23-Feb-2010 Blaine Garst <blaine@apple.com> Unconditionally support block introspection data in a new field at the end
of the block descriptor field. This field is the ObjC style @encode
signature of the implementation function, and was to this point
conditionally provided in the block literal data structure. That
provisional support is removed.

Additionally, eliminate unused enumerations for the block literal flags field.
The first shipping ABI unconditionally set (1<<29) but this bit is unused
by the runtime, so the second ABI will unconditionally have (1<<30) set so
that the runtime can in fact distinguish whether the additional data is
present or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96989 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.td
2a7eb28397148079cbc8e54e8a3871ef01c4f4bc 23-Feb-2010 Blaine Garst <blaine@apple.com> Unconditionally support block introspection data in a new field at the end
of the block descriptor field. This field is the ObjC style @encode
signature of the implementation function, and was to this point
conditionally provided in the block literal data structure. That
provisional support is removed.

Additionally, eliminate unused enumerations for the block literal flags field.
The first shipping ABI unconditionally set (1<<29) but this bit is unused
by the runtime, so the second ABI will unconditionally have (1<<30) set so
that the runtime can in fact distinguish whether the additional data is
present or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96989 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.td
bb9e09b399774afe1988fb17b7f2854a66f5480b 23-Feb-2010 Daniel Dunbar <daniel@zuster.org> Fix bogus diagnostic format string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
32141c8f69a6a51d7cf95a18229cd335ecd59903 23-Feb-2010 Daniel Dunbar <daniel@zuster.org> Fix bogus diagnostic format string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
c6c8c8187e9210f5ad3e24f21da12ef1e455471c 23-Feb-2010 Ted Kremenek <kremenek@apple.com> Move the rest of the unreachable code analysis from libSema
to libAnalysis (with only the error reporting in libSema).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96893 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ReachableCode.h
72919a334752bc87001a7e3a0b6e5892768fac20 23-Feb-2010 Ted Kremenek <kremenek@apple.com> Move the rest of the unreachable code analysis from libSema
to libAnalysis (with only the error reporting in libSema).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96893 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ReachableCode.h
f88ce84475743f4f9308f3598dc8b584d3e4d914 23-Feb-2010 Ted Kremenek <kremenek@apple.com> Add missing header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ReachableCode.h
e5064ab8a8be7fbb8bb9727bea954c9fea7b40ab 23-Feb-2010 Ted Kremenek <kremenek@apple.com> Add missing header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/ReachableCode.h
278a77e1278a5ec9574254e51da33a3b803690d4 23-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> More support for ivars in class extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0e5ad255729ee86b8ed57e659029008984517cde 23-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> More support for ivars in class extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8d3067d2cbc6bcbee9896fc8ee55e12b0958cbb3 23-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Correct comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96846 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
46f35f3660903a98ba16a74fe9302dc09b2c37b5 23-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Correct comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96846 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
b85912f3fa881281f014555108851086a1bfb73a 23-Feb-2010 John McCall <rjmccall@apple.com> Perform two more constructor/destructor code-size optimizations:

1) emit base destructors as aliases to their unique base class destructors
under some careful conditions. This is enabled for the same targets that can
support complete-to-base aliases, i.e. not darwin.

2) Emit non-variadic complete constructors for classes with no virtual bases
as calls to the base constructor. This is enabled on all targets and in
theory can trigger in situations that the alias optimization can't (mostly
involving virtual bases, mostly not yet supported).

These are bundled together because I didn't think it worthwhile to split them,
not because they really need to be.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96842 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
c0bf462cf35fe050bddbd8bff967298e4a67e79d 23-Feb-2010 John McCall <rjmccall@apple.com> Perform two more constructor/destructor code-size optimizations:

1) emit base destructors as aliases to their unique base class destructors
under some careful conditions. This is enabled for the same targets that can
support complete-to-base aliases, i.e. not darwin.

2) Emit non-variadic complete constructors for classes with no virtual bases
as calls to the base constructor. This is enabled on all targets and in
theory can trigger in situations that the alias optimization can't (mostly
involving virtual bases, mostly not yet supported).

These are bundled together because I didn't think it worthwhile to split them,
not because they really need to be.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96842 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2ec53ace49e57fb85ba50676c71ec2f98f3096cc 23-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Early support for declaring ivars in class extensions. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96819 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
83c481ade785a919ba21a33f9a8b1b21c1212fb3 23-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Early support for declaring ivars in class extensions. wip.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96819 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
527297069fe03fe093e4a63e3f08adbc30e15993 22-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96773 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
44b713938266685b1b1dd452a672f9f21b6060f8 22-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96773 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
9bc588ad899057f6f3c1b66533a7555eb33253ef 22-Feb-2010 Chris Lattner <sabre@nondot.org> Add 'previous declaration is here' note for param redefinition
errors, e.g.:

t.c:1:21: error: redefinition of parameter 'x'
int test(int x, int x);
^
t.c:1:14: note: previous declaration is here
int test(int x, int x);
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96769 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d84aac17180075e0ede53d7762b73d3bd079b52f 22-Feb-2010 Chris Lattner <sabre@nondot.org> Add 'previous declaration is here' note for param redefinition
errors, e.g.:

t.c:1:21: error: redefinition of parameter 'x'
int test(int x, int x);
^
t.c:1:14: note: previous declaration is here
int test(int x, int x);
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96769 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e08f580e7d5f1a9f88448d269395f7a51971d729 21-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the default arguments to ASTContext::getFunctionType(),
fixing up a few callers that thought they were propagating NoReturn
information but were in fact saying something about exception
specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ce056bcaa1c97b89a4b2de2112c62d060863be2b 21-Feb-2010 Douglas Gregor <dgregor@apple.com> Eliminate the default arguments to ASTContext::getFunctionType(),
fixing up a few callers that thought they were propagating NoReturn
information but were in fact saying something about exception
specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
a15729f7a0d0391655a75b8eeab0813b92395be9 21-Feb-2010 Daniel Dunbar <daniel@zuster.org> Spell string.h correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96765 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
f7bb329deb2f8ce9ae7f187d6fbe0f98deaeed0d 21-Feb-2010 Daniel Dunbar <daniel@zuster.org> Spell string.h correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96765 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
bacdbd45a4f512fb59d4976dcc0d5484ffffee3a 21-Feb-2010 Daniel Dunbar <daniel@zuster.org> Add missing include, noticed by ace2001ac on IRC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96764 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
26f178696e90cdf950dce26ccd1fe19a46537999 21-Feb-2010 Daniel Dunbar <daniel@zuster.org> Add missing include, noticed by ace2001ac on IRC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96764 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
b574aa7ed9e7df5cc09e4e6298aa7d83589625a8 21-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement support for parsing pseudo-destructor expression with a nested-name-specifier, e.g.,

typedef int Int;
int *p;
p->Int::~Int();

This weakens the invariant that the only types in nested-name-specifiers are tag types (restricted to class types in C++98/03). However, we weaken this invariant as little as possible, accepting arbitrary types in nested-name-specifiers only when we're in a member access expression that looks like a pseudo-destructor expression.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96743 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
b10cd04880672103660e5844e51ee91af7361a20 21-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement support for parsing pseudo-destructor expression with a nested-name-specifier, e.g.,

typedef int Int;
int *p;
p->Int::~Int();

This weakens the invariant that the only types in nested-name-specifiers are tag types (restricted to class types in C++98/03). However, we weaken this invariant as little as possible, accepting arbitrary types in nested-name-specifiers only when we're in a member access expression that looks like a pseudo-destructor expression.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96743 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
4906ddb118727fae0bfce803eb4c6cdcacce3070 21-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement PCH support for C++ namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96738 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
0cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1 21-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement PCH support for C++ namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96738 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
b30152fd8308b0351e7f377a5dbed95aa8ff5cee 21-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Make Decl::isOutOfLine() virtual, and use that to determine when definitions
are for out of line declarations more easily. This simplifies the logic and
handles the case of out-of-line class definitions correctly. Fixes PR6107.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
8761d680eaa7386e03f51286f4b84a1ffe575e2e 21-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Make Decl::isOutOfLine() virtual, and use that to determine when definitions
are for out of line declarations more easily. This simplifies the logic and
handles the case of out-of-line class definitions correctly. Fixes PR6107.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96729 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
c88e462ec769f8dbdb1eff519d59986c175eeafe 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Start supporting declaration of ivars in @implementation
blocks. WIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96696 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bd94d442f6801a4d2a25d53c1843690533180a6d 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Start supporting declaration of ivars in @implementation
blocks. WIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96696 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2d7436407181d647d5816f39b1fc5d37c49c1c6a 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Issue extended diagnostic when property dot-syntax is used and
there is a setter but no getter (part of radar 7664555).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96687 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
354095c29ef10d4763ec079fde4d6f73841152f6 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Issue extended diagnostic when property dot-syntax is used and
there is a setter but no getter (part of radar 7664555).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96687 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
38e9420d42304844bf68550a9270d00408b976f8 19-Feb-2010 Ted Kremenek <kremenek@apple.com> Revert: "Change InitListExpr to allocate the array for holding references"

This was causing buildbot breakage.

This reverts commit d46e952cc8cb8d9eed8657d9a0b267910a0f745a.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ba7bc5584b8d46f4e8deb3a9d363256908fa86ea 19-Feb-2010 Ted Kremenek <kremenek@apple.com> Revert: "Change InitListExpr to allocate the array for holding references"

This was causing buildbot breakage.

This reverts commit d46e952cc8cb8d9eed8657d9a0b267910a0f745a.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
107572e5f29b64120958bb208e76754099cc4dab 19-Feb-2010 John McCall <rjmccall@apple.com> Re-introduce the ctor/dtor alias optimization, this time hidden behind a
command-line option which defaults off.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96649 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
d46f98573ba104eda102dd3224b2dca69f1c6336 19-Feb-2010 John McCall <rjmccall@apple.com> Re-introduce the ctor/dtor alias optimization, this time hidden behind a
command-line option which defaults off.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96649 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
b17fe9006135d1e6b6d7b545a772b9042c671c0b 19-Feb-2010 Ted Kremenek <kremenek@apple.com> Change InitListExpr to allocate the array for holding references
to initializer expressions in an array allocated using ASTContext.

This plugs a memory leak when ASTContext uses a BumpPtrAllocator to
allocate memory for AST nodes.

In my mind this isn't an ideal solution; it would be nice to have
a general "vector"-like class that allocates memory using ASTContext,
but whose guts could be separated from the methods of InitListExpr
itself. I haven't gone and taken this approach yet because it isn't
clear yet if we'll eventually want an alternate solution for recylcing
memory using by InitListExprs as we are constructing the ASTs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9f9269e810bfe9aea0a57b09250be215808fc1a2 19-Feb-2010 Ted Kremenek <kremenek@apple.com> Change InitListExpr to allocate the array for holding references
to initializer expressions in an array allocated using ASTContext.

This plugs a memory leak when ASTContext uses a BumpPtrAllocator to
allocate memory for AST nodes.

In my mind this isn't an ideal solution; it would be nice to have
a general "vector"-like class that allocates memory using ASTContext,
but whose guts could be separated from the methods of InitListExpr
itself. I haven't gone and taken this approach yet because it isn't
clear yet if we'll eventually want an alternate solution for recylcing
memory using by InitListExprs as we are constructing the ASTs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
292f520b74b449be401d37c8da567d631dbb8b96 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Patch removes IVars list from ObjCInterfaceDecl and
instead relies on their DeclContext for iteration, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96638 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
11062e11236b7bc689dad150e8b490fd6b063ec3 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Patch removes IVars list from ObjCInterfaceDecl and
instead relies on their DeclContext for iteration, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96638 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
732a7dec07e5869f6b1de0faabc899e1a2449a6d 19-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Teach ASTUnit to keep track of temporary files, then delete them when
the ASTUnit itself is destroyed. Fixes <rdar://problem/7649385>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96628 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
313e26c4e81f0e467490a530548450f4c824a6c4 19-Feb-2010 Douglas Gregor <dgregor@apple.com> Teach ASTUnit to keep track of temporary files, then delete them when
the ASTUnit itself is destroyed. Fixes <rdar://problem/7649385>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96628 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
8a981127d8f98521c9275a059fee3461e3be0f92 18-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Rework how CIndex handles diagnostics. Rather than using a callback,
we attach diagnostics to translation units and code-completion
results, so they can be queried at any time.

To facilitate this, the new StoredDiagnostic class stores a diagnostic
in a serializable/deserializable form, and ASTUnit knows how to
capture diagnostics in this stored form. CIndex's CXDiagnostic is a
thin wrapper around StoredDiagnostic, providing a C interface to
stored or de-serialized diagnostics.

I've XFAIL'd one test case temporarily, because currently we end up
storing diagnostics in an ASTUnit that's never returned to the user
(because it contains errors). I'll introduce a temporary fix for this
soon; the real fix will be to allow us to return and query invalid ASTs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96592 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
a88084b78fd4ca5d3d858c14b02414f8cc399f02 18-Feb-2010 Douglas Gregor <dgregor@apple.com> Rework how CIndex handles diagnostics. Rather than using a callback,
we attach diagnostics to translation units and code-completion
results, so they can be queried at any time.

To facilitate this, the new StoredDiagnostic class stores a diagnostic
in a serializable/deserializable form, and ASTUnit knows how to
capture diagnostics in this stored form. CIndex's CXDiagnostic is a
thin wrapper around StoredDiagnostic, providing a C interface to
stored or de-serialized diagnostics.

I've XFAIL'd one test case temporarily, because currently we end up
storing diagnostics in an ASTUnit that's never returned to the user
(because it contains errors). I'll introduce a temporary fix for this
soon; the real fix will be to allow us to return and query invalid ASTs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96592 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ASTUnit.h
de7b6a7cdd15d9c5cc511262a86a725e43f91fe7 18-Feb-2010 Ted Kremenek <kremenek@apple.com> Change the behavior of ibaction attributes to be attached to methods, not ivars.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96562 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
63e5d7c85299134f088033614afd9eb213c50b48 18-Feb-2010 Ted Kremenek <kremenek@apple.com> Change the behavior of ibaction attributes to be attached to methods, not ivars.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96562 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
121f3eb1c120089a920ba7e7c0188a07fad59022 18-Feb-2010 Ted Kremenek <kremenek@apple.com> Add 'ns_returns_not_retained' and 'cf_returns_not_retained' attributes to
match 'ns_returns_retained' and 'cf_returns_retained' respectively. These
are not yet hooked up to the static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
31c780d95a830f0187cfcbb1016ce88f50a7dfe1 18-Feb-2010 Ted Kremenek <kremenek@apple.com> Add 'ns_returns_not_retained' and 'cf_returns_not_retained' attributes to
match 'ns_returns_retained' and 'cf_returns_retained' respectively. These
are not yet hooked up to the static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
659bddc5f1bfe7636bf6f98e0f6f8e9dc63f6bbe 18-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Hook the "overflow converting case value to switch condition type"
warning into -Wswitch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0b3b4363df8d24905cef8254b0841ef1c9a8bfac 18-Feb-2010 Douglas Gregor <dgregor@apple.com> Hook the "overflow converting case value to switch condition type"
warning into -Wswitch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d0d5f770df01e7c7554e139a768b319aa98ae5a7 17-Feb-2010 Ted Kremenek <kremenek@apple.com> Alphabetize #includes. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96518 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
8264558a81563651b0d9377d316eb65a5ce82259 17-Feb-2010 Ted Kremenek <kremenek@apple.com> Alphabetize #includes. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96518 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
05b2b140f05bfe635296a1a58902dc93092412cb 17-Feb-2010 Ted Kremenek <kremenek@apple.com> Change GNUInlineAttr definition to just use DEF_SIMPLE_ATTR.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
3f477eabe90c55ad65ab70b1a3abd77060fbec06 17-Feb-2010 Ted Kremenek <kremenek@apple.com> Change GNUInlineAttr definition to just use DEF_SIMPLE_ATTR.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
441f07c35f1038e789a0824ca37f328f4f77d6f1 17-Feb-2010 Daniel Dunbar <daniel@zuster.org> PR5803: clang++: Treat untyped 'C' inputs as C++.
- Patch by Andrzej K. Haczewski, with a tweak by me to emit a 'deprecated'
diagnostic when we do this. We'll see what zee users say.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96511 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Types.h
51679c5e4828b8a64953c4f3db162ca963bf7b03 17-Feb-2010 Daniel Dunbar <daniel@zuster.org> PR5803: clang++: Treat untyped 'C' inputs as C++.
- Patch by Andrzej K. Haczewski, with a tweak by me to emit a 'deprecated'
diagnostic when we do this. We'll see what zee users say.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96511 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Types.h
8960b491f253cfd6842350e05104c1f98d4ceaee 17-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement AST merging for Objective-C properties.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96483 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
e3261624c1870e52d7efc2ac83e647713361ac6c 17-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement AST merging for Objective-C properties.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96483 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
8fad6ad51759d2d2de102e3c57258ab3cef3963f 17-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> For inline-based inter-procedural analysis, we will have multiple stack space regions. Use a dense map to store them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96472 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
c30470dd245e2c3b367d3d806e75bf6cc20fc18c 17-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> For inline-based inter-procedural analysis, we will have multiple stack space regions. Use a dense map to store them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96472 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
07bbd4f47b17dde1c0e9ea667e72b394142d332a 17-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a utility method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96471 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
8ddf7cead8a67342a4584a203e0bf736b7efedbe 17-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add a utility method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96471 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
3cf68a9d706d41b069a57d75b0995562df4565c8 17-Feb-2010 Ted Kremenek <kremenek@apple.com> Add IBAction attribute to keep the IBOutlet attribute company.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
efbddd23173ea5633cc8a004f1014c68c3ac6593 17-Feb-2010 Ted Kremenek <kremenek@apple.com> Add IBAction attribute to keep the IBOutlet attribute company.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
221ffa76a5265603da1294954a7a0f3486cb86dd 17-Feb-2010 Tanya Lattner <tonic@nondot.org> Fix unused function warning to handle used attributes and redeclarations. Update test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96444 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.td
12ead498c4bc279472b21d446bfccec0f654779e 17-Feb-2010 Tanya Lattner <tonic@nondot.org> Fix unused function warning to handle used attributes and redeclarations. Update test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96444 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.td
19f7e7d1e7e4bf7a26d46c9278b05f83fdc67ccc 17-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement AST importing and checking for Objective-C method declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96442 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/DiagnosticASTKinds.td
c3f2d2bb839593eed8861bce14228df0faf7b6c0 17-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement AST importing and checking for Objective-C method declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96442 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/DiagnosticASTKinds.td
c24ed1edd2698b4f3b5b64d5dff4ae13518bc19f 17-Feb-2010 Charles Davis <cdavis@mines.edu> Revert r95939, as suggested by Alexandre Julliard from the Wine project (and
our own Chris Lattner).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ab44216009dbdaa9a3b26f541ead13e85f6e39b3 17-Feb-2010 Charles Davis <cdavis@mines.edu> Revert r95939, as suggested by Alexandre Julliard from the Wine project (and
our own Chris Lattner).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
dfac6238822b929afbc4c8e3c05b9b9ee0272cd9 17-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement AST importing of Objective-C instance variables.
Check superclasses when merging two Objective-C @interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
2e55e3af2f6d6c0509495357fade95105dd144cd 17-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement AST importing of Objective-C instance variables.
Check superclasses when merging two Objective-C @interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
56c054e27cc00e53824a40e83297f3e4382ca324 16-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a new kind of failed result for isLvalue/isModifiableLvalue
which describes temporary objects of class type in C++. Use this to
provide a more-specific, remappable diagnostic when takin the address
of such a temporary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e873fb74219f48407ae0b8fa083aa7f0b6ff1427 16-Feb-2010 Douglas Gregor <dgregor@apple.com> Introduce a new kind of failed result for isLvalue/isModifiableLvalue
which describes temporary objects of class type in C++. Use this to
provide a more-specific, remappable diagnostic when takin the address
of such a temporary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
fbe22a44784dfe89318cc6f17e928915e9d50b41 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> Disable warn_unused_function for now, its breaking various project builds due to
false positives.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
75d113711eb4e40029bb0426365396b76281deee 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> Disable warn_unused_function for now, its breaking various project builds due to
false positives.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
13df44a5d2692a6ea880042452de26a92931e08d 16-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Improve parsing and instantiation of destructor names, so that we can
now cope with the destruction of types named as dependent templates,
e.g.,

y->template Y<T>::~Y()

Nominally, we implement C++0x [basic.lookup.qual]p6. However, we don't
follow the letter of the standard here because that would fail to
parse

template<typename T, typename U>
X0<T, U>::~X0() { }

properly. The problem is captured in core issue 339, which gives some
(but not enough!) guidance. I expect to revisit this code when the
resolution of 339 is clear, and/or we start capturing better source
information for DeclarationNames.

Fixes PR6152.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96367 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
124b878dba5007df0a268ea128a6ad8dc5dd2c5e 16-Feb-2010 Douglas Gregor <dgregor@apple.com> Improve parsing and instantiation of destructor names, so that we can
now cope with the destruction of types named as dependent templates,
e.g.,

y->template Y<T>::~Y()

Nominally, we implement C++0x [basic.lookup.qual]p6. However, we don't
follow the letter of the standard here because that would fail to
parse

template<typename T, typename U>
X0<T, U>::~X0() { }

properly. The problem is captured in core issue 339, which gives some
(but not enough!) guidance. I expect to revisit this code when the
resolution of 339 is clear, and/or we start capturing better source
information for DeclarationNames.

Fixes PR6152.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96367 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
5c248c95f96c70fc04cb1e1eacd2132d847b027c 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Add simpler checker to check if variables captured by a block are uninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96341 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
94fd0b8c88db9b1cd99457d3cd8cd333341dd39c 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Add simpler checker to check if variables captured by a block are uninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96341 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
f0533bcf6543bbb5d1b0338c01510eeacea44a76 16-Feb-2010 John McCall <rjmccall@apple.com> Support local namespace aliases and permit them to be instantiated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96335 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3dbd3d5c04cd5abd7dfd83b15f51d7c610a3c512 16-Feb-2010 John McCall <rjmccall@apple.com> Support local namespace aliases and permit them to be instantiated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96335 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d7757931fd2f6fb2dc272e3cde0f2251c392e1ed 16-Feb-2010 John McCall <rjmccall@apple.com> Make the various type-decl Types (and their associated ASTContext routines)
accept const decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96325 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
19c8576b7328f4dc2d07682f5da552875c1912ef 16-Feb-2010 John McCall <rjmccall@apple.com> Make the various type-decl Types (and their associated ASTContext routines)
accept const decls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96325 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
b39503abb6911b792d4a91ed504b173ecf1676a5 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Constant fold UseBumpAllocator to true, we don't care to support this as an argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96316 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b26d483a9f7fdc815e87bbbac4af916307b4c07d 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Constant fold UseBumpAllocator to true, we don't care to support this as an argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96316 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5fbc4f48be96f5a8722318721cbe4c0562e0a165 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit::LoadFromCompilerInvocation - Take ownership of the provided invocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96315 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
f7acc37450d59ef751df73acb91de73850cc6517 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit::LoadFromCompilerInvocation - Take ownership of the provided invocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96315 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
2d237305f070e8b4916802ef300ce94c3a89395e 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> CompilerInstance: Move LLVMContext member out of constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96314 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
42e9f8e4983d50f896ec716207817b9d96e7e79c 16-Feb-2010 Daniel Dunbar <daniel@zuster.org> CompilerInstance: Move LLVMContext member out of constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96314 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
5c8a08c5da6439047a8521f1b4ea6a61438917b4 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Refactor the logic for printf argument type-checking into analyze_printf::ArgTypeResult.
Implement printf argument type checking for '%s'.

Fixes <rdar://problem/3065808>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96310 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
4e4b30ec62d78b24e6556fea2624855c193d0e3e 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Refactor the logic for printf argument type-checking into analyze_printf::ArgTypeResult.
Implement printf argument type checking for '%s'.

Fixes <rdar://problem/3065808>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96310 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
1051ab8448e2ed9db0d75871743f12d65d9affe8 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Added 'AsWideChar' flag to LengthModifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96309 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
252bee91e9961d9182323c4017092f90d6a09b1d 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Added 'AsWideChar' flag to LengthModifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96309 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
5ca6dbdb85b017bf2915dbdd52fb9d51828d755f 16-Feb-2010 Chris Lattner <sabre@nondot.org> mark __builtin_longjmp noreturn, PR6312


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
2d3df5fedc3578402b9178efad489289403d864e 16-Feb-2010 Chris Lattner <sabre@nondot.org> mark __builtin_longjmp noreturn, PR6312


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96302 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c94fe413f94a42971eb8a23a00ac7c5c38b0bef3 16-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Cope with anonymous tags defined within declarators by structurally
comparing their types under the assumption that they are equivalent,
rather than importing the types and then checking for compatibility. A
few minor tweaks here:
- Teach structural matching to handle compatibility between
function types with prototypes and those without prototypes.
- Teach structural matching that an incomplete record decl is the
same as any other record decl with the same name.
- Keep track of pairs of declarations that we have already checked
(but failed to find as structurally matching), so we don't emit
diagnostics repeatedly.
- When importing a typedef of an anonymous tag, be sure to link the
imported tag type to its typedef.

With these changes, we survive a repeated import of <stdlib.h> and
<stdio.h>. Alas, the ASTNodeImporter is getting a little grotty.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
ea35d11905f756ad33b87bd89cd3ac1e7ce57994 16-Feb-2010 Douglas Gregor <dgregor@apple.com> Cope with anonymous tags defined within declarators by structurally
comparing their types under the assumption that they are equivalent,
rather than importing the types and then checking for compatibility. A
few minor tweaks here:
- Teach structural matching to handle compatibility between
function types with prototypes and those without prototypes.
- Teach structural matching that an incomplete record decl is the
same as any other record decl with the same name.
- Keep track of pairs of declarations that we have already checked
(but failed to find as structurally matching), so we don't emit
diagnostics repeatedly.
- When importing a typedef of an anonymous tag, be sure to link the
imported tag type to its typedef.

With these changes, we survive a repeated import of <stdlib.h> and
<stdio.h>. Alas, the ASTNodeImporter is getting a little grotty.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
78ff1f0bbd460020f570f9082ed0076872e32955 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Convert GRExprEngine's handling of ObjCMessageExprs to use a worklist
to evaluate arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96293 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
b9bbd592c7ea72ada8d982e40a729beb9b53371e 16-Feb-2010 Ted Kremenek <kremenek@apple.com> Convert GRExprEngine's handling of ObjCMessageExprs to use a worklist
to evaluate arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96293 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRExprEngine.h
206030727647906a20e22bef9ef66189a85d5734 15-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Add Sema support for __builtin_fpclassify by extending the existing check for __builtin_isinf and friends. Part of PR6083.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96291 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
e771a7ac11fb27f0e734e5de4d858f2c268895e5 15-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Add Sema support for __builtin_fpclassify by extending the existing check for __builtin_isinf and friends. Part of PR6083.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96291 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
2521eb5df5337b93115ab72c7ad73d1d3c19e67a 15-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Issue a bettter diagnostics for incorrect property setter name.
(radar 7647953).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
e0097db2848c463a534c18c235c6d3e53f2f1b87 15-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Issue a bettter diagnostics for incorrect property setter name.
(radar 7647953).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
f584f2392641e1ef754c17a46f2e52334ebbf545 15-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Reimplement the structural-equality checks used to determine whether
two types in different AST contexts are equivalent. Rather than
transforming the type from one context into the other context, we
perform a deep structural comparison of the types. This change
addresses a serious problem with recursive data types like

struct ListNode {
int value;
struct ListNode *Next;
} xList;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96278 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
ST/Type.h
73dc30b71e218ba2b776b10d07dc2aff09cb2c47 15-Feb-2010 Douglas Gregor <dgregor@apple.com> Reimplement the structural-equality checks used to determine whether
two types in different AST contexts are equivalent. Rather than
transforming the type from one context into the other context, we
perform a deep structural comparison of the types. This change
addresses a serious problem with recursive data types like

struct ListNode {
int value;
struct ListNode *Next;
} xList;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96278 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
ST/Type.h
76a5c369ed6ab5f15886a6258371994eaea96c0c 15-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Class continuation now has its own property ast for
those declared in it. This is to allow duplicate
property diagnostics for properties declared in class extensions
multiple times (radar 7629420) and for future use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96276 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
25760611365be23556b32332f8a66ae21ea93ecf 15-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Class continuation now has its own property ast for
those declared in it. This is to allow duplicate
property diagnostics for properties declared in class extensions
multiple times (radar 7629420) and for future use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96276 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b1737c48f138035ff97921511a0980508a775d30 14-Feb-2010 Ted Kremenek <kremenek@apple.com> Change LLVMConventionsChecker to accept an entire translation unit instead
of operating on each code decl. This exposes two flaws in AnalysisConsumer
that should eventually be fixed:

(1) It is not possible to associate multiple "actions" with a single
command line argument. This will require the notion of an
"analysis" group, and possibly tablegen support. (although eventually
we want to support dynamically loading analyses as well)

(2) AnalysisConsumer may not actually be scanning the declarations in namespaces.
We'll experiment first in LLVMConventionsChecker before changing the
behavior in AnalysisConsumer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96183 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/LocalCheckers.h
rontend/Analyses.def
676ca153e04b1c6be477bc8a10f1e06256850cee 14-Feb-2010 Ted Kremenek <kremenek@apple.com> Change LLVMConventionsChecker to accept an entire translation unit instead
of operating on each code decl. This exposes two flaws in AnalysisConsumer
that should eventually be fixed:

(1) It is not possible to associate multiple "actions" with a single
command line argument. This will require the notion of an
"analysis" group, and possibly tablegen support. (although eventually
we want to support dynamically loading analyses as well)

(2) AnalysisConsumer may not actually be scanning the declarations in namespaces.
We'll experiment first in LLVMConventionsChecker before changing the
behavior in AnalysisConsumer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96183 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/LocalCheckers.h
rontend/Analyses.def
6e2e54e98ee9092f275d18ea40ba1ee28afbebb0 14-Feb-2010 Ted Kremenek <kremenek@apple.com> Add new static analyzer for checking LLVM coding conventions: -analyzer-check-llvm-conventions

Currently these checks are intended to be largely syntactical, but may get more
sophisticated over time.

As an initial foray into this brave new world, emit a static analyzer warning
when binding a temporary 'std::string' to an 'llvm::StringRef' where the
lifetime of the 'std::string' does not outlive the 'llvm::StringRef'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96147 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/LocalCheckers.h
river/CC1Options.td
rontend/Analyses.def
6dd66ed959b7f60749dd0040507b3f304183a1b6 14-Feb-2010 Ted Kremenek <kremenek@apple.com> Add new static analyzer for checking LLVM coding conventions: -analyzer-check-llvm-conventions

Currently these checks are intended to be largely syntactical, but may get more
sophisticated over time.

As an initial foray into this brave new world, emit a static analyzer warning
when binding a temporary 'std::string' to an 'llvm::StringRef' where the
lifetime of the 'std::string' does not outlive the 'llvm::StringRef'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96147 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/LocalCheckers.h
river/CC1Options.td
rontend/Analyses.def
e06c21b075a36f8f2a46df1385035be7cef85a1e 14-Feb-2010 John McCall <rjmccall@apple.com> Improve the diagnostic given when referring to a tag type without a tag (in C)
or that's been hidden by a non-type (in C++).

The ideal C++ diagnostic here would note the hiding declaration, but this
is a good start.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96141 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
23e907ab9119ccfdff17b3808a770c5a6707fb95 14-Feb-2010 John McCall <rjmccall@apple.com> Improve the diagnostic given when referring to a tag type without a tag (in C)
or that's been hidden by a non-type (in C++).

The ideal C++ diagnostic here would note the hiding declaration, but this
is a good start.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96141 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f0ba68a76a53360cfaa41d1edc0fa528a758c745 13-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Permit the use of typedefs of class template specializations in
qualified declarator-ids. This patch is actually due to Cornelius;
fixes PR6179.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fe3310697028d8d3d35a11b0877bb2bc47e55b8d 13-Feb-2010 Douglas Gregor <dgregor@apple.com> Permit the use of typedefs of class template specializations in
qualified declarator-ids. This patch is actually due to Cornelius;
fixes PR6179.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ceeffb036421ad7fd6f361e64d03bf8d0b0caffa 13-Feb-2010 John McCall <rjmccall@apple.com> Switch the standard DeclarationName comparator to be a tri-valued comparator.
Use that while fixing a nasty misuse of qsort in vtable codegen which, somehow,
has not actually caused a crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96062 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
7fe0b9ea2c8137c035402e6ea01dfdfbc93214cb 13-Feb-2010 John McCall <rjmccall@apple.com> Switch the standard DeclarationName comparator to be a tri-valued comparator.
Use that while fixing a nasty misuse of qsort in vtable codegen which, somehow,
has not actually caused a crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96062 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
409059701c80c4e60a02207fbf231b27c65d5333 13-Feb-2010 John McCall <rjmccall@apple.com> Add an option to disable the LLVM verifier pass (which is still always
disabled in NDEBUG builds). The option applies only to -cc1 invocations and is:
-disable_llvm_verifier



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96046 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
824e19ed926d7aa1296a007d0607ac4437e3c4a9 13-Feb-2010 John McCall <rjmccall@apple.com> Add an option to disable the LLVM verifier pass (which is still always
disabled in NDEBUG builds). The option applies only to -cc1 invocations and is:
-disable_llvm_verifier



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96046 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
5d9b06134bd92acf490bb57ec8d0613df10cf511 13-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Funnel changes to the ImportedDecls list in the ASTImporter through a
single Imported function, in preparation for fixing a serious design
flaw.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
5ce5dab3c30e4255b8f62b148b6a86f09a444aaa 13-Feb-2010 Douglas Gregor <dgregor@apple.com> Funnel changes to the ImportedDecls list in the ASTImporter through a
single Imported function, in preparation for fixing a serious design
flaw.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
93f9b324137514b4fd95d28a95e356190488a37f 12-Feb-2010 Ted Kremenek <kremenek@apple.com> Make the following functions thread-safe but having them return an std::string that is reconstructed
every time they are called:

getClangRevision()
getClangFullRepositoryVersion()
getClangFullVersion()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
a2a9d6e4e5b6001b86b7dfc5db1ea296ce29a3d3 12-Feb-2010 Ted Kremenek <kremenek@apple.com> Make the following functions thread-safe but having them return an std::string that is reconstructed
every time they are called:

getClangRevision()
getClangFullRepositoryVersion()
getClangFullVersion()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
494ab3167ba14e70c84a2e6e7a7f387a9217872d 12-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement AST importing and merging for enumeration types and
enumerators, along with ImplicitCastExprs to make it work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96024 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
36ead2e992abb30aa3b4a40b4c8cb22cc9389fef 12-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement AST importing and merging for enumeration types and
enumerators, along with ImplicitCastExprs to make it work.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96024 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
56ca04563c38d5c7d4e3b1c4fac6d14cc30ad3fa 12-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to fix a warning which exposed a bug in building
a qualified objective-c pointer type. Fixes radar 7638810.
(Also removes a FIXME).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
432a8893f7e30d141d7f279bd00b741a3cdac81f 12-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to fix a warning which exposed a bug in building
a qualified objective-c pointer type. Fixes radar 7638810.
(Also removes a FIXME).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
95e20014f3cf65a7e7717849772e52c105fb7da3 12-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Improve representation of tag declarations first declared or defined
within the declarator of another declaration, from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b37b648b3f2bba4c557a1604ced19b526b25a372 12-Feb-2010 Douglas Gregor <dgregor@apple.com> Improve representation of tag declarations first declared or defined
within the declarator of another declaration, from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
27dc8619071ac2ef47318bf4ff21b99a3e3793ae 12-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Improve documentation for DependentTypeOfExprType, DependentDecltypeType. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c4875ee41ba35f1d746f4266ce47461247f19f41 12-Feb-2010 Douglas Gregor <dgregor@apple.com> Improve documentation for DependentTypeOfExprType, DependentDecltypeType. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d665afdb7e5fdcb4a295c91863cc13c90c3bf4c4 12-Feb-2010 John McCall <rjmccall@apple.com> Waste two bits in every clang::Type so that the type class can be read
in a single byte-load rather than some crazy bitmunging operation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
27935ee59c30b0d8b610ab676aab8e65350af932 12-Feb-2010 John McCall <rjmccall@apple.com> Waste two bits in every clang::Type so that the type class can be read
in a single byte-load rather than some crazy bitmunging operation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
522a9fadbbb012a147c5a9977af9a895e270fe36 12-Feb-2010 Tanya Lattner <tonic@nondot.org> Implementing unused function warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
rontend/PCHBitCodes.h
rontend/PCHReader.h
e6bbc01d1c4ec5241df36042e0a4a12a6711934b 12-Feb-2010 Tanya Lattner <tonic@nondot.org> Implementing unused function warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
rontend/PCHBitCodes.h
rontend/PCHReader.h
4379c49f2c5bc634193521ab80f493f8cd2b23ed 12-Feb-2010 Charles Davis <cdavis@mines.edu> Warn about using the new force_align_arg_pointer attribute on a function
pointer. If you don't like the new warning, you can turn it off with
-Wno-force-align-arg-pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b84412f587bc9f2f90930cc1c63ba10cb833bd4e 12-Feb-2010 Charles Davis <cdavis@mines.edu> Warn about using the new force_align_arg_pointer attribute on a function
pointer. If you don't like the new warning, you can turn it off with
-Wno-force-align-arg-pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
4fc71f8b92264f2d119bb2d28b1d42649aaf20f8 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Fix leak in CXXNewExpr where the SubExprs array would get allocated directly using 'new[]' instead of the allocator associated with ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ad7fe864862305c2f71e047cdf6706ef43aebdc0 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Fix leak in CXXNewExpr where the SubExprs array would get allocated directly using 'new[]' instead of the allocator associated with ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e6d8816efc582dc04cf793e78dc9be2d4b81cf3d 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Allocate the SubExprs array in ObjCMessageExpr using the allocator associated with ASTContext. This fixes yet another leak (<rdar://problem/7639260>).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
eb3b324800598cc3d5385fbad95ae5cff2c79113 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Allocate the SubExprs array in ObjCMessageExpr using the allocator associated with ASTContext. This fixes yet another leak (<rdar://problem/7639260>).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
984a375f11d74480963146861d78b2396ca7ed9a 11-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> When AST merging for record declarations fails, warn about the
incompatibility and show where the structural differences are. For
example:

struct1.c:36:8: warning: type 'struct S7' has incompatible definitions
in different translation units
struct S7 { int i : 8; unsigned j : 8; } x7;
^
struct1.c:36:33: note: bit-field 'j' with type 'unsigned int' and length 8 here
struct S7 { int i : 8; unsigned j : 8; } x7;
^
struct2.c:33:33: note: bit-field 'j' with type 'unsigned int' and length 16 here
struct S7 { int i : 8; unsigned j : 16; } x7;
^

There are a few changes to make this work:
- ASTImporter now has only a single Diagnostic object, not multiple
diagnostic objects. Otherwise, having a warning/error printed via
one Diagnostic and its note printed on the other Diagnostic could
cause the note to be suppressed.
- Implemented import functionality for IntegerLiteral (along with
general support for statements and expressions)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/DiagnosticASTKinds.td
4800d95d28b20eca5d57c108ae3d2e6e312c1182 11-Feb-2010 Douglas Gregor <dgregor@apple.com> When AST merging for record declarations fails, warn about the
incompatibility and show where the structural differences are. For
example:

struct1.c:36:8: warning: type 'struct S7' has incompatible definitions
in different translation units
struct S7 { int i : 8; unsigned j : 8; } x7;
^
struct1.c:36:33: note: bit-field 'j' with type 'unsigned int' and length 8 here
struct S7 { int i : 8; unsigned j : 8; } x7;
^
struct2.c:33:33: note: bit-field 'j' with type 'unsigned int' and length 16 here
struct S7 { int i : 8; unsigned j : 16; } x7;
^

There are a few changes to make this work:
- ASTImporter now has only a single Diagnostic object, not multiple
diagnostic objects. Otherwise, having a warning/error printed via
one Diagnostic and its note printed on the other Diagnostic could
cause the note to be suppressed.
- Implemented import functionality for IntegerLiteral (along with
general support for statements and expressions)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95900 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/DiagnosticASTKinds.td
838f8e67cab2f1ff6958ad8fc78eaf5a78340fd7 11-Feb-2010 Eli Friedman <eli.friedman@gmail.com> Add builtins from PR5255. Implementations coming soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d42ba8a578e905724633ac8fa1bf09cdfc3884c5 11-Feb-2010 Eli Friedman <eli.friedman@gmail.com> Add builtins from PR5255. Implementations coming soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c0c30b203cd1e17a8688d3719e3ac7400f758709 11-Feb-2010 Anders Carlsson <andersca@mac.com> More vtable layout dumper improvements. Handle destructors, dump the complete function type of the member functions (using PredefinedExpr::ComputeName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95887 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
848fa64143fbe5ae62a601ad61277f741e54dfab 11-Feb-2010 Anders Carlsson <andersca@mac.com> More vtable layout dumper improvements. Handle destructors, dump the complete function type of the member functions (using PredefinedExpr::ComputeName.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95887 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
484523095e8c47e83297153c5bfc962f17eb553e 11-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove noisy semicolon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95872 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
8aa79947cbf8f0f3ac82cdd36a823ac1bb53cab4 11-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove noisy semicolon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95872 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
5b82fe851c5fa52e23bd4be6dcf628fe79daa5a4 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Patch by Cristian Draghici:

Enhance the printf format string checking when using the format
specifier flags ' ', '0', '+' with the 'p' or 's' conversions (since
they are nonsensical and undefined). This is similar to GCC's
checking.

Also warning when a precision is used with the 'p' conversin
specifier, since it has no meaning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95869 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
5c41ee8c49995fb4fd76d686b239c15cbab261ea 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Patch by Cristian Draghici:

Enhance the printf format string checking when using the format
specifier flags ' ', '0', '+' with the 'p' or 's' conversions (since
they are nonsensical and undefined). This is similar to GCC's
checking.

Also warning when a precision is used with the 'p' conversin
specifier, since it has no meaning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95869 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
bbc87477d3d15d12a75e1cf717bcd0631732d259 11-Feb-2010 Anders Carlsson <andersca@mac.com> Check in the beginnings of my new vtable layout builder idea.

Right now, it's off by default but can be tested by passing -fdump-vtable-layouts to clang -cc1. This option will cause all vtables that will normally be emitted as part of codegen to also be dumped using the new layout code.

I've also added a very simple new vtable layout test case.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
824d7ea07a4e9208925daa6ae9289fb2b39bce9f 11-Feb-2010 Anders Carlsson <andersca@mac.com> Check in the beginnings of my new vtable layout builder idea.

Right now, it's off by default but can be tested by passing -fdump-vtable-layouts to clang -cc1. This option will cause all vtables that will normally be emitted as part of codegen to also be dumped using the new layout code.

I've also added a very simple new vtable layout test case.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95865 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
64474f20248057f0c7cd6e2332811ce32e502d5a 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Use the allocator associated with ASTContext to allocate the args
array associated with NonNullAttr. This fixes yet another leak when
ASTContext uses a BumpPtrAllocator.

Fixes: <rdar://problem/7637150>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95863 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
5961611172f1c210fbbaa55b3c692e13b1fc7be4 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Use the allocator associated with ASTContext to allocate the args
array associated with NonNullAttr. This fixes yet another leak when
ASTContext uses a BumpPtrAllocator.

Fixes: <rdar://problem/7637150>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95863 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
2e7e2138cf03a0b0a0c3ae6da773ff138ce39e17 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Have ~ASTContext() delete StoredDeclsMap (internal to DeclContext) by
storing the set of StoredDeclsMaps in an internal vector of void*.
This isn't an ideal solution, but for the time being this fixes a
major memory leak with these DenseMaps not being freed.

Fixes: <rdar://problem/7634755>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3478eb6872d836600caf45b0f81c2065d685d6e0 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Have ~ASTContext() delete StoredDeclsMap (internal to DeclContext) by
storing the set of StoredDeclsMaps in an internal vector of void*.
This isn't an ideal solution, but for the time being this fixes a
major memory leak with these DenseMaps not being freed.

Fixes: <rdar://problem/7634755>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
222ea5b36692d59f7feab62ea52b4c698514a27f 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Remove use of 'std::string' from Attr objects, using instead a byte
array allocated using the allocator in ASTContext. This addresses
these strings getting leaked when using a BumpPtrAllocator (in
ASTContext).

Fixes: <rdar://problem/7636765>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
3d2c43e9a7ca55f5ddc1f0c77d8f5e5ea7c1b573 11-Feb-2010 Ted Kremenek <kremenek@apple.com> Remove use of 'std::string' from Attr objects, using instead a byte
array allocated using the allocator in ASTContext. This addresses
these strings getting leaked when using a BumpPtrAllocator (in
ASTContext).

Fixes: <rdar://problem/7636765>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
19b2fd19a4059b90844348362168382bd2be13a3 11-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -rewrite-objc, which is an interface to clang -cc1 -rewrite-objc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95849 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
river/Types.def
64952508c2b0c8bffb45c8b410f0af3d2457f59b 11-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -rewrite-objc, which is an interface to clang -cc1 -rewrite-objc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95849 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.td
river/Types.def
cb88a1522340ce77e45991250b8599bbc9f92dbf 11-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Remove another redundant ASTContext parameter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95843 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2d5b70386d6f5553b667b6e407ca781b4ca2009e 11-Feb-2010 Douglas Gregor <dgregor@apple.com> Remove another redundant ASTContext parameter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95843 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
47bedd03ccebfcf7f6156aed64ef45a9e6318145 11-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate a bunch of unnecessary ASTContexts from members functions of
Decl subclasses. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
838db383b69b9fb55f55c8e9546477df198a4faa 11-Feb-2010 Douglas Gregor <dgregor@apple.com> Eliminate a bunch of unnecessary ASTContexts from members functions of
Decl subclasses. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d00b532ca61c8efe030a58d5fa57e47446154223 11-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose when user provided getter is being used as lvalue
using property dot-syntax. Fixes radar 7628953.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95838 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
e9ff443040cb571ae2c5c2626c4dc9a9a812d84a 11-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Diagnose when user provided getter is being used as lvalue
using property dot-syntax. Fixes radar 7628953.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95838 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
0953831bd17a3ec879d4ddbbf33cbb2c67560fb0 11-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate the ASTContext parameter from RecordDecl::getDefinition()
and CXXRecordDecl::getDefinition(); it's totally unnecessary. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95836 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
952b017601f9c82b51119c3a1600f1312a833db9 11-Feb-2010 Douglas Gregor <dgregor@apple.com> Eliminate the ASTContext parameter from RecordDecl::getDefinition()
and CXXRecordDecl::getDefinition(); it's totally unnecessary. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95836 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
fd55fad6f8d0b82717f86d9b9fe5a346864ca30a 11-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement basic AST merging for classes, structs, and unions in C.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
96a01b4acf76fb8fe1e05341a97a27b39fb0b914 11-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement basic AST merging for classes, structs, and unions in C.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0e99a69f84925542bb6620d4c196bcec6e2f1467 11-Feb-2010 Charles Davis <cdavis@mines.edu> Add support for the force_align_arg_pointer attribute. This is an x86-specific
attribute, so it uses Anton's new target-specific attribute support. It's
supposed to ensure that the stack is 16-byte aligned, but since necessary
support is lacking from LLVM, this is a no-op for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
5a0164d6ab843ca61437ec59a504365cb1c98f43 11-Feb-2010 Charles Davis <cdavis@mines.edu> Add support for the force_align_arg_pointer attribute. This is an x86-specific
attribute, so it uses Anton's new target-specific attribute support. It's
supposed to ensure that the stack is 16-byte aligned, but since necessary
support is lacking from LLVM, this is a no-op for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
52e5cd68aae0ef2f85da925e5e3f49a3641ea997 10-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement basic support for merging function declarations across
translation units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95794 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
a404ea673cbee5e74af710a5f1ab571e71580b67 10-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement basic support for merging function declarations across
translation units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95794 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
f8fd82ba49827db0f6a6ba00c55a7b56b12a19fa 10-Feb-2010 Shih-wei Liao <sliao@google.com> Check in LLVM r95781.
ST/APValue.h
ST/AST.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/ASTImporter.h
ST/Attr.h
ST/CXXInheritance.h
ST/CanonicalType.h
ST/CharUnits.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclContextInternals.h
ST/DeclGroup.h
ST/DeclNodes.def
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclVisitor.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/ExternalASTSource.h
ST/FullExpr.h
ST/NestedNameSpecifier.h
ST/ParentMap.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/Stmt.h
ST/StmtCXX.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtNodes.def
ST/StmtObjC.h
ST/StmtVisitor.h
ST/TemplateBase.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
ST/TypeNodes.def
ST/TypeOrdering.h
ST/TypeVisitor.h
ST/UnresolvedSet.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/PrintfFormatString.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisContext.h
nalysis/AnalysisDiagnostic.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/BumpVector.h
nalysis/Support/Optional.h
nalysis/Support/SaveAndRestore.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
asic/Builtins.def
asic/Builtins.h
asic/BuiltinsPPC.def
asic/BuiltinsX86.def
asic/CMakeLists.txt
asic/ConvertUTF.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/Linkage.h
asic/MacroBuilder.h
asic/Makefile
asic/OnDiskHashTable.h
asic/OperatorKinds.def
asic/OperatorKinds.h
asic/PartialDiagnostic.h
asic/PrettyStackTrace.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/Specifiers.h
asic/TargetBuiltins.h
asic/TargetInfo.h
asic/TargetOptions.h
asic/TemplateKinds.h
asic/TokenKinds.def
asic/TokenKinds.h
asic/TypeTraits.h
asic/Version.h
MakeLists.txt
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/BugReporter/PathDiagnostic.h
hecker/Checkers/DereferenceChecker.h
hecker/Checkers/LocalCheckers.h
hecker/DomainSpecific/CocoaConventions.h
hecker/ManagerRegistry.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRExprEngineBuilders.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRStateTrait.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SummaryManager.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
odeGen/CodeGenOptions.h
odeGen/ModuleBuilder.h
river/Action.h
river/Arg.h
river/ArgList.h
river/CC1Options.h
river/CC1Options.td
river/CMakeLists.txt
river/Compilation.h
river/Driver.h
river/DriverDiagnostic.h
river/HostInfo.h
river/Job.h
river/Makefile
river/OptParser.td
river/OptSpecifier.h
river/OptTable.h
river/Option.h
river/Options.h
river/Options.td
river/Phases.h
river/Tool.h
river/ToolChain.h
river/Types.def
river/Types.h
river/Util.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/Analyses.def
rontend/AnalysisConsumer.h
rontend/ChainedDiagnosticClient.h
rontend/CommandLineSourceLoc.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/DeclContextXML.def
rontend/DeclXML.def
rontend/DependencyOutputOptions.h
rontend/DiagnosticOptions.h
rontend/DocumentXML.def
rontend/DocumentXML.h
rontend/FixItRewriter.h
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendDiagnostic.h
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
rontend/HeaderSearchOptions.h
rontend/LangStandard.h
rontend/LangStandards.def
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/PathDiagnosticClients.h
rontend/PreprocessorOptions.h
rontend/PreprocessorOutputOptions.h
rontend/StmtXML.def
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
rontend/TypeXML.def
rontend/Utils.h
rontend/VerifyDiagnosticsClient.h
ndex/ASTLocation.h
ndex/Analyzer.h
ndex/CallGraph.h
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/GlobalSelector.h
ndex/Handlers.h
ndex/IndexProvider.h
ndex/Indexer.h
ndex/Program.h
ndex/STLExtras.h
ndex/SelectorMap.h
ndex/TranslationUnit.h
ndex/Utils.h
ex/DirectoryLookup.h
ex/ExternalPreprocessorSource.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/LexDiagnostic.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Pragma.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ex/Token.h
ex/TokenConcatenation.h
ex/TokenLexer.h
akefile
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseDiagnostic.h
arse/Parser.h
arse/Scope.h
arse/Template.h
ewrite/DeltaTree.h
ewrite/HTMLRewrite.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
ema/CodeCompleteConsumer.h
ema/ExternalSemaSource.h
ema/ParseAST.h
ema/SemaConsumer.h
ema/SemaDiagnostic.h
21f7bcaa607ffc73866f7b0c2141f449c2943bbf 10-Feb-2010 Daniel Dunbar <daniel@zuster.org> Switch to using -fsjlj-exceptions instead of hard-coding it. Notably, this fixes
calls to the UnwindResumeOrRethrow function for C++/Obj-C exception handling,
for Darwin ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95787 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
b2987d159a88ab0ee2e40c884eb4d77b42ab89b6 10-Feb-2010 Daniel Dunbar <daniel@zuster.org> Switch to using -fsjlj-exceptions instead of hard-coding it. Notably, this fixes
calls to the UnwindResumeOrRethrow function for C++/Obj-C exception handling,
for Darwin ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95787 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
1b898e999f1f26dc1634f2f2ebaafbd5e69e9a13 10-Feb-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Add -fsjlj-exceptions, which requires far too much button pushing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
73482884560be041d86eccbd7dd5a6918677393b 10-Feb-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Add -fsjlj-exceptions, which requires far too much button pushing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
c5d12db8396180a6a84e82caac1e11709f29da03 10-Feb-2010 John McCall <rjmccall@apple.com> Improve access control diagnostics. Perform access control on member-pointer
conversions. Fix an access-control bug where privileges were not considered
at intermediate points along the inheritance path. Prepare for friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95775 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
asic/DiagnosticSemaKinds.td
6b2accb4793e16b2e93a8c2589f5df702231f17a 10-Feb-2010 John McCall <rjmccall@apple.com> Improve access control diagnostics. Perform access control on member-pointer
conversions. Fix an access-control bug where privileges were not considered
at intermediate points along the inheritance path. Prepare for friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95775 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
asic/DiagnosticSemaKinds.td
f9646bbcd669c6afc2c2b0a630793d39a2c896f6 10-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement basic support for importing source locations from one AST
into another AST, including their include history. Here's an example
error that involves a conflict merging a variable with different types
in two translation units (diagnosed in the third AST context into
which everything is merged).

/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var2.c:3:5:
error: external variable 'x2' declared with incompatible types in
different translation units ('int' vs. 'double')
int x2;
^
In file included from
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var1.c:3:
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var1.h:1:8:
note: declared here with type 'double'
double x2;
^

Although we maintain include history, we do not maintain macro
instantiation history across a merge. Instead, we map down to the
spelling location (for now!).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
885237354fd902998c6ae9d7cc3dc8de96b123dc 10-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement basic support for importing source locations from one AST
into another AST, including their include history. Here's an example
error that involves a conflict merging a variable with different types
in two translation units (diagnosed in the third AST context into
which everything is merged).

/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var2.c:3:5:
error: external variable 'x2' declared with incompatible types in
different translation units ('int' vs. 'double')
int x2;
^
In file included from
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var1.c:3:
/Volumes/Data/dgregor/Projects/llvm/tools/clang/test/ASTMerge/Inputs/var1.h:1:8:
note: declared here with type 'double'
double x2;
^

Although we maintain include history, we do not maintain macro
instantiation history across a merge. Instead, we map down to the
spelling location (for now!).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
5716d5e3feaf4919942d97ec46e2130913bf6b4f 09-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Complain about types and declarations that we don't know how to import.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
89cc9d6e2aaf794fbd2c228a3755c19062ca0ba0 09-Feb-2010 Douglas Gregor <dgregor@apple.com> Complain about types and declarations that we don't know how to import.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.td
545667c28edd700756332a08bb59b8b7cbd385c1 09-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Move the diagnostic argument formatting function out of Sema and make
it available within the AST library, of which Sema is one client. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95701 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
79a9a3417929e340e84dcbc06ed9c3a277cad959 09-Feb-2010 Douglas Gregor <dgregor@apple.com> Move the diagnostic argument formatting function out of Sema and make
it available within the AST library, of which Sema is one client. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95701 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
d9fd7f081668e0f457eb4e9182eec0ddd7cecf9a 09-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Implement synthesizing properties by default.
This is a non-fragile-abi feature only. Since it
breaks existing code, it is currently placed under
-fobjc-nonfragile-abi2 option for test purposes only
until further notice. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
412e798941ca64e2e6b084323915fa9aa5f6bdf3 09-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Implement synthesizing properties by default.
This is a non-fragile-abi feature only. Since it
breaks existing code, it is currently placed under
-fobjc-nonfragile-abi2 option for test purposes only
until further notice. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
river/CC1Options.td
river/Options.td
49216b909765ac03a39829b9e60b1e3c601f3342 09-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a testbed for merging multiple ASTs into a single AST
context with the AST importer. WIP, still useless but at least it has
a test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95683 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
9bed8798964d9f07599c2c9199701f86fbc70e20 09-Feb-2010 Douglas Gregor <dgregor@apple.com> Introduce a testbed for merging multiple ASTs into a single AST
context with the AST importer. WIP, still useless but at least it has
a test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95683 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendAction.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
d8120f709086b16b9948c63f9020111cc403f131 09-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement a specific diagnostic when a class template partial
specialization does not use any of its template parameters, then
recover far more gracefully. Fixes PR6181.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
de09096a9ee7f670dc74c6a5b7771953ffaf5c62 09-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement a specific diagnostic when a class template partial
specialization does not use any of its template parameters, then
recover far more gracefully. Fixes PR6181.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b60285d38b1d9c443b897cf42d85a7cfee54309 08-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Eliminate a pointer of storage in each ObjCInterfaceType and
ObjCObjectPointerType AST node by allocating the list of protocols
after the type node itself. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fd6a0887a099256c35a5b23e9afd517ffe95fa0a 08-Feb-2010 Douglas Gregor <dgregor@apple.com> Eliminate a pointer of storage in each ObjCInterfaceType and
ObjCObjectPointerType AST node by allocating the list of protocols
after the type node itself. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9360f32703a244acc38d068d7d2c0b8ae2237981 08-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Warn when cases are missing from a switch on a value of enumeration
type (-Wswitch), from Michal!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95592 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ba915af51ced751c46e7c2b9c6f3b59d2e668825 08-Feb-2010 Douglas Gregor <dgregor@apple.com> Warn when cases are missing from a switch on a value of enumeration
type (-Wswitch), from Michal!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95592 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6d24cd5aba5ccff206cfd191fea8b2553c7dee56 08-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of whether a tag was defined in a declarator vs. being
defined by itself, from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95586 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
591bd3cb605f1f0229b4b1d8a4b8183377064ec5 08-Feb-2010 Douglas Gregor <dgregor@apple.com> Keep track of whether a tag was defined in a declarator vs. being
defined by itself, from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95586 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7e8004acc5e6861e1b0f35c3fb1984754036a156 08-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Implement basic importing and merging of variable declarations within
the AST importer. This doesn't actually do anything (yet), because we
don't have driver logic for merging ASTs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/DiagnosticASTKinds.td
asic/DiagnosticSemaKinds.td
rontend/FrontendAction.h
089459a16bf7e9cd10617d1fac5ec0240a0a1ee6 08-Feb-2010 Douglas Gregor <dgregor@apple.com> Implement basic importing and merging of variable declarations within
the AST importer. This doesn't actually do anything (yet), because we
don't have driver logic for merging ASTs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
asic/DiagnosticASTKinds.td
asic/DiagnosticSemaKinds.td
rontend/FrontendAction.h
34a8c6ff2473579ce87e654d91533f48ec8ed0e0 08-Feb-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When placing an annotation token over an existing annotation token, make sure that the new token's range extends to the end of the old token. Assert that in AnnotateCachedTokens. Fixes PR6248.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95555 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
39d67117f896c6e2faa727671ef64b3c04b0e3fe 08-Feb-2010 Sebastian Redl <sebastian.redl@getdesigned.at> When placing an annotation token over an existing annotation token, make sure that the new token's range extends to the end of the old token. Assert that in AnnotateCachedTokens. Fixes PR6248.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95555 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
79af7da4402b6844ff72ffd4b0b2355ff9d7fa81 08-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Reapply r95546, no intended change in performance or functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95552 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
b6f3c70fb8a0def24bcaa937dc28358f20859c73 08-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Reapply r95546, no intended change in performance or functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95552 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
dffd58c27666c7dd7121edc9ad4eaa45e0047c36 08-Feb-2010 Ted Kremenek <kremenek@apple.com> Revert 95546 since it changed the algorithmic characteristics of the convention lookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95547 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
e7d03121afaba80ccfdde83d3584149e301ec5af 08-Feb-2010 Ted Kremenek <kremenek@apple.com> Revert 95546 since it changed the algorithmic characteristics of the convention lookup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95547 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
d063917699e183a7bcd206ea16cfc4e8f95be640 08-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Simplify code with StringRef.

3 files changed, 76 insertions(+), 153 deletions(-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95546 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
de69f7044356093247f7453373bf86ac06ddc512 08-Feb-2010 Benjamin Kramer <benny.kra@googlemail.com> Simplify code with StringRef.

3 files changed, 76 insertions(+), 153 deletions(-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95546 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
360c6cbe0c197cd2b96618cd2ccd1aca0086e835 08-Feb-2010 Ted Kremenek <kremenek@apple.com> Revert 95541.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95545 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
1397663af9dbcc24dbf0e11de43931b3dc08fdbb 08-Feb-2010 Ted Kremenek <kremenek@apple.com> Revert 95541.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95545 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
24f033a685022615f7529fe8dafe4d71ad45c5dd 08-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Cache imported types

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
169fba50da76d71723cd1d91629cabb310f8bf9e 08-Feb-2010 Douglas Gregor <dgregor@apple.com> Cache imported types

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
d40b7101081b0a764be4b46b3e0b0a7ba1926f72 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Rename: GRState::getSVal(Stmt*) => getExprVal(),
GRState::getSVal(MemRegion*) => Load().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95541 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
6f8c430a95279ef048a356d6283871477b4ad351 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Rename: GRState::getSVal(Stmt*) => getExprVal(),
GRState::getSVal(MemRegion*) => Load().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95541 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
082714467891d8dad5c68d75ffb04f330e55505c 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Unify the implementation of getLValueElement of store managers.
It's more sophisticated than the original one of BasicStore. But it does
matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95536 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
52535688b1339e0b3898ac0d670052482851a3ab 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Unify the implementation of getLValueElement of store managers.
It's more sophisticated than the original one of BasicStore. But it does
matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95536 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
8a44ce8041d984d95672b58516c689a7b033cac4 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Unify the implementation of getLValueIvar and getLValueField of store managers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95535 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
c1511e04998e685c9e030323e248363b9633267d 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Unify the implementation of getLValueIvar and getLValueField of store managers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95535 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
e86eae0f0b3a3079f2dfc43b9777261496f0bb5b 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move common methods to the base StoreManager class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95534 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
459731d468235fa8adb27132be46a3b5654351c3 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Move common methods to the base StoreManager class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95534 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
29cb7163f7aa3a07bb9065c5c85696148f924f07 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> ASTContext is now a reference member of StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95531 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
2a393db0969630d01a71fd384affb33ea0a693d1 08-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> ASTContext is now a reference member of StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95531 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
548e9ea5aa883368715bf3af889213a0109d22e1 07-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Roll r95513 back in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
eb7f96141f754150a92433286fa385910a22f494 07-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Roll r95513 back in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
8ba488ce817e898a6c6fadf62f91f908f7053b5c 07-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Roll out r95513, it seems to have broken self hosting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
a8ad5d4975aea17c0e7868f83c25083a0eb2040d 07-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Roll out r95513, it seems to have broken self hosting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
b82b35f9cd18aabea0144d413f29c1f5c08f72cc 07-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Add PCH support for CXXBoolLiteralExpr and CXXNullPtrLiteralExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
1eb1113b139503a3895714d94ec9c037ae62d3b1 07-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Add PCH support for CXXBoolLiteralExpr and CXXNullPtrLiteralExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
c6ad9b5808bc6d716a3a26f61c2e23e49a29ebfa 07-Feb-2010 Anders Carlsson <andersca@mac.com> Add attributes to namespace decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95510 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2a3503d85374ecc2b8e862a8ed9cec8f10f72e84 07-Feb-2010 Anders Carlsson <andersca@mac.com> Add attributes to namespace decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95510 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
05326029789a06dbdbf8b3feaada84a7556e8ff7 07-Feb-2010 Anders Carlsson <andersca@mac.com> Add support for threadsafe statics, and make them the default (matching gcc).

Daniel, I'd appreciate a review of the driver/cc1 parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95508 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
a508b7de6c5246ab04ed69d0ab4e9977ec1fb4d4 07-Feb-2010 Anders Carlsson <andersca@mac.com> Add support for threadsafe statics, and make them the default (matching gcc).

Daniel, I'd appreciate a review of the driver/cc1 parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95508 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
12534a9b7c5cbf6b8c8b3bb62ec13cd38a4a33f0 06-Feb-2010 Anders Carlsson <andersca@mac.com> Implement a warning diagnostic for weak vtables. Fixes PR6116.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1610b8198e31eb6d77d4d6904d6af88ef5cc6d3b 06-Feb-2010 Anders Carlsson <andersca@mac.com> Implement a warning diagnostic for weak vtables. Fixes PR6116.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ad760b38613b3f7f1024b011f6109bed1487b32e 05-Feb-2010 John McCall <rjmccall@apple.com> Standardize the parsing of function type attributes in a way that
follows (as conservatively as possible) gcc's current behavior: attributes
written on return types that don't apply there are applied to the function
instead, etc. Only parse CC attributes as type attributes, not as decl attributes;
don't accepet noreturn as a decl attribute on ValueDecls, either (it still
needs to apply to other decls, like blocks). Consistently consume CC/noreturn
information throughout codegen; enforce this by removing their default values
in CodeGenTypes::getFunctionInfo().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
04a67a6aa3dfdc92d57f7f8d93ba397348c868a4 05-Feb-2010 John McCall <rjmccall@apple.com> Standardize the parsing of function type attributes in a way that
follows (as conservatively as possible) gcc's current behavior: attributes
written on return types that don't apply there are applied to the function
instead, etc. Only parse CC attributes as type attributes, not as decl attributes;
don't accepet noreturn as a decl attribute on ValueDecls, either (it still
needs to apply to other decls, like blocks). Consistently consume CC/noreturn
information throughout codegen; enforce this by removing their default values
in CodeGenTypes::getFunctionInfo().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
663a2dc482905170a9ee846bf52c500c6741688b 05-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Oops, thanks Clang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
4794081837ba088965a71652a46494ef4c6b2590 05-Feb-2010 Douglas Gregor <dgregor@apple.com> Oops, thanks Clang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
0dfa56b5b0e2fb319d759dba8748419a5fa2a63a 05-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Initial skeleton of an AST "importer", which will take AST elements from
one context and import them into another context, merging them
according to language-specific rules. This is a skeleton. It doesn't
work, it isn't testable, but I want it in version control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
1b2949d27ec72894dec017c330c0548af4bb2476 05-Feb-2010 Douglas Gregor <dgregor@apple.com> Initial skeleton of an AST "importer", which will take AST elements from
one context and import them into another context, merging them
according to language-specific rules. This is a skeleton. It doesn't
work, it isn't testable, but I want it in version control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTImporter.h
08938e3746e96c4de85fc623a879b8a3bbff08fb 05-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Some clean up of replacement text API no longer needed by
my recent changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95391 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
88906cddbb1d5b3a868eeeec6cb170befc829c2f 05-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Some clean up of replacement text API no longer needed by
my recent changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95391 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
827d1a19016d0a6413a13a3d84bb9621614118f7 05-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Revert the unused TST_pixel entry from r95335 as it is not listed in the Sema
switch, triggering warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Specifiers.h
arse/DeclSpec.h
8047f17ff15ff85bfcfc666a2979a77d8af5a4ae 05-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Revert the unused TST_pixel entry from r95335 as it is not listed in the Sema
switch, triggering warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95381 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Specifiers.h
arse/DeclSpec.h
ff2621b6a57e72f8f895b701681728f70d73014c 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95365 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
72119c478ffb35354bb168890c77e6ab5271ba06 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95365 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
84ed819ff8442c1f9f14c488c6e3862323c5b6cb 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95364 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
461147fc8d39f7ad9ee91c53e113df585bd58a64 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95364 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
974f12890fee6dd9923c1b71e08c8a0ba92c345c 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95362 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
f5416bdb75832e0a400cf3b19bd2116d2fed9ebe 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95362 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
3ba7b3ac2b83fc52d27ee40a254ef3e3d22ac9f5 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95360 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
b4a9c612f901a47135ea531f60db997d4cc4cdf5 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95360 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
7c4d7b0e759c905f590e9c80ba877f9ea014a2b7 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95357 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
576bb92057979b14ca04b3080a9405662d0217a3 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> More GRState* -> Store changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95357 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
9d276f4f58d0f6ccc3aa218b9c7d34515abdb60a 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Change LazyCompoundVal to a <Store, MemRegion*> pair. We really don't need to
spread GRState* everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95354 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/ValueManager.h
bfcaf8048d1673320de60a22ca9c297d7484b2a8 05-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Change LazyCompoundVal to a <Store, MemRegion*> pair. We really don't need to
spread GRState* everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95354 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/ValueManager.h
bd9e9c41f75c55177d083502ada1e805aacadc35 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-checker-cfref' to '-analyzer-check-objc-mem'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95348 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
565e465c6d0093f1bf8414b2cabdc842022385a9 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-checker-cfref' to '-analyzer-check-objc-mem'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95348 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
9f0ca58754c1ee46c42fecf5b7b19725a0cd8473 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-missing-dealloc' to '-analyzer-check-objc-missing-dealloc'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95347 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
7909fc8833e734aac521d7d6945bd823d75150ac 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-missing-dealloc' to '-analyzer-check-objc-missing-dealloc'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95347 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
8d64b4226e42a62d16b9bcaee5a6465e672ac19a 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-methodsigs' to '-analyzer-check-objc-methodsigs'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95346 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
fa15be4cf95b7ed2d1df583497b16a6f897cf789 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-methodsigs' to '-analyzer-check-objc-methodsigs'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95346 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
31d76528d2e4c65bbf24a8b03050cb06bddf655c 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-unused-ivars' to '-analyzer-check-objc-unused-ivars'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95345 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
2ade536f6815bf6ff128333520232c3b0e701146 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-objc-unused-ivars' to '-analyzer-check-objc-unused-ivars'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95345 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
4ce4665ff3801ca93abe5e3c54a736aa30dd1e02 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-dead-stores' to '-analyzer-check-dead-stores'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95343 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
cd9902bfb79c5c67559360514951714bdafac36e 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-dead-stores' to '-analyzer-check-dead-stores'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95343 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
ea87f3ac2f31f27f154acf097cea3a61d7267c46 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-security-syntactic' to '-analyzer-check-security-syntactic'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95342 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
fb3f893bc58071e548c97a3d667c8ab9b0c38cfb 05-Feb-2010 Ted Kremenek <kremenek@apple.com> Rename -cc1 option '-warn-security-syntactic' to '-analyzer-check-security-syntactic'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95342 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/Analyses.def
438d00a23413bb5e63afa12a975fd2f2e6216293 05-Feb-2010 John Thompson <john.thompson.jtsoftware@gmail.com> First stage of adding AltiVec support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95335 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/Specifiers.h
asic/TokenKinds.def
arse/DeclSpec.h
arse/Parser.h
82287d19ded35248c4ce6a425ce74116a13ce44e 05-Feb-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> First stage of adding AltiVec support

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95335 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/Specifiers.h
asic/TokenKinds.def
arse/DeclSpec.h
arse/Parser.h
ff48492bf0bafea3cc3f549bad578259ccc67a81 04-Feb-2010 John McCall <rjmccall@apple.com> Extract a common structure for holding information about the definition
of a C++ record. Exposed a lot of problems where various routines were
silently doing The Wrong Thing (or The Acceptable Thing in The Wrong Order)
when presented with a non-definition. Also cuts down on memory usage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
86ff308724171494395a840fd2efbe25e62f352e 04-Feb-2010 John McCall <rjmccall@apple.com> Extract a common structure for holding information about the definition
of a C++ record. Exposed a lot of problems where various routines were
silently doing The Wrong Thing (or The Acceptable Thing in The Wrong Order)
when presented with a non-definition. Also cuts down on memory usage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
41c4e6c50f5fa693f4144e028c2e01ea95d865b9 04-Feb-2010 Ted Kremenek <kremenek@apple.com> Move ParseFormatString() and FormatStringHandler back into the analyze_printf namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95324 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
74d56a168966ff015824279a24aaf566180ed97d 04-Feb-2010 Ted Kremenek <kremenek@apple.com> Move ParseFormatString() and FormatStringHandler back into the analyze_printf namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95324 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
543d818dfdf7b0d4ad5cf9fd77be68782b1030c5 04-Feb-2010 Ted Kremenek <kremenek@apple.com> Convert flags in FormatSpecifier to be bitfields instead of doing
direct bit manipulation. This is is less error prone, and fixes a bug
in the handling of the LeadingZeroes flag as pointed out by Cristian
Draghici.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
03db470ec53315368f200a2382590e41ef9ff8d4 04-Feb-2010 Ted Kremenek <kremenek@apple.com> Convert flags in FormatSpecifier to be bitfields instead of doing
direct bit manipulation. This is is less error prone, and fixes a bug
in the handling of the LeadingZeroes flag as pointed out by Cristian
Draghici.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
db5993538c7f29ea7331dcb7292c083e1bab798c 04-Feb-2010 John McCall <rjmccall@apple.com> Allow calling convention attributes to apply to types. Patch by Chip Davis!




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f82b4e85b1219295cad4b5851b035575bc293010 04-Feb-2010 John McCall <rjmccall@apple.com> Allow calling convention attributes to apply to types. Patch by Chip Davis!




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7b3973a04c8e42803d8e9d09b99ed62b0d1d0580 04-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Cast evaluation no longer touch GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95290 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SValuator.h
814e6b915450456eb2a1ba15d82fc7f8ae3bc8a6 04-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Cast evaluation no longer touch GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95290 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/SValuator.h
14ae946ce5c568b2fdfe7512bb9ef0294f8d2ef5 04-Feb-2010 John McCall <rjmccall@apple.com> Mangle member expressions. Also invented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
2f27bf854f0519810b34afd209089cc75536b757 04-Feb-2010 John McCall <rjmccall@apple.com> Mangle member expressions. Also invented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a951d436a924a498800d11317b5d85db826c61ff 04-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Now that CastRetrievedVal returns SVal, there is no need to use CastResult.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95279 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
c999ed792900026c462027e546d63c3f39310755 04-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Now that CastRetrievedVal returns SVal, there is no need to use CastResult.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95279 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/GRState.h
hecker/PathSensitive/Store.h
9f628a7a92013f6114687ebb063ff4f5a982ee6a 04-Feb-2010 John McCall <rjmccall@apple.com> Add mangling support for calls, sizeof/alignof, constructor calls,
float literals, and unresolved lookups (which required hand-wavey extensions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
1dd7383dc48718c452e71a625b29531dd96fbb9d 04-Feb-2010 John McCall <rjmccall@apple.com> Add mangling support for calls, sizeof/alignof, constructor calls,
float literals, and unresolved lookups (which required hand-wavey extensions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a34a5d0bebc02f65320a6331eaf407d847c8c6c1 03-Feb-2010 Sebastian Redl <sebastian.redl@getdesigned.at> In some contexts, type declarations cannot occur. Pass this information down to ParseClassSpecifier, to make its decision easier. Fixes PR6200.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95255 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d9bafa76f8d6eb9e4f4974ed322217f8df6bb82e 03-Feb-2010 Sebastian Redl <sebastian.redl@getdesigned.at> In some contexts, type declarations cannot occur. Pass this information down to ParseClassSpecifier, to make its decision easier. Fixes PR6200.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95255 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a3af6913e8d3eef8e1fb5c42534a97702fb3bf98 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> Revert "Numerous changes to selector handling:", this breaks a whole bunch of
working code, for no apparent reason.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
6d5a1c28593443f3973ef38f8fa042d59182412d 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> Revert "Numerous changes to selector handling:", this breaks a whole bunch of
working code, for no apparent reason.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
b93a009003f19418ef0ef0d8a42a3895562c7391 03-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> When a function or variable somehow depends on a type or declaration
that is in an anonymous namespace, give that function or variable
internal linkage.

This change models an oddity of the C++ standard, where names declared
in an anonymous namespace have external linkage but, because anonymous
namespace are really "uniquely-named" namespaces, the names cannot be
referenced from other translation units. That means that they have
external linkage for semantic analysis, but the only sensible
implementation for code generation is to give them internal
linkage. We now model this notion via the UniqueExternalLinkage
linkage type. There are several changes here:

- Extended NamedDecl::getLinkage() to produce UniqueExternalLinkage
when the declaration is in an anonymous namespace.
- Added Type::getLinkage() to determine the linkage of a type, which
is defined as the minimum linkage of the types (when we're dealing
with a compound type that is not a struct/class/union).
- Extended NamedDecl::getLinkage() to consider the linkage of the
template arguments and template parameters of function template
specializations and class template specializations.
- Taught code generation to rely on NamedDecl::getLinkage() when
determining the linkage of variables and functions, also
considering the linkage of the types of those variables and
functions (C++ only). Map UniqueExternalLinkage to internal
linkage, taking out the explicit checks for
isInAnonymousNamespace().

This fixes much of PR5792, which, as discovered by Anders Carlsson, is
actually the reason behind the pass-manager assertion that causes the
majority of clang-on-clang regression test failures. With this fix,
Clang-built-Clang+LLVM passes 88% of its regression tests (up from
67%). The specific numbers are:

LLVM:
Expected Passes : 4006
Expected Failures : 32
Unsupported Tests : 40
Unexpected Failures: 736

Clang:
Expected Passes : 1903
Expected Failures : 14
Unexpected Failures: 75

Overall:
Expected Passes : 5909
Expected Failures : 46
Unsupported Tests : 40
Unexpected Failures: 811

Still to do:
- Improve testing
- Check whether we should allow the presence of types with
InternalLinkage (in addition to UniqueExternalLinkage) given
variables/functions internal linkage in C++, as mentioned in
PR5792.
- Determine how expensive the getLinkage() calls are in practice;
consider caching the result in NamedDecl.
- Assess the feasibility of Chris's idea in comment #1 of PR5792.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/Linkage.h
asic/Specifiers.h
0b6bc8bd7a1d2a7d7478d13d78cff94cacad61fc 03-Feb-2010 Douglas Gregor <dgregor@apple.com> When a function or variable somehow depends on a type or declaration
that is in an anonymous namespace, give that function or variable
internal linkage.

This change models an oddity of the C++ standard, where names declared
in an anonymous namespace have external linkage but, because anonymous
namespace are really "uniquely-named" namespaces, the names cannot be
referenced from other translation units. That means that they have
external linkage for semantic analysis, but the only sensible
implementation for code generation is to give them internal
linkage. We now model this notion via the UniqueExternalLinkage
linkage type. There are several changes here:

- Extended NamedDecl::getLinkage() to produce UniqueExternalLinkage
when the declaration is in an anonymous namespace.
- Added Type::getLinkage() to determine the linkage of a type, which
is defined as the minimum linkage of the types (when we're dealing
with a compound type that is not a struct/class/union).
- Extended NamedDecl::getLinkage() to consider the linkage of the
template arguments and template parameters of function template
specializations and class template specializations.
- Taught code generation to rely on NamedDecl::getLinkage() when
determining the linkage of variables and functions, also
considering the linkage of the types of those variables and
functions (C++ only). Map UniqueExternalLinkage to internal
linkage, taking out the explicit checks for
isInAnonymousNamespace().

This fixes much of PR5792, which, as discovered by Anders Carlsson, is
actually the reason behind the pass-manager assertion that causes the
majority of clang-on-clang regression test failures. With this fix,
Clang-built-Clang+LLVM passes 88% of its regression tests (up from
67%). The specific numbers are:

LLVM:
Expected Passes : 4006
Expected Failures : 32
Unsupported Tests : 40
Unexpected Failures: 736

Clang:
Expected Passes : 1903
Expected Failures : 14
Unexpected Failures: 75

Overall:
Expected Passes : 5909
Expected Failures : 46
Unsupported Tests : 40
Unexpected Failures: 811

Still to do:
- Improve testing
- Check whether we should allow the presence of types with
InternalLinkage (in addition to UniqueExternalLinkage) given
variables/functions internal linkage in C++, as mentioned in
PR5792.
- Determine how expensive the getLinkage() calls are in practice;
consider caching the result in NamedDecl.
- Assess the feasibility of Chris's idea in comment #1 of PR5792.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
asic/Linkage.h
asic/Specifiers.h
a9d08c4e62c469129df8900f5fa541ccf3f21579 03-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton of flat store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95214 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
rontend/Analyses.def
5d26bc02e297543a0252d675d31632790b9a7e6b 03-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add skeleton of flat store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95214 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/Store.h
rontend/Analyses.def
bc7aeabe736622530eabe68e1dfac51fd3e5f9dd 03-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Implement Doug's suggestion. Eliminate the Stmts pointer from CXXTryStmt and instead allocate the statements after the object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
a1a396df16c02b22983b5c9592022fd9237d4866 03-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Implement Doug's suggestion. Eliminate the Stmts pointer from CXXTryStmt and instead allocate the statements after the object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
56cbd4e5ccece0236767469f75a45bf2682b4c82 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -[no-]integrated-as for clang.
- Requires backend support, which only exists for i386--darwin currently.

No 'as' required:
--
ddunbar@ozzy:tmp$ cat t.c
int main() { return 42; }
ddunbar@ozzy:tmp$ clang -m32 -integrated-as t.c


ddunbar@ozzy:tmp$ ./a.out; echo $?
42
ddunbar@ozzy:tmp$
--

The random extra whitespace is how you know its working! :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95194 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
river/Tool.h
river/ToolChain.h
8767cbc475ed96397b6f08617814eeb9cab121bd 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver: Add -[no-]integrated-as for clang.
- Requires backend support, which only exists for i386--darwin currently.

No 'as' required:
--
ddunbar@ozzy:tmp$ cat t.c
int main() { return 42; }
ddunbar@ozzy:tmp$ clang -m32 -integrated-as t.c


ddunbar@ozzy:tmp$ ./a.out; echo $?
42
ddunbar@ozzy:tmp$
--

The random extra whitespace is how you know its working! :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95194 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
river/Tool.h
river/ToolChain.h
f7752965429bab3b29c855b74b1f50f8b4e5b737 03-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Remove the SmallVector from CXXTryStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95190 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
b0e4cb6a88a4b4bd2ecdcc622e852fa3e20290c9 03-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Remove the SmallVector from CXXTryStmt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95190 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
f1f1590dc4c3ddec947ce5b0c6d7c03c057fbea7 03-Feb-2010 David Chisnall <csdavec@swan.ac.uk> Numerous changes to selector handling:

- Don't use GlobalAliases with non-0 GEPs (GNU runtime) - this was unsupported and LLVM will be generating errors if you do it soon. This also simplifies the code generated by the GNU runtime a bit.

- Make GetSelector() return a constant (GNU runtime), not a load of a store of a constant.

- Recognise @selector() expressions as valid static initialisers (as GCC does).

- Add methods to GCObjCRuntime to emit selectors as constants (needed for using @selector() expressions as constants. These need implementing for the Mac runtimes - I couldn't figure out how to do this, they seem to require a load.

- Store an ObjCMethodDecl in an ObjCSelectorExpr so that we can get at the type information for the selector. This is needed for generating typed selectors from @selector() expressions (as GCC does). Ideally, this information should be stored in the Selector, but that would be an invasive change. We should eventually add checks for common uses of @selector() expressions. Possibly adding an attribute that can be applied to method args providing the types of a selector so, for example, you'd do something like this:

- (id)performSelector: __attribute__((selector_types(id, SEL, id)))(SEL)
withObject: (id)object;

Then, any @selector() expressions passed to the method will be check to ensure that it conforms to this signature. We do this at run time on the GNU runtime already, but it would be nice to do it at compile time on all runtimes.

- Made @selector() expressions emit type info if available and the runtime supports it.

Someone more familiar with the Mac runtime needs to implement the GetConstantSelector() function in CGObjCMac. This currently just assert()s.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
a8fa96e366ab36145a5500dd4fbea717c217f131 03-Feb-2010 David Chisnall <csdavec@swan.ac.uk> Numerous changes to selector handling:

- Don't use GlobalAliases with non-0 GEPs (GNU runtime) - this was unsupported and LLVM will be generating errors if you do it soon. This also simplifies the code generated by the GNU runtime a bit.

- Make GetSelector() return a constant (GNU runtime), not a load of a store of a constant.

- Recognise @selector() expressions as valid static initialisers (as GCC does).

- Add methods to GCObjCRuntime to emit selectors as constants (needed for using @selector() expressions as constants. These need implementing for the Mac runtimes - I couldn't figure out how to do this, they seem to require a load.

- Store an ObjCMethodDecl in an ObjCSelectorExpr so that we can get at the type information for the selector. This is needed for generating typed selectors from @selector() expressions (as GCC does). Ideally, this information should be stored in the Selector, but that would be an invasive change. We should eventually add checks for common uses of @selector() expressions. Possibly adding an attribute that can be applied to method args providing the types of a selector so, for example, you'd do something like this:

- (id)performSelector: __attribute__((selector_types(id, SEL, id)))(SEL)
withObject: (id)object;

Then, any @selector() expressions passed to the method will be check to ensure that it conforms to this signature. We do this at run time on the GNU runtime already, but it would be nice to do it at compile time on all runtimes.

- Made @selector() expressions emit type info if available and the runtime supports it.

Someone more familiar with the Mac runtime needs to implement the GetConstantSelector() function in CGObjCMac. This currently just assert()s.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
7b1c919b68d31964e1ac663900da719058e010f5 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Wire up -emit-obj, for emitting object files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95182 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
da1573f95902a42aa4d11e8f45ab98ec7e27bc28 03-Feb-2010 Daniel Dunbar <daniel@zuster.org> clang -cc1: Wire up -emit-obj, for emitting object files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95182 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
19f36e292e6a6dabde1156d1aaa342cfa805ea8a 03-Feb-2010 John McCall <rjmccall@apple.com> Remove abstract expression kinds from the StmtClass enum. Update a few users
appropriately. Call out a few missing cases in the expression mangler.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ST/StmtNodes.def
ST/StmtVisitor.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
09cc141c89a5e9f305c17d7a88298647df16cedd 03-Feb-2010 John McCall <rjmccall@apple.com> Remove abstract expression kinds from the StmtClass enum. Update a few users
appropriately. Call out a few missing cases in the expression mangler.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ST/StmtNodes.def
ST/StmtVisitor.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
e7dcec91374a863a92a299d99f5cb5fbc3c6298b 03-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Fix DeclContext of an objective-c @catch variable
declaration. Fixes radar 7590273.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95164 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2f764f11f513c7b51c716fffa5d02e5de816836f 03-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Fix DeclContext of an objective-c @catch variable
declaration. Fixes radar 7590273.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95164 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0a113139bfed49a562a14f9b4de1b371400bb66e 02-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Don't error/warn on conflicting deployment targets. Apparently
this is still a popular thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95093 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
39053672d459bff1d3ab1f72a7901f24e3fa542e 02-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Don't error/warn on conflicting deployment targets. Apparently
this is still a popular thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95093 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
573aed17ff75e0d159aa9623d556aa32c8d54c54 02-Feb-2010 John McCall <rjmccall@apple.com> Extract a common base class between UnresolvedLookupExpr and
UnresolvedMemberExpr and employ it in a few places where it's useful.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95072 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
7bb12da2b0749eeebb21854c77877736969e59f2 02-Feb-2010 John McCall <rjmccall@apple.com> Extract a common base class between UnresolvedLookupExpr and
UnresolvedMemberExpr and employ it in a few places where it's useful.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95072 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
62995f069931ad50631eb8dbb2ab4653413577f5 02-Feb-2010 Chris Lattner <sabre@nondot.org> this is reasonably complete by now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95069 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
88aad88df1d47d756e5e76fbef6c0bcdaab51b42 02-Feb-2010 Chris Lattner <sabre@nondot.org> this is reasonably complete by now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95069 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
4999cb0d4c499b59ac341cdaacdf3922d85d6a7d 02-Feb-2010 John McCall <rjmccall@apple.com> Improve the diagnostic used when an incompatible overload set is passed
as an argument during overload resolution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5920dbba965a2f2a963313d94be3ff3d2b67ece7 02-Feb-2010 John McCall <rjmccall@apple.com> Improve the diagnostic used when an incompatible overload set is passed
as an argument during overload resolution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
085b7ba367b7e2cc022f983c714595fe02dbe7f1 02-Feb-2010 Chris Lattner <sabre@nondot.org> Implement PR6180, substantially improving the diagnostics we get from
forgetting a ';' at the end of a struct. For something like:

class c {
}
void foo() {}

we now produce:

t.cc:3:2: error: expected ';' after class
}
^
;

instead of:

t.cc:4:1: error: cannot combine with previous 'class' declaration specifier
void foo() {}
^
t.cc:2:7: error: 'class c' can not be defined in the result type of a function
class c {
^

GCC produces:

t.cc:4: error: new types may not be defined in a return type
t.cc:4: note: (perhaps a semicolon is missing after the definition of ‘c’)
t.cc:4: error: two or more data types in declaration of ‘foo’

I *think* I got the follow set right, but if I forgot anything, we'll start
getting spurious "expected ';' after class" errors, let me know if you see
any.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
4ed5d91db256f7dbe6bf716da0b801004c197254 02-Feb-2010 Chris Lattner <sabre@nondot.org> Implement PR6180, substantially improving the diagnostics we get from
forgetting a ';' at the end of a struct. For something like:

class c {
}
void foo() {}

we now produce:

t.cc:3:2: error: expected ';' after class
}
^
;

instead of:

t.cc:4:1: error: cannot combine with previous 'class' declaration specifier
void foo() {}
^
t.cc:2:7: error: 'class c' can not be defined in the result type of a function
class c {
^

GCC produces:

t.cc:4: error: new types may not be defined in a return type
t.cc:4: note: (perhaps a semicolon is missing after the definition of ‘c’)
t.cc:4: error: two or more data types in declaration of ‘foo’

I *think* I got the follow set right, but if I forgot anything, we'll start
getting spurious "expected ';' after class" errors, let me know if you see
any.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
96063113bc5227ec0cabab27525a5877c589b3c4 02-Feb-2010 Douglas Gregor <doug.gregor@gmail.com> Improve handling of enumerator values for C and C++, including:

- In C++, prior to the closing '}', set the type of enumerators
based on the type of their initializer. Don't perform unary
conversions on the enumerator values.
- In C++, handle overflow when an enumerator has no initializer and
its value cannot be represented in the type of the previous
enumerator.
- In C, handle overflow more gracefully, by complaining and then
falling back to the C++ rules.
- In C, if the enumerator value is representable in an int, convert the
expression to the type 'int'.

Fixes PR5854 and PR4515.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95031 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
677e4feebe4b3485504860d991d700cc3b933961 02-Feb-2010 Douglas Gregor <dgregor@apple.com> Improve handling of enumerator values for C and C++, including:

- In C++, prior to the closing '}', set the type of enumerators
based on the type of their initializer. Don't perform unary
conversions on the enumerator values.
- In C++, handle overflow when an enumerator has no initializer and
its value cannot be represented in the type of the previous
enumerator.
- In C, handle overflow more gracefully, by complaining and then
falling back to the C++ rules.
- In C, if the enumerator value is representable in an int, convert the
expression to the type 'int'.

Fixes PR5854 and PR4515.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95031 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5f9c13dd8204e08957f4e1f18800e4845456f4d6 01-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Darwin uses -fobjc-legacy-dispatch on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95006 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
609508ce95732e7e7010f79c5207613eced7c9cb 01-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Darwin uses -fobjc-legacy-dispatch on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95006 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
3bb930e44f1e367ef617a1b6a168589c42bd8e35 01-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add support for -fobjc-legacy-dispatch, not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95004 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/Options.td
984eb8611d9ee46fc6351dee43609f2deed99f3c 01-Feb-2010 Daniel Dunbar <daniel@zuster.org> Driver/Frontend: Add support for -fobjc-legacy-dispatch, not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95004 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/Options.td
50349fac9368c25c7ac0ecd28009cb11051129e2 01-Feb-2010 Chris Lattner <sabre@nondot.org> Don't explicitly force utf strings into the __TEXT,__ustring
by setting the section of the generated global. This is an
optimization done by the code generator, and the code being
removed didn't handle the case when the string contained an
embedded nul (which the code generator does correctly
handle). This is rdar://7589850



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b9f709665a6fe9da5c67d0431de2e63c55dd5322 01-Feb-2010 Chris Lattner <sabre@nondot.org> Don't explicitly force utf strings into the __TEXT,__ustring
by setting the section of the generated global. This is an
optimization done by the code generator, and the code being
removed didn't handle the case when the string contained an
embedded nul (which the code generator does correctly
handle). This is rdar://7589850



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8cb23faaa8f07087e40d95432b575a810a4e1417 01-Feb-2010 Sebastian Redl <sebastian.redl@getdesigned.at> In C++, an initializer on a variable doesn't necessarily mean it's the definition. With that in mind, rename getDefinition to getAnyInitializer (to distinguish it from getInit) and reimplement it in terms of isThisDeclarationADefinition. Update all code to use this new function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
31310a21fb2a9f13950f864f681c86080b05d5b2 01-Feb-2010 Sebastian Redl <sebastian.redl@getdesigned.at> In C++, an initializer on a variable doesn't necessarily mean it's the definition. With that in mind, rename getDefinition to getAnyInitializer (to distinguish it from getInit) and reimplement it in terms of isThisDeclarationADefinition. Update all code to use this new function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
011323d90dd2c1ff2db6e1871154831885f2d7cb 01-Feb-2010 John McCall <rjmccall@apple.com> Note that an overload candidate was non-viable because template argument
deduction failed. Right now there's a very vague diagnostic for most cases
and a good diagnostic for incomplete deduction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
342fec43c515184a3c0d0600323dfec2b059e74e 01-Feb-2010 John McCall <rjmccall@apple.com> Note that an overload candidate was non-viable because template argument
deduction failed. Right now there's a very vague diagnostic for most cases
and a good diagnostic for incomplete deduction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
810cdd31057e67b7efaab3ef99778bdfbc068808 01-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Fix for PR5185. C99 [*] VLA notation should be disallowed in function definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94972 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d17e340e2d516139931768697bf080f60920ba9d 01-Feb-2010 Sam Weinig <sam.weinig@gmail.com> Fix for PR5185. C99 [*] VLA notation should be disallowed in function definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94972 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5c0e897ed39db3443ca9695471a87d77f1ac9768 01-Feb-2010 John McCall <rjmccall@apple.com> Access checking for implicit user-defined conversions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
b13b737a2450167c82e148590e8019b839ce6b98 01-Feb-2010 John McCall <rjmccall@apple.com> Access checking for implicit user-defined conversions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
08fbf08fc4fc3816971556bad895d9c9d88966b7 31-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add VarDecl::isThisDeclarationADefinition(), which properly encapsulates the logic for when a variable declaration is a (possibly tentativ) definition. Add a few functions building on this, and shift C tentative definition handling over to this new functionality. This shift also kills the Sema::TentativeDefinitions map and instead simply stores all declarations in the renamed list. The correct handling for multiple tentative definitions is instead shifted to the final walk of the list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e9d12b6c50c1e9b05443db099e21026c5991a93b 31-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Add VarDecl::isThisDeclarationADefinition(), which properly encapsulates the logic for when a variable declaration is a (possibly tentativ) definition. Add a few functions building on this, and shift C tentative definition handling over to this new functionality. This shift also kills the Sema::TentativeDefinitions map and instead simply stores all declarations in the renamed list. The correct handling for multiple tentative definitions is instead shifted to the final walk of the list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bbe7ff8e44e5a1dbf5e26c93afeb8eef479a2a54 31-Jan-2010 Anders Carlsson <andersca@mac.com> Diagnose binding a non-const reference to a vector element.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
093802675b1548f2a5f44c29938d65cce00d58bb 31-Jan-2010 Anders Carlsson <andersca@mac.com> Diagnose binding a non-const reference to a vector element.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
0076ce20ef0ac992c4bac7777f345851802aefdc 31-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix PR6159 and several other problems with value-dependent non-type template
arguments. This both prevents meaningless checks on these arguments and ensures
that they are represented as an expression by the instantiation.

Cleaned up and added standard text to the relevant test case. Also started
adding tests for *rejected* cases. At least one FIXME here where (I think) we
allow something we shouldn't. More to come in the area of rejecting crazy
arguments with decent diagnostics. Suggestions welcome for still better
diagnostics on these errors!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
038cc399940deefc0f55aad8be97312a7390e2ad 31-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix PR6159 and several other problems with value-dependent non-type template
arguments. This both prevents meaningless checks on these arguments and ensures
that they are represented as an expression by the instantiation.

Cleaned up and added standard text to the relevant test case. Also started
adding tests for *rejected* cases. At least one FIXME here where (I think) we
allow something we shouldn't. More to come in the area of rejecting crazy
arguments with decent diagnostics. Suggestions welcome for still better
diagnostics on these errors!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e3129df6079a8e0028250d71a10b71dcf728d78a 31-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Rework base and member initialization in constructors, with several
(necessarily simultaneous) changes:

- CXXBaseOrMemberInitializer now contains only a single initializer
rather than a set of initialiation arguments + a constructor. The
single initializer covers all aspects of initialization, including
constructor calls as necessary but also cleanup of temporaries
created by the initializer (which we never handled
before!).

- Rework + simplify code generation for CXXBaseOrMemberInitializers,
since we can now just emit the initializer as an initializer.

- Switched base and member initialization over to the new
initialization code (InitializationSequence), so that it

- Improved diagnostics for the new initialization code when
initializing bases and members, to match the diagnostics produced
by the previous (special-purpose) code.

- Simplify the representation of type-checked constructor initializers in
templates; instead of keeping the fully-type-checked AST, which is
rather hard to undo at template instantiation time, throw away the
type-checked AST and store the raw expressions in the AST. This
simplifies instantiation, but loses a little but of information in
the AST.

- When type-checking implicit base or member initializers within a
dependent context, don't add the generated initializers into the
AST, because they'll look like they were explicit.

- Record in CXXConstructExpr when the constructor call is to
initialize a base class, so that CodeGen does not have to infer it
from context. This ensures that we call the right kind of
constructor.

There are also a few "opportunity" fixes here that were needed to not
regress, for example:

- Diagnose default-initialization of a const-qualified class that
does not have a user-declared default constructor. We had this
diagnostic specifically for bases and members, but missed it for
variables. That's fixed now.

- When defining the implicit constructors, destructor, and
copy-assignment operator, set the CurContext to that constructor
when we're defining the body.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94952 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
arse/Action.h
9db7dbb918ca49f4ee6c181e4917e7b6ec547353 31-Jan-2010 Douglas Gregor <dgregor@apple.com> Rework base and member initialization in constructors, with several
(necessarily simultaneous) changes:

- CXXBaseOrMemberInitializer now contains only a single initializer
rather than a set of initialiation arguments + a constructor. The
single initializer covers all aspects of initialization, including
constructor calls as necessary but also cleanup of temporaries
created by the initializer (which we never handled
before!).

- Rework + simplify code generation for CXXBaseOrMemberInitializers,
since we can now just emit the initializer as an initializer.

- Switched base and member initialization over to the new
initialization code (InitializationSequence), so that it

- Improved diagnostics for the new initialization code when
initializing bases and members, to match the diagnostics produced
by the previous (special-purpose) code.

- Simplify the representation of type-checked constructor initializers in
templates; instead of keeping the fully-type-checked AST, which is
rather hard to undo at template instantiation time, throw away the
type-checked AST and store the raw expressions in the AST. This
simplifies instantiation, but loses a little but of information in
the AST.

- When type-checking implicit base or member initializers within a
dependent context, don't add the generated initializers into the
AST, because they'll look like they were explicit.

- Record in CXXConstructExpr when the constructor call is to
initialize a base class, so that CodeGen does not have to infer it
from context. This ensures that we call the right kind of
constructor.

There are also a few "opportunity" fixes here that were needed to not
regress, for example:

- Diagnose default-initialization of a const-qualified class that
does not have a user-declared default constructor. We had this
diagnostic specifically for bases and members, but missed it for
variables. That's fixed now.

- When defining the implicit constructors, destructor, and
copy-assignment operator, set the CurContext to that constructor
when we're defining the body.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94952 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
arse/Action.h
e5a62222721fc93c69bf152c728e2a0a72094671 31-Jan-2010 Anders Carlsson <andersca@mac.com> Remove the SmallVectors from AsmStmt. Fixes PR6105.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
966146e89141804ff6492739a2a6e6592ca671c7 31-Jan-2010 Anders Carlsson <andersca@mac.com> Remove the SmallVectors from AsmStmt. Fixes PR6105.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5f72946a2b22f3f6bb161381089af01377e811bd 30-Jan-2010 Anders Carlsson <andersca@mac.com> Use IdentifierInfo * instead of std::string for the AsmStmt names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
ff93dbd887e40588ed55d135037bb9287488b285 30-Jan-2010 Anders Carlsson <andersca@mac.com> Use IdentifierInfo * instead of std::string for the AsmStmt names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
4cc4433e4f8df9a5863b5bf66727a8494eaf5c63 30-Jan-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Ensure the CompilerInvocation object used in LoadFromCommandLine is
live as long as the ASTUnit. This is useful for clients which want to maintain
pointers to the LangOptions object which ultimately lives in the
CompilerInvocation, although it would be nice to make all of this ownership
stuff more explicit and obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94924 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
807b06157a1a5c050520fc194d32f16d22d423a8 30-Jan-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Ensure the CompilerInvocation object used in LoadFromCommandLine is
live as long as the ASTUnit. This is useful for clients which want to maintain
pointers to the LangOptions object which ultimately lives in the
CompilerInvocation, although it would be nice to make all of this ownership
stuff more explicit and obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94924 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
562df31360d44201349bc516538d30c0099f5506 30-Jan-2010 Daniel Dunbar <daniel@zuster.org> CompilerInstance: Change to not contain the CompilerInvocation object.

This allows clients to install their own CompilerInvocation object, which is
important for clients that may wish to create references to things like
LangOptions whose lifetime will extend past that of the CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94923 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
6228ca00121669ec06a19df4fad87d5049c097cf 30-Jan-2010 Daniel Dunbar <daniel@zuster.org> CompilerInstance: Change to not contain the CompilerInvocation object.

This allows clients to install their own CompilerInvocation object, which is
important for clients that may wish to create references to things like
LangOptions whose lifetime will extend past that of the CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94923 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
f34045cd1957b33432ae2dfa2758ef4320f2ab9a 30-Jan-2010 Anders Carlsson <andersca@mac.com> Even more AsmStmt cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
acb6bcb442936f3c14126fdd473307c17647cb84 30-Jan-2010 Anders Carlsson <andersca@mac.com> Even more AsmStmt cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
22b9be9e2cf26a261e4aeb9de19ea2c3a27a1e43 30-Jan-2010 Anders Carlsson <andersca@mac.com> More asm cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94920 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
a5a79f7d16b48d3be8bcc8c7650e31aefd92b657 30-Jan-2010 Anders Carlsson <andersca@mac.com> More asm cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94920 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
3c0139ea8b51400424c97b36cd0413f0808eb2ad 30-Jan-2010 Anders Carlsson <andersca@mac.com> Combine AsmStmt::setOutputsAndInputs and AsmStmt::setClobbers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
fdba9c069023f686e2608affde02c82131ee1cf8 30-Jan-2010 Anders Carlsson <andersca@mac.com> Combine AsmStmt::setOutputsAndInputs and AsmStmt::setClobbers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4a8f819bdd8f3af76f47146ffdc53a169a96a09f 30-Jan-2010 Anders Carlsson <andersca@mac.com> Yay for more StringRefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
83c021c6d33aa173cf1a6e3bc61006dabb042703 30-Jan-2010 Anders Carlsson <andersca@mac.com> Yay for more StringRefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
41f80b5a55bdd4d008bd293b77efc8224182ed35 30-Jan-2010 Anders Carlsson <andersca@mac.com> StringRef-ize the TargetInfo::ConstraintInfo constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94916 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f959fb5fb82ae2cbdf8635d734613a01818fb7bf 30-Jan-2010 Anders Carlsson <andersca@mac.com> StringRef-ize the TargetInfo::ConstraintInfo constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94916 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
977d502acf3d2d1e3c86c1885265e136db49abc1 30-Jan-2010 Daniel Dunbar <daniel@zuster.org> Recognize 'q' as a format length modifier (from BSD).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
01aefc6d20fbfd50bfb83926226dee86dd31c9c5 30-Jan-2010 Daniel Dunbar <daniel@zuster.org> Recognize 'q' as a format length modifier (from BSD).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
6eddb15b9e48f8c0472150493cb4514e3a026f20 30-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use StringRef instead of returning a temporary std::string.

This fixes a really nasty bug in Darwin::getDarwinArchName where we were going
StringRef -> temporary std::string -> StringRef (and return the dead StringRef).
The StringRefs from Triple live as long as the Triple itself, that should be
long enough.

Hopefully 2 of 4 MSVC buildbot failures are gone now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94892 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
f22d1fd96d6056a2f271b0f7353b31f47547127b 30-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use StringRef instead of returning a temporary std::string.

This fixes a really nasty bug in Darwin::getDarwinArchName where we were going
StringRef -> temporary std::string -> StringRef (and return the dead StringRef).
The StringRefs from Triple live as long as the Triple itself, that should be
long enough.

Hopefully 2 of 4 MSVC buildbot failures are gone now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94892 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
54429dbe05db911b61f3a88e108bf171bcd654e8 30-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence clang++ warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94878 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
500f189081b2edfcf3e14864c0df870d85701a6f 30-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Silence clang++ warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94878 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
fef905c27e50bcddeed6e008b5bbf83f9d12db86 30-Jan-2010 Ted Kremenek <kremenek@apple.com> Add basic type checking of format string conversion specifiers and their arguments. Thanks to Cristian Draghici for his help with this patch!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d635c5fcc45c952b75743dd2f4c86d6950e4954e 30-Jan-2010 Ted Kremenek <kremenek@apple.com> Add basic type checking of format string conversion specifiers and their arguments. Thanks to Cristian Draghici for his help with this patch!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ecf8e8a3ae64ef33cd1beec57e25a740f6c092f7 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Per a suggestion from Cristian Draghici, add a method to FormatSpecifier that returns the expected type of the matching data argument. It isn't complete, but should handle several of the important cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
33567d2feb3e52fac6e0b46d5b3d137fc8467fb0 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Per a suggestion from Cristian Draghici, add a method to FormatSpecifier that returns the expected type of the matching data argument. It isn't complete, but should handle several of the important cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
4f611fa1eb5b57ae66465cfeb73f14b18b4d4446 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Switch Sema over to using the new implementation of format string
checking. It passes all existing tests, and the diagnostics have been
refined to provide better range information (we now highlight
individual format specifiers) and more precise wording in the
diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94837 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f88c8e02da48afea6a04091f675af5c4facd99f1 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Switch Sema over to using the new implementation of format string
checking. It passes all existing tests, and the diagnostics have been
refined to provide better range information (we now highlight
individual format specifiers) and more precise wording in the
diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94837 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3a2004dc41f4a5735d1717ef63abfbbf25d36611 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Enhancements to the alternate (WIP) format string checking:

- Add ConversionSpecifier::consumesDataArgument() as a helper method
to determine if a conversion specifier requires a matching argument.
- Add support for glibc-specific '%m' conversion
- Add an extra callback to HandleNull() for locations within the
format specifier that have a null character


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94834 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
4dcb18ff9d92c66c78077ac5cae4b83af37292e4 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Enhancements to the alternate (WIP) format string checking:

- Add ConversionSpecifier::consumesDataArgument() as a helper method
to determine if a conversion specifier requires a matching argument.
- Add support for glibc-specific '%m' conversion
- Add an extra callback to HandleNull() for locations within the
format specifier that have a null character


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94834 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
cc845d86b09df95440626e0f5c9c4ce361fc8fff 29-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Fix reference-binding when we have a reference to const volatile type;
previously, we were allowing this to bind to a temporary. Now, we
don't; add test-cases and improve diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ef06e2451c3069569ba543e7b1c5e0de7a257005 29-Jan-2010 Douglas Gregor <dgregor@apple.com> Fix reference-binding when we have a reference to const volatile type;
previously, we were allowing this to bind to a temporary. Now, we
don't; add test-cases and improve diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4df49eaff07c8dd77c5b7d24801449e1eeae9205 29-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix typo found by clang++. Yay for -Wuninitialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94810 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
ddc6b664e4caa86bcccbc2ddfe6ad0d4768372bc 29-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix typo found by clang++. Yay for -Wuninitialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94810 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
44c97fa58167368f7f7984544cace6a721e37aa2 29-Jan-2010 Anders Carlsson <andersca@mac.com> Add getters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4e1c181e2bb378dad55dd25c18611e3a0fb6c22a 29-Jan-2010 Anders Carlsson <andersca@mac.com> Add getters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
437b9a1e67de664cecba5cbbbdf51ccf5da23bed 29-Jan-2010 Anders Carlsson <andersca@mac.com> Simplify EmitLValueForField - we can get whether the field is part of a union or not from the FieldDecl (through its DeclContext).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94798 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e6d2a534851a649485cb087e9dfcaf8a65886858 29-Jan-2010 Anders Carlsson <andersca@mac.com> Simplify EmitLValueForField - we can get whether the field is part of a union or not from the FieldDecl (through its DeclContext).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94798 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bf5afe56417379aba6372d5c416e4d320d6a01d4 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Alternate format string checking: issue warnings for incomplete format specifiers.

In addition, move ParseFormatString() and FormatStringHandler() from
the clang::analyze_printf to the clang namespace. Hopefully this will
resolve some link errors on Linux.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94794 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
808015a18bd97781ce437831a95a92fdfc8d5136 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Alternate format string checking: issue warnings for incomplete format specifiers.

In addition, move ParseFormatString() and FormatStringHandler() from
the clang::analyze_printf to the clang namespace. Hopefully this will
resolve some link errors on Linux.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94794 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
asic/DiagnosticSemaKinds.td
76d8ee48b6f8591391f75ed175e49b385a85fc02 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Alternate format string checking: issue a warning for invalid conversion specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94792 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
26ac2e07b46bfb4d4f00752c96481c0a98c79c69 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Alternate format string checking: issue a warning for invalid conversion specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94792 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
9d995ff111efce46ec3b76316b1d97268e7fe2dc 29-Jan-2010 Anders Carlsson <andersca@mac.com> Add an CXXBindReferenceExpr (not used just yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94791 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
eb60edffa147e061278c436e513b0df9b4c4e7f6 29-Jan-2010 Anders Carlsson <andersca@mac.com> Add an CXXBindReferenceExpr (not used just yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94791 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
fbb374bb50c1a5606186b617bcce34ce21213922 29-Jan-2010 John McCall <rjmccall@apple.com> Do a little magic and a little greasework to make it much more efficient
to cast a DeclContext down to a specific implementation class.

There are still lots of calls to Decl::castFromDeclContext left, mostly
arising from DeclContext::getParent().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94786 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
80cd64a8450d8e2c079dc134d9711cd45ba89d63 29-Jan-2010 John McCall <rjmccall@apple.com> Do a little magic and a little greasework to make it much more efficient
to cast a DeclContext down to a specific implementation class.

There are still lots of calls to Decl::castFromDeclContext left, mostly
arising from DeclContext::getParent().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94786 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
cf731975a4be023d8ea83fb90349a0e6ed62b66c 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Alternate format string checking: warn of '%n' as being potentially insecure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
e82d804ee761006250543d6fe6e98ee7896cd756 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Alternate format string checking: warn of '%n' as being potentially insecure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
920439c0ec59e26196ce0defcda765c76c8b7778 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Add precision/field width checking to AlternateCheckPrintfString().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94774 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
0d27735c51f5bd392e673cf39a675e14e9442387 29-Jan-2010 Ted Kremenek <kremenek@apple.com> Add precision/field width checking to AlternateCheckPrintfString().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94774 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
8e933546c229b4dcd7b59d32f95cf73f227cb313 29-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> When printing diagnostics in c-index-test, also print source ranges
and fix-it information, so we can see everything in one place. Along
the way, fix a few bugs with deserialization and query of diagnostics
in CIndex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
51c6d384551674facc19f745ecf6e289d28dc55f 29-Jan-2010 Douglas Gregor <dgregor@apple.com> When printing diagnostics in c-index-test, also print source ranges
and fix-it information, so we can see everything in one place. Along
the way, fix a few bugs with deserialization and query of diagnostics
in CIndex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
a3c199b287733dbe42fc28b144e24bb0a09f1da9 28-Jan-2010 John McCall <rjmccall@apple.com> Access control for surrogate function calls. Required a moderately gross hack
to get the access bits set properly in conversion sets.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
233a6419097ed97b67ff8efcacef9af613262ca3 28-Jan-2010 John McCall <rjmccall@apple.com> Access control for surrogate function calls. Required a moderately gross hack
to get the access bits set properly in conversion sets.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
ca5a30b4e4cf7676dee95764d774ec9700f42825 28-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce serialization and deserialization of diagnostic information
so that CIndex can report diagnostics through the normal mechanisms
even when executing Clang in a separate process. This applies both
when performing code completion and when using ASTs as an intermediary
for clang_createTranslationUnitFromSourceFile().

The serialized format is not perfect at the moment, because it does
not encapsulate macro-instantiation information. Instead, it maps all
source locations back to the instantiation location. However, it does
maintain source-range and fix-it information. To get perfect fidelity
from the serialized format would require serializing a large chunk of
the source manager; at present, it isn't clear if this code will live
long enough for that to matter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticFrontendKinds.td
asic/SourceManager.h
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
d93256e55673a17d18543397ec462416acb13792 28-Jan-2010 Douglas Gregor <dgregor@apple.com> Introduce serialization and deserialization of diagnostic information
so that CIndex can report diagnostics through the normal mechanisms
even when executing Clang in a separate process. This applies both
when performing code completion and when using ASTs as an intermediary
for clang_createTranslationUnitFromSourceFile().

The serialized format is not perfect at the moment, because it does
not encapsulate macro-instantiation information. Instead, it maps all
source locations back to the instantiation location. However, it does
maintain source-range and fix-it information. To get perfect fidelity
from the serialized format would require serializing a large chunk of
the source manager; at present, it isn't clear if this code will live
long enough for that to matter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticFrontendKinds.td
asic/SourceManager.h
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
1328176b16ca8f3c103bbc32c83edf7131ea5715 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Add position of conversion specifier character to 'ConversionSpecifier'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94739 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
a8d8fec7876666d90bb2a144d3b832b2d89a088a 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Add position of conversion specifier character to 'ConversionSpecifier'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94739 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
5d5beb9fb6d034ee938886c12cc264dce8c0a16e 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename namespace clang::printf to clang::analyze_printf to avoid problems where the reference to 'printf' is ambiguous.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94733 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
d2dcece5882215e92a80bff8a7b7fd2fd81d7086 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename namespace clang::printf to clang::analyze_printf to avoid problems where the reference to 'printf' is ambiguous.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94733 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
9e455bbcc8ee1efc7019849fcf1d2ef74a201b38 28-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a rewrite bug rewriting nested ivars reference.
(Radar 7583971).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94724 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
7e20ffe322866f6a2e820e054da9bd0f6e9b0af4 28-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a rewrite bug rewriting nested ivars reference.
(Radar 7583971).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94724 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
e812a3122c72da6cf7e69c0c68939ca4bf1cbfc4 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Allow HandleFormatSpecifier() to indicate that no more processing of the format string is desired.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94715 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
d5f2096e266b7905df660b7839e69e9ed6ba9018 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Allow HandleFormatSpecifier() to indicate that no more processing of the format string is desired.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94715 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
1a42095fa3af5a962ff24cf4b0b642d19b257246 28-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Switch the remaining diagnostic printing in CIndex over to the
diagnostic callback mechanism, so all diagnostics now go through that
callback. Also, eliminate the displayDiagnostics flag to
clang_createIndex(), since it is no longer necessary: the client
determines whether to display diagnostics or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94714 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
936ea3b590117d2cd73b1b92621d06c4a7edbe60 28-Jan-2010 Douglas Gregor <dgregor@apple.com> Switch the remaining diagnostic printing in CIndex over to the
diagnostic callback mechanism, so all diagnostics now go through that
callback. Also, eliminate the displayDiagnostics flag to
clang_createIndex(), since it is no longer necessary: the client
determines whether to display diagnostics or not.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94714 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
17046e50050072bd8155259acae85bbeeb7bf999 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Add '@' conversion specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94713 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
c7cbb9bf8e0bf8c3191ef0b782ec198c433d2a4e 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Add '@' conversion specifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94713 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
1fa44fc90aa402c4bf12f964d46afff862073537 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Add skeleton for a more structured way to analyzing pring format
strings than what we currently have in Sema. This is both an
experiment and a WIP.

The idea is simple: parse the format string incrementally,
constructing a well-structure representation of each format specifier.
Each format specifier is then handed back one-by-one to a client via a
callback. Malformed format strings are also handled with callbacks.
The idea is to separate the parsing of the format string from the
emission of diagnostics. Currently what we have in Sema for handling
format strings is a mongrel of both that is hard to follow and
difficult to modify (I can apply this label since I'm the original
author of that code).

This is in libAnalysis as it is reasonable generic and can potentially
be used both by libSema and libChecker.

Comments welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94702 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
8f0a1c73fd2b83afd4b1fce6f964535b51d13659 28-Jan-2010 Ted Kremenek <kremenek@apple.com> Add skeleton for a more structured way to analyzing pring format
strings than what we currently have in Sema. This is both an
experiment and a WIP.

The idea is simple: parse the format string incrementally,
constructing a well-structure representation of each format specifier.
Each format specifier is then handed back one-by-one to a client via a
callback. Malformed format strings are also handled with callbacks.
The idea is to separate the parsing of the format string from the
emission of diagnostics. Currently what we have in Sema for handling
format strings is a mongrel of both that is hard to follow and
difficult to modify (I can apply this label since I'm the original
author of that code).

This is in libAnalysis as it is reasonable generic and can potentially
be used both by libSema and libChecker.

Comments welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94702 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/PrintfFormatString.h
0cc4ace5d467add525df432ac508814b84ec11be 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Move more naming conventions logic out of the retain/release checker to CocoaConventions.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94682 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
78acdbfb522f62b6e8899e078e48fea44fda287d 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Move more naming conventions logic out of the retain/release checker to CocoaConventions.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94682 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
07c3d6914503af0fe4ab23fedfe848ff527f0e9d 27-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Change the return type of ASTContext::getDeclAlignInBytes() to CharUnits and,
now that the "InBytes" part of the name is implied by the return type, rename
it to getDeclAlign().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8b752f10c394b140f9ef89e049cbad1a7676fc25 27-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Change the return type of ASTContext::getDeclAlignInBytes() to CharUnits and,
now that the "InBytes" part of the name is implied by the return type, rename
it to getDeclAlign().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d73d0caae67ccb211c34c8fc355d81c6207e8407 27-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Silence a GCC warning about uninitialized variables. The first user of this
showed up with a primitive type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94674 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
9d883b5b3763605cd6850b49fd3b2613074e83a0 27-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Silence a GCC warning about uninitialized variables. The first user of this
showed up with a primitive type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94674 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
da3572e27c6a4e7483990fa44b3882da2e57c9d0 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Start pulling out pieces of the monolithic retain/release checker into
reusable and modular API pieces.

Start by pulling the logic for deriving the Cocoa naming convention
into a separate API, header, and source file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94662 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
hecker/PathSensitive/SummaryManager.h
a64e89bbfa756816d1e4a48e5d6c03edf1d7f23b 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Start pulling out pieces of the monolithic retain/release checker into
reusable and modular API pieces.

Start by pulling the logic for deriving the Cocoa naming convention
into a separate API, header, and source file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94662 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/DomainSpecific/CocoaConventions.h
hecker/PathSensitive/SummaryManager.h
fa4c6c212906ec7806e0892d1d48ba92e068509e 27-Jan-2010 Anders Carlsson <andersca@mac.com> It's not Explicit anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3a18917b5260d67426f55792118262aa6ad42c06 27-Jan-2010 Anders Carlsson <andersca@mac.com> It's not Explicit anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6994e1a96ebc69f63b92df433d30f578f3d92f1d 27-Jan-2010 John McCall <rjmccall@apple.com> Implement access control for overloaded functions. Suppress access control
diagnostics in "early" lookups, such as during typename checks and when building
unresolved lookup expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/UnresolvedSet.h
c373d48502ca7683ab55385f5bd624d778eb288d 27-Jan-2010 John McCall <rjmccall@apple.com> Implement access control for overloaded functions. Suppress access control
diagnostics in "early" lookups, such as during typename checks and when building
unresolved lookup expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/UnresolvedSet.h
c85d4470002e7798f958d15a2c6c217c08fba970 27-Jan-2010 Daniel Dunbar <daniel@zuster.org> Support -marm by treating it as an alias for -mno-thumb.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94644 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f7b33749d2a686327b8ae249b8eb1ab44770f54b 27-Jan-2010 Daniel Dunbar <daniel@zuster.org> Support -marm by treating it as an alias for -mno-thumb.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94644 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
92114efac8f6cbf47cea9ff9947fc88d0edf8be9 27-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Disallow -m{macosx,iphoneos}-version-min as -Xarch arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94636 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
5cc025197300c3f323ed572dd0295284a17a6661 27-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Disallow -m{macosx,iphoneos}-version-min as -Xarch arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94636 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b19509ec56e5f79e3a4f41b649da74a632fe31be 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Add const version of ObjCMethodDecl::getCanonicalDecl().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
13e635c55eb23f736d38abf9c954801bd6482db4 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Add const version of ObjCMethodDecl::getCanonicalDecl().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
aed33972e0f9556d0724e6c9cad095e118cd1067 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Teach RegionStore to handle initialization of incomplete arrays in structures using a compound value. Fixes <rdar://problem/7515938>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94622 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
fee90811c665893bc27a9bfa8b116548afe1b89b 27-Jan-2010 Ted Kremenek <kremenek@apple.com> Teach RegionStore to handle initialization of incomplete arrays in structures using a compound value. Fixes <rdar://problem/7515938>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94622 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
72db0a7dddc5b48e75b3da1944866c0ae1880659 26-Jan-2010 Ted Kremenek <kremenek@apple.com> Move 'LocalCheckers.h' to the 'Checkers' subdirectory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94609 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/LocalCheckers.h
hecker/LocalCheckers.h
97053091c0e4df12ffb662b284b6ab329ca1c40f 26-Jan-2010 Ted Kremenek <kremenek@apple.com> Move 'LocalCheckers.h' to the 'Checkers' subdirectory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94609 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/LocalCheckers.h
hecker/LocalCheckers.h
479068e0a8c03d5db33a5901ea3223e2aecd1b62 26-Jan-2010 Ted Kremenek <kremenek@apple.com> Move 'include/Checkers/PathSensitive/Checkers' directory to 'include/Checkers'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94608 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/DereferenceChecker.h
hecker/PathSensitive/Checkers/DereferenceChecker.h
f12d31999e4ecf821ee4dcdb18cc5412569c3515 26-Jan-2010 Ted Kremenek <kremenek@apple.com> Move 'include/Checkers/PathSensitive/Checkers' directory to 'include/Checkers'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94608 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/Checkers/DereferenceChecker.h
hecker/PathSensitive/Checkers/DereferenceChecker.h
7d87b046af89a29ea0969851ed69aa5a9b96fa2a 26-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add 'volatile' to first argument of all
sync compare_and_swap to match them with gcc.
It also fixes a few incorrect argument defitions.
(fixes radar 7540291).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
013af39d2a6a2e684f5a458c97890c52cddb7157 26-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to add 'volatile' to first argument of all
sync compare_and_swap to match them with gcc.
It also fixes a few incorrect argument defitions.
(fixes radar 7540291).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
0b7e1ec48c061711034350ef7976339ae94dad80 26-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Bring some semblance of order into Decl.h and Decl.cpp. While at it, fix some typo comments and remove an unused and unimplemented function prototype. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7783bfc066776a63d6a2cd28329d4d149647bfdc 26-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Bring some semblance of order into Decl.h and Decl.cpp. While at it, fix some typo comments and remove an unused and unimplemented function prototype. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
431e826f53473dff14309abf4ec6903a27684422 26-Jan-2010 Ted Kremenek <kremenek@apple.com> Implement 'clang_getInclusions()' in CIndex. This API allows clients to walk the set of files included in a translation unit via the C API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94575 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
16b55a71695a33c094383295cc7b7a2080e098da 26-Jan-2010 Ted Kremenek <kremenek@apple.com> Implement 'clang_getInclusions()' in CIndex. This API allows clients to walk the set of files included in a translation unit via the C API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94575 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d8b5014c8b689915eb87797060fd5c183ef600da 26-Jan-2010 Anders Carlsson <andersca@mac.com> Use the right definition when emitting a global variable. Fixes PR5564.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3bb92693c3332c1e99870a4e45afff3892e1c6ae 26-Jan-2010 Anders Carlsson <andersca@mac.com> Use the right definition when emitting a global variable. Fixes PR5564.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0374d5215df3e6ad58c227cf791dbf5dc420c02c 26-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Correct cut-and-paste error in doxygen comment for newly introduced
getTypeAlignInChars().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
16e20cce43385001f33f8e3f90ee345609c805d1 26-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Correct cut-and-paste error in doxygen comment for newly introduced
getTypeAlignInChars().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7aa70146e9cc0f441600426c3e926c9fbfb02283 26-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Add getTypeAlignInChars() for use in code that works in alignments in character
units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
86fa4311c8a330957ff5b765fbb0a7750ecd38c9 26-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Add getTypeAlignInChars() for use in code that works in alignments in character
units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9ae7d11a88f270f47d21a9e8ab7d570892e48a2f 26-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Introduce a CIndex API for lexing the raw tokens within a given source
range. The token-annotation function does nothing, yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94551 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
fc8ea23eb6cbaaa5046f2abb4c033e24c8659efd 26-Jan-2010 Douglas Gregor <dgregor@apple.com> Introduce a CIndex API for lexing the raw tokens within a given source
range. The token-annotation function does nothing, yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94551 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
7ef03692a17cbf815a32b258208070dee139cc5b 26-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Replace inheritance of RegionRawOffset from std::pair with two private member
variables to improve readability and encapsulation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94550 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
b896f625d1225450c0b30c4b82cb4d9af5642b9f 26-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Replace inheritance of RegionRawOffset from std::pair with two private member
variables to improve readability and encapsulation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94550 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/PathSensitive/MemRegion.h
a12cfc33df90a89eb078feb7150df53745397aa7 26-Jan-2010 John McCall <rjmccall@apple.com> Avoid some unnecessary copying of unresolved lookup results.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
75345163535eb1765ba8fb971974be895645cb45 26-Jan-2010 John McCall <rjmccall@apple.com> Avoid some unnecessary copying of unresolved lookup results.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
61b29a1dd02abc71d991daabf566b02a38fea9f9 26-Jan-2010 John McCall <rjmccall@apple.com> Preserve access bits through overload resolution much better. Some
general refactoring in operator resolution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
6e26689f5d513e24ad7783a4493201930fdeccc0 26-Jan-2010 John McCall <rjmccall@apple.com> Preserve access bits through overload resolution much better. Some
general refactoring in operator resolution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
71e909ea274771c1cc6e1c8f79c53de36d623104 26-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Honor IPHONEOS_DEPLOYMENT_TARGET.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
816bc31ed45002de2547d6679b44f31eb85ec491 26-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Honor IPHONEOS_DEPLOYMENT_TARGET.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
f0839e293d46d8787dc37e55a9a70068819d667f 25-Jan-2010 John McCall <rjmccall@apple.com> Warn on top-level 'asm volatile' (instead of misparsing it).
"Fixes" rdar://problem/7574870



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94458 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
7a6ae743b2ecfdfadadf7df53b569a9a3871a8fd 25-Jan-2010 John McCall <rjmccall@apple.com> Warn on top-level 'asm volatile' (instead of misparsing it).
"Fixes" rdar://problem/7574870



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94458 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f59d2ca2b85aecef18b8f94269da51637dc3efe7 25-Jan-2010 Ted Kremenek <kremenek@apple.com> Move BugReporter.h, PathDiagnostic.h, and BugType.h to 'include/Checker/BugReporter'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94428 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/BugReporter/PathDiagnostic.h
hecker/PathDiagnostic.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BugReporter.h
hecker/PathSensitive/BugType.h
hecker/PathSensitive/GRExprEngine.h
6b67630d5df195f4fe0e4273061c016901d69681 25-Jan-2010 Ted Kremenek <kremenek@apple.com> Move BugReporter.h, PathDiagnostic.h, and BugType.h to 'include/Checker/BugReporter'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94428 91177308-0d34-0410-b5e6-96231b3b80d8
hecker/BugReporter/BugReporter.h
hecker/BugReporter/BugType.h
hecker/BugReporter/PathDiagnostic.h
hecker/PathDiagnostic.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BugReporter.h
hecker/PathSensitive/BugType.h
hecker/PathSensitive/GRExprEngine.h
c43496ae981615d58e337b131027551259541842 25-Jan-2010 Ted Kremenek <kremenek@apple.com> Add missing header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94409 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
326be568e2cb04285c84e6e26a3e6b3822607361 25-Jan-2010 Ted Kremenek <kremenek@apple.com> Add missing header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94409 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/AnalysisContext.h
e6d261e31fcc2204d4117ca753e843bc2c1164f4 25-Jan-2010 Ted Kremenek <kremenek@apple.com> Split libAnalysis into two libraries: libAnalysis and libChecker.

(1) libAnalysis is a generic analysis library that can be used by
Sema. It defines the CFG, basic dataflow analysis primitives, and
inexpensive flow-sensitive analyses (e.g. LiveVariables).

(2) libChecker contains the guts of the static analyzer, incuding the
path-sensitive analysis engine and domain-specific checks.

Now any clients that want to use the frontend to build their own tools
don't need to link in the entire static analyzer.

This change exposes various obvious cleanups that can be made to the
layout of files and headers in libChecker. More changes pending. :)

This change also exposed a layering violation between AnalysisContext
and MemRegion. BlockInvocationContext shouldn't explicitly know about
BlockDataRegions. For now I've removed the BlockDataRegion* from
BlockInvocationContext (removing context-sensitivity; although this
wasn't used yet). We need to have a better way to extend
BlockInvocationContext (and any LocationContext) to add
context-sensitivty.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94406 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
nalysis/LocalCheckers.h
nalysis/ManagerRegistry.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
nalysis/PathSensitive/Checkers/DereferenceChecker.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRStateTrait.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/GRWorkList.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
hecker/LocalCheckers.h
hecker/ManagerRegistry.h
hecker/PathDiagnostic.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/BugReporter.h
hecker/PathSensitive/BugType.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/Checkers/DereferenceChecker.h
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRExprEngineBuilders.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRStateTrait.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
1309f9a3b225ea846e5822691c39a77423125505 25-Jan-2010 Ted Kremenek <kremenek@apple.com> Split libAnalysis into two libraries: libAnalysis and libChecker.

(1) libAnalysis is a generic analysis library that can be used by
Sema. It defines the CFG, basic dataflow analysis primitives, and
inexpensive flow-sensitive analyses (e.g. LiveVariables).

(2) libChecker contains the guts of the static analyzer, incuding the
path-sensitive analysis engine and domain-specific checks.

Now any clients that want to use the frontend to build their own tools
don't need to link in the entire static analyzer.

This change exposes various obvious cleanups that can be made to the
layout of files and headers in libChecker. More changes pending. :)

This change also exposed a layering violation between AnalysisContext
and MemRegion. BlockInvocationContext shouldn't explicitly know about
BlockDataRegions. For now I've removed the BlockDataRegion* from
BlockInvocationContext (removing context-sensitivity; although this
wasn't used yet). We need to have a better way to extend
BlockInvocationContext (and any LocationContext) to add
context-sensitivty.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94406 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
nalysis/LocalCheckers.h
nalysis/ManagerRegistry.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
nalysis/PathSensitive/Checkers/DereferenceChecker.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRStateTrait.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/GRWorkList.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
hecker/LocalCheckers.h
hecker/ManagerRegistry.h
hecker/PathDiagnostic.h
hecker/PathSensitive/AnalysisManager.h
hecker/PathSensitive/BasicValueFactory.h
hecker/PathSensitive/BugReporter.h
hecker/PathSensitive/BugType.h
hecker/PathSensitive/Checker.h
hecker/PathSensitive/CheckerVisitor.def
hecker/PathSensitive/CheckerVisitor.h
hecker/PathSensitive/Checkers/DereferenceChecker.h
hecker/PathSensitive/ConstraintManager.h
hecker/PathSensitive/Environment.h
hecker/PathSensitive/ExplodedGraph.h
hecker/PathSensitive/GRAuditor.h
hecker/PathSensitive/GRBlockCounter.h
hecker/PathSensitive/GRCoreEngine.h
hecker/PathSensitive/GRExprEngine.h
hecker/PathSensitive/GRExprEngineBuilders.h
hecker/PathSensitive/GRSimpleAPICheck.h
hecker/PathSensitive/GRState.h
hecker/PathSensitive/GRStateTrait.h
hecker/PathSensitive/GRSubEngine.h
hecker/PathSensitive/GRTransferFuncs.h
hecker/PathSensitive/GRWorkList.h
hecker/PathSensitive/MemRegion.h
hecker/PathSensitive/SVals.h
hecker/PathSensitive/SValuator.h
hecker/PathSensitive/Store.h
hecker/PathSensitive/SymbolManager.h
hecker/PathSensitive/ValueManager.h
cb94ade2e7569f3f9917e9eae9d046f08e444c1e 25-Jan-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Don't check that input files exist when parsing ASTs from the command
line -- they may be remapped (fake) files. This is useful for testing parsing
entirely from memory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94395 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
3bd54cc56276c386f4d50940a9fbfcad7a69cb75 25-Jan-2010 Daniel Dunbar <daniel@zuster.org> ASTUnit: Don't check that input files exist when parsing ASTs from the command
line -- they may be remapped (fake) files. This is useful for testing parsing
entirely from memory.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94395 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
7a39d4eef0a6541c2cf56cb0462d47e5b8a062e7 24-Jan-2010 Anders Carlsson <andersca@mac.com> Fix a pretty bad bug where if a constructor (or conversion function) was marked as 'explicit', but then defined out-of-line, we would not treat it as being explicit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7a6e13aa2e3874fecf45043ed1a26900b8c13b98 24-Jan-2010 Anders Carlsson <andersca@mac.com> Fix a pretty bad bug where if a constructor (or conversion function) was marked as 'explicit', but then defined out-of-line, we would not treat it as being explicit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
25214fa032c02d7170f2dc21918764e34455b1d1 24-Jan-2010 Anders Carlsson <andersca@mac.com> Implement [dcl.fct.spec]p6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0757c8ccb79210ce1f22142851cdcbf6e42a71d6 24-Jan-2010 Anders Carlsson <andersca@mac.com> Implement [dcl.fct.spec]p6.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b00102e91daa687afbe6ea647fd723572301bb62 24-Jan-2010 Mike Stump <mrs@apple.com> Ok, turn back off -Wunreachable-code by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a8fa25baeb6da914155da457d1709d32e779826 24-Jan-2010 Mike Stump <mrs@apple.com> Ok, turn back off -Wunreachable-code by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
99c8d51e6a2a962adff2742e8b87d230222424de 24-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Mark PartialDiagnostic.h as a C++ header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
8b00be55606207c255cf3d3bd529143e93ff9c31 24-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Mark PartialDiagnostic.h as a C++ header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
de344bdcfd849680f534721f8029e6afc58f869c 24-Jan-2010 Anders Carlsson <andersca@mac.com> Implement instantiation of AsmStmts (Crazy, I know)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
703e39486689d6660e75f6b6de0068db031a51c7 24-Jan-2010 Anders Carlsson <andersca@mac.com> Implement instantiation of AsmStmts (Crazy, I know)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
bf84be462c28e7d669ca799cc1654e2e08b0150b 24-Jan-2010 Chris Lattner <sabre@nondot.org> fix PR6034, a crash on invalid where the switch stack would get
unbalanced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94347 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7e52de4b45286d057b367bb1f9283a1e32d79252 24-Jan-2010 Chris Lattner <sabre@nondot.org> fix PR6034, a crash on invalid where the switch stack would get
unbalanced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94347 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
364fe2a79d9194a9c0cd02ccc307993cd1e8d19f 24-Jan-2010 Chris Lattner <sabre@nondot.org> add a prototype for __builtin_fpclassify. We don't know how to
codegen it, so we get 'cannot compile this builtin function yet'
errors, just like we do currently for __builtin_isinf. However,
this should let us parse headers that use it without barfing,
which should help PR6083.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
31819f53836eabb6d2dfeca34487d9a960cb6491 24-Jan-2010 Chris Lattner <sabre@nondot.org> add a prototype for __builtin_fpclassify. We don't know how to
codegen it, so we get 'cannot compile this builtin function yet'
errors, just like we do currently for __builtin_isinf. However,
this should let us parse headers that use it without barfing,
which should help PR6083.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
2d7c0498ba1ac80586da070c01a033e206141591 24-Jan-2010 Anders Carlsson <andersca@mac.com> Use new initialization code when dealing with [dcl.init.aggr]p12. This fixes the bug where array elements and member initializers weren't copied correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94340 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b36a2fcb2cea310c01fc2a80a9da915e5d2ceb0 24-Jan-2010 Anders Carlsson <andersca@mac.com> Use new initialization code when dealing with [dcl.init.aggr]p12. This fixes the bug where array elements and member initializers weren't copied correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94340 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1cc0a0806b33626925c39ecf57aaf8570483fe4e 23-Jan-2010 Mike Stump <mrs@apple.com> Temporary flip default for -Wunreachable-code so some bots can test it
out. They should all be done later tonight, but if something bad
happens, feel free to revert sooner.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b9ea98e6e59a1020361dbb2e2ef3836f6f379cbb 23-Jan-2010 Mike Stump <mrs@apple.com> Temporary flip default for -Wunreachable-code so some bots can test it
out. They should all be done later tonight, but if something bad
happens, feel free to revert sooner.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4fafa2add8bce615d15891872a5b5b8c9d3a93b4 23-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Add bzero builtin; this should help codegen quality for code using this
function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94320 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
e6dddfd907f6ea58daed5e26eeaacd893d98db9b 23-Jan-2010 Eli Friedman <eli.friedman@gmail.com> Add bzero builtin; this should help codegen quality for code using this
function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94320 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5d73f09a2dbfcaf65954a2beab893ced1fca91ef 23-Jan-2010 Anders Carlsson <andersca@mac.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e87641915cf1f9913aca13cbd50996061bed32e1 23-Jan-2010 Anders Carlsson <andersca@mac.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f118bd48a7f9e03fe64b69f54b35e4b63db64854 23-Jan-2010 John McCall <rjmccall@apple.com> Produce a special diagnostic when users call a function with an argument of
incomplete type (or a pointer/reference to such).

The causes of this problem are different enough to justify a different "design"
for the diagnostic. Most notably, it doesn't give an operand index:
it's usually pretty obvious which operand is the problem, it adds a lot of
clutter to mention it, and the fix is usually in a different part of the file
anyway.

This is yet another diagnostic that should really have an analogue in the
non-overloaded case --- which should be much easier to write because of
the weaker space constraints.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
258b203b853e1c684c290fccd0088d1f340c137f 23-Jan-2010 John McCall <rjmccall@apple.com> Produce a special diagnostic when users call a function with an argument of
incomplete type (or a pointer/reference to such).

The causes of this problem are different enough to justify a different "design"
for the diagnostic. Most notably, it doesn't give an operand index:
it's usually pretty obvious which operand is the problem, it adds a lot of
clutter to mention it, and the fix is usually in a different part of the file
anyway.

This is yet another diagnostic that should really have an analogue in the
non-overloaded case --- which should be much easier to write because of
the weaker space constraints.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
844a3bb8807281e2f3d8fd3f88a99265d7be874a 23-Jan-2010 Anders Carlsson <andersca@mac.com> Fix the EntityKind order so that all entity kinds that can be copied (using copy constructors) come first. Also, fix a bug where EK_New was left out of the err_init_conversion_failed diagnostic (It is now reported as 'new value'). Please review Doug :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a729bbb739ca97a8dc52b6b0495725590a0367dc 23-Jan-2010 Anders Carlsson <andersca@mac.com> Fix the EntityKind order so that all entity kinds that can be copied (using copy constructors) come first. Also, fix a bug where EK_New was left out of the err_init_conversion_failed diagnostic (It is now reported as 'new value'). Please review Doug :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ee1ca8b4a4c64beb8384e54e69576a6b409a0d05 23-Jan-2010 David Chisnall <csdavec@swan.ac.uk> Created __builtin___NSStringMakeConstantString() builtin, which generates constant Objective-C strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
0d13f6fdbdd6f06e2449b8834dda53334abd399a 23-Jan-2010 David Chisnall <csdavec@swan.ac.uk> Created __builtin___NSStringMakeConstantString() builtin, which generates constant Objective-C strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
7e85de74e7913777cb5fd05b6cf48c8f9bf2cb13 23-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename getClangFullVendorVersion() to getClangFullVersion().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
a18f1b88a7ef3d2c944bb1d3b6586a2860ce2baa 23-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename getClangFullVendorVersion() to getClangFullVersion().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
7db083f218f6dca7312610367675183343c91dd3 23-Jan-2010 John McCall <rjmccall@apple.com> Implement elementary access control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
92f883177b162928a8e632e4e3b93fafd2b26072 23-Jan-2010 John McCall <rjmccall@apple.com> Implement elementary access control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
asic/Specifiers.h
919d2779960bc603723c9850b419106f6c4dd3df 23-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Extend clang_createTranslationUnitFromSourceFile() to support creating
translation units that include unsaved files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94258 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
4db64a461cb3442934afe43c83ed3f17f7c11c1d 23-Jan-2010 Douglas Gregor <dgregor@apple.com> Extend clang_createTranslationUnitFromSourceFile() to support creating
translation units that include unsaved files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94258 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PreprocessorOptions.h
b9aa98e712bdeb8c9b02ce49cd70d4b1312b51c3 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Add 'clang_getClangVersion()' function to CIndex. This exposes the full Clang version string through the CIndex API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94242 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
04bb716aea8fd2372ac10b0c640cabc5e5caa615 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Add 'clang_getClangVersion()' function to CIndex. This exposes the full Clang version string through the CIndex API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94242 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
aeeeb1c615f2310a76519e54a267b938c8d0ea0a 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Move version string generation (e.g., "clang 1.1 ...") to libBasic/Version.cpp, getClangFullVendorVersion().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94235 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
3687a5d83f5deb4b70b0c8e522c455d546f40101 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Move version string generation (e.g., "clang 1.1 ...") to libBasic/Version.cpp, getClangFullVendorVersion().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94235 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
fe942e746bf1b4448c7aec9c8a611d5ecd31db4d 22-Jan-2010 Ted Kremenek <kremenek@apple.com> (1) Rename getClangSubversionRevision() to getClangRevision(), and
have it return a StringRef instead of an integer (to be more VCS
agnostic).

(2) Add getClangFullRepositoryVersion(), which contains an
amalgamation of the repository name and the revision.

(3) Change PCH to only emit the string returned by
getClangFullRepositoryVersion() instead of also emitting the value
of getClangSubversionRevision() (which has been removed). This is
functionally equivalent.

More cleanup to version string generation pending...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
f7a96a39958b3f919f26764777eec948b43d74bc 22-Jan-2010 Ted Kremenek <kremenek@apple.com> (1) Rename getClangSubversionRevision() to getClangRevision(), and
have it return a StringRef instead of an integer (to be more VCS
agnostic).

(2) Add getClangFullRepositoryVersion(), which contains an
amalgamation of the repository name and the revision.

(3) Change PCH to only emit the string returned by
getClangFullRepositoryVersion() instead of also emitting the value
of getClangSubversionRevision() (which has been removed). This is
functionally equivalent.

More cleanup to version string generation pending...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
92c1e7dec5bfeed3bae63e3abcbbf359d9a3c7e3 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename pch::SVN_BRANCH_REVISION to pch::VERSION_CONTROL_BRANCH_REVISION.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94214 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
5b4ec636637c9d876102240127cc0dca9280e83a 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename pch::SVN_BRANCH_REVISION to pch::VERSION_CONTROL_BRANCH_REVISION.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94214 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ec04e5806acd9ea1fd9daea82595938db0813a2f 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename getClangSubversionPath() -> getClangRepositoryPath() and have it return a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94213 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
517e676b9e1524e39beeb47718822f2647801d1a 22-Jan-2010 Ted Kremenek <kremenek@apple.com> Rename getClangSubversionPath() -> getClangRepositoryPath() and have it return a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94213 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
35ac8b42f9b300af9bd50e5efd8a3e80aed78dfa 22-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Teach CIndex's cursor visitor to restrict its traversal to a specific
region of interest (if provided). Implement clang_getCursor() in terms
of this traversal rather than using the Index library; the unified
cursor visitor is more complete, and will be The Way Forward.

Minor other tweaks needed to make this work:
- Extend Preprocessor::getLocForEndOfToken() to accept an offset
from the end, making it easy to move to the last character in the
token (rather than just past the end of the token).
- In Lexer::MeasureTokenLength(), the length of whitespace is zero.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94200 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
33e9abd21083a0191a7676a04b497006d2da184d 22-Jan-2010 Douglas Gregor <dgregor@apple.com> Teach CIndex's cursor visitor to restrict its traversal to a specific
region of interest (if provided). Implement clang_getCursor() in terms
of this traversal rather than using the Index library; the unified
cursor visitor is more complete, and will be The Way Forward.

Minor other tweaks needed to make this work:
- Extend Preprocessor::getLocForEndOfToken() to accept an offset
from the end, making it easy to move to the last character in the
token (rather than just past the end of the token).
- In Lexer::MeasureTokenLength(), the length of whitespace is zero.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94200 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
702429807852dae8328ab4981a7b6400505dae37 22-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> Process cast according to the cast kind. Prepare for more specific cast
handling (for C++). No functionality change for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94153 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b79b117d3b76da58b14ef835ccfcf2e988b7345f 22-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> Process cast according to the cast kind. Prepare for more specific cast
handling (for C++). No functionality change for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94153 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
494ca80f0e094a0ab53af340587545036c71892a 22-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Update tool chain to use static clang_rt libraries provided by
compiler-rt. This tool chain now works on x86 and ARM, but isn't the x86 default
yet.

This drastically cleans up the linker invocation, old invocation:
--
"/Developer/usr/bin/../libexec/gcc/i686-apple-darwin10/4.2.1/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.6.0" "-weak_reference_mismatches" "non-weak" "-o" "a.out" "-lcrt1.10.6.o" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" "-L/usr/lib/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.." "t.o" "-lSystem" "-lgcc"
--

New invocation:
--
# For 10.6:
"/usr/bin/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.6.0" "-o" "a.out" "-lcrt1.10.6.o" "t.o" "-lSystem"
# For 10.4:
"/usr/bin/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.4" "-o" "a.out" "-lcrt1.o" "t.o" "-lSystem" "-lgcc_s.10.4" "/Volumes/Data/ddunbar/llvm.obj.64/Debug/lib/clang/1.1/lib/darwin/libclang_rt.10.4.a"
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94150 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
eec99100f0caa1d71bcc911ce38b9a58a8a43fdc 22-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver/Darwin: Update tool chain to use static clang_rt libraries provided by
compiler-rt. This tool chain now works on x86 and ARM, but isn't the x86 default
yet.

This drastically cleans up the linker invocation, old invocation:
--
"/Developer/usr/bin/../libexec/gcc/i686-apple-darwin10/4.2.1/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.6.0" "-weak_reference_mismatches" "non-weak" "-o" "a.out" "-lcrt1.10.6.o" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64" "-L/usr/lib/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple-darwin10/4.2.1" "-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.." "t.o" "-lSystem" "-lgcc"
--

New invocation:
--
# For 10.6:
"/usr/bin/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.6.0" "-o" "a.out" "-lcrt1.10.6.o" "t.o" "-lSystem"
# For 10.4:
"/usr/bin/ld" "-dynamic" "-arch" "x86_64" "-macosx_version_min" "10.4" "-o" "a.out" "-lcrt1.o" "t.o" "-lSystem" "-lgcc_s.10.4" "/Volumes/Data/ddunbar/llvm.obj.64/Debug/lib/clang/1.1/lib/darwin/libclang_rt.10.4.a"
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94150 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
8c8779833fab2e6e8d844c255312c468f559749c 22-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Teach the cursor visitor to walk all of the C and Objective-C
declarations that have enough source information to make such a walk
useful. This includes walking into variable initializers and enum
constants, the types behind typedefs, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94124 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1ef2fc1888d8d14e97ebe561ccbd421282de3ce2 22-Jan-2010 Douglas Gregor <dgregor@apple.com> Teach the cursor visitor to walk all of the C and Objective-C
declarations that have enough source information to make such a walk
useful. This includes walking into variable initializers and enum
constants, the types behind typedefs, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94124 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
470a9e4c678a2eb003722c591b8f00a1d1d522bb 22-Jan-2010 Chris Lattner <sabre@nondot.org> revert my patch for rdar://7520940 that warns when a published header
is #included with "foo.h" style syntax instead of framework syntax.
It produced too much noise.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94120 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
f45b646244705410866d62f1d8bf017a047ed662 22-Jan-2010 Chris Lattner <sabre@nondot.org> revert my patch for rdar://7520940 that warns when a published header
is #included with "foo.h" style syntax instead of framework syntax.
It produced too much noise.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94120 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
66a1e5dd245505deb9badbe72a8877392b5eb386 21-Jan-2010 John McCall <rjmccall@apple.com> Due to local reversions and re-patching, I accidentally had multiple copies
of the 'payload' in this header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
0380043d402fa87e00dc6166f9167ad4e73b34f4 21-Jan-2010 John McCall <rjmccall@apple.com> Due to local reversions and re-patching, I accidentally had multiple copies
of the 'payload' in this header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
d1224ba451b73cd38e0fb0ef2713fbc300f9e107 21-Jan-2010 Mike Stump <mrs@apple.com> Improve unreachable code warnings for with respect to dead functional casts in C++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
2d6ceab0ad062989ecb7b8666c85e58a2fcd95ce 21-Jan-2010 Mike Stump <mrs@apple.com> Improve unreachable code warnings for with respect to dead functional casts in C++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
39abeeb809b1c9cdd18d0d338aa8cbf71748d8d2 21-Jan-2010 Ted Kremenek <kremenek@apple.com> Allocate the 'Protocols' array in ObjCInterfaceType and
ObjCObjectPointerType using the allocator associated with ASTContext.
Not only does this fix a memory leak, but it also makes these arrays
BumpPtrAllocated (in the typical case).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
71842cc07aafdebc9b180322ebb46f530beca5d6 21-Jan-2010 Ted Kremenek <kremenek@apple.com> Allocate the 'Protocols' array in ObjCInterfaceType and
ObjCObjectPointerType using the allocator associated with ASTContext.
Not only does this fix a memory leak, but it also makes these arrays
BumpPtrAllocated (in the typical case).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
27dc20f88c6c0990ebea1c468f2610e3e896d115 21-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d8265b838360578032020757d9a2a84c86457edc 21-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Fixes a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
bf430198a91b6f352db12499d423464278fdb660 21-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to implement rewriting of properties.
Fixes radar 7562952.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d0502407c1b41b2ace326f355d7b7a6876246223 21-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Patch to implement rewriting of properties.
Fixes radar 7562952.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c5a125febb22d5636fbb9558ef1abbd58aa5b47d 21-Jan-2010 Mike Stump <mrs@apple.com> Speed up compilation by avoiding generating exceptional edges from
CallExprs as those edges help cause a n^2 explosion in the number of
destructor calls. Other consumers, such as static analysis, that
would like to have more a more complete CFG can select the inclusion
of those edges as CFG build time.

This also fixes up the two compilation users of CFGs to be tolerant of
having or not having those edges. All catch code is assumed be to
live if we didn't generate the exceptional edges for CallExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94074 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/PathSensitive/AnalysisContext.h
4c45aa1b00b91847acfb082acfaced3ffa294d1d 21-Jan-2010 Mike Stump <mrs@apple.com> Speed up compilation by avoiding generating exceptional edges from
CallExprs as those edges help cause a n^2 explosion in the number of
destructor calls. Other consumers, such as static analysis, that
would like to have more a more complete CFG can select the inclusion
of those edges as CFG build time.

This also fixes up the two compilation users of CFGs to be tolerant of
having or not having those edges. All catch code is assumed be to
live if we didn't generate the exceptional edges for CallExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94074 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/PathSensitive/AnalysisContext.h
4347259d31856682ac492d955359add71613f1c3 21-Jan-2010 Mike Stump <mrs@apple.com> Add infrastructure to add base initializers and member initializers to
the CFG. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94062 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
nalysis/CFG.h
b978a441c7d8bf59e7fede938e1f3b672573b443 21-Jan-2010 Mike Stump <mrs@apple.com> Add infrastructure to add base initializers and member initializers to
the CFG. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94062 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
nalysis/CFG.h
a90cde534c19e7333722487e5f4a67e7ce2a59d6 20-Jan-2010 John McCall <rjmccall@apple.com> Change LLVM/clang #includes to use quotes, not angle-brackets. Just a think-o
prompted by the #include <iterator> above.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
7264fa161fe77b74163417ce7ab28e3da46381f7 20-Jan-2010 John McCall <rjmccall@apple.com> Change LLVM/clang #includes to use quotes, not angle-brackets. Just a think-o
prompted by the #include <iterator> above.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
2815dc14e57c57c7d6212be2687f5df937c451a3 20-Jan-2010 John McCall <rjmccall@apple.com> First pass at collecting access-specifier information along inheritance paths.
Triggers lots of assertions about missing access information; fix them.

Will actually consume this information soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
46460a68f6508775e98c19b4bb8454bb471aac24 20-Jan-2010 John McCall <rjmccall@apple.com> First pass at collecting access-specifier information along inheritance paths.
Triggers lots of assertions about missing access information; fix them.

Will actually consume this information soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
231646006b6e167456ef6ccd209cfc1e4c7a094b 20-Jan-2010 Daniel Dunbar <daniel@zuster.org> Use sizeof() instead of hard-coding a size for WrittenBuiltinSpecs, eek!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94024 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
d31351288e25e8a7a2a919c99ffe281c2a41b53c 20-Jan-2010 Daniel Dunbar <daniel@zuster.org> Use sizeof() instead of hard-coding a size for WrittenBuiltinSpecs, eek!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94024 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
460512d0f4aa4a31fff7592c23ced4337975a5f6 20-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Settled rule on warning on unimplemented property in
category implementation when some implementations
are missing in the primary class implementation.
(fixes radar 6505200).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3ad230eb626d630877c17d6e81b167ec7476d84e 20-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Settled rule on warning on unimplemented property in
category implementation when some implementations
are missing in the primary class implementation.
(fixes radar 6505200).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2d39bef8d7fc65db1df4ebb9f7b1b3fa497e3ce0 20-Jan-2010 Chris Lattner <sabre@nondot.org> reduce redundant are's


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94009 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/DeltaTree.h
3ea5cf8889f48809a94e886d013a911128664c88 20-Jan-2010 Chris Lattner <sabre@nondot.org> reduce redundant are's


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94009 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/DeltaTree.h
30ce20c518d02acd5228274095b5cc39cae9f39f 20-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix a typo pointed about by gabor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/MacroBuilder.h
fb26025575421f179020b812c4e9e958812a3dee 20-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix a typo pointed about by gabor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93997 91177308-0d34-0410-b5e6-96231b3b80d8
asic/MacroBuilder.h
a088d5bd3141d05e8a9c4517c0d6f0cc1a0a3692 20-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Move the MacroBuilder utilitiy to its own header. Update references.

Comments and/or improvements to the documentation are welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93982 91177308-0d34-0410-b5e6-96231b3b80d8
asic/MacroBuilder.h
asic/TargetInfo.h
103b71c37a3c3a3da7128c1d0232a89b1e8d0d90 20-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Move the MacroBuilder utilitiy to its own header. Update references.

Comments and/or improvements to the documentation are welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93982 91177308-0d34-0410-b5e6-96231b3b80d8
asic/MacroBuilder.h
asic/TargetInfo.h
bf102d56b6a7557c4028652d1e2b176f5ebc1c3f 20-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix a layering issue between Basic and FE by moving a utility class into Basic.

This isn't entirely satisfactory, as it seems an implementation detail, and
with nothing to do with TargetInfo. Suggestions on where to put this are
welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
rontend/Utils.h
8a32907d540be6deef8e6c2efd29bbe2da05eac2 20-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix a layering issue between Basic and FE by moving a utility class into Basic.

This isn't entirely satisfactory, as it seems an implementation detail, and
with nothing to do with TargetInfo. Suggestions on where to put this are
welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
rontend/Utils.h
f41e1800ba8ac1d0cb3d84bfdcb9ba153d5df4b7 20-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver: Lift clang resource directory computation to the Driver object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93971 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
225c41706dc0f3682236e351820d339e14390e00 20-Jan-2010 Daniel Dunbar <daniel@zuster.org> Driver: Lift clang resource directory computation to the Driver object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93971 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
232815543878063ae6157fe77ab1348e22bac967 20-Jan-2010 John McCall <rjmccall@apple.com> Make UnresolvedSet.h standalone.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
b377c98af6d5d5ad0cf3d391129518bfa50cbca9 20-Jan-2010 John McCall <rjmccall@apple.com> Make UnresolvedSet.h standalone.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/UnresolvedSet.h
8d326ceb3e196f350b6a286f5ae3127ee10788e8 20-Jan-2010 John McCall <rjmccall@apple.com> Give UnresolvedSet the ability to store access specifiers for each declaration.
Change LookupResult to use UnresolvedSet. Also extract UnresolvedSet into its
own header and make it templated over an inline capacity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93959 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/ExprCXX.h
ST/UnresolvedSet.h
eec51cf1ba5f0e62c9cdb81b5c63babdd6e649ab 20-Jan-2010 John McCall <rjmccall@apple.com> Give UnresolvedSet the ability to store access specifiers for each declaration.
Change LookupResult to use UnresolvedSet. Also extract UnresolvedSet into its
own header and make it templated over an inline capacity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93959 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/ExprCXX.h
ST/UnresolvedSet.h
64ec9de57a038064c631176a4a0ed3e314b1e55c 20-Jan-2010 Mike Stump <mrs@apple.com> Implement goto inside of blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93945 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a3899eb5e30426b00b80232a15ae557dd4caa5b8 20-Jan-2010 Mike Stump <mrs@apple.com> Implement goto inside of blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93945 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
349f08701b41fd9991d80ab14dabccb4897c3eac 19-Jan-2010 John McCall <rjmccall@apple.com> The type of a compound literal expression is not necessarily the same as the
type which was syntactically written. Fixes PR 6080.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1d7d8d66eff7ed0f3e957d330930cc9ab8047add 19-Jan-2010 John McCall <rjmccall@apple.com> The type of a compound literal expression is not necessarily the same as the
type which was syntactically written. Fixes PR 6080.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c86545a288b5b370a0055c0eba2e0315c95b2cb0 19-Jan-2010 Mike Stump <mrs@apple.com> Add CFG support for the start and end of scopes and infrastructure for
implicit destructor calls. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93922 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
079bd72439448b78629a28da6b1f8abe2cdeaf4d 19-Jan-2010 Mike Stump <mrs@apple.com> Add CFG support for the start and end of scopes and infrastructure for
implicit destructor calls. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93922 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
cd984d478c3e5971c955eab0c9dc409b5cd4d41f 19-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> Fix a serious bug: Tmp3 is the wrong destination set. We should create a new
intermediate destination set Tmp4.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.h
c39b2bdd4cef51021fe90de91c9fb6d1a15f4d0a 19-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> Fix a serious bug: Tmp3 is the wrong destination set. We should create a new
intermediate destination set Tmp4.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.h
c22ed34c3b6febf47b4b7d2e6d299433618d21ac 19-Jan-2010 John McCall <rjmccall@apple.com> Move AccessSpecifier into the new Specifiers.h; fixes the layering violations
inherent in, well, pretty much every use of AccessSpecifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/Specifiers.h
arse/AccessSpecifier.h
arse/Action.h
arse/Parser.h
ad2b804faf29042e6c4e331d0987f103f1e2fd31 19-Jan-2010 John McCall <rjmccall@apple.com> Move AccessSpecifier into the new Specifiers.h; fixes the layering violations
inherent in, well, pretty much every use of AccessSpecifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/Specifiers.h
arse/AccessSpecifier.h
arse/Action.h
arse/Parser.h
34af854b711a338424bddf0ffdc8142cc1f2ac02 18-Jan-2010 Chris Lattner <sabre@nondot.org> allow the HandlerComment callback to push tokens into the
preprocessor. This could be used by an OpenMP implementation
or something. Patch by Abramo Bagnara!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93795 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
046c2277dcbcc8eb89dbb5b1b8c5226b7cb81635 18-Jan-2010 Chris Lattner <sabre@nondot.org> allow the HandlerComment callback to push tokens into the
preprocessor. This could be used by an OpenMP implementation
or something. Patch by Abramo Bagnara!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93795 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
30b9354df102f6060a2688fd67b0a95947c139b8 18-Jan-2010 Daniel Dunbar <daniel@zuster.org> Add missing newline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Specifiers.h
353052194ffc744643c63a494752c36d57730d4b 18-Jan-2010 Daniel Dunbar <daniel@zuster.org> Add missing newline.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Specifiers.h
b1f3c5b6d59000378616b02f940292db99dfc6ce 18-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> float, double, and long double do need extra data in the
BuiltinTypeLoc structure. Thanks, Enea!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
d038f361d2b4368af7ab85bd04d5aafcc3ea649d 18-Jan-2010 Douglas Gregor <dgregor@apple.com> float, double, and long double do need extra data in the
BuiltinTypeLoc structure. Thanks, Enea!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
c1beadbbdca275e932d68978944b8feefbf51941 18-Jan-2010 John McCall <rjmccall@apple.com> Preserve type source information in compound literal expressions.
Patch by Enea Zaffanella!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93752 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
42f56b50062cd3b3c6b23fdb9053578ae9145664 18-Jan-2010 John McCall <rjmccall@apple.com> Preserve type source information in compound literal expressions.
Patch by Enea Zaffanella!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93752 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b1215843673dae08b29b4fc004f2d4ef273cb76a 18-Jan-2010 Mike Stump <mrs@apple.com> Silence a control reaches end of function warning. Patch by Enea
Zaffanella.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93743 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocVisitor.h
b7fd588ea95bfbe8436380091ab0f61a4210ba4b 18-Jan-2010 Mike Stump <mrs@apple.com> Silence a control reaches end of function warning. Patch by Enea
Zaffanella.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93743 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLocVisitor.h
bc6fcc7a405e5d9caf60f0485f374446300bc3cf 18-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Improve source-location information for builtin TypeLocs, from Enea
Zaffanella (with a couple of my tweaks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
asic/Specifiers.h
arse/DeclSpec.h
ddf889a2ad2888f1dea573987bbe952d9912c1a0 18-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve source-location information for builtin TypeLocs, from Enea
Zaffanella (with a couple of my tweaks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
asic/Specifiers.h
arse/DeclSpec.h
3b6ac18535971f0b50fdae64a82b90ed0979395d 18-Jan-2010 Daniel Dunbar <daniel@zuster.org> Fix race condition in creating objdir.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93730 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
80febb9876b6de01fc688fb18511567c7af29a12 18-Jan-2010 Daniel Dunbar <daniel@zuster.org> Fix race condition in creating objdir.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93730 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
31cc550280fe5c50d7f6ff57978ec083d284b53b 18-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Encoding calling conventions in the type system, from Charles Davis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ab8bbf4ebd3e3e6eab913cb044772a62b7581941 18-Jan-2010 Douglas Gregor <dgregor@apple.com> Encoding calling conventions in the type system, from Charles Davis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
bcb7016f8b0f75e360798f22920b775bda13de66 18-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add support for computing size in elements for symbolic regions obtained from
malloc().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
3ed04d37573c566205d965d2e91d54ccae898d0a 18-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> Add support for computing size in elements for symbolic regions obtained from
malloc().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
c5f3e9f42a6befec845017ba12a6ec5407c2c8b2 16-Jan-2010 Sam Weinig <sam.weinig@gmail.com> Add PCH support for CXXStaticCastExpr, CXXDynamicCastExpr, CXXReinterpretCastExpr, CXXConstCastExpr and CXXFunctionalCastExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
ce757a7a1ee905f87551996a69da3e95e8afeeb7 16-Jan-2010 Sam Weinig <sam.weinig@gmail.com> Add PCH support for CXXStaticCastExpr, CXXDynamicCastExpr, CXXReinterpretCastExpr, CXXConstCastExpr and CXXFunctionalCastExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
f658702f2cd01e7b648a7131cb00ff55bc371e9a 16-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> When we are instantiating a member function of a local class, be sure
to merge the local instantiation scope with the outer local
instantiation scope, so that we can instantiate declarations from the
function owning the local class. Fixes an assert while instantiating
Boost.MPL's BOOST_MPL_ASSERT_MSG.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
79c2278a66d8fc0943774d1b7c71a32f7764e1e2 16-Jan-2010 Douglas Gregor <dgregor@apple.com> When we are instantiating a member function of a local class, be sure
to merge the local instantiation scope with the outer local
instantiation scope, so that we can instantiate declarations from the
function owning the local class. Fixes an assert while instantiating
Boost.MPL's BOOST_MPL_ASSERT_MSG.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
efae5800004586a05ac2f6153e71771d6e7187fd 16-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Improve location information for Objective-C category declarations. We
previously only had a single location (the @ in @interface); now we
know where the @ is (for the start of the declaration), where the
class name is (that's the normal "location" now for diagnostics), and
where the category name is. Also, eliminated the redundant "end"
location, since ObjCContainerDecl already has better @end information.

The only XFAIL'd test is temporary; will un-XFAIL-it once I've taught
CIndex how to use the new locations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3db211b617c5073aa70eb25d37ed44ae0dca17c4 16-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve location information for Objective-C category declarations. We
previously only had a single location (the @ in @interface); now we
know where the @ is (for the start of the declaration), where the
class name is (that's the normal "location" now for diagnostics), and
where the category name is. Also, eliminated the redundant "end"
location, since ObjCContainerDecl already has better @end information.

The only XFAIL'd test is temporary; will un-XFAIL-it once I've taught
CIndex how to use the new locations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7158dd960d2b47b2f2ab7bf94fa1702ca2778cdd 16-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Keep track of the source locations for each protocol reference in
Objective-C classes, protocol definitions, forward protocol
declarations, and categories. This information isn't actually used
yet; that's coming next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
18df52bbb5d28ca082064d31ae7558dbdae52377 16-Jan-2010 Douglas Gregor <dgregor@apple.com> Keep track of the source locations for each protocol reference in
Objective-C classes, protocol definitions, forward protocol
declarations, and categories. This information isn't actually used
yet; that's coming next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
6c30cb6c3d2405decef6232838811a088f9e37b5 16-Jan-2010 Tanya Lattner <tonic@nondot.org> The codegen for these builtins was removed long ago, but their definitions remained. Removing them totally.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
41bdf0d35ceab9ed2967ed836f050e5cec9c656d 16-Jan-2010 Tanya Lattner <tonic@nondot.org> The codegen for these builtins was removed long ago, but their definitions remained. Removing them totally.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
d5ecc399aa8985536852b0af8c2c63d5650f6857 15-Jan-2010 John McCall <rjmccall@apple.com> Preserve type source information in explicit cast expressions.
Patch by Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93522 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
9d125033a9853f3b572a4c9e2f9e2d4e5e346973 15-Jan-2010 John McCall <rjmccall@apple.com> Preserve type source information in explicit cast expressions.
Patch by Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93522 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
710d1169e49242b6852b7e6611528917f2cb77ec 15-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Convert the type of the LValue offset variable in APValue to CharUnits, moving
the LValue-related methods of APValue out of line to avoid header file leaching.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
a73058324197b7bdfd19307965954f626e26199d 15-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Convert the type of the LValue offset variable in APValue to CharUnits, moving
the LValue-related methods of APValue out of line to avoid header file leaching.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
443b7e5fa98e6a31a86b52ab3689f8140d4076e3 15-Jan-2010 Ted Kremenek <kremenek@apple.com> Convert a few more uses of std::string& to llvm::StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93506 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
8b9317186fd5243938128a0b0e0494498d78ab8c 15-Jan-2010 Ted Kremenek <kremenek@apple.com> Convert a few more uses of std::string& to llvm::StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93506 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
d53936ede29c21c7f937368abec6eb6b7e4ca9f0 14-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> When qualified lookup into the current instantiation fails (because it
finds nothing), and the current instantiation has dependent base
classes, treat the qualified lookup as if it referred to an unknown
specialization. Fixes PR6031.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9edad9b6184c730a73dc9241c043ea3bae54189f 14-Jan-2010 Douglas Gregor <dgregor@apple.com> When qualified lookup into the current instantiation fails (because it
finds nothing), and the current instantiation has dependent base
classes, treat the qualified lookup as if it referred to an unknown
specialization. Fixes PR6031.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e02f1e2fb37ddd0ec1f25fd0cec534f16c8cad4f 14-Jan-2010 John McCall <rjmccall@apple.com> Improve overload diagnostics some more by calling out qualifier mismatches
for special diagnostics. Unfortunately, the non-overload diagnostics are not
this good.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
651f3eec130099fb46e2ce2c8aee9d01531dc3b5 14-Jan-2010 John McCall <rjmccall@apple.com> Improve overload diagnostics some more by calling out qualifier mismatches
for special diagnostics. Unfortunately, the non-overload diagnostics are not
this good.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93420 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ce0452369fa01deec5f736574ff6fe55c54f151b 14-Jan-2010 John McCall <rjmccall@apple.com> Improve the diagnostic for bad conversions in overload resolution to talk
about 'object argument' vs. 'nth argument'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e81e15ed0c31f828104b339ceb66648d1c815a8b 14-Jan-2010 John McCall <rjmccall@apple.com> Improve the diagnostic for bad conversions in overload resolution to talk
about 'object argument' vs. 'nth argument'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e3258ff3df5a57e7f689e45cafda86cbd92e813e 14-Jan-2010 John McCall <rjmccall@apple.com> Perform format-expansion on %select results.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9f28614bf1a8387000d8df57a713fcf69e198145 14-Jan-2010 John McCall <rjmccall@apple.com> Perform format-expansion on %select results.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
bedfe2752593796f67ba5f5f27968a4644965c64 14-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Banish the notion of a "rank" for code-completion results, since we
are no longer using it for anything. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93376 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
bca403c17b3eee38ea0644fb70f652629b285faf 14-Jan-2010 Douglas Gregor <dgregor@apple.com> Banish the notion of a "rank" for code-completion results, since we
are no longer using it for anything. No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93376 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
19a2e1e609e6a9db13f649ccd9f4d1ec16aa5acd 13-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Code-completion for @public, @protected, @private, @package.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93361 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c38c3e1e726630458154534227d74eda833d26a0 13-Jan-2010 Douglas Gregor <dgregor@apple.com> Code-completion for @public, @protected, @private, @package.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93361 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
13529ab3783ec557034e2fce4d4152372aaabe64 13-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Whenever completing ordinary names for an Objective-C source, also
provide completions for @ keywords. Previously, we only provided
@-completions after an @ was actually typed, which is useful but
probably not the common case.

Also, make sure a few Objective-C 2.0 completions only show up when
Objective-C 2.0 support is enabled (the default).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93354 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b6ac2451bfed36206c5cec7217372c4299f67f2b 13-Jan-2010 Douglas Gregor <dgregor@apple.com> Whenever completing ordinary names for an Objective-C source, also
provide completions for @ keywords. Previously, we only provided
@-completions after an @ was actually typed, which is useful but
probably not the common case.

Also, make sure a few Objective-C 2.0 completions only show up when
Objective-C 2.0 support is enabled (the default).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93354 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6469dffc68a0b6fb195096b473763f3e1476b954 13-Jan-2010 John McCall <rjmccall@apple.com> Add type source information for both kinds of typeof types.
Patch by Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93344 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
arse/DeclSpec.h
cfb708c354e2f30ccc5cba9d644650f408a1ec3e 13-Jan-2010 John McCall <rjmccall@apple.com> Add type source information for both kinds of typeof types.
Patch by Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93344 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
arse/DeclSpec.h
bd51dca82ccb6b91a6e3bdf691a46e641d6a5e85 13-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Predefine __weak attribute when doing objective-c
rewriting for any target. (refixes radar 7530235).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93331 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
rontend/Utils.h
7d957472ef9a09048c03d8a11028536f908c18b9 13-Jan-2010 Fariborz Jahanian <fjahanian@apple.com> Predefine __weak attribute when doing objective-c
rewriting for any target. (refixes radar 7530235).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93331 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
rontend/Utils.h
9e433f356f535443788b9ec6a2cd28fa25a0d33d 13-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Reimplement constructor declarator parsing to cope with template-ids
that name constructors, the endless joys of out-of-line constructor
definitions, and various other corner cases that the previous hack
never imagined. Fixes PR5688 and tightens up semantic analysis for
constructor names.

Additionally, fixed a problem where we wouldn't properly enter the
declarator scope of a parenthesized declarator. We were entering the
scope, then leaving it when we saw the ")"; now, we re-enter the
declarator scope before parsing the parameter list.

Note that we are forced to perform some tentative parsing within a
class (call it C) to tell the difference between

C(int); // constructor

and

C (f)(int); // member function

which is rather unfortunate. And, although it isn't necessary for
correctness, we use the same tentative-parsing mechanism for
out-of-line constructors to improve diagnostics in icky cases like:

C::C C::f(int); // error: C::C refers to the constructor name, but
// we complain nicely and recover by treating it as
// a type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
arse/Parser.h
0efc2c1716be4f1c5f1343cad3b047e74861f030 13-Jan-2010 Douglas Gregor <dgregor@apple.com> Reimplement constructor declarator parsing to cope with template-ids
that name constructors, the endless joys of out-of-line constructor
definitions, and various other corner cases that the previous hack
never imagined. Fixes PR5688 and tightens up semantic analysis for
constructor names.

Additionally, fixed a problem where we wouldn't properly enter the
declarator scope of a parenthesized declarator. We were entering the
scope, then leaving it when we saw the ")"; now, we re-enter the
declarator scope before parsing the parameter list.

Note that we are forced to perform some tentative parsing within a
class (call it C) to tell the difference between

C(int); // constructor

and

C (f)(int); // member function

which is rather unfortunate. And, although it isn't necessary for
correctness, we use the same tentative-parsing mechanism for
out-of-line constructors to improve diagnostics in icky cases like:

C::C C::f(int); // error: C::C refers to the constructor name, but
// we complain nicely and recover by treating it as
// a type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
arse/Parser.h
23b70b8d8a7271402c433f023e3012717a03cc6b 13-Jan-2010 Sean Hunt <rideau3@gmail.com> Implement semantic checking for C++ literal operators.
This now rejects literal operators that don't meet the requirements.
Templates are not yet checked for.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclarationName.h
asic/DiagnosticSemaKinds.td
a6c058dd75c5563cced821fc16766a7cc179e00c 13-Jan-2010 Sean Hunt <rideau3@gmail.com> Implement semantic checking for C++ literal operators.
This now rejects literal operators that don't meet the requirements.
Templates are not yet checked for.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclarationName.h
asic/DiagnosticSemaKinds.td
56e6c573af74698691c61e649b5153bcca795781 13-Jan-2010 Chris Lattner <sabre@nondot.org> diagnose invalid values of -ftabstop, patch by Christian Adaker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
rontend/DiagnosticOptions.h
52388f9aefba585475a38081272ce582d033c883 13-Jan-2010 Chris Lattner <sabre@nondot.org> diagnose invalid values of -ftabstop, patch by Christian Adaker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
rontend/DiagnosticOptions.h
fe6189ee1a85456792b2dd58f3ef7c93de9c4ed0 13-Jan-2010 Mike Stump <mrs@apple.com> Add an unreachable code checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fa6ef180c0d3609124217387618fbb51bbdd2e48 13-Jan-2010 Mike Stump <mrs@apple.com> Add an unreachable code checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9f5bb69061be3e1edc3dc0dbda45516c714a55d5 13-Jan-2010 Daniel Dunbar <daniel@zuster.org> cc1: Factor out CompilerInstance::ExecuteAction which has the majority of the
clang -cc1 logic for running an action against a set of options.
- This should make it easier to build tools that have a clang -cc1 like
interface, but aren't actually part of clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93282 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
0397af277e3bba16da1fd125ddba07415686b429 13-Jan-2010 Daniel Dunbar <daniel@zuster.org> cc1: Factor out CompilerInstance::ExecuteAction which has the majority of the
clang -cc1 logic for running an action against a set of options.
- This should make it easier to build tools that have a clang -cc1 like
interface, but aren't actually part of clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93282 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ec29a8136449036f485e28f6e1e21ae3fb0289a0 13-Jan-2010 John McCall <rjmccall@apple.com> Improve the reporting of non-viable overload candidates by noting the reason
why the candidate is non-viable. There's a lot we can do to improve this, but
it's a good start. Further improvements should probably be integrated with the
bad-initialization reporting routines.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
220ccbf2c9ef97034cce80561f9f46c4f1f63bc7 13-Jan-2010 John McCall <rjmccall@apple.com> Improve the reporting of non-viable overload candidates by noting the reason
why the candidate is non-viable. There's a lot we can do to improve this, but
it's a good start. Further improvements should probably be integrated with the
bad-initialization reporting routines.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
03d4a759ca310279ed396418a3d6469dd1f06c3a 13-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Don't emit string-comparison or self-comparison warnings in
unevaluated contexts, because they only matter for code that will
actually be evaluated at runtime.

As part of this, I had to extend PartialDiagnostic to support fix-it
hints.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
d1e4d9bfd57f643d950eb1373f582bda4dfb8dc7 13-Jan-2010 Douglas Gregor <dgregor@apple.com> Don't emit string-comparison or self-comparison warnings in
unevaluated contexts, because they only matter for code that will
actually be evaluated at runtime.

As part of this, I had to extend PartialDiagnostic to support fix-it
hints.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
0dca8ec36388fb792cca7e25345dbd3e755ccbad 12-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Improve recovery for template-ids whose template-name doesn't actually
name a template, when they occur in a base-specifier. This is one of
the (few) places where we know for sure that an identifier followed by
a '<' must be a template name, so we can diagnose and recover well:

test/SemaTemplate/dependent-base-classes.cpp:9:16: error: missing
'template'
keyword prior to dependent template name 'T::apply'
struct X1 : T::apply<U> { }; // expected-error{{missing 'template' ...
^
template
test/SemaTemplate/dependent-base-classes.cpp:12:13: error: unknown
template name
'vector'
struct X2 : vector<T> { }; // expected-error{{unknown template name
'vector'}}
^
2 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
84d0a19828599e8623223632d59447fd498999cf 12-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve recovery for template-ids whose template-name doesn't actually
name a template, when they occur in a base-specifier. This is one of
the (few) places where we know for sure that an identifier followed by
a '<' must be a template name, so we can diagnose and recover well:

test/SemaTemplate/dependent-base-classes.cpp:9:16: error: missing
'template'
keyword prior to dependent template name 'T::apply'
struct X1 : T::apply<U> { }; // expected-error{{missing 'template' ...
^
template
test/SemaTemplate/dependent-base-classes.cpp:12:13: error: unknown
template name
'vector'
struct X2 : vector<T> { }; // expected-error{{unknown template name
'vector'}}
^
2 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
07dae20d1c4268bc0b7548a9d21ae55062acdb53 12-Jan-2010 Chris Lattner <sabre@nondot.org> implement PR6004, warning about divide and remainder by zero.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7ef655a78863c0a7550bfe51174b9c340ab1dce0 12-Jan-2010 Chris Lattner <sabre@nondot.org> implement PR6004, warning about divide and remainder by zero.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a96e8bff5e65b4ddafb5464c8511ecf5cc2d9b1f 12-Jan-2010 Chris Lattner <sabre@nondot.org> implement PR6007, diagnosing invalid attribute((section))


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a1e1dc77e995b746826b64752751dbf35f323767 12-Jan-2010 Chris Lattner <sabre@nondot.org> implement PR6007, diagnosing invalid attribute((section))


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d1563a9c50fbde7ce7d4d79f21a6f9abc9a20e1 12-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix the CodeGen half of PR5911 by changing reference initialization to
correctly look through arrays to see cv-qualifiers. Also enhances the routine
for doing this to preserve more type sugaring for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5535c38a2fcface6c13bc8bbeca66882de2fa227 12-Jan-2010 Chandler Carruth <chandlerc@gmail.com> Fix the CodeGen half of PR5911 by changing reference initialization to
correctly look through arrays to see cv-qualifiers. Also enhances the routine
for doing this to preserve more type sugaring for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c0e8d18ceec34f3a9ef7f838c430835e5c06ac7e 12-Jan-2010 John McCall <rjmccall@apple.com> Reorganize some of the code to note overload candidates. Improves the
fidelity with which we note them as functions/constructors and templates
thereof. Also will be helpful when reporting bad conversions (next).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3c80f573dfbc01f29cc292f6c1fc794705823d52 12-Jan-2010 John McCall <rjmccall@apple.com> Reorganize some of the code to note overload candidates. Improves the
fidelity with which we note them as functions/constructors and templates
thereof. Also will be helpful when reporting bad conversions (next).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1981dbd321e8ff34344e9804c1c9d0ee615ff447 11-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid use of deprecated functions (CStrInCStrNoCase and StringsEqualNoCase).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93175 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
e45c149996ccd0f2ac1da95493b8563c108abc1f 11-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid use of deprecated functions (CStrInCStrNoCase and StringsEqualNoCase).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93175 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
7a5bd1189974bff4cc180f89bb444e9a5c1db545 11-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Change return type of getObjCEncodingTypeSize() to CharUnits as the units are in characters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
aa8741a1db98eef05f09b1200dba94aa5dc3bc3d 11-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Change return type of getObjCEncodingTypeSize() to CharUnits as the units are in characters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8f3a00f7d3af66b977d410e83acfd328b7956a31 11-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Tighten up the "cannot return array or function type" diagnostic to
say either "array type" or "function type", whichever it is. No reason
to make the user guess.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93164 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
58408bc4ead86b08af56cd06fc966fd858b48b2d 11-Jan-2010 Douglas Gregor <dgregor@apple.com> Tighten up the "cannot return array or function type" diagnostic to
say either "array type" or "function type", whichever it is. No reason
to make the user guess.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93164 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ba171099c6991c1bdc65631c7b89dc1ea746e786 11-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Implement name lookup for conversion function template specializations
(C++ [temp.mem]p5-6), which involves template argument deduction based
on the type named, e.g., given

struct X { template<typename T> operator T*(); } x;

when we call

x.operator int*();

we perform template argument deduction to determine that T=int. This
template argument deduction is needed for template specialization and
explicit instantiation, e.g.,

template<> X::operator float*() { /* ... */ }

and when calling or otherwise naming a conversion function (as in the
first example).

This fixes PR5742 and PR5762, although there's some remaining ugliness
that's causing out-of-line definitions of conversion function
templates to fail. I'll look into that separately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
48026d26fb58e413544874eead5491b1452e2ebf 11-Jan-2010 Douglas Gregor <dgregor@apple.com> Implement name lookup for conversion function template specializations
(C++ [temp.mem]p5-6), which involves template argument deduction based
on the type named, e.g., given

struct X { template<typename T> operator T*(); } x;

when we call

x.operator int*();

we perform template argument deduction to determine that T=int. This
template argument deduction is needed for template specialization and
explicit instantiation, e.g.,

template<> X::operator float*() { /* ... */ }

and when calling or otherwise naming a conversion function (as in the
first example).

This fixes PR5742 and PR5762, although there's some remaining ugliness
that's causing out-of-line definitions of conversion function
templates to fail. I'll look into that separately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
549ba49e99494d17bcade748696f3f48384a46cb 11-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Roll out ASTContext::getTypeSizeInChars(), replacing instances of
"ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits
ones as appropriate.

Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType,
fromQuantity(), and getQuantity() for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
199c3d6cd16aebbb9c7f0d42af9d922c9628bf70 11-Jan-2010 Ken Dyck <ken.dyck@onsemi.com> Roll out ASTContext::getTypeSizeInChars(), replacing instances of
"ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits
ones as appropriate.

Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType,
fromQuantity(), and getQuantity() for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
611405cf9f2eafde425844480ea81c427b2778ce 11-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make Clang complain about taking the address of an unqualified member function. Fixes PR5985.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93150 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e27d87ff27b26e5886cf6472271d3b5e18ec3d87 11-Jan-2010 Sebastian Redl <sebastian.redl@getdesigned.at> Make Clang complain about taking the address of an unqualified member function. Fixes PR5985.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93150 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a2abfabeea60dafb4a54291291abf3928819866 11-Jan-2010 Ted Kremenek <kremenek@apple.com> Switch RegionStore over to using <BaseRegion+raw offset> to store
value bindings. Along with a small change to OSAtomicChecker, this
resolves <rdar://problem/7527292> and resolves some long-standing
issues with how values can be bound to the same physical address by
not have the same "key". This change is only a beginning; logically
RegionStore needs to better handle loads from addresses where the
stored value is larger/smaller/different type than the loaded value.
We handle these cases in an approximate fashion now (via
CastRetrievedVal and help in SimpleSValuator), but it could be made
much smarter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
c50e6df965ff264952d8d5805d151f89c89af302 11-Jan-2010 Ted Kremenek <kremenek@apple.com> Switch RegionStore over to using <BaseRegion+raw offset> to store
value bindings. Along with a small change to OSAtomicChecker, this
resolves <rdar://problem/7527292> and resolves some long-standing
issues with how values can be bound to the same physical address by
not have the same "key". This change is only a beginning; logically
RegionStore needs to better handle loads from addresses where the
stored value is larger/smaller/different type than the loaded value.
We handle these cases in an approximate fashion now (via
CastRetrievedVal and help in SimpleSValuator), but it could be made
much smarter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
9f08a84789ec21aeb0ac355a6ab32c846ffce0b8 11-Jan-2010 Sean Hunt <rideau3@gmail.com> Do not parse hexadecimal floating point literals in C++0x mode because they are
incompatible with user-defined literals, specifically with the following form:

0x1p+1

The preprocessing-number token extends only as far as the 'p'; the '+' is not
included. Previously we could get away with this extension as p was an invalid
suffix, but now with user-defined literals, 'p' might well be a valid suffix
and we are forced to consider it as such.

This patch also adds a warning in non-0x C++ modes telling the user that
this extension is incompatible with C++0x that is enabled by default
(previously and with other languages, we warn only with a compliance
option such as -pedantic).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
8c723404c34e9347fae473489194e8c200c4ac83 11-Jan-2010 Sean Hunt <rideau3@gmail.com> Do not parse hexadecimal floating point literals in C++0x mode because they are
incompatible with user-defined literals, specifically with the following form:

0x1p+1

The preprocessing-number token extends only as far as the 'p'; the '+' is not
included. Previously we could get away with this extension as p was an invalid
suffix, but now with user-defined literals, 'p' might well be a valid suffix
and we are forced to consider it as such.

This patch also adds a warning in non-0x C++ modes telling the user that
this extension is incompatible with C++0x that is enabled by default
(previously and with other languages, we warn only with a compliance
option such as -pedantic).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
b33725c345a3de48248ba7bb1c7bec3b829f6d11 11-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Improve code completion by introducing patterns for the various C and
C++ grammatical constructs that show up in top-level (namespace-level)
declarations, member declarations, template declarations, statements,
expressions, conditions, etc. For example, we now provide a pattern
for

static_cast<type>(expr)

when we can have an expression, or

using namespace identifier;

when we can have a using directive.

Also, improves the results of code completion at the beginning of a
top-level declaration. Previously, we would see value names (function
names, global variables, etc.); now we see types, namespace names,
etc., but no values.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93134 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
01dfea02d1da297e8b53db8eea3d3cc652acda8d 11-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve code completion by introducing patterns for the various C and
C++ grammatical constructs that show up in top-level (namespace-level)
declarations, member declarations, template declarations, statements,
expressions, conditions, etc. For example, we now provide a pattern
for

static_cast<type>(expr)

when we can have an expression, or

using namespace identifier;

when we can have a using directive.

Also, improves the results of code completion at the beginning of a
top-level declaration. Previously, we would see value names (function
names, global variables, etc.); now we see types, namespace names,
etc., but no values.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93134 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
0bb4d1988e810f9d2576e5ae92a1a2c8d91fec17 10-Jan-2010 Anton Korobeynikov <asl@math.spbu.ru> Make clone() method out-of-line for Attr classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93120 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
fc5d5133357e36b9b83edd7cd10080d783f19010 10-Jan-2010 Anton Korobeynikov <asl@math.spbu.ru> Make clone() method out-of-line for Attr classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93120 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
698d8f3d012663fd816aece0570f291926fb35d0 10-Jan-2010 Anton Korobeynikov <asl@math.spbu.ru> Generalize target weirdness handling having proper layering in mind:
1. Add helper class for sema checks for target attributes
2. Add helper class for codegen of target attributes

As a proof-of-concept - implement msp430's 'interrupt' attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
82d0a418c8699fc6f4a9417457ffe93d43bba1c1 10-Jan-2010 Anton Korobeynikov <asl@math.spbu.ru> Generalize target weirdness handling having proper layering in mind:
1. Add helper class for sema checks for target attributes
2. Add helper class for codegen of target attributes

As a proof-of-concept - implement msp430's 'interrupt' attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
eb8e4f977d5b5851a473832142eafc13330977aa 10-Jan-2010 Chris Lattner <sabre@nondot.org> stringref'ize a bunch of filename handling logic. Much
nicer than passing around two const char*'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93094 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/Preprocessor.h
a139481e62fdb209d9d87a54a5733f989d2e8d51 10-Jan-2010 Chris Lattner <sabre@nondot.org> stringref'ize a bunch of filename handling logic. Much
nicer than passing around two const char*'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93094 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/Preprocessor.h
45d3b07e2601ba5c87527f3b34f060cce22aa43f 10-Jan-2010 Chris Lattner <sabre@nondot.org> implement rdar://7520940: published framework headers should
import other headers within the same framework with the full
framework path, not with a relative include.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93083 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
804f65271953f358dc01bfcf74a93e8c93c5b2d6 10-Jan-2010 Chris Lattner <sabre@nondot.org> implement rdar://7520940: published framework headers should
import other headers within the same framework with the full
framework path, not with a relative include.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93083 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
ba62ebd010101759f34b7b41e73cb1f3650d623d 09-Jan-2010 Chris Lattner <sabre@nondot.org> implement -ftabstop=width, patch by Christian Adåker


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93078 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
124fca533d9fef2e3f6359283909bd342b5f5f26 09-Jan-2010 Chris Lattner <sabre@nondot.org> implement -ftabstop=width, patch by Christian Adåker


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93078 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/Options.td
rontend/DiagnosticOptions.h
0aeb2d9d73fa302b0fe3392464940df9fc2d6591 09-Jan-2010 Chris Lattner <sabre@nondot.org> make missing prototypes warn by default in c99 mode like GCC does,
rdar://7083878


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e6e8b5af0dc25cab3a5e4cd82ed554b68d5b323a 09-Jan-2010 Chris Lattner <sabre@nondot.org> make missing prototypes warn by default in c99 mode like GCC does,
rdar://7083878


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9ffb1043390ed6ce9772df75ccf2362285d1672c 09-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use MacroBuilder for TargetDefines instead of std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
a99927774d07af9c6f0e1945531eadc910592945 09-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Use MacroBuilder for TargetDefines instead of std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0c12b3b01dd46b9401ba86e54aa2639c447fa18c 09-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Move MacroBuilder into Frontend/Utils.h and clean it up a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93057 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
b1b5b901ca229ce05dc40abbec8bebe7b1096e42 09-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Move MacroBuilder into Frontend/Utils.h and clean it up a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93057 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
01ecd6f31b707cbb1aa53b73829cd1ae767ba5f5 09-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> When binding an rvalue to a reference, create a temporary object. Use
CXXObjectRegion to represent it.

In Environment, lookup a literal expression before make up a value for it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93047 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/MemRegion.h
bc37b8dd9914e02580f531fa6e5e72be34d9675e 09-Jan-2010 Zhongxing Xu <xuzhongxing@gmail.com> When binding an rvalue to a reference, create a temporary object. Use
CXXObjectRegion to represent it.

In Environment, lookup a literal expression before make up a value for it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93047 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/MemRegion.h
54d54b5a7bae186b56b606382ce36c5724335f13 08-Jan-2010 Dan Gohman <gohman@apple.com> Use -fno-math-errno by default, and remove the IsMathErrnoDefault
targethook, which is no longer being used. This fixes PR5971.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92987 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/ToolChain.h
c31176d5ebbcd407aa512bbd5f717e35da629e7d 08-Jan-2010 Dan Gohman <gohman@apple.com> Use -fno-math-errno by default, and remove the IsMathErrnoDefault
targethook, which is no longer being used. This fixes PR5971.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92987 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
river/ToolChain.h
f06c73ec0e1154646664ef846508152fa4789b11 08-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Improve the fix-its for -Wparentheses to ensure that the fix-it
suggestions follow recovery. Additionally, add a note to these
diagnostics which suggests a fix-it for changing the behavior to what
the user probably meant. Examples:

t.cpp:2:9: warning: & has lower precedence than ==; == will be evaluated first
[-Wparentheses]
if (i & j == k) {
^~~~~~~~
( )
t.cpp:2:9: note: place parentheses around the & expression to evaluate it first
if (i & j == k) {
^
( )

t.cpp:14:9: warning: using the result of an assignment as a condition
without
parentheses [-Wparentheses]
if (i = f()) {
~~^~~~~
( )
t.cpp:14:9: note: use '==' to turn this assignment into an equality
comparison
if (i = f()) {
^
==




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92975 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
827feec561c8a1f23c099da56c4ac98364ecfc09 08-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve the fix-its for -Wparentheses to ensure that the fix-it
suggestions follow recovery. Additionally, add a note to these
diagnostics which suggests a fix-it for changing the behavior to what
the user probably meant. Examples:

t.cpp:2:9: warning: & has lower precedence than ==; == will be evaluated first
[-Wparentheses]
if (i & j == k) {
^~~~~~~~
( )
t.cpp:2:9: note: place parentheses around the & expression to evaluate it first
if (i & j == k) {
^
( )

t.cpp:14:9: warning: using the result of an assignment as a condition
without
parentheses [-Wparentheses]
if (i = f()) {
~~^~~~~
( )
t.cpp:14:9: note: use '==' to turn this assignment into an equality
comparison
if (i = f()) {
^
==




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92975 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
48a26b4d276d5d0fd55da6182c8dcae33b11479a 08-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Add an "implicit" bit to CXXThisExpr, so that we can track
implicitness without losing track of the (logical or actual) location
where "this" would occur in the source.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
828a197317288e3333b0ce6f5cedadd036e3531f 08-Jan-2010 Douglas Gregor <dgregor@apple.com> Add an "implicit" bit to CXXThisExpr, so that we can track
implicitness without losing track of the (logical or actual) location
where "this" would occur in the source.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4816e3f43cb95c35202db24eeb8673aa35f17c6e 07-Jan-2010 Ted Kremenek <kremenek@apple.com> Fix typo: rename Rewriter::getRewritenText() -> Rewriter::getRewrittenText().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92922 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
6a12a14a529a79524e17889046c7098b80a73c49 07-Jan-2010 Ted Kremenek <kremenek@apple.com> Fix typo: rename Rewriter::getRewritenText() -> Rewriter::getRewrittenText().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92922 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
6b2a65de031ad19968e314365b37a09ba3c68b10 07-Jan-2010 John McCall <rjmccall@apple.com> Improve the lead diagnostic for C++ object subscript expressions with
no viable overloads. Use a different message when the class provides
no operator[] overloads at all; use it for operator(), too.

Partially addresses PR 5900.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1eb3e1003d5cda4d47f54321d81d678c26981e7a 07-Jan-2010 John McCall <rjmccall@apple.com> Improve the lead diagnostic for C++ object subscript expressions with
no viable overloads. Use a different message when the class provides
no operator[] overloads at all; use it for operator(), too.

Partially addresses PR 5900.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
42c0c4c4c5a06ed3bca2f21b65d3f42827dcfd57 07-Jan-2010 Ted Kremenek <kremenek@apple.com> Change ObjCContainerDecl to contain the entire range for the '@end'
piece of the declaration. The '@' and the 'end' are separate tokens,
and require two SourceLocations to accurately track.

This change was motivated because ObjCContainerDecl::getSourceRange()
would previously not return the entire range of the declaration (the
'end' would be left off).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/SourceLocation.h
arse/Action.h
arse/Parser.h
782f2f52b78d8ca785110398a7f7b56b830b9ac7 07-Jan-2010 Ted Kremenek <kremenek@apple.com> Change ObjCContainerDecl to contain the entire range for the '@end'
piece of the declaration. The '@' and the 'end' are separate tokens,
and require two SourceLocations to accurately track.

This change was motivated because ObjCContainerDecl::getSourceRange()
would previously not return the entire range of the declaration (the
'end' would be left off).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/SourceLocation.h
arse/Action.h
arse/Parser.h
8ee4c875b808dd97e2e57d023b4793cdd1944290 07-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> When we typo-correct a base class initializer, point to the base class
specifier that we corrected to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92878 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0d535c89c5d02017153fb971e1ef080cd80cb4b8 07-Jan-2010 Douglas Gregor <dgregor@apple.com> When we typo-correct a base class initializer, point to the base class
specifier that we corrected to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92878 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8ca761bc62a3749d80becb3e49dd54098c9079d3 07-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Move the allocation of designators in DesignatedInitExpr to the
ASTContext. Fixes <rdar://problem/7495428>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92867 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
319d57f21600dd2c4d52ccc27bd12ce260b174e7 07-Jan-2010 Douglas Gregor <dgregor@apple.com> Move the allocation of designators in DesignatedInitExpr to the
ASTContext. Fixes <rdar://problem/7495428>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92867 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
84b499ee169a4de028ac44ffd1a360802b40dd89 06-Jan-2010 John McCall <rjmccall@apple.com> Improve the diagnostics used to report implicitly-generated class members
as parts of overload sets. Also, refer to constructors as 'constructors'
rather than functions.

Adjust a lot of tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b1622a1fd7b7f4ab8d00d0183d17c90ad25c14e3 06-Jan-2010 John McCall <rjmccall@apple.com> Improve the diagnostics used to report implicitly-generated class members
as parts of overload sets. Also, refer to constructors as 'constructors'
rather than functions.

Adjust a lot of tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
274441d6d0e400c029074801e9de3c5d335c00bc 06-Jan-2010 John McCall <rjmccall@apple.com> Add Expr::EvaluateAsBooleanCondition(), which does unprincipled folding to
try to evaluate an expression as a constant boolean condition. This has
the same intended semantics as used in folding conditional operators.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cd7a445c6b46c5585580dfb652300c8483c0cb6b 06-Jan-2010 John McCall <rjmccall@apple.com> Add Expr::EvaluateAsBooleanCondition(), which does unprincipled folding to
try to evaluate an expression as a constant boolean condition. This has
the same intended semantics as used in folding conditional operators.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
51c4c9eaf6a99f50702ab244ab12a5f1b0ddeba3 05-Jan-2010 Nate Begeman <natebegeman@mac.com> Allow clang to pass -x cl through to compiler driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92686 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
edcfc411148e81c644a1ff36a9df8a7b08209a23 05-Jan-2010 Nate Begeman <natebegeman@mac.com> Allow clang to pass -x cl through to compiler driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92686 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
3d1e103e971807fecb909bdffad0cfd606b91137 05-Jan-2010 Mike Stump <mrs@apple.com> Disallow captured arrays in blocks as well. Radar 7438948.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92677 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2849734790738585a9726a84b263c60e3be0193f 05-Jan-2010 Mike Stump <mrs@apple.com> Disallow captured arrays in blocks as well. Radar 7438948.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92677 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7cca37d40d1587a897e85fc19db19a74e2d9b458 05-Jan-2010 Mike Stump <mrs@apple.com> Disallow capturing vlas inside blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92676 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0d6fd570e52f5d7fc637c9f41382992a97b94b4c 05-Jan-2010 Mike Stump <mrs@apple.com> Disallow capturing vlas inside blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92676 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e96c5d20306d2c645dcd976b0ef677a1906524d 05-Jan-2010 Ted Kremenek <kremenek@apple.com> Make static analysis support for C++ 'this' expression context-sensitive. Essentially treat 'this' as a implicit parameter to the method call, and associate a region with it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92675 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
de0d26310191215a6d1d189dc419f87af18ce6be 05-Jan-2010 Ted Kremenek <kremenek@apple.com> Make static analysis support for C++ 'this' expression context-sensitive. Essentially treat 'this' as a implicit parameter to the method call, and associate a region with it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92675 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
04ed4d956e8beb7b32f54e57d414b1c209a1b029 05-Jan-2010 Chris Lattner <sabre@nondot.org> fix a bug mike noticed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92559 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6ffe643322949dd776285a6df60d3578f3918be4 05-Jan-2010 Chris Lattner <sabre@nondot.org> fix a bug mike noticed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92559 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
be1f166f974c24a0b945cddf82e448d1b7d189ef 05-Jan-2010 Ted Kremenek <kremenek@apple.com> Remove references to 'Checker' and 'GRTransferFuncs' from
GRStateManager. Having these references was an abstraction violation,
as they really should only be known about GRExprEngine.

This change required adding a new 'ProcessAssume' callback in
GRSubEngine. GRExprEngine implements this callback by calling
'EvalAssume' on all registered Checker objects as well as the
registered GRTransferFunc object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92549 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRSubEngine.h
32a58084a4c53e6938dd81bfce224db25a5976d1 05-Jan-2010 Ted Kremenek <kremenek@apple.com> Remove references to 'Checker' and 'GRTransferFuncs' from
GRStateManager. Having these references was an abstraction violation,
as they really should only be known about GRExprEngine.

This change required adding a new 'ProcessAssume' callback in
GRSubEngine. GRExprEngine implements this callback by calling
'EvalAssume' on all registered Checker objects as well as the
registered GRTransferFunc object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92549 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRSubEngine.h
bf8cc88a863ad503648b9fc01ace1c1f8812c196 04-Jan-2010 Mike Stump <mrs@apple.com> Remember if the AsmStmt came from Microsoft-style inline assembly code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
3b11fd3b52e7b88233c602407c151d07cb093e75 04-Jan-2010 Mike Stump <mrs@apple.com> Remember if the AsmStmt came from Microsoft-style inline assembly code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
3cbd6c34b9affed2b0571489e52f50444172d949 04-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Make sure to use ASTContext::getAs*ArrayType() when decomposing array
types. Fixes APFloat.cpp compilation failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
442471309fa97348f849687a6a8ef4acc3bc2c1f 04-Jan-2010 Douglas Gregor <dgregor@apple.com> Make sure to use ASTContext::getAs*ArrayType() when decomposing array
types. Fixes APFloat.cpp compilation failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d8c6349c077f98826061f5da06abb475d872c98f 04-Jan-2010 Daniel Dunbar <daniel@zuster.org> Add missing newline (which breaks MSVC build???)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92522 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ExternalPreprocessorSource.h
f8c381fff1a3c10e0f7f0c9f223f08e8d7dce0e3 04-Jan-2010 Daniel Dunbar <daniel@zuster.org> Add missing newline (which breaks MSVC build???)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92522 91177308-0d34-0410-b5e6-96231b3b80d8
ex/ExternalPreprocessorSource.h
b5e7bb7dbd6ea02a30f18cd5e637dd231e8486e5 04-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Teach Preprocessor::macro_begin/macro_end to lazily load all macro
definitions from a precompiled header. This ensures that
code-completion with macro names behaves the same with or without
precompiled headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92497 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
ex/ExternalPreprocessorSource.h
ex/Preprocessor.h
88a35862fbe473f2a4f0c19f24dbe536937e1dc6 04-Jan-2010 Douglas Gregor <dgregor@apple.com> Teach Preprocessor::macro_begin/macro_end to lazily load all macro
definitions from a precompiled header. This ensures that
code-completion with macro names behaves the same with or without
precompiled headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92497 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
ex/ExternalPreprocessorSource.h
ex/Preprocessor.h
40cd149f9ac16960a8a366edd067596fc75d864c 04-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> When declaring an Objective-C implementation without a corresponding
interface, suggest correction of typos. For example, given:

@interface NSString
@end

@implementation NSstring
@end

we'll warn with:

t.m:4:19: warning: cannot find interface declaration for 'NSstring';
did you mean 'NSString'?
@implementation NSstring
^

However, since this is just a warning, we don't provide a fix-it
hint. Good idea, Ted!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
95ff742380d1c3dd5152739183bfe085cf27197f 04-Jan-2010 Douglas Gregor <dgregor@apple.com> When declaring an Objective-C implementation without a corresponding
interface, suggest correction of typos. For example, given:

@interface NSString
@end

@implementation NSstring
@end

we'll warn with:

t.m:4:19: warning: cannot find interface declaration for 'NSstring';
did you mean 'NSString'?
@implementation NSstring
^

However, since this is just a warning, we don't provide a fix-it
hint. Good idea, Ted!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1ce05a85971be4d02f9bb3f6ca8198364e32bfcb 03-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Implement typo correction for a variety of Objective-C-specific
constructs:

- Instance variable lookup ("foo->ivar" and, in instance methods, "ivar")
- Property name lookup ("foo.prop")
- Superclasses
- Various places where a class name is required
- Protocol names (e.g., id<proto>)

This seems to cover many of the common places where typos could occur.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92449 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f06cdae9c68dfc4191fbf6b9e5ea0fd748488d88 03-Jan-2010 Douglas Gregor <dgregor@apple.com> Implement typo correction for a variety of Objective-C-specific
constructs:

- Instance variable lookup ("foo->ivar" and, in instance methods, "ivar")
- Property name lookup ("foo.prop")
- Superclasses
- Various places where a class name is required
- Protocol names (e.g., id<proto>)

This seems to cover many of the common places where typos could occur.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92449 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1241be32b423ef5cdd79abb89beb11bf0679f24e 01-Jan-2010 Douglas Gregor <doug.gregor@gmail.com> Typo correction for C99 designated field initializers, e.g.,

test/FixIt/typo.c:19:4: error: field designator 'bunds' does not refer to any
field in type 'struct Window'; did you mean 'bounds'?
.bunds.
^~~~~
bounds



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c171e3b192a372669cf622ff0b6a847f8e5b4220 01-Jan-2010 Douglas Gregor <dgregor@apple.com> Typo correction for C99 designated field initializers, e.g.,

test/FixIt/typo.c:19:4: error: field designator 'bunds' does not refer to any
field in type 'struct Window'; did you mean 'bounds'?
.bunds.
^~~~~
bounds



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
894683184ed0584a7bff845671a224ef5e5a3d49 31-Dec-2009 Anders Carlsson <andersca@mac.com> Make sure that an overriding return type is complete before checking if it's covariant. Fixes PR5920.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
be2e205add4c1f6375bb430e847b712a88581e46 31-Dec-2009 Anders Carlsson <andersca@mac.com> Make sure that an overriding return type is complete before checking if it's covariant. Fixes PR5920.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
699a60a2225911ed5a0fa015b5442e4567622e58 31-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Typo correction for C++ base and member initializers, e.g.,

test/FixIt/typo.cpp:41:15: error: initializer 'base' does not name a non-static
data member or base class; did you mean the base class 'Base'?
Derived() : base(),
^~~~
Base
test/FixIt/typo.cpp:42:15: error: initializer 'ember' does not name a non-static
data member or base class; did you mean the member 'member'?
ember() { }
^~~~~
member



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92355 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fe0241e31dd2d1af60116adf6f71dedc88cd1f68 31-Dec-2009 Douglas Gregor <dgregor@apple.com> Typo correction for C++ base and member initializers, e.g.,

test/FixIt/typo.cpp:41:15: error: initializer 'base' does not name a non-static
data member or base class; did you mean the base class 'Base'?
Derived() : base(),
^~~~
Base
test/FixIt/typo.cpp:42:15: error: initializer 'ember' does not name a non-static
data member or base class; did you mean the member 'member'?
ember() { }
^~~~~
member



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92355 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
66a10cbaa65d56b5607e4484f16124e186c419b9 31-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Typo correction for template names, e.g.,

typo.cpp:27:8: error: no template named 'basic_sting' in namespace 'std';
did you mean 'basic_string'?
std::basic_sting<char> b2;
~~~~~^~~~~~~~~~~
basic_string



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bfea239cafdb13256982eb891b151c5c07c1e7a9 31-Dec-2009 Douglas Gregor <dgregor@apple.com> Typo correction for template names, e.g.,

typo.cpp:27:8: error: no template named 'basic_sting' in namespace 'std';
did you mean 'basic_string'?
std::basic_sting<char> b2;
~~~~~^~~~~~~~~~~
basic_string



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92348 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d0fd8bfa0dac7de50d82b5ef2d896fc723e1d17a 31-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Let constraint manager inform checkers that some assumption logic has happend.
Add new states for symbolic regions tracked by malloc checker. This enables us
to do malloc checking more accurately. See test case.

Based on Lei Zhang's patch and discussion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92342 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
b94b81a9ab46c99b00c7ad28c5e1e212c63fc9ac 31-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Let constraint manager inform checkers that some assumption logic has happend.
Add new states for symbolic regions tracked by malloc checker. This enables us
to do malloc checking more accurately. See test case.

Based on Lei Zhang's patch and discussion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92342 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
8b4cf27b95c1cfbe66a3cc5c4ebb8f75a0fc7d90 31-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Implement typo correction for id-expressions, e.g.,

typo.cpp:22:10: error: use of undeclared identifier 'radious'; did
you mean 'radius'?
return radious * pi;
^~~~~~~
radius

This was super-easy, since we already had decent recovery by looking
for names in dependent base classes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92341 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
bb092bafa984e9fa05136b5cef40fd4374dea0f6 31-Dec-2009 Douglas Gregor <dgregor@apple.com> Implement typo correction for id-expressions, e.g.,

typo.cpp:22:10: error: use of undeclared identifier 'radious'; did
you mean 'radius'?
return radious * pi;
^~~~~~~
radius

This was super-easy, since we already had decent recovery by looking
for names in dependent base classes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92341 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
9d2a856837a070d01102ec03f9325f895d12f7ed 30-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92314 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
f2017d13ebd4a617415d737fa99c7e013b4d5dd9 30-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92314 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
b41a2bbe98b693690dca7df2305750e511c81df9 30-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Typo correction for type names when they appear in declarations, e.g., given

tring str2;

we produce the following diagnostic + fix-it:

typo.cpp:15:1: error: unknown type name 'tring'; did you mean 'string'?
tring str2;
^~~~~
string


To make this really useful, we'll need to introduce typo correction in
many more places (wherever we do name lookup), and implement
declaration-vs-expression heuristics that cope with typos
better. However, for now this will handle the simple cases where we
already get good "unknown type name" diagnostics.

The LookupVisibleDecls functions are intended to be used by code
completion as well as typo correction; that refactoring will happen
later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
546be3c5c000626c8cdf65e32e8ed9b90c424edd 30-Dec-2009 Douglas Gregor <dgregor@apple.com> Typo correction for type names when they appear in declarations, e.g., given

tring str2;

we produce the following diagnostic + fix-it:

typo.cpp:15:1: error: unknown type name 'tring'; did you mean 'string'?
tring str2;
^~~~~
string


To make this really useful, we'll need to introduce typo correction in
many more places (wherever we do name lookup), and implement
declaration-vs-expression heuristics that cope with typos
better. However, for now this will handle the simple cases where we
already get good "unknown type name" diagnostics.

The LookupVisibleDecls functions are intended to be used by code
completion as well as typo correction; that refactoring will happen
later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6d18ae945b0b85054942aaac9ee32011d5b8b34d 30-Dec-2009 Chandler Carruth <chandlerc@gmail.com> More fixes to the handling of CVR-comparisons on array types. Adds a method to
QualType to get CVR-qualifiers through array types, and switches the primary
comparison methods to use it. This may allow simplifying some of the callers of
getUnqualifiedArrayType.

Also fix the normalizing of CV-qualification during template deduction to
normalize through arrays and allow a more qualified deduced array type. This
fixes PR5911.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e724246b9f655801bd96b727daf9dddc44beef4d 30-Dec-2009 Chandler Carruth <chandlerc@gmail.com> More fixes to the handling of CVR-comparisons on array types. Adds a method to
QualType to get CVR-qualifiers through array types, and switches the primary
comparison methods to use it. This may allow simplifying some of the callers of
getUnqualifiedArrayType.

Also fix the normalizing of CV-qualification during template deduction to
normalize through arrays and allow a more qualified deduced array type. This
fixes PR5911.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92289 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e6cd706648aa42c1022d30c68e3b77f2a7a68a73 30-Dec-2009 John McCall <rjmccall@apple.com> Typedefs can be redeclared. That seems like something we should record in
the AST lest we run into some crazy canonicalization bug like PR5874.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5126fd0dd92c4ec211c837ee78d5ce59c68dcbd5 30-Dec-2009 John McCall <rjmccall@apple.com> Typedefs can be redeclared. That seems like something we should record in
the AST lest we run into some crazy canonicalization bug like PR5874.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
26f205b92434a4f2d857d2266f80e532981cd2dc 30-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make sure to explicitly pass type/value dependence to Expr constructor. This
caught several cases where we were not doing the right thing. I'm
not completely sure all cases are being handled correctly, but this should
be an improvement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
2333f7727f97018d6742e1e0938133bcfad967ab 30-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make sure to explicitly pass type/value dependence to Expr constructor. This
caught several cases where we were not doing the right thing. I'm
not completely sure all cases are being handled correctly, but this should
be an improvement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
8f36583a712cf7f8dd6d88712739572c4642629e 29-Dec-2009 Chandler Carruth <chandlerc@gmail.com> Correctly refer to element CVR qualifications when determining if a type is
more or less cv-qualified than another during implicit conversion and overload
resolution ([basic.type.qualifier] p5). Factors the logic out of template
deduction and into the ASTContext so it can be shared.

This fixes several aspects of PR5542, but not all of them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
28e318cc6008c2bc008f0caee70dc736a03d6289 29-Dec-2009 Chandler Carruth <chandlerc@gmail.com> Correctly refer to element CVR qualifications when determining if a type is
more or less cv-qualified than another during implicit conversion and overload
resolution ([basic.type.qualifier] p5). Factors the logic out of template
deduction and into the ASTContext so it can be shared.

This fixes several aspects of PR5542, but not all of them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
79f414435ef406f9fb3dc7733b93715ac6313425 29-Dec-2009 Anders Carlsson <andersca@mac.com> Get rid of FixedWidthIntType, as suggested by Chris and Eli.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92246 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
rontend/TypeXML.def
f5f7d864f5067d1ea4bff7fcf41b53a43b7b48ba 29-Dec-2009 Anders Carlsson <andersca@mac.com> Get rid of FixedWidthIntType, as suggested by Chris and Eli.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92246 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
rontend/TypeXML.def
5f6b9aa32e5e3038caa5cebbfbb9fb6861bebc00 28-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Adjust indentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92205 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
2d3dfd70eee48005f253b72d288e0eb4ed754fe0 28-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Adjust indentation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92205 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
48b6ae35216b660d09f5f31e7e03cdd5613d5539 25-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Make sure operator new[] and operator delete[] match. This will hopefully silence 3 remaining MSVC warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0235d1510d0677b26f2d0448694e5e3e8a1ee043 25-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Make sure operator new[] and operator delete[] match. This will hopefully silence 3 remaining MSVC warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
480622ffee581a2915378aa97f2cd8f1af66b639 24-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Egregious, disgusting workaround for PR5866. We need to rework how we
keep track of friends within templates, which will provide a real for
PR5866. For now, this makes sure we don't do something entirely stupid
with friends of specializations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7557a1348d2821dce126a778aa7acd7a00b814fd 24-Dec-2009 Douglas Gregor <dgregor@apple.com> Egregious, disgusting workaround for PR5866. We need to rework how we
keep track of friends within templates, which will provide a real for
PR5866. For now, this makes sure we don't do something entirely stupid
with friends of specializations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e4d072c96b52a58a0f118e29bb31379aa388641d 24-Dec-2009 John McCall <rjmccall@apple.com> Tweak the text of several main() diagnostics and punch a hole specifically for
Darwin's sekrit fourth argument. This should probably be factored to
let targets make target-specific decisions about what main() should look like.

Fixes rdar://problem/7414990
or if different platforms have radically different ideas of what they want in



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6675586c70945fdd71911d96f83324788b93edd4 24-Dec-2009 John McCall <rjmccall@apple.com> Tweak the text of several main() diagnostics and punch a hole specifically for
Darwin's sekrit fourth argument. This should probably be factored to
let targets make target-specific decisions about what main() should look like.

Fixes rdar://problem/7414990
or if different platforms have radically different ideas of what they want in



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b1459dbc72261bf9df555e143f24635a4a6a75bc 24-Dec-2009 John McCall <rjmccall@apple.com> Diagnose out-of-bounds floating-point constants. Fixes rdar://problem/6974641



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ex/LiteralSupport.h
94c939dc1d4958b62ea5a89294dd8b2905f3191f 24-Dec-2009 John McCall <rjmccall@apple.com> Diagnose out-of-bounds floating-point constants. Fixes rdar://problem/6974641



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ex/LiteralSupport.h
cfaf8bb9f360856d5b90f3d2b84328fd6a58d5f7 24-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> As Ted suggested, record the callsite information with the StackFrameContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92121 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
62d399e1880aacd9dc494fce374245b0da915ada 24-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> As Ted suggested, record the callsite information with the StackFrameContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92121 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
2edf859e96eceb3774acada200b689fb60e185cb 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Enhance dataflow analyses to recognize branch statements in the CFG used as hooks for the initialization of condition variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92119 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
bfbcefb7e99905218b3f0a895b7bc1992203123b 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Enhance dataflow analyses to recognize branch statements in the CFG used as hooks for the initialization of condition variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92119 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
13e9f2c45f23062fb42bf1d5198702ac75e1034f 24-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Inter-procedural analysis: now we can return from the callee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92116 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
598278bee8e5797bc73d24d6ac8a1d6ff6413cae 24-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Inter-procedural analysis: now we can return from the callee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92116 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
75e8c707255745e44fb2da09feebeeaa5442fa72 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Fix bug I just introduced in ForStmt::child_end() where we could iterate off into garbage values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6281213d87e71b76f64c4ca62fbe7a97f18ae0a0 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Fix bug I just introduced in ForStmt::child_end() where we could iterate off into garbage values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d3fff74aff2196ffc8149c0cd284b0de76aec623 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Coelesce 'DoDestroy()' methods in Stmt.cpp, and modify the child_iterator returned by ForStmt to include the initializer of the condition variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f0d975f25b1d71612fcbd58ce8abbbc4532c6bb5 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Coelesce 'DoDestroy()' methods in Stmt.cpp, and modify the child_iterator returned by ForStmt to include the initializer of the condition variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
40d9c798afe5da69537f8a2967a6ed3861d105e3 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Modify WhileStmt::child_begin()/child_end() to include the initializer for the condition variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7d02b8c3be58676a03046eef9d056063e55ada3e 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Modify WhileStmt::child_begin()/child_end() to include the initializer for the condition variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7c087b1efd1375088e9a89c8847ea5503647e184 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Teach GRExprEngine to handle the initialization of the condition variable of a SwitchStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92102 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
fcfb503c280ed8c66d428fed911b2846c0f434fc 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Teach GRExprEngine to handle the initialization of the condition variable of a SwitchStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92102 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
30c9e46fd571f58d42ba8060ec5376318bf109ea 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Add StmtIterator support for iterating over both the condition
variable initializer and the other expressions in an IfStmt.

This change required adding a 'DoDestroy()' method for IfStmt that did
not include destroying the initializer (since that is owned by the
VarDecl).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
35628d1f17c817f8c240208db7ba490e3109981b 24-Dec-2009 Ted Kremenek <kremenek@apple.com> Add StmtIterator support for iterating over both the condition
variable initializer and the other expressions in an IfStmt.

This change required adding a 'DoDestroy()' method for IfStmt that did
not include destroying the initializer (since that is owned by the
VarDecl).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
74ad412c8f5727a8108c46b25b7675e7005ecfbb 24-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> When we see a CXXDefaultArgExpr during template instantiation, rebuild
the default argument so that we're sure to mark any referenced
declarations. This gets us another little step closer to fixing
PR5810.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
036aed18662e0193aafe0e8ae13d2e57efe6df25 24-Dec-2009 Douglas Gregor <dgregor@apple.com> When we see a CXXDefaultArgExpr during template instantiation, rebuild
the default argument so that we're sure to mark any referenced
declarations. This gets us another little step closer to fixing
PR5810.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
67d5907ec238ceb55cdbd00895b92887bda91b63 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Increase StmtIterator size by one pointer (separating out the Stmt** from the union including Decl* and Decl**).
This change is setup for adding StmtIterator support for condition variables in IfStmt, WhileStmt, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
b03f630a5d4256220ac48a6f04b765c34c9e8993 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Increase StmtIterator size by one pointer (separating out the Stmt** from the union including Decl* and Decl**).
This change is setup for adding StmtIterator support for condition variables in IfStmt, WhileStmt, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
8a60ea384dab832a2f8a2eb89f3304c6612409fe 23-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose the use of incomplete types in C++ typeid expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
765ccba920269eefbf572ec4bcd6ac7b6e9f9f77 23-Dec-2009 Douglas Gregor <dgregor@apple.com> Diagnose the use of incomplete types in C++ typeid expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92045 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
288c8ebe1c37e1a80f893b0781a1b257061cb397 23-Dec-2009 Chris Lattner <sabre@nondot.org> update comments


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92022 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
4718e67ca9018342483dccb40d43e339101ac386 23-Dec-2009 Chris Lattner <sabre@nondot.org> update comments


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92022 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9aa086ec7df90f7c4b5427aecb6455de6448dc7d 23-Dec-2009 Chris Lattner <sabre@nondot.org> switch -Werror/-Wfatal-errors error conditions to use diagnostics instead
of printf, patch by Christian Adaker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
a3b089e062133bdc0e5c39ea03f8b78230953f6c 23-Dec-2009 Chris Lattner <sabre@nondot.org> switch -Werror/-Wfatal-errors error conditions to use diagnostics instead
of printf, patch by Christian Adaker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
918683ef98bf33c9526bacea7ca860cfc34589b3 23-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> When using a default function argument for a function template (or
member function thereof), perform the template instantiation each time
the default argument is needed. This ensures that
(1) We get different CXXTemporary objects for each instantiation, and
(2) Any other instantiations or definitions triggered by the
instantiation of the default argument expression are guaranteed to
happen; previously, they might have been suppressed, e.g., because
they happened in an unevaluated context.

This fixes the majority of PR5810. However, it does not address the
problem where we may have multiple uses of the same CXXTemporary
within an expression when the temporary came from a non-instantiated
default argument expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
65222e82d97af2120b3952d19cbd3cd923f4b43e 23-Dec-2009 Douglas Gregor <dgregor@apple.com> When using a default function argument for a function template (or
member function thereof), perform the template instantiation each time
the default argument is needed. This ensures that
(1) We get different CXXTemporary objects for each instantiation, and
(2) Any other instantiations or definitions triggered by the
instantiation of the default argument expression are guaranteed to
happen; previously, they might have been suppressed, e.g., because
they happened in an unevaluated context.

This fixes the majority of PR5810. However, it does not address the
problem where we may have multiple uses of the same CXXTemporary
within an expression when the temporary came from a non-instantiated
default argument expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
5928e6d3037bf9dbc1716ebc8344413858d2795f 23-Dec-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove RewriteBlocks. It has been superseded by RewriteObjC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92014 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
49ac8e63a0622ce049e58decab9e844b1e8c7ecd 23-Dec-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove RewriteBlocks. It has been superseded by RewriteObjC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92014 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/ASTConsumers.h
rontend/FrontendActions.h
rontend/FrontendOptions.h
95f389f39932863f3472a37bea632a180d748682 23-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Don't disable smart pointers, silly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92009 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
ab470d1cc259c3d342a9e61ea1742315814abfc5 23-Dec-2009 Douglas Gregor <dgregor@apple.com> Don't disable smart pointers, silly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92009 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
32db22fe16b904778c993deca73fca4a3cbdabb9 23-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Fix DISABLE_SMART_POINTERS build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92008 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
e1a5c17bffba76d20efa89d1d74e5f44159a67bd 23-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix DISABLE_SMART_POINTERS build

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92008 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
a48a9f6d615af246eb18b93ccfd11aa087bc1403 23-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Migrate the call inliner to the Checker interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91991 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRTransferFuncs.h
3ff8481f4be3f30e1082488238d83f78342303e1 23-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Migrate the call inliner to the Checker interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91991 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRTransferFuncs.h
0e20d24cf8ee04e4eb616534fb09948b51a9aa96 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add 'DeclStmt::DoDestroy()' which doesn't actually recurse over its child expressions (via StmtIterator), as those expressions are owned by the Decls and Types (which are destroyed elsewhere). This fixes a crasher reported in <rdar://problem/7487294>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e7809d49413febf078d0503753987fe9f6061a68 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add 'DeclStmt::DoDestroy()' which doesn't actually recurse over its child expressions (via StmtIterator), as those expressions are owned by the Decls and Types (which are destroyed elsewhere). This fixes a crasher reported in <rdar://problem/7487294>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6c07b30ca5bdf6416e1177c47f365ca444a42ae5 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add CFG support for the condition variable that can appear in IfStmts in C++ mode.
Add transfer function support in GRExprEngine for IfStmts with initialized condition variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91987 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
61dfbecd8e6181b2ba42ffb5feede27a2bab3b8a 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add CFG support for the condition variable that can appear in IfStmts in C++ mode.
Add transfer function support in GRExprEngine for IfStmts with initialized condition variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91987 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
51088401ab6d3ffd6420163d51c4545e1be9a96d 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Fix CXXConstructExpr::getSourceRange() to not include the source ranges of CXXDefaultArgExprs when computing its range (since these expressions have no source range, and using them will make the encompassing range invalid).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e383768f7f5d45ca4af0b1c11cbf072de18bce98 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Fix CXXConstructExpr::getSourceRange() to not include the source ranges of CXXDefaultArgExprs when computing its range (since these expressions have no source range, and using them will make the encompassing range invalid).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
bf5d664fbba567d910833938ee01a1e6bf7ad6cf 23-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Remove CharUnits::toString() to eliminate dependence on <string>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91978 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
775f2eb49116baeb0c97d2085fac30174e2ebd43 23-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Remove CharUnits::toString() to eliminate dependence on <string>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91978 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
cb3998997b6051defab8c1ab833b12fc989d8a10 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add assertion to check for valid source ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91966 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
a5083e6ab51b031241152e81457240497ab9bff9 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add assertion to check for valid source ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91966 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
bf57c61ad6225876aeee81c68816bf696f10605c 23-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Drop ToolChain::getHost()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91960 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
1bda434673d3c51a2ba6b412f100ccfcf3e7083f 23-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Drop ToolChain::getHost()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91960 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
961cde695946e621f3395e88c37aded954411f17 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add basic support for analyzing CastExprs as lvalues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
949bdb43bf370b23a79a37b017e0a0566c0d66e0 23-Dec-2009 Ted Kremenek <kremenek@apple.com> Add basic support for analyzing CastExprs as lvalues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8ebca3f26aaac8de84c4a3092d07dd0d90d40f52 23-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> warn when attribute warn_unused_result is applied to void functions.
while at it, remove an outdated FIXME

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f857798fa77ac50c6d0a262d96ad6176187190e3 23-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> warn when attribute warn_unused_result is applied to void functions.
while at it, remove an outdated FIXME

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
86d7ba180bf61e7cbeac3910ae8065e3cfadb34c 23-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: When linking, don't warn about unused arguments which are obviously only
used during compilation.
- There is no easy way to define this group properly, unfortunately, and maybe
this is a losing strategy. For now this is unambiguous more friendly, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91940 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f3601388f234f70778e3023018dfe57b64cf4043 23-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: When linking, don't warn about unused arguments which are obviously only
used during compilation.
- There is no easy way to define this group properly, unfortunately, and maybe
this is a losing strategy. For now this is unambiguous more friendly, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91940 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
93e4192cb38df5789b0a531c916d6a5cd5d09ca9 23-Dec-2009 Chris Lattner <sabre@nondot.org> implement -W[no-]fatal-errors, patch by Christian Adåker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
e663c720063fc9ff9f75bcbe38cd070c73c78b0e 23-Dec-2009 Chris Lattner <sabre@nondot.org> implement -W[no-]fatal-errors, patch by Christian Adåker!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6b5e63e8fc7e056fe9eb4c74d52f9f932e3f788c 22-Dec-2009 Chris Lattner <sabre@nondot.org> accept -Wcomments as an alias for -Wcomment, PR5855


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91929 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
aae57c21de274984e145c95500b3d9bf4370543c 22-Dec-2009 Chris Lattner <sabre@nondot.org> accept -Wcomments as an alias for -Wcomment, PR5855


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91929 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
3c3ae1bef092924a9ea3bef0efa7627199c48c0a 22-Dec-2009 Ted Kremenek <kremenek@apple.com> Add transfer functions support for visiting an Objective-C message expression as an lvalue when the return type is a C++ reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/GRExprEngine.h
38ac4f504bf8ed514520b5a82be538bdb0860687 22-Dec-2009 Ted Kremenek <kremenek@apple.com> Add transfer functions support for visiting an Objective-C message expression as an lvalue when the return type is a C++ reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/GRExprEngine.h
d2d3b515609587914cd5afc33c899b73492014d2 22-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Move the implementation of ASTContext::getTypeSizeInChars() to the .cpp file to
avoid #including CharUnits.h in ASTContext.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bdc601b196c48d4cd56a5ceb45d41ae4e87371ab 22-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Move the implementation of ASTContext::getTypeSizeInChars() to the .cpp file to
avoid #including CharUnits.h in ASTContext.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a04f5dcaba86eebe768972ad02fb42f5be685365 22-Dec-2009 John McCall <rjmccall@apple.com> Stop diagnosing the use of inner classes as friends. ddunbar asked whether
this was useful, and on review Doug and I decided it was probably on the level
of a bug in the standard and therefore not worth a warning even in -pedantic.
If someone disagrees and urgently wants clang++ to warn about this in strict
c++98 mode, we can talk about it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a236a5584732c7c285316d7608168f771fac2059 22-Dec-2009 John McCall <rjmccall@apple.com> Stop diagnosing the use of inner classes as friends. ddunbar asked whether
this was useful, and on review Doug and I decided it was probably on the level
of a bug in the standard and therefore not worth a warning even in -pedantic.
If someone disagrees and urgently wants clang++ to warn about this in strict
c++98 mode, we can talk about it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b94a110b0e81aad5bb0156e4bf55eed7adc9ff56 22-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate the ASTContext argument to CXXConstructorDecl::isCopyConstructor, since the context is available in the Decl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9e9199d8649cf3e10c98a69403f05dbb666d8fb1 22-Dec-2009 Douglas Gregor <dgregor@apple.com> Eliminate the ASTContext argument to CXXConstructorDecl::isCopyConstructor, since the context is available in the Decl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
96be2a493357b8172c880889a22d28dfdd0d1c78 22-Dec-2009 Daniel Dunbar <daniel@zuster.org> ARM: Honor -mfpu= and set __VFP_FP__ and __ARM_NEON__ "correctly".
- Correctly is in quotes, because we are following what I interpreted as GCC's
intent (which diverges from practice, naturally).
- Also, fix the arch define for arm1136jf-s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91855 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
a91320b8af7143f7af4c0665ffa62a3b244c0bd9 22-Dec-2009 Daniel Dunbar <daniel@zuster.org> ARM: Honor -mfpu= and set __VFP_FP__ and __ARM_NEON__ "correctly".
- Correctly is in quotes, because we are following what I interpreted as GCC's
intent (which diverges from practice, naturally).
- Also, fix the arch define for arm1136jf-s.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91855 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f50ccbfbe65f0aa666e446aea4f9e55792c6465d 22-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> When a template-id refers to a single function template, and the
explicitly-specified template arguments are enough to determine the
instantiation, and either template argument deduction fails or is not
performed in that context, we can resolve the template-id down to a
function template specialization (so sayeth C++0x
[temp.arg.explicit]p3). Fixes PR5811.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91852 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4b52e25f3b05ab0f9d2492276a52323a50a84fb7 22-Dec-2009 Douglas Gregor <dgregor@apple.com> When a template-id refers to a single function template, and the
explicitly-specified template arguments are enough to determine the
instantiation, and either template argument deduction fails or is not
performed in that context, we can resolve the template-id down to a
function template specialization (so sayeth C++0x
[temp.arg.explicit]p3). Fixes PR5811.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91852 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eed574461aebce1416058a75edc3a35ceb9dfbac 21-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ToolChain::getDriver() and use it instead of going through the HostInfo
object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91830 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
ee788e70fcd0adf76103b17c78ac658d4ea30c9b 21-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ToolChain::getDriver() and use it instead of going through the HostInfo
object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91830 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
86a7c7a112be801d31dd8a3989f5f0f8f731ab5d 21-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> fix PR4010: add support for the warn_unused_result for function pointers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d20254f2875d0004c57ee766f258dbcee29f4841 21-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> fix PR4010: add support for the warn_unused_result for function pointers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a7a09e24bee9060b6c7ed975b8bad2491f8d2c3b 20-Dec-2009 John McCall <rjmccall@apple.com> Don't inject the class name until that magical lbrace.

Because of the rules of base-class lookup* and the restrictions on typedefs, it
was actually impossible for this to cause any problems more serious than the
spurious acceptance of
template <class T> class A : B<A> { ... };
instead of
template <class T> class A : B<A<T> > { ... };
but I'm sure we can all agree that that is a very important restriction which
is well worth making another Parser->Sema call for.

(*) n.b. clang++ does not implement these rules correctly; we are not ignoring
non-type names



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91792 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f9368159334ff86ea5fa367225c1a580977f3b03 20-Dec-2009 John McCall <rjmccall@apple.com> Don't inject the class name until that magical lbrace.

Because of the rules of base-class lookup* and the restrictions on typedefs, it
was actually impossible for this to cause any problems more serious than the
spurious acceptance of
template <class T> class A : B<A> { ... };
instead of
template <class T> class A : B<A<T> > { ... };
but I'm sure we can all agree that that is a very important restriction which
is well worth making another Parser->Sema call for.

(*) n.b. clang++ does not implement these rules correctly; we are not ignoring
non-type names



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91792 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1801ef5d2d7c415b6b0efde7c4d79317cb72c905 19-Dec-2009 John McCall <rjmccall@apple.com> Parse base specifiers within the scope of the class. This is possibly not
quite right; I'll come back to it later. It does fix PR 5741.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
bd0dfa5c37d422427080a0ae3af9b63e70e6e854 19-Dec-2009 John McCall <rjmccall@apple.com> Parse base specifiers within the scope of the class. This is possibly not
quite right; I'll come back to it later. It does fix PR 5741.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9275674dd96cfa6dd24932f0a08d50feef883bcd 19-Dec-2009 Daniel Dunbar <daniel@zuster.org> Remove another ';' after method definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91781 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
6ecc0b5000e9efac2e677dc4dff80b5dbf3a4a4a 19-Dec-2009 Daniel Dunbar <daniel@zuster.org> Remove another ';' after method definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91781 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/UninitializedValues.h
917c9e1d36105d8b37c8029b15d1e18dd90c17ad 19-Dec-2009 Daniel Dunbar <daniel@zuster.org> Remove ';' after method definition. Noticed by clang++, which one would think
would have a higher respect for its own code. This is getting old, is this
warning really adding value?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Decl.h
ST/DeclObjC.h
ST/TemplateBase.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
arse/Action.h
7177dee8aee4b432911c91f1b788963bec0cac9f 19-Dec-2009 Daniel Dunbar <daniel@zuster.org> Remove ';' after method definition. Noticed by clang++, which one would think
would have a higher respect for its own code. This is getting old, is this
warning really adding value?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Decl.h
ST/DeclObjC.h
ST/TemplateBase.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
arse/Action.h
ab37872411b5ac0f98530d546a804db2f69dc437 19-Dec-2009 John McCall <rjmccall@apple.com> Refactor to remove more dependencies on PreDeclaratorDC. I seem to have made
the redeclaration problems in the [temp.explicit]p3 testcase worse, but I can
live with that; they'll need to be fixed more holistically anyhow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91771 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
7a1dc562d4ad59237ed9fe7e8cef56f9eaa7a26c 19-Dec-2009 John McCall <rjmccall@apple.com> Refactor to remove more dependencies on PreDeclaratorDC. I seem to have made
the redeclaration problems in the [temp.explicit]p3 testcase worse, but I can
live with that; they'll need to be fixed more holistically anyhow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91771 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
e9079a2f75a26bfbc424d4b0cef2f7a397874676 19-Dec-2009 Anders Carlsson <andersca@mac.com> Fix tyop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91761 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
17ef1660b209f1a2294b9ddee86846c6fd8d5ec0 19-Dec-2009 Anders Carlsson <andersca@mac.com> Fix tyop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91761 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f54e3e1e0b6f00482f2679d6d3329a1712ccabb4 19-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Some small Builtins.def improvements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
65889f374c75ee2142a8ff8c208ceb8c62b08d12 19-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Some small Builtins.def improvements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
4f7cd963882f72fd85bf5add260fc6427792d647 19-Dec-2009 Daniel Dunbar <daniel@zuster.org> Targets: Allow CreateTargetInfo to mutate the target features.
- In particular, it can claim features for itself instead of always passing them on to LLVM.
- This allows using the target features as a generic mechanism for passing target specific options to the TargetInfo instance, which may need them for initializing preprocessor defines, etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91753 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b93292ab7f2b3d43a9e0ad6421f572d1f5a323b4 19-Dec-2009 Daniel Dunbar <daniel@zuster.org> Targets: Allow CreateTargetInfo to mutate the target features.
- In particular, it can claim features for itself instead of always passing them on to LLVM.
- This allows using the target features as a generic mechanism for passing target specific options to the TargetInfo instance, which may need them for initializing preprocessor defines, etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91753 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
412ae80abd3a8b2d805d36746d6a85b01044cdde 19-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Switch more of Sema::CheckInitializerTypes over to
InitializationSequence. Specially, switch initialization of a C++
class type (either copy- or direct-initialization).

Also, make sure that we create an elidable copy-construction when
performing copy initialization of a C++ class variable. Fixes PR5826.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7abfbdbc97ad8e7f340789f751df1e32b10118b4 19-Dec-2009 Douglas Gregor <dgregor@apple.com> Switch more of Sema::CheckInitializerTypes over to
InitializationSequence. Specially, switch initialization of a C++
class type (either copy- or direct-initialization).

Also, make sure that we create an elidable copy-construction when
performing copy initialization of a C++ class variable. Fixes PR5826.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91750 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ce30d59346b391749cead26ef459613c350c14df 19-Dec-2009 Anders Carlsson <andersca@mac.com> Correctly initialize the PrimaryBaseInfo if a base is null. Fixes PR5832.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
29f1a6070ac35fcbea9241c843df7f3f7c5c3228 19-Dec-2009 Anders Carlsson <andersca@mac.com> Correctly initialize the PrimaryBaseInfo if a base is null. Fixes PR5832.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
aa38e98236bd7cf9df78d68b86a2d408ced4792e 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Add and tidy doxygen comments and move implementation of toString() to newly
created CharUnits.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
c3c90b25cf321d851314f0f19f67e9a00df0da0d 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Add and tidy doxygen comments and move implementation of toString() to newly
created CharUnits.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
4152c0cbdd7437911de1a131c6c09dfbf30e4215 18-Dec-2009 Ted Kremenek <kremenek@apple.com> Enhance GRExprEngine::VisitCallExpr() to be used in an lvalue context. Uncovered a new failing test case along the way, but we're making progress on handling C++ references in the analyzer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91710 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
53287518f69b8f06f82a6cdbd13e4e3a13b58186 18-Dec-2009 Ted Kremenek <kremenek@apple.com> Enhance GRExprEngine::VisitCallExpr() to be used in an lvalue context. Uncovered a new failing test case along the way, but we're making progress on handling C++ references in the analyzer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91710 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c06b4882497a2127bc9f2d204951f29435103224 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> Use System/DataTypes.h, stdint.h isn't portable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
5231eaa5f58c49860d5446d5269685cd9c063ccb 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> Use System/DataTypes.h, stdint.h isn't portable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
e376d017de3b00926d3c2163e5d8278655ef6d8e 18-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Extend code-completion results with the type of each result

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91702 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aa 18-Dec-2009 Douglas Gregor <dgregor@apple.com> Extend code-completion results with the type of each result

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91702 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
33b4075302ac1cfe46a55330bf915a131346ccd8 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> ARM: Fix predefines (__ARM_ARCH_..., __REGISTER_PREFIX).
- This should be done leveraging the backend, but I'm a little refactored
out. I'll fix it one day, I promise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/TargetInfo.h
eac7c53f16bc12bcd9baac756b6f9bb77b74b0ad 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> ARM: Fix predefines (__ARM_ARCH_..., __REGISTER_PREFIX).
- This should be done leveraging the backend, but I'm a little refactored
out. I'll fix it one day, I promise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/TargetInfo.h
85246b1219cf9ebc357874c81a1c84263b82288a 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Change the return type of ASTContext::getTypeSizeInChars() from uint64_t to the
new opaque value type, CharUnits. This will help us avoid accidentally mixing
quantities that are in bit and character units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4273f7068f16863f2469b45a3f00c3b4217bdbb4 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Change the return type of ASTContext::getTypeSizeInChars() from uint64_t to the
new opaque value type, CharUnits. This will help us avoid accidentally mixing
quantities that are in bit and character units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3294366fb304e88e780aa86c78594f4978e4a16f 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Rename getByteSize() and getTypeSizeInBytes() in ASTContext to getCharWidth()
and getTypeSizeInChars() to reflect their basis in character type units, not
that of a possibly independent architecture-specific byte.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91688 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cc906ef220c9be2644ad942457766d46a0b3651e 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Rename getByteSize() and getTypeSizeInBytes() in ASTContext to getCharWidth()
and getTypeSizeInChars() to reflect their basis in character type units, not
that of a possibly independent architecture-specific byte.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91688 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b82f552c63f8476d771f3bad90ca1b2c33ebc9bf 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Initial implementation of CharUnits, an opaque value class for representing
sizes, offsets, and alignments in character units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
64437137888d69b8ef03f3057524e5056e7d9dd6 18-Dec-2009 Ken Dyck <ken.dyck@onsemi.com> Initial implementation of CharUnits, an opaque value class for representing
sizes, offsets, and alignments in character units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CharUnits.h
e17d54c995fd5e43e7639ad9a3edb44b30579c30 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Rename -mcpu to -target-cpu to match other target options and not alias driver/backend option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91671 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
38b48afd338d494099697d2611e1f45e558e469e 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Rename -mcpu to -target-cpu to match other target options and not alias driver/backend option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91671 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ccfe15ea60d055936a15b370765006c10c25d81a 18-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Switch the initialization required by return statements over to the
new InitializationSequence. This fixes some bugs (e.g., PR5808),
changed some diagnostics, and caused more churn than expected. What's
new:

- InitializationSequence now has a "C conversion sequence" category
and step kind, which falls back to
- Changed the diagnostics for returns to always have the result type
of the function first and the type of the expression second.
CheckSingleAssignmentConstraints to peform checking in C.
- Improved ASTs for initialization of return values. The ASTs now
capture all of the temporaries we need to create, but
intentionally do not bind the tempoary that is actually returned,
so that it won't get destroyed twice.
- Make sure to perform an (elidable!) copy of the class object that
is returned from a class.
- Fix copy elision in CodeGen to properly see through the
subexpressions that occur with elidable copies.
- Give "new" its own entity kind; as with return values and thrown
objects, we don't bind the expression so we don't call a
destructor for it.

Note that, with this patch, I've broken returning move-only types in
C++0x. We'll fix it later, when we tackle NRVO.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
18ef5e28a9a2677f8b1dce1fb2638d66e0a1621f 18-Dec-2009 Douglas Gregor <dgregor@apple.com> Switch the initialization required by return statements over to the
new InitializationSequence. This fixes some bugs (e.g., PR5808),
changed some diagnostics, and caused more churn than expected. What's
new:

- InitializationSequence now has a "C conversion sequence" category
and step kind, which falls back to
- Changed the diagnostics for returns to always have the result type
of the function first and the type of the expression second.
CheckSingleAssignmentConstraints to peform checking in C.
- Improved ASTs for initialization of return values. The ASTs now
capture all of the temporaries we need to create, but
intentionally do not bind the tempoary that is actually returned,
so that it won't get destroyed twice.
- Make sure to perform an (elidable!) copy of the class object that
is returned from a class.
- Fix copy elision in CodeGen to properly see through the
subexpressions that occur with elidable copies.
- Give "new" its own entity kind; as with return values and thrown
objects, we don't bind the expression so we don't call a
destructor for it.

Note that, with this patch, I've broken returning move-only types in
C++0x. We'll fix it later, when we tackle NRVO.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e9756514b410b0ac5afa00cdb4569e1f62f4a7f4 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -dwarf-debug-flags, which provides a way to embed the cc1 level options used
to compile a translation unit into the debug info for that file.
- Used by parts of Darwin build process to check compiler flags, etc.
- <rdar://problem/7256886> clang does not emit AT_APPLE_flags

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91661 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/ToolChain.h
f2d8b9f967a1ab53ee9fdbcc3ac0a4ee0a83a26e 18-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -dwarf-debug-flags, which provides a way to embed the cc1 level options used
to compile a translation unit into the debug info for that file.
- Used by parts of Darwin build process to check compiler flags, etc.
- <rdar://problem/7256886> clang does not emit AT_APPLE_flags

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91661 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
river/ToolChain.h
393dc0a3b0f9137d55ce2af036bf7d844509bd0b 17-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> reword the help text of fno_assume_sane_operator_new, following Chris suggestion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91630 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
99860173af0b070f93558c26b78bb7ac07820370 17-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> reword the help text of fno_assume_sane_operator_new, following Chris suggestion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91630 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
78d7c2f5d1fb0c6c34beba1899a83fa45e34796c 17-Dec-2009 Ted Kremenek <kremenek@apple.com> Convert GRExprEngine::VisitCallExpr() to use a worklist instead of recursion to evaluate the arguments of a CallExpr. This simplifies the logic and makes it easier to read. (it also avoids any issues with blowing out the stack if the CallExpr had a ridiculous number of arguments)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91613 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
3cead901aab394fe8e84953235959ece8002854f 17-Dec-2009 Ted Kremenek <kremenek@apple.com> Convert GRExprEngine::VisitCallExpr() to use a worklist instead of recursion to evaluate the arguments of a CallExpr. This simplifies the logic and makes it easier to read. (it also avoids any issues with blowing out the stack if the CallExpr had a ridiculous number of arguments)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91613 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
770fd8dcf4381c0360f52c7db9244626657028a2 17-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> implement PR3962: diagnose more faulty cases of usage of the restrict qualifier. this also removes a FIXME

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91601 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0a8bab019dbf980911fbefa56d7debd648b7b239 17-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> implement PR3962: diagnose more faulty cases of usage of the restrict qualifier. this also removes a FIXME

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91601 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
38bbd5449aed51d8bcd9eb6c0effbc360af2f7fd 17-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose duplicate declaration of a property. Fixes
PR5809


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91575 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6dd30fc45af6bdee05a735d9817b6d9c72cdce35 17-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose duplicate declaration of a property. Fixes
PR5809


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91575 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed14e87ed8e5e9f8b78e9dce7015ec09e1f7774d 17-Dec-2009 Ted Kremenek <kremenek@apple.com> Completely remove ObjCObjectRegion (tests pass this time).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91572 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c410d4d2bb2de2c186fb48857e99e7809e780081 17-Dec-2009 Ted Kremenek <kremenek@apple.com> Completely remove ObjCObjectRegion (tests pass this time).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91572 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
f33eac538f44f01d3462bf6fb7c0891c80b42311 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix -fdollars-in-identifiers Clang translation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91562 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
8663b180085e9bc7a0a87c80cc3f722efef99e79 16-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix -fdollars-in-identifiers Clang translation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91562 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
158df1c7b4604fbde219753ec23cd931ca1612f7 16-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> When value-initializing a class with no user-defined constructors but
with a non-trivial default constructor, zero-initialize the storage
and then call the default constructor. Fixes PR5800.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
16006c901315fa12a108b4e571f187f4b676e426 16-Dec-2009 Douglas Gregor <dgregor@apple.com> When value-initializing a class with no user-defined constructors but
with a non-trivial default constructor, zero-initialize the storage
and then call the default constructor. Fixes PR5800.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
87eabddeb17746908be6f8b202b6ca5e95b09a4a 16-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose property of reference type as unsupported
instead of crashing for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91546 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dd69aae2851577e4266b62f3430a1fce757b65ae 16-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose property of reference type as unsupported
instead of crashing for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91546 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2186f97cb2706eb3bf26b0f5c943e228e4055593 16-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> implement PR5654: add -fassume-sane-operator-new, which is enabled by default, and adds the malloc attribute to the global function new() and to the overloaded new operators.

feel free to chage the name to this lengthy argument

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
fc2844846e91398205fddc71196fe9dda04e105f 16-Dec-2009 Nuno Lopes <nunoplopes@sapo.pt> implement PR5654: add -fassume-sane-operator-new, which is enabled by default, and adds the malloc attribute to the global function new() and to the overloaded new operators.

feel free to chage the name to this lengthy argument

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
bc9012ac0bf35e1ba8c9aa1068fb60e44fdedb9a 16-Dec-2009 John McCall <rjmccall@apple.com> Shift things around so that it's easier to recover from a missing
function in a C++ call using an arbitrary call-expression type.
Actually exploit this to fix the recovery implemented earlier.

The diagnostic is still iffy, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91538 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3b4294e5c1e904a2e0f74449dbc3f52f69cc8e9f 16-Dec-2009 John McCall <rjmccall@apple.com> Shift things around so that it's easier to recover from a missing
function in a C++ call using an arbitrary call-expression type.
Actually exploit this to fix the recovery implemented earlier.

The diagnostic is still iffy, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91538 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4b6b478c90cba52c7d9b130d53c462c6fa8df456 16-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a new kind of region: CXXObjectRegion. Currently it has only one
attribute: the object type.
Add initial support for visiting CXXThisExpr.
Fix a bunch of 80-col violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91535 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
bb141217871e93767aa3f2de1b9946fa6d37066a 16-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a new kind of region: CXXObjectRegion. Currently it has only one
attribute: the object type.
Add initial support for visiting CXXThisExpr.
Fix a bunch of 80-col violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91535 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
8b29f57d867495ace41cda6a06013f05961c68ca 16-Dec-2009 John McCall <rjmccall@apple.com> Introduce a centralized routine in Sema for diagnosing failed lookups (when
used as expressions). In dependent contexts, try to recover by doing a lookup
in previously-dependent base classes. We get better diagnostics out, but
unfortunately the recovery fails: we need to turn it into a method call
expression, not a bare call expression. Thus this is still a WIP.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91525 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
578b69b186d9cba0a6ae1dd7f4c04cd6a49f0aac 16-Dec-2009 John McCall <rjmccall@apple.com> Introduce a centralized routine in Sema for diagnosing failed lookups (when
used as expressions). In dependent contexts, try to recover by doing a lookup
in previously-dependent base classes. We get better diagnostics out, but
unfortunately the recovery fails: we need to turn it into a method call
expression, not a bare call expression. Thus this is still a WIP.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91525 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e040fd9b766a34f0fcf1fd7e4da3daedf61aae3 16-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91517 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
3eda63a2e95a4b6c494ec563a5a174cf8c2b6c86 16-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91517 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
4165885d9dd560330d51983c28f1c2a88649c30d 16-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Add abort() as a builtin. This has two effects: one, we warn for incorrect
declarations of abort(), and two, we mark it noreturn. Missing the latter
shows up in one of the "embarassing" tests (from the thread on llvmdev
"detailed comparison of generated code size for LLVM and other compilers").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
772494c3b8f0c7c80484d0fef5b20cf4e445a8e2 16-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Add abort() as a builtin. This has two effects: one, we warn for incorrect
declarations of abort(), and two, we mark it noreturn. Missing the latter
shows up in one of the "embarassing" tests (from the thread on llvmdev
"detailed comparison of generated code size for LLVM and other compilers").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
9a8f2ca476f55a6516c972bf2845a786ea616194 16-Dec-2009 Anders Carlsson <andersca@mac.com> More FullExpr work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
ac7db1fecfa5dbea890b6b57767d52ac12641352 16-Dec-2009 Anders Carlsson <andersca@mac.com> More FullExpr work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
9ee8cfaddbea93d70d7edcbec4c77beee0b8553c 16-Dec-2009 Anders Carlsson <andersca@mac.com> More work on the FullExpr class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
d4a0552ea56c934fc7d2072bf61802cafa8cfd13 16-Dec-2009 Anders Carlsson <andersca@mac.com> More work on the FullExpr class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
6159b60760b94141aa654eac7e40cde1400d1ffb 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Teach CheckerVisitor about CXXOperatorCallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91509 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
6b8ee78873442c2d52ecc8ac344dffa2c2cffbe2 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Teach CheckerVisitor about CXXOperatorCallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91509 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
3d680607a09f4159dbbbfccfa30fbabbc89802cb 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Teach CFRecStmtDeclVisitor about CXXMethodDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91508 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
1c8008715bc6ad9e7e901540ecf000a3e94a486c 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Teach CFRecStmtDeclVisitor about CXXMethodDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91508 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
2914115cceaa8f8a6327594901dfb80fec47dbdf 16-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Make GRSubEngine.h standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91504 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRSubEngine.h
3ad359b845b3fe302d765dda5ad879dadcc0b9c4 16-Dec-2009 Douglas Gregor <dgregor@apple.com> Make GRSubEngine.h standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91504 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRSubEngine.h
3f1172d26f28f44501d422546566ac29a7c656d0 16-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Fix semantic diagnostics that embed English works, from Nicola Gigante!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6864748fc9a780e6db0bb5a7bd20aa889882dc94 16-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix semantic diagnostics that embed English works, from Nicola Gigante!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e666bcfd58bbec6b5d31974226ed37266971423 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Add (initial?) static analyzer support for handling C++ references.
This change was a lot bigger than I originally anticipated; among
other things it requires us storing more information in the CFG to
record what block-level expressions need to be evaluated as lvalues.

The big change is that CFGBlocks no longer contain Stmt*'s by
CFGElements. Currently CFGElements just wrap Stmt*, but they also
store a bit indicating whether the block-level expression should be
evalauted as an lvalue. DeclStmts involving the initialization of a
reference require us treating the initialization expression as an
lvalue, even though that information isn't recorded in the AST.
Conceptually this change isn't that complicated, but it required
bubbling up the data through the CFGBuilder, to GRCoreEngine, and
eventually to GRExprEngine.

The addition of CFGElement is also useful for when we want to handle
more control-flow constructs or other data we want to keep in the CFG
that isn't represented well with just a block of statements.

In GRExprEngine, this patch introduces logic for evaluating the
lvalues of references, which currently retrieves the internal "pointer
value" that the reference represents. EvalLoad does a two stage load
to catch null dereferences involving an invalid reference (although
this could possibly be caught earlier during the initialization of a
reference).

Symbols are currently symbolicated using the reference type, instead
of a pointer type, and special handling is required creating
ElementRegions that layer on SymbolicRegions (see the changes to
RegionStoreManager).

Along the way, the DeadStoresChecker also silences warnings involving
dead stores to references. This was the original change I introduced
(which I wrote test cases for) that I realized caused GRExprEngine to
crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91501 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/SVals.h
nalysis/ProgramPoint.h
852274d4257134906995cb252fb3dfd2d71deae8 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Add (initial?) static analyzer support for handling C++ references.
This change was a lot bigger than I originally anticipated; among
other things it requires us storing more information in the CFG to
record what block-level expressions need to be evaluated as lvalues.

The big change is that CFGBlocks no longer contain Stmt*'s by
CFGElements. Currently CFGElements just wrap Stmt*, but they also
store a bit indicating whether the block-level expression should be
evalauted as an lvalue. DeclStmts involving the initialization of a
reference require us treating the initialization expression as an
lvalue, even though that information isn't recorded in the AST.
Conceptually this change isn't that complicated, but it required
bubbling up the data through the CFGBuilder, to GRCoreEngine, and
eventually to GRExprEngine.

The addition of CFGElement is also useful for when we want to handle
more control-flow constructs or other data we want to keep in the CFG
that isn't represented well with just a block of statements.

In GRExprEngine, this patch introduces logic for evaluating the
lvalues of references, which currently retrieves the internal "pointer
value" that the reference represents. EvalLoad does a two stage load
to catch null dereferences involving an invalid reference (although
this could possibly be caught earlier during the initialization of a
reference).

Symbols are currently symbolicated using the reference type, instead
of a pointer type, and special handling is required creating
ElementRegions that layer on SymbolicRegions (see the changes to
RegionStoreManager).

Along the way, the DeadStoresChecker also silences warnings involving
dead stores to references. This was the original change I introduced
(which I wrote test cases for) that I realized caused GRExprEngine to
crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91501 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/SVals.h
nalysis/ProgramPoint.h
10a2b23ef59f4e4de0172a0ebe8ceeb5bb027206 16-Dec-2009 Anders Carlsson <andersca@mac.com> Check in a rudimentary FullExpr class that isn't used anywhere yet. Rename Action::FullExpr to Action::MakeFullExpr to avoid name clashes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91494 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
ST/Stmt.h
arse/Action.h
5ee56e95c3905d2e7bc403631b03865cdbdd8a42 16-Dec-2009 Anders Carlsson <andersca@mac.com> Check in a rudimentary FullExpr class that isn't used anywhere yet. Rename Action::FullExpr to Action::MakeFullExpr to avoid name clashes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91494 91177308-0d34-0410-b5e6-96231b3b80d8
ST/FullExpr.h
ST/Stmt.h
arse/Action.h
54cd39974f9a8b026851d607f4be60164fee3c2d 16-Dec-2009 John McCall <rjmccall@apple.com> Successive anonymous namespaces name the same scope. I misinterpreted the
standard the last time. Fixes PR5766.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5fdd7643ae81af4ace04f8be888f225b9fcc64b7 16-Dec-2009 John McCall <rjmccall@apple.com> Successive anonymous namespaces name the same scope. I misinterpreted the
standard the last time. Fixes PR5766.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
afe90ebd9ce0079385245d72f893d2da32c3692b 16-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Switch the C++ new expression over to InitializationSequence, rather
than using its own partial implementation of initialization.

Switched CheckInitializerTypes over to
InitializedEntity/InitializationKind, to help move us closer to
InitializationSequence.

Added InitializedEntity::getName() to retrieve the name of the entity,
for diagnostics that care about such things.

Implemented support for default initialization in
InitializationSequence.

Clean up the determination of the "source expressions" for an
initialization sequence in InitializationSequence::Perform.

Taught CXXConstructExpr to store more location information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91492 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
99a2e600f9e2e51d3ce10fb6f27191677ac65b2a 16-Dec-2009 Douglas Gregor <dgregor@apple.com> Switch the C++ new expression over to InitializationSequence, rather
than using its own partial implementation of initialization.

Switched CheckInitializerTypes over to
InitializedEntity/InitializationKind, to help move us closer to
InitializationSequence.

Added InitializedEntity::getName() to retrieve the name of the entity,
for diagnostics that care about such things.

Implemented support for default initialization in
InitializationSequence.

Clean up the determination of the "source expressions" for an
initialization sequence in InitializationSequence::Perform.

Taught CXXConstructExpr to store more location information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91492 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticSemaKinds.td
16640d5b58859b171c052ce26c1b07dffcc702b4 16-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose attempting to assign to a sub-structure of an ivar
using objective-c property. (fixes radar 7449707)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
2514a309204341798f96912ce7a90841bea59727 16-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose attempting to assign to a sub-structure of an ivar
using objective-c property. (fixes radar 7449707)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
3c919b55e4024676b4e5858c4f78ab74330aab0a 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Remove ValueManager::getRegionValueSymbolValOrUnknown(). It was just extra veneer on top of getRegionValueSymbolVal().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91471 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
28172a27c0fb69439170aab53127582432e7d5a0 16-Dec-2009 Ted Kremenek <kremenek@apple.com> Remove ValueManager::getRegionValueSymbolValOrUnknown(). It was just extra veneer on top of getRegionValueSymbolVal().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91471 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
aa43f81f2f155a0ed8d0c9dfce11eaec516b85a3 15-Dec-2009 Anders Carlsson <andersca@mac.com> ShouldDestroyTemporaries? I don't think so.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
0ece491d8f62ce67f047491a6703fac0d3bd4ff4 15-Dec-2009 Anders Carlsson <andersca@mac.com> ShouldDestroyTemporaries? I don't think so.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
b057a6b9f0891dc5de5e984bb8769301bee50ad6 15-Dec-2009 Anders Carlsson <andersca@mac.com> If a ParmVarDecl's default argument is a CXXExprWithTemporaries, return the underlying expr instead. Add getNumDefaultArgTemporaries and getDefaultArgTemporary which returns the temporaries a default arg creates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
337cba4b3e17b98cfa512dfd12e57f4ccb0859be 15-Dec-2009 Anders Carlsson <andersca@mac.com> If a ParmVarDecl's default argument is a CXXExprWithTemporaries, return the underlying expr instead. Add getNumDefaultArgTemporaries and getDefaultArgTemporary which returns the temporaries a default arg creates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
39577075101aa6fa0663e64775ff66ab7763da6f 15-Dec-2009 Nate Begeman <natebegeman@mac.com> Support OpenCL 1.1 odd-length vector component accessors.

For hi/odd of an odd-length vector, the last component is undefined. Since
we shuffle with an undef vector, no CodeGen needs to change to support this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0479a0b9f22331da74df4ea50bce193f9bafb145 15-Dec-2009 Nate Begeman <natebegeman@mac.com> Support OpenCL 1.1 odd-length vector component accessors.

For hi/odd of an odd-length vector, the last component is undefined. Since
we shuffle with an undef vector, no CodeGen needs to change to support this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b49da815d5fc3299dc8e8bbf1886f0a193ad8894 15-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Fix some diagnostic-related FIXMEs, from Nicola Gigante

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5cc07df89ab9afa9079baeec1243ee90c3f84d9d 15-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix some diagnostic-related FIXMEs, from Nicola Gigante

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
48f7fd7894cc17bf9498cbe1ee273d06f8fc2a84 15-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove displayProgress parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91429 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
8d09bafdcf870b72e8781279378e7e264499b230 15-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove displayProgress parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91429 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
e38592f880f425a6d9ea856a81703522a8ae345b 15-Dec-2009 Chris Lattner <sabre@nondot.org> move isPodLike<clang::QualType> out to Type.h. We don't
want some clients of QualType to think it's a pod and some to
not know it is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91424 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeOrdering.h
aed1df80bf64228e1429c1edc408397f9174847c 15-Dec-2009 Chris Lattner <sabre@nondot.org> move isPodLike<clang::QualType> out to Type.h. We don't
want some clients of QualType to think it's a pod and some to
not know it is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91424 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeOrdering.h
dbf0031fbbd30144c3ac070baa4f2d0e551a8de9 15-Dec-2009 Chris Lattner <sabre@nondot.org> update to match LLVM API change:

Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/TypeOrdering.h
nalysis/ProgramPoint.h
asic/IdentifierTable.h
asic/SourceLocation.h
rontend/PCHWriter.h
ndex/Entity.h
ndex/GlobalSelector.h
06159e878569e5f39bf0e8f11b84ac3ad0970597 15-Dec-2009 Chris Lattner <sabre@nondot.org> update to match LLVM API change:

Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/TypeOrdering.h
nalysis/ProgramPoint.h
asic/IdentifierTable.h
asic/SourceLocation.h
rontend/PCHWriter.h
ndex/Entity.h
ndex/GlobalSelector.h
9165b5ef6fcbdc2832d57e1ad43f75ebd92868f6 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -W[no-]variadic-macros support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
2125adba899ea5fc2e3eeb49028920f774dfd20b 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -W[no-]variadic-macros support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
60b12c5f3d86e912fa0a4ed10fdbdf74af4a3b8b 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Forward -isysroot to clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91414 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
feecdf15dc58a5d5e3c77c938b6d5e7deb75d39e 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Forward -isysroot to clang -cc1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91414 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
424284d871025feac9ba4fac208bac30641cce76 15-Dec-2009 John McCall <rjmccall@apple.com> Diagnose the use of typedefs for template specialization types in the scope
specifiers for out-of-line declarations, e.g.
typedef Temp<int> MyTemp;
template <> MyTemp::foo;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4b2b02b26cd51e2e44fa315143618285fd72ce77 15-Dec-2009 John McCall <rjmccall@apple.com> Diagnose the use of typedefs for template specialization types in the scope
specifiers for out-of-line declarations, e.g.
typedef Temp<int> MyTemp;
template <> MyTemp::foo;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
657d2433a41d94fc9552e899514375db309399af 15-Dec-2009 Chris Lattner <sabre@nondot.org> set up the machinery for a MacroArgs cache hanging off Preprocessor.
We creating and free thousands of MacroArgs objects (and the related
std::vectors hanging off them) for the testcase in PR5610 even though
there are only ~20 live at a time. This doesn't actually use the
cache yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91391 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
23f77e59718385512984d4e2a021bef52b9f6ddf 15-Dec-2009 Chris Lattner <sabre@nondot.org> set up the machinery for a MacroArgs cache hanging off Preprocessor.
We creating and free thousands of MacroArgs objects (and the related
std::vectors hanging off them) for the testcase in PR5610 even though
there are only ~20 live at a time. This doesn't actually use the
cache yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91391 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
b6f0a584301007695651b29834500f971d93e929 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -resource-dir to clang -cc1, this allows the base directory for compiler
resources (e.g., /usr/lib/clang/1.1) to be passed on the command line instead of
computed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91370 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInvocation.h
rontend/HeaderSearchOptions.h
8b9adfea5e834eaee0f45d8cc7fb052d68df4a46 15-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add -resource-dir to clang -cc1, this allows the base directory for compiler
resources (e.g., /usr/lib/clang/1.1) to be passed on the command line instead of
computed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91370 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/CompilerInvocation.h
rontend/HeaderSearchOptions.h
ff583e4255851c3937219043280a559e8db2171f 14-Dec-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/7468209> SymbolManager::isLive() should not crash on captured block variables that are passed by reference


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91348 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SymbolManager.h
5348f94abd0e9d3945da8d059b55b156967e8ff9 14-Dec-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/7468209> SymbolManager::isLive() should not crash on captured block variables that are passed by reference


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91348 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SymbolManager.h
dcbf08f1765a91c8c902d453cd0850188f2638e1 14-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Improve template instantiation for object constructions in several ways:

- During instantiation, drop default arguments from constructor and
call expressions; they'll be recomputed anyway, and we don't want
to instantiate them twice.
- Rewrote the instantiation of variable initializers to cope with
non-dependent forms properly.

Together, these fix a handful of problems I introduced with the switch
to always rebuild expressions from the source code "as written."



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6eef519fc8a97bb7ca6066f23d35e10f06b2c1b5 14-Dec-2009 Douglas Gregor <dgregor@apple.com> Improve template instantiation for object constructions in several ways:

- During instantiation, drop default arguments from constructor and
call expressions; they'll be recomputed anyway, and we don't want
to instantiate them twice.
- Rewrote the instantiation of variable initializers to cope with
non-dependent forms properly.

Together, these fix a handful of problems I introduced with the switch
to always rebuild expressions from the source code "as written."



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
45b5d6f5037dc22d9fd3b4192a8d1195361ea404 14-Dec-2009 Chris Lattner <sabre@nondot.org> teach clang to recover gracefully from conflict markers left in source
files: PR5238.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91270 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Lexer.h
34f349da38a7bd99103e12d8ea6c73bc8d025193 14-Dec-2009 Chris Lattner <sabre@nondot.org> teach clang to recover gracefully from conflict markers left in source
files: PR5238.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91270 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Lexer.h
4d154df87f43a3d9f464498e218c583fe15f1ce2 14-Dec-2009 Nate Begeman <natebegeman@mac.com> Revert mmx palignr to use an intrinsic, since mmx shuffle patterns are missing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
c3420ffb282c6ffc0192013bf8045b6c21eddece 14-Dec-2009 Nate Begeman <natebegeman@mac.com> Revert mmx palignr to use an intrinsic, since mmx shuffle patterns are missing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
2af4a5e3d32de12b2c7c36ca8256411b3969da8a 14-Dec-2009 Nate Begeman <natebegeman@mac.com> Support x86's PALIGNR instruction without the use of a palignr intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
ce5818a19a8f77d1540d0352649d6687eca4af6b 14-Dec-2009 Nate Begeman <natebegeman@mac.com> Support x86's PALIGNR instruction without the use of a palignr intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
a9bfd7a874fd626324043bbab3cf4a872eace176 14-Dec-2009 Chris Lattner <sabre@nondot.org> formatting changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91263 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
1d9c54df56391ac4740db27d551782e81189cb51 14-Dec-2009 Chris Lattner <sabre@nondot.org> formatting changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91263 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
21164e4cbcd3ac1f8a80a2dcbebc8e08fc17cf23 14-Dec-2009 Anders Carlsson <andersca@mac.com> Rename dump to dumpDeclContext, so that call RD->dump() won't dump the decl context by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91256 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
84834432289a810e713f82f1ed94a99ad8a5c2ea 14-Dec-2009 Anders Carlsson <andersca@mac.com> Rename dump to dumpDeclContext, so that call RD->dump() won't dump the decl context by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91256 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b053bff48230137a33fff2c871a27d72fe2b4bc2 13-Dec-2009 Anders Carlsson <andersca@mac.com> More improvements to checking allocation and deallocation functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91244 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
156c78e4ef14e5f7ba251554ea8f2dbec573fef3 13-Dec-2009 Anders Carlsson <andersca@mac.com> More improvements to checking allocation and deallocation functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91244 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a510eb928204e0db46c3d5597f98db5057885c02 13-Dec-2009 Daniel Dunbar <daniel@zuster.org> Lift builtin-include-path logic out of ASTUnit::LoadFromCommandLine and fix CIndex to pass in the right directory (previously it was using the path to the main executable, which generally is wrong).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91238 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
869824e87940f97b87064db2df2861e82e08a8c6 13-Dec-2009 Daniel Dunbar <daniel@zuster.org> Lift builtin-include-path logic out of ASTUnit::LoadFromCommandLine and fix CIndex to pass in the right directory (previously it was using the path to the main executable, which generally is wrong).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91238 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
c1737ae61e47af3fee9f1c9c4912545b064a2213 13-Dec-2009 Daniel Dunbar <daniel@zuster.org> CompilerInvocation: Move builtin-include-path logic out of CompilerInvocation::CreateFromArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91237 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/HeaderSearchOptions.h
1e69fe3a9f0a42b32a3000bda51677d51416564e 13-Dec-2009 Daniel Dunbar <daniel@zuster.org> CompilerInvocation: Move builtin-include-path logic out of CompilerInvocation::CreateFromArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91237 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/HeaderSearchOptions.h
00874ad5bb1845b7dfa3d39411ecfc09df321ad7 13-Dec-2009 Chandler Carruth <chandlerc@gmail.com> Silence some release build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
60cfcecaf48e4310339dcfbdb0e3f0e6d2853855 13-Dec-2009 Chandler Carruth <chandlerc@gmail.com> Silence some release build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
e26ac9c9acf105e72a23ebefabfce652f0541db9 12-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Rework the way we handle template instantiation for
implicitly-generated AST nodes. We previously built instantiated nodes
for each of these AST nodes, then passed them on to Sema, which was
not prepared to see already-type-checked nodes (see PR5755). In some
places, we had ugly workarounds to try to avoid re-type-checking
(e.g., in VarDecl initializer instantiation).

Now, we skip implicitly-generated nodes when performing instantiation,
preferring instead to build just the AST nodes that directly reflect
what was written in the source code. This has several advantages:

- We don't need to instantiate anything that doesn't have a direct
correlation to the source code, so we can have better location
information.
- Semantic analysis sees the same thing at template instantiation
time that it would see for a non-template.
- At least one ugly hack (VarDecl initializers) goes away.

Fixes PR5755.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a88cfbfac9bbcbb9858f048d6d73a48711d8e93d 12-Dec-2009 Douglas Gregor <dgregor@apple.com> Rework the way we handle template instantiation for
implicitly-generated AST nodes. We previously built instantiated nodes
for each of these AST nodes, then passed them on to Sema, which was
not prepared to see already-type-checked nodes (see PR5755). In some
places, we had ugly workarounds to try to avoid re-type-checking
(e.g., in VarDecl initializer instantiation).

Now, we skip implicitly-generated nodes when performing instantiation,
preferring instead to build just the AST nodes that directly reflect
what was written in the source code. This has several advantages:

- We don't need to instantiate anything that doesn't have a direct
correlation to the source code, so we can have better location
information.
- Semantic analysis sees the same thing at template instantiation
time that it would see for a non-template.
- At least one ugly hack (VarDecl initializers) goes away.

Fixes PR5755.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
90bb3c80b527a01ce754028bfb1d71b7a02e725b 12-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add initial support for realloc() in MallocChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91216 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
d9c84c8381261530b16512d2aac146de8271ea1e 12-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add initial support for realloc() in MallocChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91216 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
2f0bd2e89d173e4de8fe7d64a08aa01f97ab7f97 12-Dec-2009 John McCall <rjmccall@apple.com> Remember the type name's scope specifier in the DeclSpec.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91215 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
aa87d33309f505b68c3bfc17486c93e4d224b24f 12-Dec-2009 John McCall <rjmccall@apple.com> Remember the type name's scope specifier in the DeclSpec.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91215 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
99290a48f55e898ade3a26e558ed8eae5fe17961 12-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Give PartialDiagnostic copy semantics rather than move semantics, since we typically pass it by reference

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91212 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
a63d40f85c4621f5ad2362e0d00879933625404b 12-Dec-2009 Douglas Gregor <dgregor@apple.com> Give PartialDiagnostic copy semantics rather than move semantics, since we typically pass it by reference

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91212 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
345fdef6e14ec6a5d6570a79e661495511928c64 12-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Remove unnecessary pointers from PartialDiagnostic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
cc5ee6be70278def952fdbe0a3ec2b4ff79b05e8 12-Dec-2009 Douglas Gregor <dgregor@apple.com> Remove unnecessary pointers from PartialDiagnostic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
9d02e7c5fa4e30ceb52a2956c0018ec41a5b6da0 12-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gave
no extra safety anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91207 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLocVisitor.h
9f61aa9e280adea9fbf3365f0e4f6ed568c9885a 12-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gave
no extra safety anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91207 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLocVisitor.h
669046aad17057d6778610a835f59bc311942f49 12-Dec-2009 Mike Stump <mrs@apple.com> Implement runtime checks for undefined behavior. WIP.

This implements a new flag -fcatch-undefined-behavior. The flag turns
on additional runtime checks for:

T a[I];

a[i] abort when i < 0 or i >= I.

Future stuff includes shifts by >= bitwidth amounts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
9c276ae0f24d4cee8f7954069d4b8eae45d0447d 12-Dec-2009 Mike Stump <mrs@apple.com> Implement runtime checks for undefined behavior. WIP.

This implements a new flag -fcatch-undefined-behavior. The flag turns
on additional runtime checks for:

T a[I];

a[i] abort when i < 0 or i >= I.

Future stuff includes shifts by >= bitwidth amounts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/CC1Options.td
river/Options.td
89ebfafaf5b83ab44fa293ce67729a155a6d5ea8 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Remove non-sensical FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f86f0d8c9a90acda38c5e80194216d1e227fafee 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Remove non-sensical FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d67ac076aa2d5921c62174b1b484551a75876bbe 12-Dec-2009 Ted Kremenek <kremenek@apple.com> Make using '-fshort-enums' an error until it is actually implemented (changes the ABI, so it is dangerous to not error out if we don't support it). Fixes <rdar://problem/7461006>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91191 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
6feaf57b46f0856127c84b03f3aee5fb51d0262b 12-Dec-2009 Ted Kremenek <kremenek@apple.com> Make using '-fshort-enums' an error until it is actually implemented (changes the ABI, so it is dangerous to not error out if we don't support it). Fixes <rdar://problem/7461006>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91191 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
4b779b3b686bbd883b8f9dc5c9eb7c263da58bfc 12-Dec-2009 Anders Carlsson <andersca@mac.com> Factor operator new declaration checking out into a separate function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a3ccda58913cc1a4b8564e349448b12acc462da7 12-Dec-2009 Anders Carlsson <andersca@mac.com> Factor operator new declaration checking out into a separate function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a83e8005e94b71d84046ba1941fd56d7e1ee484a 12-Dec-2009 Anders Carlsson <andersca@mac.com> More work on improving the operator delete diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
46991d63642c5a29f62d8b92456f62b0fe564fd0 12-Dec-2009 Anders Carlsson <andersca@mac.com> More work on improving the operator delete diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2af481dc4abb92b99f655264582aa2ff86170385 12-Dec-2009 Anders Carlsson <andersca@mac.com> Improve diagnostics for malformed delete operator function declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
asic/DiagnosticSemaKinds.td
9d59ecb4d2c2e8efdb214589753826b662246d82 12-Dec-2009 Anders Carlsson <andersca@mac.com> Improve diagnostics for malformed delete operator function declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
asic/DiagnosticSemaKinds.td
45331ad5d7bec63a995a5ecd7e27fdc3f3aee6ff 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Update docs/comments/utils/examples to refer to clang -cc1 instead of clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91176 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
dd63b28107f21692b5065588f0e90b4534946f93 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Update docs/comments/utils/examples to refer to clang -cc1 instead of clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91176 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
8ddaa225883899ec9034d19bf9bba40ffed3bdba 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using "clang" "-cc1" instead of "clang-cc".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91174 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
8ff5b28d6efcffe2251e77634c7edf83a4763344 12-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using "clang" "-cc1" instead of "clang-cc".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91174 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
eb264b1e729713043c0921ef84559dac75af9fdc 11-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to allow C-style cast from 'void *' to block pointer type.
(fixes radar 7465023).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3b27f1a80e4e433b503efd344c909eeafaa9033c 11-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to allow C-style cast from 'void *' to block pointer type.
(fixes radar 7465023).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9231e43928c9ffe90466b88930e212140b288e55 11-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Switch PathDiagnostic to StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
d8e494faa9f4bc13cd0a136b4d1ee1cfd52860ea 11-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Switch PathDiagnostic to StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
9470ef038a5eb425297c353cf0ad9d74f7eb9910 11-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix two typos.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91154 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
8294809ff278bd8e1979d547d89af3f628139e7d 11-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix two typos.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91154 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
0a09a2d30fc18d8cf622140f1fc7b8d197373b5d 11-Dec-2009 John McCall <rjmccall@apple.com> Don't enter a new scope for a namespace-qualified declarator unless we're
in a file context. In well-formed code, only happens with friend functions.
Fixes PR 5760.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91146 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e7e278bce2301990107cef3f873cbbf7da94469a 11-Dec-2009 John McCall <rjmccall@apple.com> Don't enter a new scope for a namespace-qualified declarator unless we're
in a file context. In well-formed code, only happens with friend functions.
Fixes PR 5760.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91146 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b9bfc6676906c75287b353ee529a8b9e41a4b1a7 11-Dec-2009 Ted Kremenek <kremenek@apple.com> Enhance understanding of VarRegions referenced by a block whose declarations are outside the current stack frame. Fixes <rdar://problem/7462324>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91107 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/MemRegion.h
2b87ae45e129b941d0a4d221c9d4842385a119bd 11-Dec-2009 Ted Kremenek <kremenek@apple.com> Enhance understanding of VarRegions referenced by a block whose declarations are outside the current stack frame. Fixes <rdar://problem/7462324>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91107 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/MemRegion.h
74fa91164768a5469fd299206e893349dcd3c343 11-Dec-2009 John McCall <rjmccall@apple.com> Implement access declarations. Most of the work here is parsing them, which
is difficult because they're so terribly, terribly ambiguous.


We implement access declarations in terms of using declarations, which is
quite reasonable. However, we should really persist the access/using
distinction in the AST and use the appropriate name in diagnostics. This
isn't a priority, so I'll just file a PR and hope someone else does it. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91095 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
60fa3cfd7aa63c29f9fc2d593bac56a3646337cc 11-Dec-2009 John McCall <rjmccall@apple.com> Implement access declarations. Most of the work here is parsing them, which
is difficult because they're so terribly, terribly ambiguous.


We implement access declarations in terms of using declarations, which is
quite reasonable. However, we should really persist the access/using
distinction in the AST and use the appropriate name in diagnostics. This
isn't a priority, so I'll just file a PR and hope someone else does it. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91095 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
4676677de10dddcd7afe0f75d57dae82a99d13d5 11-Dec-2009 Chris Lattner <sabre@nondot.org> Give the "cannot pass object of non-POD type 'class C' through variadic constructor; call will abort at runtime" warning a -W flag (non-pod-varargs) and default it being an error by default. There is no good reason to allow users to get bitten by this sort of thing by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7e1848ddba7b2a5f73a17387de7078bf8de7a646 11-Dec-2009 Chris Lattner <sabre@nondot.org> Give the "cannot pass object of non-POD type 'class C' through variadic constructor; call will abort at runtime" warning a -W flag (non-pod-varargs) and default it being an error by default. There is no good reason to allow users to get bitten by this sort of thing by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5555f2e6ecd5a73c8fb08bdbed3b28d509213ab1 11-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to fix a crash trying to access a category name in
objective-c++ mode and also removed dead-code in this area.
(fixes radar 7456710).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
737061fc2948776f941e1854a9bc6ebd070d9151 11-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to fix a crash trying to access a category name in
objective-c++ mode and also removed dead-code in this area.
(fixes radar 7456710).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
78a8000d29c787541c1d0b1c9a45020ef3aac7e3 10-Dec-2009 John McCall <rjmccall@apple.com> Improve the diagnostic when a new declaration conflicts with a using shadow
declaration. Rename note_using_decl to note_using, which is possibly less confusing.
Add a test for non-class-scope using decl collisions and be sure to note the case
we can't diagnose yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
41ce66f8e20159d8bd39fff54ae01608da06c294 10-Dec-2009 John McCall <rjmccall@apple.com> Improve the diagnostic when a new declaration conflicts with a using shadow
declaration. Rename note_using_decl to note_using, which is possibly less confusing.
Add a test for non-class-scope using decl collisions and be sure to note the case
we can't diagnose yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91057 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticSemaKinds.td
d3346686e8b4377150695eff5660b31fa07ec6b1 10-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Move initialization via initializer list over to InitializationSequences.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d87b61f6398bab21176f73818a8d11ca1c3632c8 10-Dec-2009 Douglas Gregor <dgregor@apple.com> Move initialization via initializer list over to InitializationSequences.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9e1d5827a6feaf18cb72a9d8eca80645e2075528 10-Dec-2009 John McCall <rjmccall@apple.com> Implement redeclaration checking and hiding semantics for using declarations. There
are a couple of O(n^2) operations in this, some analogous to the usual O(n^2)
redeclaration problem and some not. In particular, retroactively removing
shadow declarations when they're hidden by later decls is pretty unfortunate.
I'm not yet convinced it's worse than the alternative, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91045 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
asic/DiagnosticSemaKinds.td
9f54ad4381370c6b771424b53d219e661d6d6706 10-Dec-2009 John McCall <rjmccall@apple.com> Implement redeclaration checking and hiding semantics for using declarations. There
are a couple of O(n^2) operations in this, some analogous to the usual O(n^2)
redeclaration problem and some not. In particular, retroactively removing
shadow declarations when they're hidden by later decls is pretty unfortunate.
I'm not yet convinced it's worse than the alternative, though.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91045 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
asic/DiagnosticSemaKinds.td
c477f788f52e0d00830b09e6ac34361746941e42 10-Dec-2009 Chris Lattner <sabre@nondot.org> Second half of r91023, saving files is good.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91024 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
de138eb4e63f58bcfdea6d3834e07f4cd25ca857 10-Dec-2009 Chris Lattner <sabre@nondot.org> Second half of r91023, saving files is good.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91024 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
6e355009b1af8c5d9da46db81c1d1111c7c352c2 10-Dec-2009 Chris Lattner <sabre@nondot.org> refactor the 'ColonIsSacred' argument to ParseOptionalCXXScopeSpecifier
to be a bool in Parser that is twiddled by the ColonProtectionRAIIObject
class. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91014 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
08d92ecf6e5b1fd23177a08c2312b58d63d863db 10-Dec-2009 Chris Lattner <sabre@nondot.org> refactor the 'ColonIsSacred' argument to ParseOptionalCXXScopeSpecifier
to be a bool in Parser that is twiddled by the ColonProtectionRAIIObject
class. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91014 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
da86f093507a7733ae955d7511b88f8bf4f61752 10-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Reimplement reference initialization (C++ [dcl.init.ref]) using the
new notion of an "initialization sequence", which encapsulates the
computation of the initialization sequence along with diagnostic
information and the capability to turn the computed sequence into an
expression. At present, I've only switched one CheckReferenceInit
callers over to this new mechanism; more will follow.

Aside from (hopefully) being much more true to the standard, the
diagnostics provided by this reference-initialization code are a bit
better than before. Some examples:

p5-var.cpp:54:12: error: non-const lvalue reference to type 'struct
Derived'
cannot bind to a value of unrelated type 'struct Base'
Derived &dr2 = b; // expected-error{{non-const lvalue reference to
...
^ ~
p5-var.cpp:55:9: error: binding of reference to type 'struct Base' to
a value of
type 'struct Base const' drops qualifiers
Base &br3 = bc; // expected-error{{drops qualifiers}}
^ ~~

p5-var.cpp:57:15: error: ambiguous conversion from derived class
'struct Diamond' to base class 'struct Base':
struct Diamond -> struct Derived -> struct Base
struct Diamond -> struct Derived2 -> struct Base
Base &br5 = diamond; // expected-error{{ambiguous conversion from
...
^~~~~~~
p5-var.cpp:59:9: error: non-const lvalue reference to type 'long'
cannot bind to
a value of unrelated type 'int'
long &lr = i; // expected-error{{non-const lvalue reference to type
...
^ ~

p5-var.cpp:74:9: error: non-const lvalue reference to type 'struct
Base' cannot
bind to a temporary of type 'struct Base'
Base &br1 = Base(); // expected-error{{non-const lvalue reference to
...
^ ~~~~~~

p5-var.cpp:102:9: error: non-const reference cannot bind to bit-field
'i'
int & ir1 = (ib.i); // expected-error{{non-const reference cannot
...
^ ~~~~~~
p5-var.cpp:98:7: note: bit-field is declared here
int i : 17; // expected-note{{bit-field is declared here}}
^






git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticSemaKinds.td
20093b4bf698f292c664676987541d5103b65b15 10-Dec-2009 Douglas Gregor <dgregor@apple.com> Reimplement reference initialization (C++ [dcl.init.ref]) using the
new notion of an "initialization sequence", which encapsulates the
computation of the initialization sequence along with diagnostic
information and the capability to turn the computed sequence into an
expression. At present, I've only switched one CheckReferenceInit
callers over to this new mechanism; more will follow.

Aside from (hopefully) being much more true to the standard, the
diagnostics provided by this reference-initialization code are a bit
better than before. Some examples:

p5-var.cpp:54:12: error: non-const lvalue reference to type 'struct
Derived'
cannot bind to a value of unrelated type 'struct Base'
Derived &dr2 = b; // expected-error{{non-const lvalue reference to
...
^ ~
p5-var.cpp:55:9: error: binding of reference to type 'struct Base' to
a value of
type 'struct Base const' drops qualifiers
Base &br3 = bc; // expected-error{{drops qualifiers}}
^ ~~

p5-var.cpp:57:15: error: ambiguous conversion from derived class
'struct Diamond' to base class 'struct Base':
struct Diamond -> struct Derived -> struct Base
struct Diamond -> struct Derived2 -> struct Base
Base &br5 = diamond; // expected-error{{ambiguous conversion from
...
^~~~~~~
p5-var.cpp:59:9: error: non-const lvalue reference to type 'long'
cannot bind to
a value of unrelated type 'int'
long &lr = i; // expected-error{{non-const lvalue reference to type
...
^ ~

p5-var.cpp:74:9: error: non-const lvalue reference to type 'struct
Base' cannot
bind to a temporary of type 'struct Base'
Base &br1 = Base(); // expected-error{{non-const lvalue reference to
...
^ ~~~~~~

p5-var.cpp:102:9: error: non-const reference cannot bind to bit-field
'i'
int & ir1 = (ib.i); // expected-error{{non-const reference cannot
...
^ ~~~~~~
p5-var.cpp:98:7: note: bit-field is declared here
int i : 17; // expected-note{{bit-field is declared here}}
^






git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticSemaKinds.td
973d503936deb9e86b56dd832dd25bd7e5f863f2 09-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a bogus error when declaring an extern "C" array.
(fixes radar 7457109).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90986 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3acd9aaa4ddd14afecb4f1c02ca6f585a6d51849 09-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a bogus error when declaring an extern "C" array.
(fixes radar 7457109).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90986 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
324dba21acdc0ff9fcc36b06e52a8f3c0baa86eb 09-Dec-2009 Mike Stump <mrs@apple.com> Fix 80-col violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90976 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
e4cb2a4b4ad6b9596f9109945a5b3a87949f375b 09-Dec-2009 Mike Stump <mrs@apple.com> Fix 80-col violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90976 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
232523601c62daf54c4b35597e953f5e91b2bb98 09-Dec-2009 Anders Carlsson <andersca@mac.com> Add DeclContext::dump.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
2b7d8ddc746a9096f8af4bd0d8b07eae523864b5 09-Dec-2009 Anders Carlsson <andersca@mac.com> Add DeclContext::dump.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b921fd382783460ee0514c914175a7a20458acda 09-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor OSAtomic evaluation logic into OSAtomicChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90968 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
1ec4e976113ac56c0b3d96f484613d1dc62c3f85 09-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor OSAtomic evaluation logic into OSAtomicChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90968 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
385a59967822b8ac61697f25e23666af3ec1f119 09-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Mark -i* options as JoinedOrSeparate, since the driver forwards them
directly and one can write '-includefoo' if one really wants to.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90966 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
b94ffa4a641b71c7c6155cddc7dc384f8a45c9f1 09-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Mark -i* options as JoinedOrSeparate, since the driver forwards them
directly and one can write '-includefoo' if one really wants to.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90966 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
472f89244393933f55431259174d6e7ca14d44a6 09-Dec-2009 John McCall <rjmccall@apple.com> First pass at implementing C++ enum semantics: calculate (and store) an
"integer promotion" type associated with an enum decl, and use this type to
determine which type to promote to. This type obeys C++ [conv.prom]p2 and
is therefore generally signed unless the range of the enumerators forces
it to be unsigned.

Kills off a lot of false positives from -Wsign-compare in C++, addressing
rdar://7455616




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
842aef8d942a880eeb9535d40de31a86838264cb 09-Dec-2009 John McCall <rjmccall@apple.com> First pass at implementing C++ enum semantics: calculate (and store) an
"integer promotion" type associated with an enum decl, and use this type to
determine which type to promote to. This type obeys C++ [conv.prom]p2 and
is therefore generally signed unless the range of the enumerators forces
it to be unsigned.

Kills off a lot of false positives from -Wsign-compare in C++, addressing
rdar://7455616




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f649a723918ae081408f162b5786727cfddbdb51 09-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Implemented an implicit conversion from "noreturn" function types (and
pointers thereof) to their corresponding non-noreturn function
types. This conversion is considered an exact match for
overload-resolution purposes. Note that we are a little more strict
that GCC is, because we encode noreturn in the type system, but that's
a Good Thing (TM) because it does not allow us to pretend that
potentially-returning function pointers are non-returning function
pointers.

Fxies PR5620.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90913 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
43c79c2b07abc7ba6d9f243b84ee6539de4d2652 09-Dec-2009 Douglas Gregor <dgregor@apple.com> Implemented an implicit conversion from "noreturn" function types (and
pointers thereof) to their corresponding non-noreturn function
types. This conversion is considered an exact match for
overload-resolution purposes. Note that we are a little more strict
that GCC is, because we encode noreturn in the type system, but that's
a Good Thing (TM) because it does not allow us to pretend that
potentially-returning function pointers are non-returning function
pointers.

Fxies PR5620.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90913 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ac5ad7ebb178bbc9e7b1bb0983852de795c7d027 09-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> More detailed analysis of typecast to an objective-c pointer
in objective-c++ mode without being too lenient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90895 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
92ef5d75720c032808181133e4d7c5f82230237e 09-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> More detailed analysis of typecast to an objective-c pointer
in objective-c++ mode without being too lenient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90895 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1916a4762a0e8938f9a2a390c2f9f9eed2905600 08-Dec-2009 Anders Carlsson <andersca@mac.com> Make the BugType.h header self-contained so Daniel will stop bugging me ;)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90887 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
7cdc25edb6ee3d1673baff05cd582b7285e04748 08-Dec-2009 Anders Carlsson <andersca@mac.com> Make the BugType.h header self-contained so Daniel will stop bugging me ;)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90887 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
0646aa214e9a7fb2f7106ddce68309278ff97147 08-Dec-2009 Daniel Dunbar <daniel@zuster.org> Unbreak clang-cc handling of -msoft-float / -mfloat-abi=, which I borked.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90873 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
87667aafe68c366be57f5afb60428237593da0ed 08-Dec-2009 Daniel Dunbar <daniel@zuster.org> Unbreak clang-cc handling of -msoft-float / -mfloat-abi=, which I borked.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90873 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
b85c1556de06cc741c9465e669cbe8c2c559ffde 08-Dec-2009 John McCall <rjmccall@apple.com> DeclRefExpr stores a ValueDecl internally.

Template instantiation can re-use DeclRefExprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dbd872f273a8dbf22e089b3def6c09f0a460965d 08-Dec-2009 John McCall <rjmccall@apple.com> DeclRefExpr stores a ValueDecl internally.

Template instantiation can re-use DeclRefExprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
59a1058f1b34622e6709045c19555490d59af894 08-Dec-2009 John McCall <rjmccall@apple.com> Correctly implement the C++03 and 0x restrictions on class-member using
declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
604e7f14d672af80ca5b9044f30f3dc23d37ddd5 08-Dec-2009 John McCall <rjmccall@apple.com> Correctly implement the C++03 and 0x restrictions on class-member using
declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
060ea1c5dcaf20098a60679c11274a32eb1f4c7d 08-Dec-2009 John McCall <rjmccall@apple.com> Add CXXRecordDecl::forallBases to walk an inheritance hierarchy with non-lookup
semantics and CXXRecordDecl::isProvablyNotDerivedFrom to assist with
pre-instantiation diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90842 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e8174bc483615e79614d9284a50ac94831e8b7c6 08-Dec-2009 John McCall <rjmccall@apple.com> Add CXXRecordDecl::forallBases to walk an inheritance hierarchy with non-lookup
semantics and CXXRecordDecl::isProvablyNotDerivedFrom to assist with
pre-instantiation diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90842 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7df221b517baa7f9d2762bf238a183efcea9addc 08-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Remove dead diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90827 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ba03dfddc383918aef4d59a9ce1c0a0249692d5b 08-Dec-2009 Douglas Gregor <dgregor@apple.com> Remove dead diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90827 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
683786b2eb02e9e82df57216701e7bb469c64a0f 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of some diagnostics that don't follow our rules for -pedantic
diagnostics (specifically, that any extension in a compiler-reserved namespace
shouldn't trigger a diagnostic).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
265f52e920a46c8029760ced39363ffb48c43f10 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of some diagnostics that don't follow our rules for -pedantic
diagnostics (specifically, that any extension in a compiler-reserved namespace
shouldn't trigger a diagnostic).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
2ab887915142c46b8c6d5dae98f1e6ec7cb07fbe 08-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Remove several .c_str() to be forward-compatible with StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90822 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
e3fdca2ee0346a41d9cc5ee417a75e66274216f5 08-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Remove several .c_str() to be forward-compatible with StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90822 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
97ea8cc943409d290b600024924c8847839944ac 07-Dec-2009 John McCall <rjmccall@apple.com> Recover from dot accesses to record pointers and arrow accesses to records.
Patch by Nicola Gigante!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
812c15476c9dddb72a8fd48deb7ca86402664b94 07-Dec-2009 John McCall <rjmccall@apple.com> Recover from dot accesses to record pointers and arrow accesses to records.
Patch by Nicola Gigante!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90814 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a8e641996bb71bd6d4b999c408567390cbcceead 07-Dec-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option '-analyzer-opt-analyze-nested-blocks' to treat block literals as an entry point for analyzer checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90810 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalysisConsumer.h
fc576514d06c46a7cac49500169411d82f38d04b 07-Dec-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option '-analyzer-opt-analyze-nested-blocks' to treat block literals as an entry point for analyzer checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90810 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/AnalysisConsumer.h
a8de3531caf928a9b1fd5561884b0e2a39ac64e6 07-Dec-2009 Ted Kremenek <kremenek@apple.com> Add analysis support for blocks. This includes a few key changes:

- Refactor the MemRegion hierarchy to distinguish between different StackSpaceRegions for locals and parameters.
- VarRegions for "captured" variables now have the BlockDataRegion as their super region (except those passed by reference)
- Add transfer function support to GRExprEngine for BlockDeclRefExprs.

This change also supports analyzing blocks as an analysis entry point
(top-of-the-stack), which required pushing more context-sensitivity
around in the MemRegion hierarchy via the use of LocationContext
objects. Functionally almost everything is the same, except we track
LocationContexts in a few more areas and StackSpaceRegions now refer
to a StackFrameContext object. In the future we will need to modify
MemRegionManager to allow multiple StackSpaceRegions in flight at once
(for the analysis of multiple stack frames).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90809 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
67d1287035767f4f6c8ca0c2bb755990012a44ca 07-Dec-2009 Ted Kremenek <kremenek@apple.com> Add analysis support for blocks. This includes a few key changes:

- Refactor the MemRegion hierarchy to distinguish between different StackSpaceRegions for locals and parameters.
- VarRegions for "captured" variables now have the BlockDataRegion as their super region (except those passed by reference)
- Add transfer function support to GRExprEngine for BlockDeclRefExprs.

This change also supports analyzing blocks as an analysis entry point
(top-of-the-stack), which required pushing more context-sensitivity
around in the MemRegion hierarchy via the use of LocationContext
objects. Functionally almost everything is the same, except we track
LocationContexts in a few more areas and StackSpaceRegions now refer
to a StackFrameContext object. In the future we will need to modify
MemRegionManager to allow multiple StackSpaceRegions in flight at once
(for the analysis of multiple stack frames).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90809 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
65494fab0e4c7463ea2c3706bbdcbbcaa132876e 07-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Shorten the help test for -no-canonical-prefixes, put it behind HelpHidden and
claim it in Driver.cpp instead of Tools.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90777 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
7ca7987669fcd14d91b4227a9ddcf7fdd8b1f8c2 07-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Shorten the help test for -no-canonical-prefixes, put it behind HelpHidden and
claim it in Driver.cpp instead of Tools.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90777 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
b4c7be862abff31c56ff098f9f56aa4d5e47c443 07-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for Objective-C @ keywords that are statements or expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90757 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9a0c85e640a08174569a303db22981612f05d385 07-Dec-2009 Douglas Gregor <dgregor@apple.com> Code completion for Objective-C @ keywords that are statements or expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90757 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
debc7cbc085252e68d7672d68620cfab1c714e1b 07-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for Objective-C @ directives

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90756 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c464ae8444edb6d07ea49b7a0eae1674c0fa1bb8 07-Dec-2009 Douglas Gregor <dgregor@apple.com> Code completion for Objective-C @ directives

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90756 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
aec57a159a6191047eaf49d9ab79e6e6328ca76a 07-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add EvalCallExpr interface to checker, and migrate the no-return function
handler to this interface.
GRExprEngine::CheckerEvalCall() will return true if one of the checkers has
processed the node. In the future this might return void when we have some
default checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90755 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
935ef90f4b065c7c865ee5b2a99c5f9b1a115d72 07-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add EvalCallExpr interface to checker, and migrate the no-return function
handler to this interface.
GRExprEngine::CheckerEvalCall() will return true if one of the checkers has
processed the node. In the future this might return void when we have some
default checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90755 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
0a97b7d4712dbfa203dbb5f7fa6c394228cb6b2f 07-Dec-2009 Anders Carlsson <andersca@mac.com> getTemplateSpecializationKind should be const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90750 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b13e357dac872bc7d507a770c4fb0f7b47ff0ac9 07-Dec-2009 Anders Carlsson <andersca@mac.com> getTemplateSpecializationKind should be const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90750 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
39cf32a9e9019054816da59a27b52416d9a664e0 07-Dec-2009 Anders Carlsson <andersca@mac.com> Move key functions to a separate map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90745 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
f53df2398e07d13be9962b95aebc19b31706fa33 07-Dec-2009 Anders Carlsson <andersca@mac.com> Move key functions to a separate map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90745 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
7755c88dcbfa1d4273fd97bdd3415c5c2aa19039 07-Dec-2009 John McCall <rjmccall@apple.com> DeclaratorInfo -> TypeSourceInfo. Makes an effort to rename associated variables,
but the results are imperfect.

For posterity, I did:

cat <<EOF > $cmdfile
s/DeclaratorInfo/TypeSourceInfo/g
s/DInfo/TInfo/g
s/TypeTypeSourceInfo/TypeSourceInfo/g
s/SourceTypeSourceInfo/TypeSourceInfo/g
EOF

find lib -name '*.cpp' -not -path 'lib/Parse/*' -exec sed -i '' -f $cmdfile '{}' \;
find lib -name '*.h' -exec sed -i '' -f $cmdfile '{}' \;
find include -name '*.h' -not -path 'include/clang/Parse/*' -not -path 'include/clang/Basic/*' -exec sed -i '' -f $cmdfile '{}' \;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90743 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/TemplateBase.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
rontend/PCHReader.h
rontend/PCHWriter.h
a93c934af4fbf97cbe8e649d82e68ccacfe57c95 07-Dec-2009 John McCall <rjmccall@apple.com> DeclaratorInfo -> TypeSourceInfo. Makes an effort to rename associated variables,
but the results are imperfect.

For posterity, I did:

cat <<EOF > $cmdfile
s/DeclaratorInfo/TypeSourceInfo/g
s/DInfo/TInfo/g
s/TypeTypeSourceInfo/TypeSourceInfo/g
s/SourceTypeSourceInfo/TypeSourceInfo/g
EOF

find lib -name '*.cpp' -not -path 'lib/Parse/*' -exec sed -i '' -f $cmdfile '{}' \;
find lib -name '*.h' -exec sed -i '' -f $cmdfile '{}' \;
find include -name '*.h' -not -path 'include/clang/Parse/*' -not -path 'include/clang/Basic/*' -exec sed -i '' -f $cmdfile '{}' \;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90743 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/Expr.h
ST/TemplateBase.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
rontend/PCHReader.h
rontend/PCHWriter.h
468058b2b3153e0040490e89fa6b5c91843b8c94 07-Dec-2009 Chris Lattner <sabre@nondot.org> add 'F' to a bunch of libm builtins so that codegen doesn't die on them,
pointed out by Charles Davis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c08582ba5eef9383702fd3e434de1a6f2f470e3c 07-Dec-2009 Chris Lattner <sabre@nondot.org> add 'F' to a bunch of libm builtins so that codegen doesn't die on them,
pointed out by Charles Davis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
18973ce02baf8b310df51803738460c99a566cf0 07-Dec-2009 Chris Lattner <sabre@nondot.org> reapply my patch for PR4451, which improves diagnostics for :: vs : confusion.
This time with a fix to bail out when in a dependent context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90730 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
46646491834cd8faabb22482dfe93b24ce28a6c1 07-Dec-2009 Chris Lattner <sabre@nondot.org> reapply my patch for PR4451, which improves diagnostics for :: vs : confusion.
This time with a fix to bail out when in a dependent context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90730 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
1557461a4f7d494e2a669ede1fbe95c71dafb28e 07-Dec-2009 Sam Weinig <sam.weinig@gmail.com> Remove a now out of date and out of place comment about predefined exprs from the FloatingLiteral class declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
19a9edb5dd7ab2c63249b28f45f16781a5577874 07-Dec-2009 Sam Weinig <sam.weinig@gmail.com> Remove a now out of date and out of place comment about predefined exprs from the FloatingLiteral class declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
701ae24245e603b38ccfc45252604e99f60fa66c 06-Dec-2009 Chris Lattner <sabre@nondot.org> revert my previous patch, it is breaking something and I don't have time
to fix it ATM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
1ade4ca0aa9331c2388cca9becad1357a154ae34 06-Dec-2009 Chris Lattner <sabre@nondot.org> revert my previous patch, it is breaking something and I don't have time
to fix it ATM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
76f672aad5e7b2677cbc594453042e2e3a29f0d1 06-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Move helper onto CXXMethodDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d7d7f67c1dd8626520bb243d3928f59d32424534 06-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Move helper onto CXXMethodDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
12668c9ba492222aab34ac1d3a5054035bb58194 06-Dec-2009 Chris Lattner <sabre@nondot.org> implement PR4451, improving error recovery for a mistaken : where a :: was
intended. On the first testcase in the bug, we now produce:

cxx-decl.cpp:12:2: error: unexpected ':' in nested name specifier
y:a a2;
^
::

instead of:

t.cc:8:1: error: C++ requires a type specifier for all declarations
x:a a2;
^
t.cc:8:2: error: invalid token after top level declarator
x:a a2;
^
;
t.cc:9:11: error: use of undeclared identifier 'a2'
x::a a3 = a2;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
a564b17dcc7daf298ffa72cde94630343bf9c31a 06-Dec-2009 Chris Lattner <sabre@nondot.org> implement PR4451, improving error recovery for a mistaken : where a :: was
intended. On the first testcase in the bug, we now produce:

cxx-decl.cpp:12:2: error: unexpected ':' in nested name specifier
y:a a2;
^
::

instead of:

t.cc:8:1: error: C++ requires a type specifier for all declarations
x:a a2;
^
t.cc:8:2: error: invalid token after top level declarator
x:a a2;
^
;
t.cc:9:11: error: use of undeclared identifier 'a2'
x::a a3 = a2;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90713 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
edd4eef848ee75b19934bc0261851760a423c6e4 06-Dec-2009 Daniel Dunbar <daniel@zuster.org> Document that CompilerInvocation::createDiagnostics keeps a reference to the DiagnosticOptions, and update callers to make sure they don't pass in a temporary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90704 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
bb3503a146f5eee6393a8b7542f38d9f5fce6583 06-Dec-2009 Daniel Dunbar <daniel@zuster.org> Document that CompilerInvocation::createDiagnostics keeps a reference to the DiagnosticOptions, and update callers to make sure they don't pass in a temporary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90704 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
7552668f1873684e67a5d8919be2d81a3c5dd134 06-Dec-2009 Daniel Dunbar <daniel@zuster.org> Unbreak and add test case for r90276, a situation in which getBuffer is expected to fail.

Also, update SourceManager.h doxyments for getBuffer() to reflect reality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2ffb14f004affc363d86d6c7c63c356190db3679 06-Dec-2009 Daniel Dunbar <daniel@zuster.org> Unbreak and add test case for r90276, a situation in which getBuffer is expected to fail.

Also, update SourceManager.h doxyments for getBuffer() to reflect reality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
7a414b24402c5e426a009d2414c0429338428609 06-Dec-2009 Daniel Dunbar <daniel@zuster.org> Change Preprocessor::EnterSourceFile to make ErrorStr non-optional, clients should be forced to deal with error conditions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90700 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
63ceaa32a2371e38d1f912080fe471285e6b6e56 06-Dec-2009 Daniel Dunbar <daniel@zuster.org> Change Preprocessor::EnterSourceFile to make ErrorStr non-optional, clients should be forced to deal with error conditions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90700 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
486e9845f0f2f6b73f45e5015a202201ac2fd489 05-Dec-2009 Steve Naroff <snaroff@apple.com> Remove 'LangOpts' from Diagnostic (added in http://llvm.org/viewvc/llvm-project?view=rev&revision=90642).

Simply use the 'LangOpts' member already present in TextDiagnosticPrinter.

Sorry for the confusion!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
0304c6cb7fd3b2137213858b1e5ae85ef3f4f8e2 05-Dec-2009 Steve Naroff <snaroff@apple.com> Remove 'LangOpts' from Diagnostic (added in http://llvm.org/viewvc/llvm-project?view=rev&revision=90642).

Simply use the 'LangOpts' member already present in TextDiagnosticPrinter.

Sorry for the confusion!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ae427a94f20d49c5e8a73b6458ed06b422813ab8 05-Dec-2009 Steve Naroff <snaroff@apple.com> Integrate the following from the 'objective-rewrite' branch:

http://llvm.org/viewvc/llvm-project?view=rev&revision=71086

Note - This commit only includes the fix for:

<rdar://problem/6309338> slightly different error message format for Visual Studio.

The fix for <rdar://problem/6845623> from protocol to template. is separate/forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90642 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
e0c4d895ffe4320aa4e29485711ad7d154f2cc2b 05-Dec-2009 Steve Naroff <snaroff@apple.com> Integrate the following from the 'objective-rewrite' branch:

http://llvm.org/viewvc/llvm-project?view=rev&revision=71086

Note - This commit only includes the fix for:

<rdar://problem/6309338> slightly different error message format for Visual Studio.

The fix for <rdar://problem/6845623> from protocol to template. is separate/forthcoming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90642 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
caf383ae337966d67380b6b161fab17ec2b53d04 04-Dec-2009 John McCall <rjmccall@apple.com> Fix "using typename" and the instantiation of non-dependent using declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
ed97649e9574b9d854fa4d6109c9333ae0993554 04-Dec-2009 John McCall <rjmccall@apple.com> Fix "using typename" and the instantiation of non-dependent using declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeLocBuilder.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
44c4e153d8a79562e196aea7e917ccae8a16ebc7 04-Dec-2009 Anders Carlsson <andersca@mac.com> Forgot this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
99369081447e9b7b2c2f724d39e9ec8409291d08 04-Dec-2009 Anders Carlsson <andersca@mac.com> Forgot this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7e5ca36f05758666353d5353cf27c0e027e1782b 04-Dec-2009 Mike Stump <mrs@apple.com> Add an easy accessor for the end of the try/catch statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
be0ed67bc79e96c26cd0ad41dcfab5a5020ead51 04-Dec-2009 Mike Stump <mrs@apple.com> Add an easy accessor for the end of the try/catch statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
fcd71df22e090cbc65ac9d92773016886d392d29 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch -ccc-* options to using the standard options functionality.
- I still want to get rid of them, but manually handling them isn't adding value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90602 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
8477ee93c9d81d1b5fe321706ff95bcd219c744b 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch -ccc-* options to using the standard options functionality.
- I still want to get rid of them, but manually handling them isn't adding value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90602 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
e985d447b2bcbe764b27dfc8e6b34462b563c33a 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> OptTable: Allow option groups to be used to define "help groups", which will
collate the options inside that group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90592 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
river/OptTable.h
2658f05caf1c1d86608a46ebc7be0b3bb21fef2a 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> OptTable: Allow option groups to be used to define "help groups", which will
collate the options inside that group.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90592 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
river/OptTable.h
973c39d43eeb03c50792b691a5e1d33da95d6d6d 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> OptParser: Add HelpHidden flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90591 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
river/OptTable.h
9a242512a8b319cc4df7d050166a1c65bf66abeb 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> OptParser: Add HelpHidden flag.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90591 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
river/OptTable.h
38ded47e4b3634cf0a45fa06ee66c2aef77bc08e 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Replace SymbolReaper::isLive(VarDecl) with SymbolReaper::isLive(VarRegion).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90582 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
edeb5b6b50e773b243e0ee0d84589cd1f7dea9b0 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Replace SymbolReaper::isLive(VarDecl) with SymbolReaper::isLive(VarRegion).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90582 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
617eef3b2e1175b6f9f90a138a4b79282061745f 04-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Add gcc's -no-canonical-prefixes option to clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90577 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
0f4c59c3beae302b5a3ecea13f2e257bdaad3188 04-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Add gcc's -no-canonical-prefixes option to clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90577 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
277ecd35a01920a03f319779c039d676ea2ecaf2 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> ASTUnit/CIndex: Explicitly track the top-level decls when using an ASTUnit made
from a source file.
- This allows CIndex to avoid iterating over all the top-level decls when using
a PCH, which means we deserialize far fewer decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90559 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
f772d1e2a5688572d07f42896a50ac57a4a41fe8 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> ASTUnit/CIndex: Explicitly track the top-level decls when using an ASTUnit made
from a source file.
- This allows CIndex to avoid iterating over all the top-level decls when using
a PCH, which means we deserialize far fewer decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90559 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
e24cecad697d12f01689797c26293c6e4a16f0b6 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> Ignore -fsched-interblock and -freorder-blocks to the ignored -f flags, we have
no plans to support invasive optimization flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90558 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
f13876fac1eb2d384732779a7709575d4ecf27b6 04-Dec-2009 Daniel Dunbar <daniel@zuster.org> Ignore -fsched-interblock and -freorder-blocks to the ignored -f flags, we have
no plans to support invasive optimization flags.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90558 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.td
1e701d6da32716d9dba79bc092366925e216dc29 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Rename instance variable to avoid name conflict with parameters, and modify addTransition() to compare the correct state values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90552 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
bfb4fc9ebc64ec3db597441d4b79adcd0f69cf58 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Rename instance variable to avoid name conflict with parameters, and modify addTransition() to compare the correct state values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90552 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
bd7d5e3313d3a1c0fef7532c0357074d9bcaed4f 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Revert r90546.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
6dea40475158edea3b64e1247b07b94db4f48dc8 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Revert r90546.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
2ed2ca150395db08e9ac31401c2ea00fe10a76b9 04-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make the type of the Decl referred to by a MemberExpr a bit more precise.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f595cc41c4d95fe323f8a2b209523de9956f874d 04-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Make the type of the Decl referred to by a MemberExpr a bit more precise.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
616b4a99b724217fb375aef2e837840b137cd287 04-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> the assertion says state is not NULL. When state is not NULL, getState()
returns state. So simplify the predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90546 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
1d60710c593c82e6c4a9a5c1e96e24fbb3a61592 04-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> the assertion says state is not NULL. When state is not NULL, getState()
returns state. So simplify the predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90546 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
7969eed168f037095da9e0ded43eaa0728e1a846 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Allow BlockInvocationContext to wrap either a BlockDecl* or a BlockDataRegion*, giving us choice in our degree of context-sensitivity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90516 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/MemRegion.h
d02e83a548359df978f40cc1a52ffd78b7ef371b 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Allow BlockInvocationContext to wrap either a BlockDecl* or a BlockDataRegion*, giving us choice in our degree of context-sensitivity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90516 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/MemRegion.h
e58ebf3b717db406dc9e434b41a771c856e0af05 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Refactor LocationContext creation logic into a single member template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90509 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
0ee4124012950d7bb853438629b8e7652febf183 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Refactor LocationContext creation logic into a single member template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90509 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
7db88c68869b191692ce35df151fcbc555221980 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Refactor FoldingSet profiling code for LocationContexts, and add a new BlockInvocationContext to represent the invocation of a block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90506 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
dc0d909f0f6684159c8475db1a15967e5613cb27 04-Dec-2009 Ted Kremenek <kremenek@apple.com> Refactor FoldingSet profiling code for LocationContexts, and add a new BlockInvocationContext to represent the invocation of a block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90506 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
dcb5b8c17602418d0ea1359cf7481507a1b7c03f 04-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5679: make __builtin_prefetch a bit more flexible in what it accepts
as a constant integer. Also, some minor cleanup and improvements to the
diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90504 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9aef7263d84d9224575e113878cfbb06b8343cbf 04-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR5679: make __builtin_prefetch a bit more flexible in what it accepts
as a constant integer. Also, some minor cleanup and improvements to the
diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90504 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
361a02d9d9de6cb533fca1254d574494b2bce55c 04-Dec-2009 Ted Kremenek <kremenek@apple.com> constify MemRegion* returned by MemRegionManager::getXXXRegion() methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90503 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b48ad64a0e9e8d6488adebe597b6af32c1eb84f4 04-Dec-2009 Ted Kremenek <kremenek@apple.com> constify MemRegion* returned by MemRegionManager::getXXXRegion() methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90503 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
94eeea38304ad9771cf2cff3326f9121a92246d7 04-Dec-2009 Ted Kremenek <kremenek@apple.com> More template-logic for MemRegion construction out of MemRegion.h and into MemRegion.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90499 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
bcd7f9f8cb2f1b78e8ad991677a4364044e1deb7 04-Dec-2009 Ted Kremenek <kremenek@apple.com> More template-logic for MemRegion construction out of MemRegion.h and into MemRegion.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90499 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c390fde6fcb2de361f14d12de7cb6e9a79f036c8 03-Dec-2009 John McCall <rjmccall@apple.com> Lift the ObjCPropertyCallback out of local scope to unbreak VS2005 builds.
Make it an inner class of Parser to assuage access control.
No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90491 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d0014540005f2a5ab837365db6bd40f479406758 03-Dec-2009 John McCall <rjmccall@apple.com> Lift the ObjCPropertyCallback out of local scope to unbreak VS2005 builds.
Make it an inner class of Parser to assuage access control.
No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90491 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e883d27dfdf59eeac18f9276bf2460a549e68d31 03-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Add recursion guards to ice-checking and evaluation for declrefs, so we
don't infinitely recurse for cases we can't evaluate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90480 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c013118155077cf8bdaef743c5dbce760114eed3 03-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Add recursion guards to ice-checking and evaluation for declrefs, so we
don't infinitely recurse for cases we can't evaluate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90480 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
49028b52ab9238223a313a3babaf4e01a73f7e28 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Convert some methods in PathDiagnostic to return StringRefs instead of std::string&.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90477 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
d3d870b96d2f76d981a49595e9395ef09d970812 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Convert some methods in PathDiagnostic to return StringRefs instead of std::string&.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90477 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
2f5b7a8b9a82804a119ac53a8d69aeab48181eb5 03-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> A new helper function to set various bits in the class when
a new virtual function is declared/instantiated. it is used
in couple of places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e7184df728bb339633d88c774b5097dd9318cc8a 03-Dec-2009 Fariborz Jahanian <fjahanian@apple.com> A new helper function to set various bits in the class when
a new virtual function is declared/instantiated. it is used
in couple of places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0f45500a267ab15aa31bcfa4ac779d8300fb89ea 03-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Minor cleanup to the code-completion-point logic suggested by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90459 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
109ae73ec71a1d27358510ce049b59637b4a6b40 03-Dec-2009 Douglas Gregor <dgregor@apple.com> Minor cleanup to the code-completion-point logic suggested by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90459 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
537c3461818cf88a8ab483e05d7228991456cd18 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix two more diagnostic-on-stderr instances that thought they could hide from me -- they thought wrong.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
baac10380c8b8597a9e5f1beb96c439c3bf02baa 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix two more diagnostic-on-stderr instances that thought they could hide from me -- they thought wrong.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
2b50918fa2304555963214b21b551289fad889c9 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Kill a few more random stderr uses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
e7cb7e4570842297f698bd7fd8d85520fc008acd 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Kill a few more random stderr uses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
ff484446f9cabe0e9c1737bfee761528ab019cc9 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix CompilerInstance::createOutputFile to use proper diagnostics, and (try to) update all clients to be able to handle failure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
360435908c9b90429cfe192fab22854af1d4497c 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix CompilerInstance::createOutputFile to use proper diagnostics, and (try to) update all clients to be able to handle failure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
5f0565da5a8963b22f1d108c614e240ec7f96c9c 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Switch PCHReader::getOriginalSourceFile to use proper diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
93ebb1ba9f35ab5e7bff37c471baeb360eeb0b04 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Switch PCHReader::getOriginalSourceFile to use proper diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
93b0536a7d9a798d87c8772353d1f50f9e6c8895 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix BackendConsumer to use proper diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
3be0d19503f8291b1581a39a8f6ca01d74bf5cb1 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix BackendConsumer to use proper diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
fee543b77072594204591b3da62fa453937a1da8 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Make BlockDataRegion::referenced_vars_iterator an actual class that enforces that all MemRegions iterated over are VarRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90430 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
81cef5889027d0f96b24afa7a0bb28d9023474ed 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Make BlockDataRegion::referenced_vars_iterator an actual class that enforces that all MemRegions iterated over are VarRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90430 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
257ed2df3ef232b2389aabf8d5edcaa870e22169 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix layering violation by moving Analysis/CallGraph to Index

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90424 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/CallGraph.h
8fd57fea85ff7b4dc1895fbbdf73173feaa063b5 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix layering violation by moving Analysis/CallGraph to Index

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90424 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/CallGraph.h
9d49f63815d6e6119d346337523e1e07c9b642e5 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Honor -help and -version when using new style option parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90422 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
9b5e9ae08defd14441acca1d7d4502b933bf6c5a 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Honor -help and -version when using new style option parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90422 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
rontend/FrontendOptions.h
ab2d6b34508e4babdae7e6e79ae7795edf9bdede 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> CC1Options: Normalize meta var spellings, and fix a few help texts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90421 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
b737fb12cbf9617edc5720fba8b6aed118c84771 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> CC1Options: Normalize meta var spellings, and fix a few help texts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90421 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
a1bac7d03c52b8639ebb4523fcbbaabf37667c85 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add OptTable::PrintHelp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90420 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
60e107fb86132fea75b886d2259f4c220334bc5e 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add OptTable::PrintHelp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90420 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
9b7e42db3f7fb9f10576dd2251f3c691c7704a49 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 support for -remap-file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90414 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/CC1Options.td
e14b5f5237d0740c2b21c50b2eb41a06e778d820 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 support for -remap-file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90414 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/CC1Options.td
67af496b731c7571ee529879be16acd6ecdc7bf0 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 -load option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/FrontendOptions.h
efba227cc5459554eca466aafe786b5132dcb68c 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 -load option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/CC1Options.td
rontend/FrontendOptions.h
47b8f8ef224c46bf0dfb846b4ec34b1c0ecc6e07 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Add batch version of 'StoreManager::InvalidateRegion()' for invalidating multiple regions as once. After adopting this in the CFRefCount::EvalCall(), we see a reduction in analysis time of 1.5% when analyzing all of SQLite3.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90405 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
81a958366873c8bb49a2ed7324f004047ec18e48 03-Dec-2009 Ted Kremenek <kremenek@apple.com> Add batch version of 'StoreManager::InvalidateRegion()' for invalidating multiple regions as once. After adopting this in the CFRefCount::EvalCall(), we see a reduction in analysis time of 1.5% when analyzing all of SQLite3.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90405 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
0e63e4cef5eb977474ebcc44ccb06335626f876c 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix ASTUnit to allows require a (persistent) Diagnostic object be provided; propogate and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/ASTUnit.h
5262fda30b876c8aae95f2eb92e349418d6b14bb 03-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix ASTUnit to allows require a (persistent) Diagnostic object be provided; propogate and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/ASTUnit.h
956affe43fe9655a9ffa93ffbc8f0458a854ec58 03-Dec-2009 John McCall <rjmccall@apple.com> Stop stripping UnresolvedUsingDecls out of LookupResults that have other
results in them (which we were doing intentionally as a stopgap). Fix
an DeclContext lookup-table ordering problem which was causing UsingDecls to
show up incorrectly when looking for ordinary results. And oh hey
Clang-Code-Syntax passes now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90367 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
fda8e12774921e3cac3ebcba1148bcf4479ddd7a 03-Dec-2009 John McCall <rjmccall@apple.com> Stop stripping UnresolvedUsingDecls out of LookupResults that have other
results in them (which we were doing intentionally as a stopgap). Fix
an DeclContext lookup-table ordering problem which was causing UsingDecls to
show up incorrectly when looking for ordinary results. And oh hey
Clang-Code-Syntax passes now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90367 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
75067d2c35093b2c9cd4f96a3d5e2df0b5383d17 03-Dec-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Introduce the notion of literal types, as specified in C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
ccf43505dbc47da041c06125f90b3bd3ac7eac97 03-Dec-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Introduce the notion of literal types, as specified in C++0x.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
2409a21ff088c4aab328a9d32fb96502efd9de18 02-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Improve source location information for C++ member initializers in a
constructor, by keeping the DeclaratorInfo* rather than just the type
and a single location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
802ab45fea51beff12f386329d4928811a479c6e 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Improve source location information for C++ member initializers in a
constructor, by keeping the DeclaratorInfo* rather than just the type
and a single location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
c0d05c5b347d88964866f598b04900edb8d33f54 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> ASTUnit: Explicitly track whether the ASTUnit came from an actual AST or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90349 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
c7822dbf3c01a2a5f837cff82ba7889ea755daca 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> ASTUnit: Explicitly track whether the ASTUnit came from an actual AST or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90349 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ab3dcdb26025c611f1f04a6433d76361fbfc27de 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> ASTUnit: Fix initialization of OnlyLocalDecls variable, and honor UseBumpAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90348 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
68ea2ac7fd98a5a44c7a5b04c54076cf794531cb 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> ASTUnit: Fix initialization of OnlyLocalDecls variable, and honor UseBumpAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90348 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
d60cad99e4fdac287de5e3cc192b6a7231d582b1 02-Dec-2009 Mike Stump <mrs@apple.com> Change rtti/Rtti to RTTI, as it is an acronym.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90334 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
de05057932cebc3f43911f87d75869cb7b705a19 02-Dec-2009 Mike Stump <mrs@apple.com> Change rtti/Rtti to RTTI, as it is an acronym.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90334 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
bd4cbba67a2cb7047c6f82e9b7a1e6f96748904e 02-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Extend -remap-file=from;to to permit mapping from a non-existent
file. This is accomplished by introducing the notion of a "virtual"
file into the file manager, which provides a FileEntry* for a named
file whose size and modification time are known but which may not
exist on disk.

Added a cute little test that remaps both a .c file and a .h file it
includes to alternative files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
057e567f1b375190779e5341f42861896cdee442 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Extend -remap-file=from;to to permit mapping from a non-existent
file. This is accomplished by introducing the notion of a "virtual"
file into the file manager, which provides a FileEntry* for a named
file whose size and modification time are known but which may not
exist on disk.

Added a cute little test that remaps both a .c file and a .h file it
includes to alternative files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
3901b72e9ecb9bc37106905b4f4a6e861a7029b5 02-Dec-2009 Anders Carlsson <andersca@mac.com> In Sema, whenever we think that a function is going to cause a vtable to be generated, we mark any virtual implicit member functions as referenced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5ec02ae147760c32ad5b6fb0fec30ab3b3696778 02-Dec-2009 Anders Carlsson <andersca@mac.com> In Sema, whenever we think that a function is going to cause a vtable to be generated, we mark any virtual implicit member functions as referenced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
54d93fde6518761f600ccc71dad2e9b5e0e93ebf 02-Dec-2009 John McCall <rjmccall@apple.com> r90313, in which OverloadedFunctionDecl is removed and never spoken of again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90313 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
51fa86f738a9768fac4e1cad7bdde53774b5b322 02-Dec-2009 John McCall <rjmccall@apple.com> r90313, in which OverloadedFunctionDecl is removed and never spoken of again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90313 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
5a21f1b51d958d4d1e1926e439b5dd66074f3121 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix ASTUnit::getOriginalSourceFileName() when using ASTUnit's derived from
source files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90311 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
68d40e2d16b9fadba386853d6bbb60089291fdc5 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix ASTUnit::getOriginalSourceFileName() when using ASTUnit's derived from
source files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90311 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b433a70277eab84ec3221781aba642e9da8bc53d 02-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new clang-cc option

-remap-file=from;to

which takes the file "from" and transparently replaces its contents
with the contents of the file "to" from the source manager's
perspective. This is the moral equivalent of

cp from saved
cp to from
<call clang>
cp saved from
rm saved

without all of the pesky file copying.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90307 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PreprocessorOptions.h
716f0b3e2e36f362b64a2ce0a40a9ad915103255 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Introduce a new clang-cc option

-remap-file=from;to

which takes the file "from" and transparently replaces its contents
with the contents of the file "to" from the source manager's
perspective. This is the moral equivalent of

cp from saved
cp to from
<call clang>
cp saved from
rm saved

without all of the pesky file copying.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90307 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PreprocessorOptions.h
894fc4791408c58549d78f6fa333d7e2c1dd5f4e 02-Dec-2009 John McCall <rjmccall@apple.com> Push overloaded function templates through the parser using a totally different
leaked data structure than before. This kills off the last remaining
explicit uses of OverloadedFunctionDecl in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
0bd6feb9e9d40fc889fd47e899985125a43dfed8 02-Dec-2009 John McCall <rjmccall@apple.com> Push overloaded function templates through the parser using a totally different
leaked data structure than before. This kills off the last remaining
explicit uses of OverloadedFunctionDecl in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
d01fc222cedc08537c9d74e86ac69b4fb684f1a8 02-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Extend the source manager with the ability to override the contents of
files with the contents of an arbitrary memory buffer. Use this new
functionality to drastically clean up the way in which we handle file
truncation for code-completion: all of the truncation/completion logic
is now encapsulated in the preprocessor where it belongs
(<rdar://problem/7434737>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Lexer.h
ex/Preprocessor.h
2968442603b029949246467253eeac8139a5b6d8 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Extend the source manager with the ability to override the contents of
files with the contents of an arbitrary memory buffer. Use this new
functionality to drastically clean up the way in which we handle file
truncation for code-completion: all of the truncation/completion logic
is now encapsulated in the preprocessor where it belongs
(<rdar://problem/7434737>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90300 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Lexer.h
ex/Preprocessor.h
876e1c59230d11409d1e8b54eff28a68a2074b98 02-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Hard bifurcate the state into nil receiver and non-nil receiver, so that
we don't need to use the DoneEvaluation hack when check for
ObjCMessageExpr.

PreVisitObjCMessageExpr() only checks for undefined receiver or arguments.

Add checker interface EvalNilReceiver(). This is a 'once-and-done' interface.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90296 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
a46e4d91d8f3eb341f2387768db66dcfe8dd0afa 02-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Hard bifurcate the state into nil receiver and non-nil receiver, so that
we don't need to use the DoneEvaluation hack when check for
ObjCMessageExpr.

PreVisitObjCMessageExpr() only checks for undefined receiver or arguments.

Add checker interface EvalNilReceiver(). This is a 'once-and-done' interface.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90296 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
a211fccd7f4843258173c74b2bc80b8991d21b94 02-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate the unnecessary FirstFID cache variable from the source manager's ContentCache

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90294 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
4a160e16eb97bee03e36962d11aedc6452710bc5 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Eliminate the unnecessary FirstFID cache variable from the source manager's ContentCache

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90294 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5f037ba770a202ddbf79b2df98ee45514bd659f6 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ASTUnit::LoadFromCommandLine, which creates an ASTUnit out of a list of
(clang/driver) command line arguments (including the source file).
- The arguments are expected to include the source file.

- The idea is that even though this is a somewhat odd API, its the form which
many tools can most easily use (for example, by interposing with the compiler).

Also, switch index-test's -ast-from-source to use this entry point, and provide
a -arg command line argument which can be used to test that the command line
arguments are handled correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/ASTUnit.h
7b55668db7618334cc40011d3c1e128524d89462 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ASTUnit::LoadFromCommandLine, which creates an ASTUnit out of a list of
(clang/driver) command line arguments (including the source file).
- The arguments are expected to include the source file.

- The idea is that even though this is a somewhat odd API, its the form which
many tools can most easily use (for example, by interposing with the compiler).

Also, switch index-test's -ast-from-source to use this entry point, and provide
a -arg command line argument which can be used to test that the command line
arguments are handled correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/ASTUnit.h
0e67ae0b7deb99e13a4af5b4774fb0084be7cff4 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Command::Creator member variable, which tracks the tool that was
used to create a particular command.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90287 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
daab7b1016f0a82fefa4f7be6e63c57c06b19ffc 02-Dec-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Command::Creator member variable, which tracks the tool that was
used to create a particular command.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90287 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
6fc358ea6ce5c8f786a939f70c2d8ca015be512a 01-Dec-2009 Chris Lattner <sabre@nondot.org> pass the reason for failure up from MemoryBuffer and report it
in diagnostics when we fail to open a file. This allows us to
report things like:

$ clang test.c -I.
test.c:2:10: fatal error: error opening file './foo.h': Permission denied
#include "foo.h"
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90276 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/SourceManager.h
ex/Preprocessor.h
39d9841ed4c0568d4b44dfbc12ac04491f60a374 01-Dec-2009 Chris Lattner <sabre@nondot.org> pass the reason for failure up from MemoryBuffer and report it
in diagnostics when we fail to open a file. This allows us to
report things like:

$ clang test.c -I.
test.c:2:10: fatal error: error opening file './foo.h': Permission denied
#include "foo.h"
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90276 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
asic/SourceManager.h
ex/Preprocessor.h
2958bb22c81b0610f9017f8a80b65d782433fd2e 01-Dec-2009 Ted Kremenek <kremenek@apple.com> The minimum element size in BumpVector should be 1, not 0.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90268 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
1488c7a0989e4543b9acb46fa02a54d12a9d0cc9 01-Dec-2009 Ted Kremenek <kremenek@apple.com> The minimum element size in BumpVector should be 1, not 0.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90268 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
317ae5eb67c34b9be76e991c7851d72dd355f78d 01-Dec-2009 John McCall <rjmccall@apple.com> Rework how we support C++ implicit member accesses. If we can resolve an
implicit member access to a specific declaration, go ahead and create
it as a DeclRefExpr or a MemberExpr (with implicit CXXThisExpr base) as
appropriate. Otherwise, create an UnresolvedMemberExpr or
DependentScopeMemberExpr with a null base expression.

By representing implicit accesses directly in the AST, we get the ability
to correctly delay the decision about whether it's actually an instance
member access or not until resolution is complete. This permits us
to correctly avoid diagnosing the 'problem' of 'MyType::foo()'
where the relationship to the type isn't really known until instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
aa81e1658d87b9011125c632aa902d154ae4b02c 01-Dec-2009 John McCall <rjmccall@apple.com> Rework how we support C++ implicit member accesses. If we can resolve an
implicit member access to a specific declaration, go ahead and create
it as a DeclRefExpr or a MemberExpr (with implicit CXXThisExpr base) as
appropriate. Otherwise, create an UnresolvedMemberExpr or
DependentScopeMemberExpr with a null base expression.

By representing implicit accesses directly in the AST, we get the ability
to correctly delay the decision about whether it's actually an instance
member access or not until resolution is complete. This permits us
to correctly avoid diagnosing the 'problem' of 'MyType::foo()'
where the relationship to the type isn't really known until instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e4c9b99cff0331ab9e2c590189ba9eac906844ed 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90262 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
c4e265f67e63d870b4a188be5af1bcd848214802 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90262 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
dc8da56001c07f54ea809d33fb2e6ee174aaad46 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add {ExternalSemaSource,SemaConsumer}::ForgetSema callback, and update PCHReader
to use it so it at least won't try to access Sema once it is gone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90261 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
ema/ExternalSemaSource.h
ema/SemaConsumer.h
ec2a4ed278a1112ebf84fdcb80ed66f53d8ec8ba 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add {ExternalSemaSource,SemaConsumer}::ForgetSema callback, and update PCHReader
to use it so it at least won't try to access Sema once it is gone.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90261 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
ema/ExternalSemaSource.h
ema/SemaConsumer.h
a3172a36050a033d2e91117d8f2204c646b85dff 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Convert Diagnostic::getCustomDiagID to take a StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90244 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
32d4d80c26e8c4c1922cff4661e0b9f44a3aabfc 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Convert Diagnostic::getCustomDiagID to take a StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90244 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
800403606c795e97685f1f95fe494cd20003d776 01-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Don't automatically assume that an id-expression refers to a
ValueDecl, because that isn't always the case in ill-formed
code. Diagnose a common mistake (forgetting to provide a template
argument list for a class template, PR5655) and dyn_cast so that we
handle the general problem of referring to a non-value declaration
gracefully.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9af2f52fbcb993350f54e57d498e7849ba29c75d 01-Dec-2009 Douglas Gregor <dgregor@apple.com> Don't automatically assume that an id-expression refers to a
ValueDecl, because that isn't always the case in ill-formed
code. Diagnose a common mistake (forgetting to provide a template
argument list for a class template, PR5655) and dyn_cast so that we
handle the general problem of referring to a non-value declaration
gracefully.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b95569b560abb0427aa76a597e09e13c21bc290 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ASTUnit::LoadFromCompilerInvocation, which does what it says.

Also, add an -ast-from-source option to index-test which allows index-test to
run on source files directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90223 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
521bf9c529e653ab28896d027352d3e16e2672d5 01-Dec-2009 Daniel Dunbar <daniel@zuster.org> Add ASTUnit::LoadFromCompilerInvocation, which does what it says.

Also, add an -ast-from-source option to index-test which allows index-test to
run on source files directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90223 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
63b2bd2961598da03211cbd9c5851d7a54363d47 01-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Switch the clang-to-CIndex interface for code-completion to a binary format, for a massive speedup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
ema/CodeCompleteConsumer.h
2b4074f1d3919e77cb33ca49c960521dea27afab 01-Dec-2009 Douglas Gregor <dgregor@apple.com> Switch the clang-to-CIndex interface for code-completion to a binary format, for a massive speedup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
ema/CodeCompleteConsumer.h
65a5382416ec3d6a058923d3b487c70ab2dcdc32 01-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Clean up BuiltinBug class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90195 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
f99ce1e81f965fb0bb56ead76742aadd8b551835 01-Dec-2009 Zhongxing Xu <xuzhongxing@gmail.com> Clean up BuiltinBug class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90195 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
79af29e9baa26318af6fda91db377c863c997412 01-Dec-2009 Anders Carlsson <andersca@mac.com> Have ASTRecordLayout keep track of the key function, in preparation of fixing a synthetic ctor/dtor bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
1a5e0d7f18485e4fb958f96dcddff3e4486a4069 01-Dec-2009 Anders Carlsson <andersca@mac.com> Have ASTRecordLayout keep track of the key function, in preparation of fixing a synthetic ctor/dtor bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
abb74cc24e06928418871be6535520b14d714a8e 30-Nov-2009 John McCall <rjmccall@apple.com> Eliminate the use of OverloadedFunctionDecl in member expressions.
Create a new UnresolvedMemberExpr for these lookups. Assorted hackery
around qualified member expressions; this will all go away when we
implement the correct (i.e. extremely delayed) implicit-member semantics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90161 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
129e2df52ed7e0434b3f1cf1867fd6a5cb083ff6 30-Nov-2009 John McCall <rjmccall@apple.com> Eliminate the use of OverloadedFunctionDecl in member expressions.
Create a new UnresolvedMemberExpr for these lookups. Assorted hackery
around qualified member expressions; this will all go away when we
implement the correct (i.e. extremely delayed) implicit-member semantics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90161 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
686986ccccb6e40d3374c7c1669fae76bff03730 30-Nov-2009 Anders Carlsson <andersca@mac.com> When we're trying to define an implicit virtual destructor, make sure that we have a valid delete operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
37909808416da93703cecc83091e2b9eab0053d6 30-Nov-2009 Anders Carlsson <andersca@mac.com> When we're trying to define an implicit virtual destructor, make sure that we have a valid delete operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
011c5a02450ed959679d4ebfd2fdb8198b3cba18 30-Nov-2009 Mike Stump <mrs@apple.com> Add const to accessors that don't modify the object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
6515afe50c8d69dbb029b85f879cb2e083854b6c 30-Nov-2009 Mike Stump <mrs@apple.com> Add const to accessors that don't modify the object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
2818bd26562e1a2b7d7e9fb31d72f698a5748289 30-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a crash when ivar type is a __strong SEL. Fallout from
recent change to make SEL a builtin type (fixes radar 7425510).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8d2c0a9814e56c2b22e22d1045181c735aef62fd 30-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a crash when ivar type is a __strong SEL. Fallout from
recent change to make SEL a builtin type (fixes radar 7425510).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c44208598d88308695d0e7c5a6d7ba3ead6e6904 30-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Use StringRef in Attr constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
bb377edda2656752016a0bc01fe4f9f8b6f80e19 30-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Use StringRef in Attr constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
a3f4eeff4aec1306447707c73f70a5657357422c 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CodeGenOptions::{SoftFloat,FloatABI}, and update the all the (far too many) places to use this instead of using the backend -soft-float and -float-abi= options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90127 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
3b315264d1a6fa303e20fe0caec306ccafc090de 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CodeGenOptions::{SoftFloat,FloatABI}, and update the all the (far too many) places to use this instead of using the backend -soft-float and -float-abi= options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90127 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
507561c5d5f7e06f6f3fe07b394c44f4ff9ca392 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add TextDiagnosticBuffer::FlushDiagnostics, for forwarding the buffered diagnostics to a different diagnostics engine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90125 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticBuffer.h
c238955f09f3bce9386e6553d5d12f79e8cc2b08 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add TextDiagnosticBuffer::FlushDiagnostics, for forwarding the buffered diagnostics to a different diagnostics engine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90125 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticBuffer.h
8d9cacb67dd4f30fc20b2f1e2773390ea5c58d77 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate CodeGenOptions::TimePasses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90118 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
b33fbaa5f14452b6dc2442e89266acb0810616fd 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate CodeGenOptions::TimePasses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90118 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
eeef8220155ad20d50065b5315ea30a83c05a64f 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate CodeGenOptions::SimplifyLibCalls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90117 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
3636e1d784aedb37052aa235966e4fdbe7ed9082 30-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate CodeGenOptions::SimplifyLibCalls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90117 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
4d4df61e3badbc9196c12aafd135e8ed6f3686ee 30-Nov-2009 Chris Lattner <sabre@nondot.org> Fix PR5633 by making the preprocessor handle the case where we can
stat a file but where mmaping it fails. In this case, we emit an
error like:
t.c:1:10: fatal error: error opening file '../../foo.h'

instead of "cannot find file".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90110 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Lexer.h
ex/Preprocessor.h
6e2901407bff59aeb4cc301cc58b034723d0eb49 30-Nov-2009 Chris Lattner <sabre@nondot.org> Fix PR5633 by making the preprocessor handle the case where we can
stat a file but where mmaping it fails. In this case, we emit an
error like:
t.c:1:10: fatal error: error opening file '../../foo.h'

instead of "cannot find file".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90110 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Lexer.h
ex/Preprocessor.h
abbbb983c8f7c7f74ace2a531cea346c788f03eb 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Use proper diagnostics for all parsing errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90100 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
9e612408c237ce3cac3fe7e97d7ce564601c1f63 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Use proper diagnostics for all parsing errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90100 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
06779965fc91f7c594e49cb077018761bf8849c1 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Change CompilerInvocation::CreateFromArgs to report errors using a proper diagnostic engine.
- Clients that care about having the diagnostics output honor the user-controllable diagnostic options can buffer the diagnostics and issue them later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90092 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
e03245246acbec5c46e93b68ec6942ce42b9e256 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Change CompilerInvocation::CreateFromArgs to report errors using a proper diagnostic engine.
- Clients that care about having the diagnostics output honor the user-controllable diagnostic options can buffer the diagnostics and issue them later.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90092 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
60788e86724178e222f5e9a9a8e1d96f97a1e477 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Change CompilerInvocation::CreateFromArgs to take Argv0 and the address of main (or something in the main executable) so it can find the builtin compiler files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90090 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
545c28117c64e78521b8b402caa060ba0b58a530 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Change CompilerInvocation::CreateFromArgs to take Argv0 and the address of main (or something in the main executable) so it can find the builtin compiler files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90090 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
83fdb795f734f8cb262ddd61cf6befef4403934f 29-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Port BugReporter and BugType to StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90086 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/BugType.h
f0171732efb4647772ad2a45c0f31978b0e34f71 29-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Port BugReporter and BugType to StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90086 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/BugType.h
8407ef47f548c87f6578727e6cf61c73d14d9dd6 29-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Streamline Stmt::CollectingStats() and Decl::CollectingStats(). No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
2024f4d4b0d57616f79ea742fa782d633d414462 29-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Streamline Stmt::CollectingStats() and Decl::CollectingStats(). No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
75bf1a79fdabced1ccce906c7d86523023c88067 29-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> This patch moves the frontend timer from clang-cc into CompilerInstance.
CompilerInstance already contains various objects that are used
throughout the entire run.

Also addresses Daniels review comments in:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20091123/024508.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90073 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
rontend/FrontendAction.h
f79bafa608a5d7c49ec40ad199af5e32f3038b47 29-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> This patch moves the frontend timer from clang-cc into CompilerInstance.
CompilerInstance already contains various objects that are used
throughout the entire run.

Also addresses Daniels review comments in:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20091123/024508.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90073 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
rontend/FrontendAction.h
5ab46ef39dcd6583b092497c89729b197a2089de 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Allow -triple= as an alias for -triple, -code-compiletion-at= as an alias for -code-completion-at, and spell "-std=" option correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90068 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ce6bf1ecdaca15450d8c0424724cc1558b847364 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang -cc1: Allow -triple= as an alias for -triple, -code-compiletion-at= as an alias for -code-completion-at, and spell "-std=" option correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90068 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
c481191979b4ca7f2c5511ce9cc4d0fe65fd1d46 29-Nov-2009 Sean Hunt <rideau3@gmail.com> Add DeclarationName support for C++0x operator literals. They should now work as
function names outside of templates - they'll probably cause some damage there as
they're largely untested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90064 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/DiagnosticParseKinds.td
asic/IdentifierTable.h
3e518bda00d710754ca077cf9be8dd821e16a854 29-Nov-2009 Sean Hunt <rideau3@gmail.com> Add DeclarationName support for C++0x operator literals. They should now work as
function names outside of templates - they'll probably cause some damage there as
they're largely untested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90064 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/DiagnosticParseKinds.td
asic/IdentifierTable.h
e8dd73706cf9c9a2b7b9dce818a7637ef3fa24de 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move LLVM backend options to explicit clang-cc / clang -cc1 options, which we then manually pass to the command line library; eventually the latter grossness should be fixed by a real API when creating the target machine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90063 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
f219e7c1529fac29e34483667f740b452e5ef9cc 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move LLVM backend options to explicit clang-cc / clang -cc1 options, which we then manually pass to the command line library; eventually the latter grossness should be fixed by a real API when creating the target machine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90063 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
river/CC1Options.td
b24efa95d4dae2888cdcbf27fb6e7cc3297a83ca 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Change -fsigned-char=0 to -fno-unsigned-char and pass -pic-level using separate args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90054 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
7674352cf3e8f699914a2f739f1ae8c8c3480813 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Change -fsigned-char=0 to -fno-unsigned-char and pass -pic-level using separate args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90054 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
b43ed88dcc6aff01624a65574440caac4c5a3ae7 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing accessors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90053 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
fb435102b1632cc0ea8ebdef66099aff082b7d63 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing accessors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90053 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
97306e57626414a11dbaeda3f03069d16a8ec46d 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Change LangOptions::ObjCConstantStringClass to an std::string to avoid worrying about the lifetime.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1b0969590e712d7d52fc9c0d43d3ab85c36d07a6 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Change LangOptions::ObjCConstantStringClass to an std::string to avoid worrying about the lifetime.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
42c06b5340576b23978aaea160013c7edbb2b27f 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move MainFileName option variable into CodeGenOptions instead of LangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
odeGen/CodeGenOptions.h
7d065d0f21b35f445cee13730398bc2bec6edff2 29-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move MainFileName option variable into CodeGenOptions instead of LangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
odeGen/CodeGenOptions.h
50cee73129a38c5780dca6abb3ef6d3e288eb6e3 28-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> This patch adds a PUNCTUATOR macro (specialization of TOK) in TokenKinds.def and makes use of it in tok::getTokenSimpleSpelling.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
59c55e724945daa060a5f1aaecbfd4de04770e93 28-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> This patch adds a PUNCTUATOR macro (specialization of TOK) in TokenKinds.def and makes use of it in tok::getTokenSimpleSpelling.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
c9940b7d7a97d8adc7babe7826d69f2e76384d49 28-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Cleanup llvm/Support/Compiler.h include in header files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90040 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
asic/OnDiskHashTable.h
149594457da7edfea2ce537ed18ca1b412dffd54 28-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Cleanup llvm/Support/Compiler.h include in header files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90040 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
asic/OnDiskHashTable.h
60a732f811c6152495647a3452021fefe47b9802 28-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Missed a forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90035 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
rontend/PathDiagnosticClients.h
408ac1767a87e1e49fcea5f8620e386b5007334a 28-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Missed a forward declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90035 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
rontend/PathDiagnosticClients.h
5e2f6ed50bf8c96fa371297ecc8412b34e5911f3 28-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Cleanup includes and forward decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90034 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
58652887b08da3207226ec6d8bdb59ec0e96edfe 28-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Cleanup includes and forward decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90034 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
f784707e88e25ad4fd14eab0da1f93f7ad7d5519 28-Nov-2009 Sean Hunt <rideau3@gmail.com> Add Parser support for C++0x literal operators ('operator "" i').
DeclarationName can't handle them yet, so right now Parser just errors out on them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
0486d746019f8310589b1f0d92edcc4bb3916b33 28-Nov-2009 Sean Hunt <rideau3@gmail.com> Add Parser support for C++0x literal operators ('operator "" i').
DeclarationName can't handle them yet, so right now Parser just errors out on them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
cbfba6c81ae3ecd63bbf03aa209da28d4fef4017 28-Nov-2009 Anders Carlsson <andersca@mac.com> Add an iterator for walking the primary base chain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
1fb7cf9214402aacfaa74c92870b94c5879e97dc 28-Nov-2009 Anders Carlsson <andersca@mac.com> Add an iterator for walking the primary base chain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
c8a9e76a468ba844969b8e637c20d5d171ed20dc 27-Nov-2009 Anders Carlsson <andersca@mac.com> Use a PointerIntPair for the PrimaryBaseInfo. Yay for clever LLVM data structures!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
261fba6cf57a09a1f1d0c4a4c4856aaa62753242 27-Nov-2009 Anders Carlsson <andersca@mac.com> Use a PointerIntPair for the PrimaryBaseInfo. Yay for clever LLVM data structures!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
89f16283ed2f1df67eae86fe9fdd28a82909b768 27-Nov-2009 Anders Carlsson <andersca@mac.com> Add a new PrimaryBaseInfo struct that combines the record decl of a primary base with whether it's virtual or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
ce2009ab2f59894dbcc847e25e05abe78c296e95 27-Nov-2009 Anders Carlsson <andersca@mac.com> Add a new PrimaryBaseInfo struct that combines the record decl of a primary base with whether it's virtual or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
1b388d470f5e3dd0a1c37e345a876c9845c2379e 27-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix typo, thanks Sebastian!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89999 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
83d5a2a7d5f933cfdba756e76b6c5cc2f61ac37e 27-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix typo, thanks Sebastian!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89999 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
ab9525eab85dde7fde9f9ffb292fe761b0223da5 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Add iterators to BlockDataRegion that allow clients to iterate over the VarRegions for "captured" variables for a block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89927 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
4240096011a187807058f887eb81df750ffa17fe 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Add iterators to BlockDataRegion that allow clients to iterate over the VarRegions for "captured" variables for a block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89927 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
768b60a8a134387d7d5ac98f16b18026156e1490 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Added batch versions of GRState::scanReachableSymbols() so that clients can scan a collection of SVals or MemRegions all at once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
9dce71ff2bb3016827f519152bd54830c20bb1da 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Added batch versions of GRState::scanReachableSymbols() so that clients can scan a collection of SVals or MemRegions all at once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
3d908a69b81a6f9164cf8442ad6dabda08613bad 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Enhance LiveVariables to understand that blocks can extend the liveness of a variable by "capturing" them in a BlockExpr.

This required two changes:

1) Added 'getReferencedgetReferencedBlockVars()' to AnalysisContext so
that clients can iterate over the "captured" variables in a block.

2) Modified LiveVariables to take an AnalysisContext& in its
constructor and to call getReferencedgetReferencedBlockVars() when it
processes a BlockExpr*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/PathSensitive/AnalysisContext.h
b1a7b65231e86f7da6aacbf00bcdc16c56350e65 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Enhance LiveVariables to understand that blocks can extend the liveness of a variable by "capturing" them in a BlockExpr.

This required two changes:

1) Added 'getReferencedgetReferencedBlockVars()' to AnalysisContext so
that clients can iterate over the "captured" variables in a block.

2) Modified LiveVariables to take an AnalysisContext& in its
constructor and to call getReferencedgetReferencedBlockVars() when it
processes a BlockExpr*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/PathSensitive/AnalysisContext.h
0d4c012da45097c5884741e1fefdc2f96254f608 26-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out a LangStandard class and coalesce the information about the standards into LangStandards.def
- I'd appreciate another pair of eyeballs to double check this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89919 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
rontend/LangStandards.def
f51ac1b3d0fd39853ba6c04e81149acbca6eead4 26-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out a LangStandard class and coalesce the information about the standards into LangStandards.def
- I'd appreciate another pair of eyeballs to double check this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89919 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/LangStandard.h
rontend/LangStandards.def
72dfa8de67f5b374caf4cd72908285d46aef052a 26-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing for preprocessor options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89917 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
0ff679f5ddd24a4acbeffc9757a9b2a6e4673c14 26-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing for preprocessor options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89917 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
25abc98d7bd848e9024a37b35f698cc18aaab06c 26-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor our handling of expression evaluation contexts, so that Sema
maintains a stack of evaluation contexts rather than having the parser
do it. This change made it simpler to track in which contexts
temporaries were created, so that we could...

"Forget" about temporaries created within unevaluated contexts, so
that we don't build a CXXExprWithTemporaries and, therefore, destroy
the integral-constness of our expressions. Fixes PR5609.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89908 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2afce7248b7a362f1e322ad18e43484d575b9c9d 26-Nov-2009 Douglas Gregor <dgregor@apple.com> Refactor our handling of expression evaluation contexts, so that Sema
maintains a stack of evaluation contexts rather than having the parser
do it. This change made it simpler to track in which contexts
temporaries were created, so that we could...

"Forget" about temporaries created within unevaluated contexts, so
that we don't build a CXXExprWithTemporaries and, therefore, destroy
the integral-constness of our expressions. Fixes PR5609.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89908 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
174b5c7823b30d585db0c44dbe25fc0e4ea2592c 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Refine MemRegions for blocks. Add a new region called
'BlockDataRegion' to distinguish between the code associated with a
block (which is represented by 'BlockTextRegion') and an instance of a
block, which includes both code and data. 'BlockDataRegion' has an
associated LocationContext, which can be used to eventually model the
lifetime of a block object once LocationContexts can represent scopes
(and iterations around a loop, etc.).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89900 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
0a8112a78d00b5140c5b7f16c3b34c2c0c13c1a0 26-Nov-2009 Ted Kremenek <kremenek@apple.com> Refine MemRegions for blocks. Add a new region called
'BlockDataRegion' to distinguish between the code associated with a
block (which is represented by 'BlockTextRegion') and an instance of a
block, which includes both code and data. 'BlockDataRegion' has an
associated LocationContext, which can be used to eventually model the
lifetime of a block object once LocationContexts can represent scopes
(and iterations around a loop, etc.).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89900 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
96c4d512d3ce2f9c900de3ae50623583959bf5a4 26-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Allow user re-definition of SEL as well as accessing its fields.
This fixes pr5611.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89895 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
369a3bd9979cf529eed529aa037de713c213e47d 26-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Allow user re-definition of SEL as well as accessing its fields.
This fixes pr5611.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89895 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c01f9e5cbcab06ff67a12e97897300bbc40f63e1 25-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement the rules in C++ [basic.link] and C99 6.2.2 for computing
the linkage of a declaration. Switch the lame (and completely wrong)
NamedDecl::hasLinkage() over to using the new NamedDecl::getLinkage(),
along with the "can this declaration be a template argument?" check
that started all of this.

Fixes -fsyntax-only for PR5597.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d85b5b9b8fcf53906d9a61649b3657ca0d902017 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement the rules in C++ [basic.link] and C99 6.2.2 for computing
the linkage of a declaration. Switch the lame (and completely wrong)
NamedDecl::hasLinkage() over to using the new NamedDecl::getLinkage(),
along with the "can this declaration be a template argument?" check
that started all of this.

Fixes -fsyntax-only for PR5597.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3edb303f20257c9250d60598ecbcb1b841414fd4 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Add post-visit Checker support in GRExprEngine for BlockExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89890 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
66078610be5e4319de02efa283b07887c73c2e27 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Add post-visit Checker support in GRExprEngine for BlockExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89890 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
31983e68d3c9338e7b6e723eb72ef5c995b80f4a 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Make RegisterInternalChecks() part of GRExprEngine's private implementation by making it a static function within GRExprEngine.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
32c4995826c76f282fc05fbbc3241d2dded4fb57 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Make RegisterInternalChecks() part of GRExprEngine's private implementation by making it a static function within GRExprEngine.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f5028c7fd91dfc91cab36ab486a1b9e8233200e8 25-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for default template arguments of function templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89874 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51ffb0c9d43b2d3fd210e51ecdd67ba5d1790d70 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement support for default template arguments of function templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89874 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
112ca686f089a6ad06e2f3749ddb5a4e07801543 25-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose ill-formed uses of default template arguments in
function templates (in C++98), friend function templates, and
out-of-line definitions of members of class templates.

Also handles merging of default template arguments from previous
declarations of function templates, for C++0x. However, we don't yet
make use of those default template arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5b6d70e2dece713de82612ffbac2f2bc5c367f73 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Diagnose ill-formed uses of default template arguments in
function templates (in C++98), friend function templates, and
out-of-line definitions of members of class templates.

Also handles merging of default template arguments from previous
declarations of function templates, for C++0x. However, we don't yet
make use of those default template arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1cac905e89de668a6ad094f94a949b27827036d1 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> What the FIXMEs want, the FIXMEs shall have.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89861 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
cdd9686b890ebdc10039ae256ef4c9dfb5ebacb7 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> What the FIXMEs want, the FIXMEs shall have.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89861 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
4943af3df02880f6e6db197e6050ff188abe0011 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add an arg_iterator, for iterating over a subset of arguments in an ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89860 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptSpecifier.h
3b84f5bab9f134741cf4d3c80086009519b6d968 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add an arg_iterator, for iterating over a subset of arguments in an ArgList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89860 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptSpecifier.h
1a7868e9a6b3056ad089133d6205b535e5cfec59 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add ParseSourceLocation::FromString, and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89855 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
6453f72b8d2ecd85eaef3bf3184fc6db0da5525d 25-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add ParseSourceLocation::FromString, and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89855 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
dcf3234760a3538e1a7a6b1bbf1c4406709f37f2 25-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> This patch streamlines CheckerVisitor.def so that it follows the usual '#ifndef foo' pattern:

#ifndef foo
#define foo(parm1)
#endif

foo(parm1) parm1 ...

#undef foo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
d23c447e4be8310413c473d83aaa547ad10d2271 25-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> This patch streamlines CheckerVisitor.def so that it follows the usual '#ifndef foo' pattern:

#ifndef foo
#define foo(parm1)
#endif

foo(parm1) parm1 ...

#undef foo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
fcbd31311a686139f05764c16e267a537ec879b9 25-Nov-2009 Sean Hunt <rideau3@gmail.com> Parse C++ member check attributes - base_check, hiding, and override.
The attributes are currently ignored.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
7725e67639fa2fe74f8775b7ed884a076ffdbffc 25-Nov-2009 Sean Hunt <rideau3@gmail.com> Parse C++ member check attributes - base_check, hiding, and override.
The attributes are currently ignored.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
0c1c21ac8c7d674455c1c4a9e52bd8fda16a9945 25-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> UndefResults is not needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89834 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
bc6c676448f4726dbdf086d4cb066b0fa3e97db2 25-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> UndefResults is not needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89834 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
93149185c2695190236e84fc0e6b01642ff44c72 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Add transfer function support for BlockExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89829 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c95ad9ff6e574aecdd759542d5578bc65d586d93 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Add transfer function support for BlockExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89829 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
20543d8881b0cbdae51b1d58ac1c1a89bc330093 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Split CodeTextRegion into FunctionTextRegion and BlockTextRegion. This a precursor to having basic static analysis support for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89828 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
eb1c7a04509f5d25c09005a6d46bd8bbb3ca88cb 25-Nov-2009 Ted Kremenek <kremenek@apple.com> Split CodeTextRegion into FunctionTextRegion and BlockTextRegion. This a precursor to having basic static analysis support for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89828 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
cc288c291c0b6e71806f376281e8800775e47e6b 25-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Some fancy footwork to move the decision on how
to build casted expression-list AST to Sema.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89827 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
f88f7ab5adaa11d050270ffee6aa871e855f83b8 25-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Some fancy footwork to move the decision on how
to build casted expression-list AST to Sema.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89827 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
d77dffe44101d3425c00f6eeae6f17c499eb516d 25-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Qualify the name of the llvm::cast template. I am somewhat amazed that GCC parsed this

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89822 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
3233441b439a3dee9fa187f2c195b5188e71483b 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Qualify the name of the llvm::cast template. I am somewhat amazed that GCC parsed this

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89822 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
e16949907574662cb76b58caf13b1a4601276bc5 25-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate CXXConditionDeclExpr with extreme prejudice.

All statements that involve conditions can now hold on to a separate
condition declaration (a VarDecl), and will use a DeclRefExpr
referring to that VarDecl for the condition expression. ForStmts now
have such a VarDecl (I'd missed those in previous commits).

Also, since this change reworks the Action interface for
if/while/switch/for, use FullExprArg for the full expressions in those
expressions, to ensure that we're emitting

Note that we are (still) not generating the right cleanups for
condition variables in for statements. That will be a follow-on
commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtNodes.def
rontend/StmtXML.def
arse/Action.h
arse/Parser.h
99e9b4d172f6877e6ba5ebe75bb8238721f5e01c 25-Nov-2009 Douglas Gregor <dgregor@apple.com> Eliminate CXXConditionDeclExpr with extreme prejudice.

All statements that involve conditions can now hold on to a separate
condition declaration (a VarDecl), and will use a DeclRefExpr
referring to that VarDecl for the condition expression. ForStmts now
have such a VarDecl (I'd missed those in previous commits).

Also, since this change reworks the Action interface for
if/while/switch/for, use FullExprArg for the full expressions in those
expressions, to ensure that we're emitting

Note that we are (still) not generating the right cleanups for
condition variables in for statements. That will be a follow-on
commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtNodes.def
rontend/StmtXML.def
arse/Action.h
arse/Parser.h
2f9d7b5fa1fa416089a9a72c6092e06cfd5a2f6c 25-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Have the parser tell sema whether a member declaration is a function definition. This allows sema to not emit spurious diagnostics in some invalid code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89816 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d1a7846699a82f85ff3ce6b2e383409537c3f5c5 25-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Have the parser tell sema whether a member declaration is a function definition. This allows sema to not emit spurious diagnostics in some invalid code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89816 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a400663825fe7e7a83072d33accabd690d443d4d 24-Nov-2009 Ted Kremenek <kremenek@apple.com> Cleanups and fixes to the nil-receiver checker, some of it fallout the
initial transition of the nil-receiver checker to the Checker
interface as done in r89745. Some important changes include:

1) We consolidate the BugType object used for nil receiver bug
reports, and don't include the type of the returned value in the
BugType (which would be wrong if a nil receiver bug was reported more
than once)

2) Added a new (temporary) flag to CheckerContext: DoneEvauating.
This is used by GRExprEngine when evaluating message expressions to
not continue evaluating the message expression if this flag is set.
This flag is currently set by the nil receiver checker. This is an
intermediate solution to allow the nil-receiver checker to properly
work as a plug-in outside of GRExprEngine. Basically, this flag
indicates that the entire message expression has been evaluated, not
just a precondition (which is what the nil-receiver checker does).
This flag *should not* be repurposed for general use, but just to pull
more things out of GRExprEngine that already in there as we devise a
better interface in the Checker class.

3) Cleaned up the logic in the nil-receiver checker, making the
control-flow a lot easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89804 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
fee96e043108b6e24e7d4c5464bf89ac970a7f81 24-Nov-2009 Ted Kremenek <kremenek@apple.com> Cleanups and fixes to the nil-receiver checker, some of it fallout the
initial transition of the nil-receiver checker to the Checker
interface as done in r89745. Some important changes include:

1) We consolidate the BugType object used for nil receiver bug
reports, and don't include the type of the returned value in the
BugType (which would be wrong if a nil receiver bug was reported more
than once)

2) Added a new (temporary) flag to CheckerContext: DoneEvauating.
This is used by GRExprEngine when evaluating message expressions to
not continue evaluating the message expression if this flag is set.
This flag is currently set by the nil receiver checker. This is an
intermediate solution to allow the nil-receiver checker to properly
work as a plug-in outside of GRExprEngine. Basically, this flag
indicates that the entire message expression has been evaluated, not
just a precondition (which is what the nil-receiver checker does).
This flag *should not* be repurposed for general use, but just to pull
more things out of GRExprEngine that already in there as we devise a
better interface in the Checker class.

3) Cleaned up the logic in the nil-receiver checker, making the
control-flow a lot easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89804 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
64ba265d4b05c2621add63b6d5959ac321bd5dc3 24-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Clean up the AST for while loops and fix several problems with
cleanups for while loops:

1) Make sure that we destroy the condition variable of a while statement each time through the loop for, e.g.,

while (shared_ptr<WorkInt> p = getWorkItem()) {
// ...
}

2) Make sure that we always enter a new cleanup scope for the body of the while loop, even when there is no compound expression, e.g.,

while (blah)
RAIIObject raii(blah+1);



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5656e14d91405417182171a705ed3e3d2d6d7aa3 24-Nov-2009 Douglas Gregor <dgregor@apple.com> Clean up the AST for while loops and fix several problems with
cleanups for while loops:

1) Make sure that we destroy the condition variable of a while statement each time through the loop for, e.g.,

while (shared_ptr<WorkInt> p = getWorkItem()) {
// ...
}

2) Make sure that we always enter a new cleanup scope for the body of the while loop, even when there is no compound expression, e.g.,

while (blah)
RAIIObject raii(blah+1);



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
47e18bea5f3330ad69725c7d8d23a5a3f862d14e 24-Nov-2009 John McCall <rjmccall@apple.com> Rip out TemplateIdRefExpr and make UnresolvedLookupExpr and
DependentScopeDeclRefExpr support storing templateids. Unite the common
code paths between ActOnDeclarationNameExpr and ActOnTemplateIdExpr.

This gets us to a point where we don't need to store function templates in
the AST using TemplateNames, which is critical to ripping out OverloadedFunction.

Also resolves a few FIXMEs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
f7a1a744eba4b29ceb0f20af8f34515d892fdd64 24-Nov-2009 John McCall <rjmccall@apple.com> Rip out TemplateIdRefExpr and make UnresolvedLookupExpr and
DependentScopeDeclRefExpr support storing templateids. Unite the common
code paths between ActOnDeclarationNameExpr and ActOnTemplateIdExpr.

This gets us to a point where we don't need to store function templates in
the AST using TemplateNames, which is critical to ripping out OverloadedFunction.

Also resolves a few FIXMEs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
7a63864c30f20df3da1f9d674ae731ce2aeb9fed 24-Nov-2009 John McCall <rjmccall@apple.com> DeclarationName::getIdentifier should take a const IdentifierInfo, since the
constructor does anyway.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
909e58988b3a3bb2ad36bec03aafa1302544fd73 24-Nov-2009 John McCall <rjmccall@apple.com> DeclarationName::getIdentifier should take a const IdentifierInfo, since the
constructor does anyway.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
457afc93c071f6bf414b29c2feec83d2dea9d505 24-Nov-2009 John McCall <rjmccall@apple.com> Helper function for turning a TemplateName into a DeclarationName.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
80ad16f4b2b350ddbaae21a52975e63df5aafc2c 24-Nov-2009 John McCall <rjmccall@apple.com> Helper function for turning a TemplateName into a DeclarationName.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9a1020a0528e6c9b0bf0ff1eb44cec471469f6e6 24-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Make sure redeclaration chains are properly linked, even through invalid decls. This fixes PR5415.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
46408eedfff5aa33662cedb6716a20616f3bad31 24-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Make sure redeclaration chains are properly linked, even through invalid decls. This fixes PR5415.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
a4b8172b40e73af01884d28c0e832ab117951eb6 24-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Explicitly store the condition variable within switch statements, and
make sure that this variable is destroyed when we exit the switch
statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d3d5301c44138b92bf01286183f5bf310cdd37cf 24-Nov-2009 Douglas Gregor <dgregor@apple.com> Explicitly store the condition variable within switch statements, and
make sure that this variable is destroyed when we exit the switch
statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
2d9fa6dc9811f26a4c108f176e5c756943426ff0 24-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove trailing spaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89764 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/StmtXML.def
87392c4919f7ff2653ffec8b915b4dc7099a69dc 24-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove trailing spaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89764 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/StmtXML.def
39c2ebcf7097defbccd2e5b2d56a53a61e4dbf03 24-Nov-2009 Ken Dyck <ken.dyck@onsemi.com> Add getByteSize() and getTypeSizeInBytes().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f5f514477d8a4e04e511d345b9fb896153f70e9d 24-Nov-2009 Ken Dyck <ken.dyck@onsemi.com> Add getByteSize() and getTypeSizeInBytes().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d403230ff3c353d93f8222a1545bd3024f9c47c9 24-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor undefined result checker. This is the last one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89750 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
668399b23cf18124c8c8c41a14a7712212f6fa45 24-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor undefined result checker. This is the last one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89750 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
6735d0154b73d6687960db9bd6b3a3fa0ad903ea 24-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor NilReceiverStructRet and NilReceiverLargerThanVoidPtrRet into
CallAndMessageChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89745 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
2055effed54d614b51e3501a174c9b1fe92e4de4 24-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor NilReceiverStructRet and NilReceiverLargerThanVoidPtrRet into
CallAndMessageChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89745 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
a4926fff519308f8ef6cd52137100e8c121f36f1 24-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove trailing spaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89744 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
990a07c0954c387813fa9cece48c0fdfac484d30 24-Nov-2009 Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> Remove trailing spaces

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89744 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DeclXML.def
60d96290a5b2e86a14b80c304964d67424515a52 24-Nov-2009 Ted Kremenek <kremenek@apple.com> Enhance null dereference diagnostics by indicating what variable (if any) was dereferenced. Addresses <rdar://problem/7039161>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
e576af2754bfa309bb10a518bbc17c81b9e0723f 24-Nov-2009 Ted Kremenek <kremenek@apple.com> Enhance null dereference diagnostics by indicating what variable (if any) was dereferenced. Addresses <rdar://problem/7039161>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
4b756410f4c0f06cbcd901cfeface345816289c8 24-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sketch the rest of the clang -cc1 option definitions, aka fun with C-x C-(.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89721 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
33a33d8abd7a3d49eacc05e40c00b00634bf1ee9 24-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sketch the rest of the clang -cc1 option definitions, aka fun with C-x C-(.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89721 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ccb5a3248dbe899ccd0081c0b4e62e2842956496 24-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Explicitly track the condition variable within an "if" statement,
rather than burying it in a CXXConditionDeclExpr (that occassionally
hides behind implicit conversions). Similar changes for
switch, while, and do-while will follow, then the removal of
CXXConditionDeclExpr. This commit is the canary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8cfe5a784133d90bf329fd20801824a6f71bb8ca 24-Nov-2009 Douglas Gregor <dgregor@apple.com> Explicitly track the condition variable within an "if" statement,
rather than burying it in a CXXConditionDeclExpr (that occassionally
hides behind implicit conversions). Similar changes for
switch, while, and do-while will follow, then the removal of
CXXConditionDeclExpr. This commit is the canary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
27d0014be2d42ace977745f5d232ea1359f1847c 24-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of diagnostic options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89716 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
21affc089773edc30be43ecb0022a48acdac7093 24-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of diagnostic options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89716 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
f66c615e1a2d66a99dc4be9eaa76184d51cfd402 23-Nov-2009 Ted Kremenek <kremenek@apple.com> Clean up the Checker API a little more, resolving some hidden bugs
along the way. Important changes:

1) To generate a sink node, use GenerateSink(); GenerateNode() is for
generating regular transitions. This makes the API clearer and also
allows us to use the 'bool' option to GenerateNode() for a different
purpose.

2) GenerateNode() now automatically adds the generated node to the
destination ExplodedNodeSet (autotransition) unless the client
specifies otherwise with a bool flag. Several checkers did not call
'addTransition()' after calling 'GenerateNode()', causing the
simulation path to be prematurely culled when a non-fail stop bug was
encountered.

3) Add variants of GenerateNode()/GenerateSink() that take neither a
Stmt* or a GRState*; most callers of GenerateNode() just pass in the
same Stmt* as provided when the CheckerContext object is created; we
can just use that the majority of the time. This cleanup also allows
us to potentially coelesce the APIs for evaluating branches and
end-of-paths (which currently directly use builders).

4) addTransition() no longer needs to be called except for a few
cases. We now have a variant of addTransition() that takes a
GRState*; this allows one to propagate the updated state without
caring about generating a new node explicitly. This nicely cleaned up
a bunch of cases that called autoTransition() with a bunch of
conditional logic surround the call (that common logic has now been
swallowed up by addTransition() itself).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89707 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
19d67b52b73c04ef8eb663980330a1de2b47c845 23-Nov-2009 Ted Kremenek <kremenek@apple.com> Clean up the Checker API a little more, resolving some hidden bugs
along the way. Important changes:

1) To generate a sink node, use GenerateSink(); GenerateNode() is for
generating regular transitions. This makes the API clearer and also
allows us to use the 'bool' option to GenerateNode() for a different
purpose.

2) GenerateNode() now automatically adds the generated node to the
destination ExplodedNodeSet (autotransition) unless the client
specifies otherwise with a bool flag. Several checkers did not call
'addTransition()' after calling 'GenerateNode()', causing the
simulation path to be prematurely culled when a non-fail stop bug was
encountered.

3) Add variants of GenerateNode()/GenerateSink() that take neither a
Stmt* or a GRState*; most callers of GenerateNode() just pass in the
same Stmt* as provided when the CheckerContext object is created; we
can just use that the majority of the time. This cleanup also allows
us to potentially coelesce the APIs for evaluating branches and
end-of-paths (which currently directly use builders).

4) addTransition() no longer needs to be called except for a few
cases. We now have a variant of addTransition() that takes a
GRState*; this allows one to propagate the updated state without
caring about generating a new node explicitly. This nicely cleaned up
a bunch of cases that called autoTransition() with a bunch of
conditional logic surround the call (that common logic has now been
swallowed up by addTransition() itself).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89707 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
7deb1a5f25fa38306fec3b79129df808fdb90eb6 23-Nov-2009 Anders Carlsson <andersca@mac.com> Handle converting member pointers to bool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89692 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bc0e0781da778bd5eb41a810419912893ae20448 23-Nov-2009 Anders Carlsson <andersca@mac.com> Handle converting member pointers to bool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89692 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fa5b709bcdedb3e6821f1e9277aa58403717d861 23-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a recent regression probably caused by addition of altivec-style
type-casts in the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89691 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a79f8b3989558884d9dbbbdbd4da861117345865 23-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a recent regression probably caused by addition of altivec-style
type-casts in the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89691 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1b02d43b6715b48d5230634852ab80066da3a917 23-Nov-2009 Ted Kremenek <kremenek@apple.com> Provide out-of-line definition for destructor of Checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89688 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
c6e11fff7623e07681a29c103fcf0bb5c5b39140 23-Nov-2009 Ted Kremenek <kremenek@apple.com> Provide out-of-line definition for destructor of Checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89688 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
1c5ecf0835f3153ad95c8972ac6e657717e4ab36 23-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Intercept sizeof and alignof references before they get into ASTContext methods. This fixes a crash when writing sizeof(Incomplete&), and lets ASTContext's methods do the right thing for CodeGen, which fixes PR5590.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89668 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5d484e8cf710207010720589d89602233de61d01 23-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Intercept sizeof and alignof references before they get into ASTContext methods. This fixes a crash when writing sizeof(Incomplete&), and lets ASTContext's methods do the right thing for CodeGen, which fixes PR5590.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89668 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b4a0a8293aff2c6160e11edb51d8715a670248c6 23-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Let using directives refer to namespace aliases. Fixes PR5479.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
eb0d8c95b43549ebf1acbb78d597901ace6dc8b7 23-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Let using directives refer to namespace aliases. Fixes PR5479.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6f004c558de407237662ee018bd84b897a54b71f 23-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Require a class type to be complete before probing its conversion
functions for a switch condition's conversion to integral or
enumeration type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f21bac640870db0569e697a8a14f59f6ca069f80 23-Nov-2009 Douglas Gregor <dgregor@apple.com> Require a class type to be complete before probing its conversion
functions for a switch condition's conversion to integral or
enumeration type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
40a5b87dba33d7113618513c375a152c62dcb1a8 23-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement conversion from a switch condition with class type to an
integral or enumeration type (vi user-defined conversions). Fixes PR5518.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89655 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
84fb9c0be621c9e4ca4e56f67dae2a0bb6e44821 23-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement conversion from a switch condition with class type to an
integral or enumeration type (vi user-defined conversions). Fixes PR5518.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89655 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a3f73b773c9a8b982b5ff65a3d3e25cd751a4709 23-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Tolerate extraneous "template<>" headers better, downgrading the
complaint to a warning and providing a helpful node in the case where
the "template<>" header is redundant because the corresponding
template-id refers to an explicit specialization. C++0x might still
change this behavior, and existing practice is all over the place on
the number of "template<>" headers actually needed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3ebd75399112dd9ad1c96ee5e7c59df580378cc8 23-Nov-2009 Douglas Gregor <dgregor@apple.com> Tolerate extraneous "template<>" headers better, downgrading the
complaint to a warning and providing a helpful node in the case where
the "template<>" header is redundant because the corresponding
template-id refers to an explicit specialization. C++0x might still
change this behavior, and existing practice is all over the place on
the number of "template<>" headers actually needed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
39e1291cdbae6ce02b7642b12dd39af8762cfa93 23-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Centralize and complete the computation of value- and type-dependence for DeclRefExprs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
0da76df9218d7c27b471b0a4d83a5b29fe24e5b4 23-Nov-2009 Douglas Gregor <dgregor@apple.com> Centralize and complete the computation of value- and type-dependence for DeclRefExprs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
f3dd9b5d08647f4ede159e6715c343014f8bfb2d 23-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Initial refactor of UndefBranchChecker. We still use GRBranchNodeBuilder
in the checker directly. But I don't have a better approach for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89640 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
0835e4cccfef3ea5346962722b79484f6b3ca602 23-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Initial refactor of UndefBranchChecker. We still use GRBranchNodeBuilder
in the checker directly. But I don't have a better approach for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89640 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
ed9480970db65f8705eeba0760fbe8feefe6389b 23-Nov-2009 John McCall <rjmccall@apple.com> Encapsulate "an array of TemplateArgumentLocs and two angle bracket locations" into
a new class. Use it pervasively throughout Sema.

My fingers hurt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89638 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/TemplateBase.h
ST/Type.h
d5532b6cfff2977e0c59fa6ead7f7973984a620d 23-Nov-2009 John McCall <rjmccall@apple.com> Encapsulate "an array of TemplateArgumentLocs and two angle bracket locations" into
a new class. Use it pervasively throughout Sema.

My fingers hurt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89638 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/TemplateBase.h
ST/Type.h
0fd696eb70d53f5135a62fbec67bbf1ada621293 22-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of analyzer options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89629 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
e2814d89025b847ad7363b21e3e053bbae180b54 22-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of analyzer options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89629 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
807db3e6d5c5223413cabc6207847e049eb8b4cf 22-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Save and restore the HasGen flag in MallocChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89590 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
f605aae3227ffa3a5dae8eb34fdd79ba0a0d19d1 22-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Save and restore the HasGen flag in MallocChecker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89590 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
8a1b07e8a021935affe1f3e056a3fdcf1dacfd80 22-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove UndefinedAssignmentChecker's header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
c3372e0ee8dac4fc11c771a92b05e4641bce6b32 22-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove UndefinedAssignmentChecker's header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
331835cdfdc06157ab5143808dd44f3143e9861e 22-Nov-2009 John McCall <rjmccall@apple.com> Consider a FunctionTemplate to be an overload all on its lonesome. Track
this information through lookup rather than rederiving it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
7453ed4cb2cab113de3378df371b1c6f1243d832 22-Nov-2009 John McCall <rjmccall@apple.com> Consider a FunctionTemplate to be an overload all on its lonesome. Track
this information through lookup rather than rederiving it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a238d6daa15f845738a8b15a3bc9f5b84617744b 21-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch implements objective-c's 'SEL' type as a built-in
type and fixes a long-standing code gen. crash reported in
at least two PRs and a radar. (radar 7405040 and pr5025).
There are couple of remaining issues that I would like for
Ted. and Doug to look at:

Ted, please look at failure in Analysis/MissingDealloc.m.
I have temporarily added an expected-warning to make the
test pass. This tests has a declaration of 'SEL' type which
may not co-exist with the new changes.

Doug, please look at a FIXME in PCHWriter.cpp/PCHReader.cpp.
I think the changes which I have ifdef'ed out are correct. They
need be considered for in a few Indexer/PCH test cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
rontend/PCHBitCodes.h
13dcd00615de5c4279d97bdf63cd5f0a14fd9dcc 21-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch implements objective-c's 'SEL' type as a built-in
type and fixes a long-standing code gen. crash reported in
at least two PRs and a radar. (radar 7405040 and pr5025).
There are couple of remaining issues that I would like for
Ted. and Doug to look at:

Ted, please look at failure in Analysis/MissingDealloc.m.
I have temporarily added an expected-warning to make the
test pass. This tests has a declaration of 'SEL' type which
may not co-exist with the new changes.

Doug, please look at a FIXME in PCHWriter.cpp/PCHReader.cpp.
I think the changes which I have ifdef'ed out are correct. They
need be considered for in a few Indexer/PCH test cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
rontend/PCHBitCodes.h
7b9d4282306c37af1f96e17585a07f6a31427ed9 21-Nov-2009 Sean Hunt <rideau3@gmail.com> Fix 80-cols violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89558 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
37ac7990a6236ba1c42cfaa0d0efae921afd0e51 21-Nov-2009 Sean Hunt <rideau3@gmail.com> Fix 80-cols violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89558 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
4b7111c501f61fb9a618408324f179c9dac00136 21-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add 1+2 consts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c52365674b5b157a0486f75c12dd9f4cc41d8089 21-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add 1+2 consts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
a32612ec0fdca70ce6dea0c7477e64bef1691906 21-Nov-2009 John McCall <rjmccall@apple.com> "Incremental" progress on using expressions, by which I mean totally ripping
into pretty much everything about overload resolution in order to wean
BuildDeclarationNameExpr off LookupResult::getAsSingleDecl(). Replace
UnresolvedFunctionNameExpr with UnresolvedLookupExpr, which generalizes the
idea of a non-member lookup that we haven't totally resolved yet, whether by
overloading, argument-dependent lookup, or (eventually) the presence of
a function template in the lookup results.

Incidentally fixes a problem with argument-dependent lookup where we were
still performing ADL even when the lookup results contained something from
a block scope.

Incidentally improves a diagnostic when using an ObjC ivar from a class method.
This just fell out from rewriting BuildDeclarationNameExpr's interaction with
lookup, and I'm too apathetic to break it out.

The only remaining uses of OverloadedFunctionDecl that I know of are in
TemplateName and MemberExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/StmtNodes.def
ba13543329afac4a0d01304ec2ec4924d99306a6 21-Nov-2009 John McCall <rjmccall@apple.com> "Incremental" progress on using expressions, by which I mean totally ripping
into pretty much everything about overload resolution in order to wean
BuildDeclarationNameExpr off LookupResult::getAsSingleDecl(). Replace
UnresolvedFunctionNameExpr with UnresolvedLookupExpr, which generalizes the
idea of a non-member lookup that we haven't totally resolved yet, whether by
overloading, argument-dependent lookup, or (eventually) the presence of
a function template in the lookup results.

Incidentally fixes a problem with argument-dependent lookup where we were
still performing ADL even when the lookup results contained something from
a block scope.

Incidentally improves a diagnostic when using an ObjC ivar from a class method.
This just fell out from rewriting BuildDeclarationNameExpr's interaction with
lookup, and I'm too apathetic to break it out.

The only remaining uses of OverloadedFunctionDecl that I know of are in
TemplateName and MemberExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/StmtNodes.def
53529e8c71aa94b2ea008510a577d59ba8afe3f6 21-Nov-2009 Sean Hunt <rideau3@gmail.com> Added rudimentary C++0x attribute support.
The following attributes are currently supported in C++0x attribute
lists (and in GNU ones as well):
- align() - semantics believed to be conformant to n3000, except for
redeclarations and what entities it may apply to
- final - semantics believed to be conformant to CWG issue 817's proposed
wording, except for redeclarations
- noreturn - semantics believed to be conformant to n3000, except for
redeclarations
- carries_dependency - currently ignored (this is an optimization hint)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
arse/Parser.h
bbd37c62e34db3f5a95c899723484a76c71d7757 21-Nov-2009 Sean Hunt <rideau3@gmail.com> Added rudimentary C++0x attribute support.
The following attributes are currently supported in C++0x attribute
lists (and in GNU ones as well):
- align() - semantics believed to be conformant to n3000, except for
redeclarations and what entities it may apply to
- final - semantics believed to be conformant to CWG issue 817's proposed
wording, except for redeclarations
- noreturn - semantics believed to be conformant to n3000, except for
redeclarations
- carries_dependency - currently ignored (this is an optimization hint)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
arse/Parser.h
1ecdb74fddd711f4d29fb5492c5c04243ca5b115 21-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement C++ [temp.param]p2 correctly, looking ahead when we see a
"typename" parameter to distinguish between non-type and type template
parameters. Fixes the actual bug in PR5559.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89532 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
98440b4ac17dc5f85ea3db683c1c1785449c17e1 21-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement C++ [temp.param]p2 correctly, looking ahead when we see a
"typename" parameter to distinguish between non-type and type template
parameters. Fixes the actual bug in PR5559.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89532 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5ae2d050d90fd66fbca01a26d204cef01e2ce000 21-Nov-2009 Ted Kremenek <kremenek@apple.com> Pull BadCallChecker int UndefinedArgChecker, and have UndefinedArgChecker also handled undefined receivers in message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89524 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c79d7d49c5ec42e8bb6ac34350ebb5bc24ca663d 21-Nov-2009 Ted Kremenek <kremenek@apple.com> Pull BadCallChecker int UndefinedArgChecker, and have UndefinedArgChecker also handled undefined receivers in message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89524 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
14a70a3beef619fd82fc190754023656554f452b 21-Nov-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Add SigAtomicType to TargetInfo, Needed for MSP and PIC Targets, Credit to Ken Dyck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89520 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9cf910efc4fb7001a6d276ed2eabf01f0f0efaaa 21-Nov-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Add SigAtomicType to TargetInfo, Needed for MSP and PIC Targets, Credit to Ken Dyck.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89520 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
500ca35d30b275fae4eb834d44436459f6f9f6a6 21-Nov-2009 Ted Kremenek <kremenek@apple.com> More checker refactoring. Passing undefined values in a message expression is now handled by UndefinedArgChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
64fa85855638d69e56ed1b2fad7ed65deb3ecdfd 21-Nov-2009 Ted Kremenek <kremenek@apple.com> More checker refactoring. Passing undefined values in a message expression is now handled by UndefinedArgChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
9ae4976e33e484b05a6ed1910a10570fcafce8f5 21-Nov-2009 Mike Stump <mrs@apple.com> Checkpoint current work. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
2bf701ee4babb5c4a9ea99ca4675c5ef040bd402 21-Nov-2009 Mike Stump <mrs@apple.com> Checkpoint current work. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
51d8507971945b0b848ecedf74cafda48d2268be 21-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Cope with extraneous "template" keyword when providing an out-of-line
definition of a member template (or a member thereof). Fixes PR5566.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89512 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a481edb1b11c956a46cb42cd0dc4dd9851c10801 21-Nov-2009 Douglas Gregor <dgregor@apple.com> Cope with extraneous "template" keyword when providing an out-of-line
definition of a member template (or a member thereof). Fixes PR5566.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89512 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1a21a63ef46cda04659418aee51314641860bfe6 21-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add clang -cc1 dependency output options parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89508 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
1bed0c3a555d9e32de9dead55658b4a28a4d6e03 21-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add clang -cc1 dependency output options parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89508 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
e57bf1d80dc8e70add82f4a40a0c8014aa92e800 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Switch CompilerInvocation::CreateFromArgs to take const char** arguments until Driver itself switches to StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89503 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
20be8c4551d49fe66835baf1200be85ac2fd0c86 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Switch CompilerInvocation::CreateFromArgs to take const char** arguments until Driver itself switches to StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89503 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
a36fcdcff6335dbae850c2ba882dee8b97384baf 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Update for palign intrinsic fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
56cd500ff6851b081261d72c98b25662c3c4a4fb 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Update for palign intrinsic fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/BuiltinsX86.def
32d9526bd9375a5078b811053fbe7573699e80d4 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass '-mcpu' 'FOO' instead of '-mcpu=FOO'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89498 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
a31100e62f83933432df9092a04e48f9e5561a14 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass '-mcpu' 'FOO' instead of '-mcpu=FOO'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89498 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
f1408014375a5a65a277e8aa177055878939490f 20-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement C++ [basic.lookup.classref]p3, which states how the type
name 'T' is looked up in the expression

t.~T()

Previously, we weren't looking into the type of "t", and therefore
would fail when T actually referred to an injected-class-name. Fixes
PR5530.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89493 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f6e6fc801c700c7b8ac202ddbe550d9843a816fc 20-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement C++ [basic.lookup.classref]p3, which states how the type
name 'T' is looked up in the expression

t.~T()

Previously, we weren't looking into the type of "t", and therefore
would fail when T actually referred to an injected-class-name. Fixes
PR5530.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89493 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a1a1086a21b5126cb786905bc1c8dfd6d5599d72 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of CodeGenOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89464 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
50a4487683a7e09fb93e8b506181e034241a0ffe 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add clang -cc1 parsing of CodeGenOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89464 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
9fcbca2b6e4fb937d19de25c3db9aa2f588f87f9 20-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> no need to cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89451 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
21433a5fece2bb9a2c1792c18edd13b8d77e0bbd 20-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> no need to cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89451 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
46f33d7a3e4e75d629a94dc7adb334441b64dbc7 20-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> No need to pass the state argument explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89447 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
04b826daa7d5e81d163adc10bf23248caedc99df 20-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> No need to pass the state argument explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89447 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
e1dbc37bcd8fd50ca8d24c0860fc7a8c23417520 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add parsing for TargetOptions to CompilerInvocation::CreateFromArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89435 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
31db76cb2dde031ab3262808ac233889daf7d720 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add parsing for TargetOptions to CompilerInvocation::CreateFromArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89435 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.td
ce6419e14dedcb3b8345b6d09dabf5ac7b28407f 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Ignore -Wstrict-overflow={3,4,5} for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
6ac78bf87e2a3c22a60db2d8c495f7c75ae1dcb0 20-Nov-2009 Daniel Dunbar <daniel@zuster.org> Ignore -Wstrict-overflow={3,4,5} for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
ccb556aedb901dfaad70f5ea8b815e7c47a533e6 19-Nov-2009 John McCall <rjmccall@apple.com> Draw a brighter line between "unresolved" expressions, where we have done the
appropriate lookup and simply can't resolve the referrent yet, and
"dependent scope" expressions, where we can't do the lookup yet because the
entity we need to look into is a dependent type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
865d447ac6a4721ab58e898d014a21f2eff74b06 19-Nov-2009 John McCall <rjmccall@apple.com> Draw a brighter line between "unresolved" expressions, where we have done the
appropriate lookup and simply can't resolve the referrent yet, and
"dependent scope" expressions, where we can't do the lookup yet because the
entity we need to look into is a dependent type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
1afca66f4228d6acdc8ef2bf31a032184a36d506 19-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Don't issue spurious diagnostic with Obj-C fast enumeration.
(radar 7409165).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89400 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a7cf23a72b0846fc5aacf3f38bb8c8f9e76784cf 19-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Don't issue spurious diagnostic with Obj-C fast enumeration.
(radar 7409165).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89400 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
61985cf402d2ab2347c1d103ccc07c25e2935ff5 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix some default in the option classes, and some CompilerInvocation argification
errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89388 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
rontend/FrontendOptions.h
1be3b3bd5c983e3fc5b78db155632d2d2d6aa968 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix some default in the option classes, and some CompilerInvocation argification
errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89388 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
rontend/FrontendOptions.h
41d2ba60853dbcf8594ddd0459a308851ea0e4a4 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing dependency on TableGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89387 91177308-0d34-0410-b5e6-96231b3b80d8
river/Makefile
f7b56fa451893699178b17d88644447bd5dbabd3 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing dependency on TableGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89387 91177308-0d34-0410-b5e6-96231b3b80d8
river/Makefile
3af73da5dae06dddcbb29c36415798f50286f229 19-Nov-2009 Ted Kremenek <kremenek@apple.com> Fix 80 col. violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89382 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c05f23994720b3eb0a3b3494e7bfcec9e1536c89 19-Nov-2009 Ted Kremenek <kremenek@apple.com> Fix 80 col. violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89382 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5e0594fbfee826dc8766317aaae775b25dff8dd1 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move INPUT and UNKNOWN sentinel options into the OptParser.td file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89371 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.h
river/OptParser.td
river/Options.h
a08304a38c2fecd647f41039d2245f0c4cd33504 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move INPUT and UNKNOWN sentinel options into the OptParser.td file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89371 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.h
river/OptParser.td
river/Options.h
4c64599a52bf40b3843614c61b41d34dba44eb48 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Sentinel flag to option kinds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89367 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
f010b26b60f3f51b6fa0335218c9a458ec30cff4 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Sentinel flag to option kinds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89367 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptParser.td
393c00d16a75731eceb7f815751722e4b4a950e4 19-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Cope with an amusingly little anomaly with dependent types and
incomplete array initialization, where we have the following in a
template:

int a[] = { 1, 2, something-value-dependent };
// ...
sizeof(a);

The type of "a" appears to be a non-dependent IncompleteArrayType, but
treating it as such makes the sizeof(a) fail at template definition
time. We now correctly handle this by morphing the IncompleteArrayType
into a DependentSizedArrayType with a NULL expression, indicating that
its size has no corresponding expression (and, therefore, the type is
distinct from others).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
cb78d8852a454684c987220132cdb5e54dd00121 19-Nov-2009 Douglas Gregor <dgregor@apple.com> Cope with an amusingly little anomaly with dependent types and
incomplete array initialization, where we have the following in a
template:

int a[] = { 1, 2, something-value-dependent };
// ...
sizeof(a);

The type of "a" appears to be a non-dependent IncompleteArrayType, but
treating it as such makes the sizeof(a) fail at template definition
time. We now correctly handle this by morphing the IncompleteArrayType
into a DependentSizedArrayType with a NULL expression, indicating that
its size has no corresponding expression (and, therefore, the type is
distinct from others).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ef7852884e0ae4748a7e2e91e7961b623062a4f4 19-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Objective-C code completion within properties after "setter = " or
"getter = ", to provide suitable method names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89334 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
ema/CodeCompleteConsumer.h
4ad9685b3e2d5e2923c9cda7baaf7973ef0b1c62 19-Nov-2009 Douglas Gregor <dgregor@apple.com> Objective-C code completion within properties after "setter = " or
"getter = ", to provide suitable method names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89334 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
ema/CodeCompleteConsumer.h
ba4210eb6cd5c5d06fbb1d86bb75f010bd922b9a 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing init.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89331 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
47cd787877c0a402c16956810ac75118f571f037 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing init.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89331 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
163b52ba0a0954e6a04a1bdfdcc58d87565e7c7a 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sketch .td file and build system goop for OptTable based clang-cc options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89330 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.h
river/CC1Options.td
river/CMakeLists.txt
river/Makefile
8adfcff02334455b6f95bc4e1f347204f7c0dd3e 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sketch .td file and build system goop for OptTable based clang-cc options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89330 91177308-0d34-0410-b5e6-96231b3b80d8
river/CC1Options.h
river/CC1Options.td
river/CMakeLists.txt
river/Makefile
2d944943497eca819e239dad3c320d61923cef26 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out OptTable::ParseArgs, for parsing an entire argument vector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89327 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
847abaa62883b6c20005bdd3346ebbd44e46dbac 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out OptTable::ParseArgs, for parsing an entire argument vector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89327 91177308-0d34-0410-b5e6-96231b3b80d8
river/OptTable.h
3974c2db5492c532a8d144200c37e3f5f487a071 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Remove some more llvm::cl::init arguments, by only setting values when
the argument is given.

Also, tweak Opt.Sysroot defaulting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89318 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
c59dc9274612f318d43910a3b5de19997a8eb656 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Remove some more llvm::cl::init arguments, by only setting values when
the argument is given.

Also, tweak Opt.Sysroot defaulting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89318 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
469415844fdbb50242c9a5836628732adab05098 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: ArgList doesn't depend on Options.h anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89313 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
265e9ef9f3ef30a97790e6e7bbc3c17d97981ca7 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: ArgList doesn't depend on Options.h anymore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89313 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
0cefb592b02535db64382a15da204b7b770e56e5 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Take option ID for {Input,Unknown}Option, to drop dependency on actual options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89312 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
a0289fda5b5d67ad49596a5e1f62e1f9db497d06 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Take option ID for {Input,Unknown}Option, to drop dependency on actual options.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89312 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
ef9c002425bf3acfe3659ab08de01b3abec0cdc1 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Introduce OptSpecifier class for protecting access to an option id.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89310 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptSpecifier.h
river/OptTable.h
river/Option.h
9e1f98260a1842df4bb8e6de0b592a1622dcfdc0 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Introduce OptSpecifier class for protecting access to an option id.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89310 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptSpecifier.h
river/OptTable.h
river/Option.h
0d76dea24f8314ee742905e062b2ee538b90bd1a 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using explicit {getLast,has}ArgNoClaim functions instead of taking a Claim argument.
- Most driver code always claims, and bool arguments don't play nice with the overloads.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89308 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
e4bdae78c69d2a09ee96619cc5ccf81441674412 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using explicit {getLast,has}ArgNoClaim functions instead of taking a Claim argument.
- Most driver code always claims, and bool arguments don't play nice with the overloads.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89308 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
d6678af9737c6700ac613964d955496f0636f44b 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Resolve inconsistency in matching options against options which are
aliases -- just treat this case as an (unchecked) client error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89306 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
b32aa51ce9b608002a031e8ca682f073e28024cf 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Resolve inconsistency in matching options against options which are
aliases -- just treat this case as an (unchecked) client error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89306 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
514bc4437862ec6996e9c51c3f672f3a03277998 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove extra ';', found by clang++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89304 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6f776b0c943c0065b5148297e61afbe29d54cc51 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove extra ';', found by clang++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89304 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6e60f5fab8203f51b1eac69c8f071c786d5fa39e 19-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve code completion for Objective-C message sends, so that we
provide completion results before each keyword argument, e.g.,

[foo Method:arg WithArg1:arg1 WithArg2:arg2]

We now complete before "WithArg1" and before "WithArg2", in addition
to completing before "Method".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89290 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
d3c6854153fd6bc6a412a29e4491dbd0a47bdb14 19-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve code completion for Objective-C message sends, so that we
provide completion results before each keyword argument, e.g.,

[foo Method:arg WithArg1:arg1 WithArg2:arg2]

We now complete before "WithArg1" and before "WithArg2", in addition
to completing before "Method".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89290 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
7e37793a51f1a6ad5d4369177235a3e3a52ddce3 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using TableGen'erated Options.inc instead of Options.def file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89288 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
river/CMakeLists.txt
river/Makefile
river/OptParser.td
river/Options.def
river/Options.h
river/Options.td
akefile
64bdce3f02091b0a4e1528d690495970c1249803 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch to using TableGen'erated Options.inc instead of Options.def file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89288 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
river/CMakeLists.txt
river/Makefile
river/OptParser.td
river/Options.def
river/Options.h
river/Options.td
akefile
dd7c00f2ae32ea2c1cc955b122ec45ced6d9b149 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Split OptTable out into OptTable.{h,cpp}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89283 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptTable.h
river/Options.h
27e738d0d3f781672a5999d2a9e2827b00a97d0c 19-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Split OptTable out into OptTable.{h,cpp}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89283 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/OptTable.h
river/Options.h
7ee33727703b1972fced6a6e0fb4aee656d8b4a6 19-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve code-completion results for the flags in an @property
declaration by providing patterns for "getter = <method>" and "setter
= <method>". As part of this, invented a new "pattern" result kind
that is merely a semantic string. The "pattern" result kind should
help with other kinds of code templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89277 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
54f016150acf7e0d4dab702d3d7d5e40ba1fdebf 19-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve code-completion results for the flags in an @property
declaration by providing patterns for "getter = <method>" and "setter
= <method>". As part of this, invented a new "pattern" result kind
that is merely a semantic string. The "pattern" result kind should
help with other kinds of code templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89277 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
3d682f21889a52f57b244e4c3635f1640ecb52f1 19-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Rename CodeCompleteObjCProperty to something more specific. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89267 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a93b108e025ef2480fa867cc533e7781a40a639b 19-Nov-2009 Douglas Gregor <dgregor@apple.com> Rename CodeCompleteObjCProperty to something more specific. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89267 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2359600f15eeb83b24ae675045a07cd239a629c2 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion after @dynamic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89265 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
424b2a546dbd09cf70d43087771c7fff851ca158 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Code completion after @dynamic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89265 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a6a4e66b9a313407931ac91b941221b013080b3a 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for Objective-C @synthesized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89259 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
322328b8a65ad2e45829eb06d245addb64037f6f 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Code completion for Objective-C @synthesized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89259 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c764354133398d5decdb8f88b72e6c008c93bbbd 18-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch fixes a bug in misdiagnosing correct
use of pointer to data member.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
05ebda9490e15f900edb2e5c690e067abcb37b2e 18-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> This patch fixes a bug in misdiagnosing correct
use of pointer to data member.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
df3ee13cdbbbd68e45b31f97dd71197575b65d55 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Rework OptTable to have no dependency on the options it manages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89234 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
a79a2b5bf23d1422eed9be3793186ebbba7532ec 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Rework OptTable to have no dependency on the options it manages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89234 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
1e427b002936650c300beb45e6ffbaa6654e3d40 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Store Option ID field as unsigned to drop dependency on the options
type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89232 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
1d189e187b1bf7d7677aefd7482bcdad29683a0c 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Store Option ID field as unsigned to drop dependency on the options
type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89232 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
f9af3b2becb7e7dbc76a73af721f2da994df992e 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics and recovery when parsing @synthesized definitions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89227 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b328c4251a9d2db704b3bd46ec04884dc8e56332 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics and recovery when parsing @synthesized definitions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89227 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
502995460462ad6a49a9cbb84dab33d7ea75b437 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement code completion for Objective-C category names in @interface
and @implementation declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
33ced0b8550f3e7169f326944731ee02e9338659 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement code completion for Objective-C category names in @interface
and @implementation declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
fcffbe7ac7f3c0b86bbef40990ccbeadc6ffdcee 18-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Improve on diagnosing type mismatches because of
lack of viable convesion functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89216 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc5306ac8a39cdd5e7f83e597cba911e97c4a595 18-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Improve on diagnosing type mismatches because of
lack of viable convesion functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89216 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c4db6723b8630f6a5184e9e8b70b41b374484c7a 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch Options.def to storing flags as a bitmask (instead of mangled
into a string).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89212 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
a4f64805e032fa6a669434ca3f9c04b02f1bbd97 18-Nov-2009 Daniel Dunbar <daniel@zuster.org> Driver: Switch Options.def to storing flags as a bitmask (instead of mangled
into a string).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89212 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
11881a45ef70f5107501a89e82e2a328b24ecf6c 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for Objective-C class names after @interface,
@implementation, and in the declaration of the superclass of an
@interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89207 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3b49aca913dc0c1838321b9bb2dc9a4cb4681922 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Code completion for Objective-C class names after @interface,
@implementation, and in the declaration of the superclass of an
@interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89207 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
16a726b129e225e2560927f8e9668ddeb5d8f492 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion after @property, providing the names of forward-declared properties

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89196 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
083128f6b13dfa4fc615a838c49b516d901b1ac0 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Code completion after @property, providing the names of forward-declared properties

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89196 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c7d37b2f351456c5bff6ef45303fb6323c05355a 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for Objective-C properly lists

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89194 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
55385fe3e723cd675001e45f42d61adde6b7f075 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Code completion for Objective-C properly lists

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89194 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9d020f660eea532c69449d77862f842b1538c62b 18-Nov-2009 John McCall <rjmccall@apple.com> Incremental progress on using declarations. Split UnresolvedUsingDecl into
two classes, one for typenames and one for values; this seems to have some
support from Doug if not necessarily from the extremely-vague-on-this-point
standard. Track the location of the 'typename' keyword in a using-typename
decl. Make a new lookup result for unresolved values and deal with it in
most places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/DeclNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
7ba107a1863ddfa1664555854f0d7bdb3c491c92 18-Nov-2009 John McCall <rjmccall@apple.com> Incremental progress on using declarations. Split UnresolvedUsingDecl into
two classes, one for typenames and one for values; this seems to have some
support from Doug if not necessarily from the extremely-vague-on-this-point
standard. Track the location of the 'typename' keyword in a using-typename
decl. Make a new lookup result for unresolved values and deal with it in
most places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/DeclNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
1df77a912b351f6c9d668b1c335abf301f04a8ab 18-Nov-2009 Ted Kremenek <kremenek@apple.com> Add ObjCClassDecl::getSourceRange().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2dbdd622d02d1bfbe1e5bcf421b07b74c7a748f1 18-Nov-2009 Ted Kremenek <kremenek@apple.com> Add ObjCClassDecl::getSourceRange().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d1448cac120e790d85643475f88a02ede2fb53fa 18-Nov-2009 Ted Kremenek <kremenek@apple.com> Add SourceLocations to ObjCClassDecl for the class identifiers referenced by @class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89170 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
321c22f1c4271c3d9a3d4d3fc18847f948ab595b 18-Nov-2009 Ted Kremenek <kremenek@apple.com> Add SourceLocations to ObjCClassDecl for the class identifiers referenced by @class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89170 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cc63b0ae295c41df978ae287d9fbf452394553bf 18-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Rename Objective-C message send completion functions to indicate that we're referring to message sends

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89164 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
60b01cc44855d62979f76dc4cdffa4277f321049 18-Nov-2009 Douglas Gregor <dgregor@apple.com> Rename Objective-C message send completion functions to indicate that we're referring to message sends

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89164 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
47c04774d0e646160cb4cbc2ae1ea9f2e5df04d7 18-Nov-2009 Ted Kremenek <kremenek@apple.com> Pass source locations of identifiers referenced by @class through Action::ActOnForwardClassDeclaration().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89162 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c09cba67d0ad01e53e0fed07322e95dd281bcfd9 18-Nov-2009 Ted Kremenek <kremenek@apple.com> Pass source locations of identifiers referenced by @class through Action::ActOnForwardClassDeclaration().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89162 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
93e324813bd8c55ac19aaac0123eb4e294a6fa44 17-Nov-2009 David Chisnall <csdavec@swan.ac.uk> Added block type introspection support.

As per Fariborz's suggestion, committed now but can be reverted later if the used flag is problematic for Apple.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/LangOptions.h
river/Options.def
5e530af5d51572a0ed5dbe50da54bd333840c63d 17-Nov-2009 David Chisnall <csdavec@swan.ac.uk> Added block type introspection support.

As per Fariborz's suggestion, committed now but can be reverted later if the used flag is problematic for Apple.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/LangOptions.h
river/Options.def
6b16b29529787b8d7b5403b0e338d6aff587db9f 17-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a typo, reported by Doug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89107 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1ac7104947020a60430ba6f519cd5869af77046f 17-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a typo, reported by Doug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89107 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e4f33fbd5005a236d88314528058d6db8b12c506 17-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure, for sure this time, that expressions do not have reference type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
905d11d53aeb6b26744f44fedc2b2820c7a62df6 17-Nov-2009 Douglas Gregor <dgregor@apple.com> Make sure, for sure this time, that expressions do not have reference type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ab9c3e9089b542af76352ac862a71b4fe709a958 17-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> StringRef'ify CodeCompletionString

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89102 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
92eff466867fd6a82fb3e245f2091e96a3e9888e 17-Nov-2009 Douglas Gregor <dgregor@apple.com> StringRef'ify CodeCompletionString

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89102 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e5e4346173de621c9609abd1bd772c4816c97813 17-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix MSVC warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89092 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
bd8405898be641ad9574b210fb70c5d449cef578 17-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix MSVC warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89092 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
c85b911b3e178a14c63e3d5e2ed7e2492f0a3132 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate TargetInfo::getDefaultLangOptions, this kind of logic is better done
in the driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
2fc430d5483545b47a5a22f45338ff54f5362e34 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Eliminate TargetInfo::getDefaultLangOptions, this kind of logic is better done
in the driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89073 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1339191d4d6dc66f2c7ba2b206064a61bcb6449a 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add -fblocks, -stack-protector, and -fobjc-nonfragile-abi defaulting to driver,
instead of using getDefaultLangOptions.
- Remove unused -fobjc-tight-layout while at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89065 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/ToolChain.h
9e5cc6b703b2d0013f13800c2ffbeb3cf85fcfad 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add -fblocks, -stack-protector, and -fobjc-nonfragile-abi defaulting to driver,
instead of using getDefaultLangOptions.
- Remove unused -fobjc-tight-layout while at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89065 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/ToolChain.h
96baada03b8e62d21f644f89953736fed5a9afa2 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add driver::types::isObjC predicate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89064 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
77544fde702fdab2a6150ba812ecf04eb1e6eab6 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add driver::types::isObjC predicate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89064 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
ab24406c3e2ae6c7f3e6841482b3cf4575cddc11 17-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add EvalEndPath interface to Checker. Now we can check memory leaked at the
end of the path. Need to unify interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89063 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
243fde9f549a8f5f000c4baccb572dd0b7266a41 17-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add EvalEndPath interface to Checker. Now we can check memory leaked at the
end of the path. Need to unify interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89063 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
e6c9f54d16b0af0c3962d456dbc37699d0ccde08 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -fnext-runtime defaulting to driver (and change clang-cc default to
-fnext-runtime), instead of using getDefaultLangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
c5a97ec19408c3dca4b6a6385f11d8c783b94d0b 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -fnext-runtime defaulting to driver (and change clang-cc default to
-fnext-runtime), instead of using getDefaultLangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
2614ec30662bebbb1b9b7a4fa4c82eb5f5fc34b0 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -fms-extensions defaulting to driver, instead of using getDefaultLangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89057 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
0be42c44f0199c5023b542d6a6d2e66eb594f27d 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -fms-extensions defaulting to driver, instead of using getDefaultLangOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89057 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
660f0a0ecd56cfda36aa921a6c68b065e2e4988f 17-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Silence some warnings produced by Clang, and add a missing header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89051 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
6490ae5003226cae28f980648948bea8b21a8638 17-Nov-2009 Douglas Gregor <dgregor@apple.com> Silence some warnings produced by Clang, and add a missing header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89051 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
636e79c53a7a358829b95d8f40e0a658c2d2ef36 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add initial cut at CompilerInvocation::toArgs, which "serializes" the CompilerInvocation into a list of arguments which can be passed to clang-cc (eventually, clang -cc1).
- Unfortunately, this is currently a tedious and manual translation. Eventually it would be nice to automatically generate this code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89049 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
b3375cba7938e01895bb504e7e48ad94a2e07dd1 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add initial cut at CompilerInvocation::toArgs, which "serializes" the CompilerInvocation into a list of arguments which can be passed to clang-cc (eventually, clang -cc1).
- Unfortunately, this is currently a tedious and manual translation. Eventually it would be nice to automatically generate this code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89049 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
5b05662377e2fd448c3e356aa6cc0bfe9e38bb35 17-Nov-2009 John McCall <rjmccall@apple.com> Instead of hanging a using declaration's target decls directly off the using
decl, create shadow declarations and put them in scope like normal.
Work in progress.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
9488ea120e093068021f944176c3d610dd540914 17-Nov-2009 John McCall <rjmccall@apple.com> Instead of hanging a using declaration's target decls directly off the using
decl, create shadow declarations and put them in scope like normal.
Work in progress.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
62515faf2aaec4565171d15e7ae40480ed92731d 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Simplify PreprocessorOptions, it doesn't need abstracted field access.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89047 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
049d3a06ea9f8fc03582488a2b7f24512565a335 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Simplify PreprocessorOptions, it doesn't need abstracted field access.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89047 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
3e8f5018fc04d40e2489fc703f0c847d5c57115a 17-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Add missing #include found by Clang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
b91c7f67e85309fbd4cd5007c873e1d27b86e8bb 17-Nov-2009 Douglas Gregor <dgregor@apple.com> Add missing #include found by Clang

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
c7fe2da068df4621ab3fd372b2bcb8fd8def8947 17-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Require the object type of a member access expression ("." or "->") to
be complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
03c5705a99a96a471b2868898ee9688a6721e02a 17-Nov-2009 Douglas Gregor <dgregor@apple.com> Require the object type of a member access expression ("." or "->") to
be complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
56a9e76f8a95f02d8a25885c54e7ed7637fc0119 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Reorder options alphabetically.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89041 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
145e2ea10fb6240265c3fac8137a5f2b01b1a426 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Reorder options alphabetically.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89041 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
73490257d12d78978dfa80ed2bfd2b36dca6f540 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove unused program action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89038 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
a9be12792943d0aa2cf1eff9c0c0c0e5fd137b80 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove unused program action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89038 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
a4c841e4a1167c32eeeb8259186aa62052c26348 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Rename CompilerInvocation::DiagOpts -> DiagnosticOpts for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89037 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
35ffe2fc57bcf040f652fba70e8f3ff3fcf95115 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Rename CompilerInvocation::DiagOpts -> DiagnosticOpts for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89037 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
67aebf034e4803209287e79311ebca551b46af9b 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing defaults to AnalyzerOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89036 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
093333a46c5155ec1bdcb460fe33201338bc3c45 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add missing defaults to AnalyzerOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89036 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
dcaa7786383f799f3ebdc4fbe2bd6ea817e4642a 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove unused IsCXXAware and IgnoreSysRoots option from HeaderSearchOptions::Entry.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89035 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
1b483e70ad3f670f6dd0bc62dbe0921a28195f24 17-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove unused IsCXXAware and IgnoreSysRoots option from HeaderSearchOptions::Entry.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89035 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
2fb7bee22e3174d9103071aee16fc9ab7affe879 17-Nov-2009 Anders Carlsson <andersca@mac.com> Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9f853df0d3c25c646907a7b7ef22398370def00f 17-Nov-2009 Anders Carlsson <andersca@mac.com> Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8a51708c5f35a776402a3b981ff7b2c391034c0d 17-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89032 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRWorkList.h
6a45c2bffc9b73290aad3041595b3e662b690bdc 17-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89032 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRWorkList.h
4f4b5bcdce90be1ebc9373c500cc07cfb458400c 17-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> When querying type qualifiers on QualType via one of the "non-local"
interfaces (which are used throughout the front end), combine the
qualifiers on the QualType instance with the qualifiers on the
canonical type to produce the set of qualifiers that, semantically,
apply to that type. This should design away a large category of
"qualifier-hidden-behind-a-typedef" buts like we saw in PR5383.

Performance-wise, this caused a regression of ~0.5% on Cocoa.h, but
it's totally worth it. We may actually be able to get a little more
performance back by using CanQualType more often.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeLoc.h
fa1a06e80706846fa15e0bd44671bdc3dfc53d84 17-Nov-2009 Douglas Gregor <dgregor@apple.com> When querying type qualifiers on QualType via one of the "non-local"
interfaces (which are used throughout the front end), combine the
qualifiers on the QualType instance with the qualifiers on the
canonical type to produce the set of qualifiers that, semantically,
apply to that type. This should design away a large category of
"qualifier-hidden-behind-a-typedef" buts like we saw in PR5383.

Performance-wise, this caused a regression of ~0.5% on Cocoa.h, but
it's totally worth it. We may actually be able to get a little more
performance back by using CanQualType more often.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeLoc.h
33caf24a738012a8cf0db8c40d0af2da9afb0a43 17-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove extra space in warn_maynot_respond diagnostic. Fixes <rdar://problem/7364274>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a661bee756bf0c0ca1d42377c6f7b0936d171f48 17-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove extra space in warn_maynot_respond diagnostic. Fixes <rdar://problem/7364274>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d7e73b50ce836808c23a20ecd10b316a604e9585 16-Nov-2009 Daniel Dunbar <daniel@zuster.org> Store more information in HeaderSearchOptions so that its initialization is not
language dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88981 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
c363cb1929c7908c8c8c4b77d025c2ccb09284ae 16-Nov-2009 Daniel Dunbar <daniel@zuster.org> Store more information in HeaderSearchOptions so that its initialization is not
language dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88981 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
c79209789205c9de5fcc7aedfd6308057d40b618 16-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> First part of changes to eliminate problems with cv-qualifiers and
sugared types. The basic problem is that our qualifier accessors
(getQualifiers, getCVRQualifiers, isConstQualified, etc.) only look at
the current QualType and not at any qualifiers that come from sugared
types, meaning that we won't see these qualifiers through, e.g.,
typedefs:

typedef const int CInt;
typedef CInt Self;

Self.isConstQualified() currently returns false!

Various bugs (e.g., PR5383) have cropped up all over the front end due
to such problems. I'm addressing this problem by splitting each
qualifier accessor into two versions:

- the "local" version only returns qualifiers on this particular
QualType instance
- the "normal" version that will eventually combine qualifiers from this
QualType instance with the qualifiers on the canonical type to
produce the full set of qualifiers.

This commit adds the local versions and switches a few callers from
the "normal" version (e.g., isConstQualified) over to the "local"
version (e.g., isLocalConstQualified) when that is the right thing to
do, e.g., because we're printing or serializing the qualifiers. Also,
switch a bunch of

Context.getCanonicalType(T1).getUnqualifiedType() == Context.getCanonicalType(T2).getQualifiedType()

expressions over to

Context.hasSameUnqualifiedType(T1, T2)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
ST/TypeLoc.h
rontend/PCHWriter.h
rontend/TypeXML.def
a4923eb7c4b04d360cb2747641a5e92818edf804 16-Nov-2009 Douglas Gregor <dgregor@apple.com> First part of changes to eliminate problems with cv-qualifiers and
sugared types. The basic problem is that our qualifier accessors
(getQualifiers, getCVRQualifiers, isConstQualified, etc.) only look at
the current QualType and not at any qualifiers that come from sugared
types, meaning that we won't see these qualifiers through, e.g.,
typedefs:

typedef const int CInt;
typedef CInt Self;

Self.isConstQualified() currently returns false!

Various bugs (e.g., PR5383) have cropped up all over the front end due
to such problems. I'm addressing this problem by splitting each
qualifier accessor into two versions:

- the "local" version only returns qualifiers on this particular
QualType instance
- the "normal" version that will eventually combine qualifiers from this
QualType instance with the qualifiers on the canonical type to
produce the full set of qualifiers.

This commit adds the local versions and switches a few callers from
the "normal" version (e.g., isConstQualified) over to the "local"
version (e.g., isLocalConstQualified) when that is the right thing to
do, e.g., because we're printing or serializing the qualifiers. Also,
switch a bunch of

Context.getCanonicalType(T1).getUnqualifiedType() == Context.getCanonicalType(T2).getQualifiedType()

expressions over to

Context.hasSameUnqualifiedType(T1, T2)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
ST/TypeLoc.h
rontend/PCHWriter.h
rontend/TypeXML.def
5606a89ace41517879ee1adff3afe850719695b8 16-Nov-2009 Ted Kremenek <kremenek@apple.com> Fix condition in LocationCheck::classof(). Thanks to Marius Wachtler for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88949 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
d651141308a777d60ff98309d21e045bb936f8b7 16-Nov-2009 Ted Kremenek <kremenek@apple.com> Fix condition in LocationCheck::classof(). Thanks to Marius Wachtler for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88949 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
1e77493df0663d644f9191c6909cb43a32da88b5 16-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Handle case of missing '@end' in implementation context
gracefully, on par with gcc, by: Issuing a warning,
doing final sematinc check of its definitions and generating
its meta-data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
63e963cdffca9530f920dbab58b9b4eecb2a582c 16-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Handle case of missing '@end' in implementation context
gracefully, on par with gcc, by: Issuing a warning,
doing final sematinc check of its definitions and generating
its meta-data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88934 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Parser.h
5f98bf339bde1bd8a845103b14c0488658d08bc7 16-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> * Do the same thing to the basicstore as in r84163.
* Add a load type to GRExprEngine::EvalLoad().
* When retrieve from 'theValue' of OSAtomic funcitions, use the type of the
region instead of the argument expression as the load type.
* Then we can convert CastRetrievedSVal to a pure assertion. In the future
we can let all Retrieve() methods simply return SVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88888 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/Store.h
652be346f74feba027bcbdeb6a3e3f4755a0e62c 16-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> * Do the same thing to the basicstore as in r84163.
* Add a load type to GRExprEngine::EvalLoad().
* When retrieve from 'theValue' of OSAtomic funcitions, use the type of the
region instead of the argument expression as the load type.
* Then we can convert CastRetrievedSVal to a pure assertion. In the future
we can let all Retrieve() methods simply return SVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88888 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/Store.h
683b021318387947f24f1553abb11e727d35a7eb 15-Nov-2009 Anders Carlsson <andersca@mac.com> Make sure that virtual destructors have delete operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6d7013940a37f03fd324ef438ff984a5369013b0 15-Nov-2009 Anders Carlsson <andersca@mac.com> Make sure that virtual destructors have delete operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f824ae9fcb35d15cb840582682435bb73d00c52d 15-Nov-2009 Anders Carlsson <andersca@mac.com> Add DeclarationName::dump().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88876 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
70f5bc77dbe4172bde860e15d8b3c29e0d5005cb 15-Nov-2009 Anders Carlsson <andersca@mac.com> Add DeclarationName::dump().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88876 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
5f73455853da1acb0307d98608529ddf19375bee 15-Nov-2009 Anders Carlsson <andersca@mac.com> If we find a deallocation function in the class scope, but it is a placement function we should not look for a deallocation function in the global scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
50724302e24d44a27e3bc45e7185a710d6eb3c2d 15-Nov-2009 Anders Carlsson <andersca@mac.com> If we find a deallocation function in the class scope, but it is a placement function we should not look for a deallocation function in the global scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3a6a9dcb26335a9573c68ae9c78d94eac6dd7a3f 15-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Make a couple more headers standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88840 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/GRWorkList.h
nalysis/Support/Optional.h
539e9b18e64479e1092e0cd52efdb2ad41b4d07d 15-Nov-2009 Douglas Gregor <dgregor@apple.com> Make a couple more headers standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88840 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/GRWorkList.h
nalysis/Support/Optional.h
30c95171e619256bb70cc831dbdc2631f39292e7 15-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Remove an obviously-broken header, which still tries to refer to ScopedDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88837 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGVarDeclVisitor.h
88f0d009db9b8a54b23eff6c1c29d9a8e75291d0 15-Nov-2009 Douglas Gregor <dgregor@apple.com> Remove an obviously-broken header, which still tries to refer to ScopedDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88837 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGVarDeclVisitor.h
551e2b811afe835d482cbb71adba30439b3d437a 15-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Make some more headers standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88835 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedDiagnosticClient.h
rontend/DependencyOutputOptions.h
rontend/HeaderSearchOptions.h
a61066310d4544d6343154eb3f4448fec0b15420 15-Nov-2009 Douglas Gregor <dgregor@apple.com> Make some more headers standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88835 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedDiagnosticClient.h
rontend/DependencyOutputOptions.h
rontend/HeaderSearchOptions.h
ca3e991c52d516df8069e9e64261cc5b821f3ecc 15-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add TargetOptions and use it when constructing targets.
- This ended up being hard to factor, sorry for the large diff.

- Some post-commit cleanup to come.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticFrontendKinds.td
asic/TargetInfo.h
asic/TargetOptions.h
odeGen/CodeGenOptions.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/FrontendOptions.h
d58c03f42ebb4e548c2b53fa25b1cfe02ebb9ac0 15-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add TargetOptions and use it when constructing targets.
- This ended up being hard to factor, sorry for the large diff.

- Some post-commit cleanup to come.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticFrontendKinds.td
asic/TargetInfo.h
asic/TargetOptions.h
odeGen/CodeGenOptions.h
rontend/ASTConsumers.h
rontend/CompilerInstance.h
rontend/CompilerInvocation.h
rontend/FrontendOptions.h
3e45b913d53b7353f25eed5e11212bf719e5f0ab 15-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Make a few headers parse standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/TypeLocBuilder.h
7745cab137b9d91205f13a7adaebe6ed801595f7 15-Nov-2009 Douglas Gregor <dgregor@apple.com> Make a few headers parse standalone

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/TypeLocBuilder.h
7dcf2d9ca8a66997604dd0637cbd43f11e2d85be 15-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add pluggable action support to clang-cc, via -plugin command line option.
- Expects the plugin has been loaded with -load.

- Using this may require disabling TOOL_NO_EXPORTS in the clang-cc Makefile, this breaks the llvm::Registry way of working (static constructors are bad, kids). This should be replaced with a "real" plugin model that has explicit plugin interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
d10c5b88334d860d19284032a7126dc2219f57ed 15-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add pluggable action support to clang-cc, via -plugin command line option.
- Expects the plugin has been loaded with -load.

- Using this may require disabling TOOL_NO_EXPORTS in the clang-cc Makefile, this breaks the llvm::Registry way of working (static constructors are bad, kids). This should be replaced with a "real" plugin model that has explicit plugin interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/FrontendOptions.h
rontend/FrontendPluginRegistry.h
d6dbb35661cfd31394e9a7b3d506a9e8c9adcd50 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move the program action enum to FrontendOptions.

--
ddunbar@giles:clang-cc (master)$ grep llvm::cl::opt clang-cc.cpp # Woot
ddunbar@giles:clang-cc (master)$
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88820 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
9a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move the program action enum to FrontendOptions.

--
ddunbar@giles:clang-cc (master)$ grep llvm::cl::opt clang-cc.cpp # Woot
ddunbar@giles:clang-cc (master)$
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88820 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
c52cb3da67f7b7b41c482056d11c0fa560e85a06 14-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Change *BugReport constructors to take StringRefs.

- Eliminates many calls to std::string.c_str()
- Fixes an invalid read in ReturnStackAddressChecker due to an unsafe call to
StringRef.data() which doesn't guarantee null-termination.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88779 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
d02e232c43b979758810794de24d3f5cde40fe93 14-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Change *BugReport constructors to take StringRefs.

- Eliminates many calls to std::string.c_str()
- Fixes an invalid read in ReturnStackAddressChecker due to an unsafe call to
StringRef.data() which doesn't guarantee null-termination.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88779 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
62ead0154844abdfc0ba63e1ecbb6a5386421454 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendActions for all preprocessor based clang-cc actions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88774 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
5f3b997e28899972e2ba23ec25e830d4066fa59a 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendActions for all preprocessor based clang-cc actions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88774 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
7377399fbd7de555def64a5a9c64c71b11792528 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendActions, which provides a FrontendAction interface to all the existing AST consumer based clang-cc actions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88773 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
8305d01a1de4bfbfdd501b83074a1e80fada752d 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendActions, which provides a FrontendAction interface to all the existing AST consumer based clang-cc actions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88773 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendActions.h
76ff871fb09e69f01153dfcd396f13cc8d0f67e1 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendAction interface, for encapsulating a "clang-cc" style action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88772 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
4ee24097a8050b885c1d75ca4ee9f6d534c3f20b 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendAction interface, for encapsulating a "clang-cc" style action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88772 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendAction.h
ef786d1f85f7c524cdec74becf939ee4170f5718 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Shuffle VerifyDiagnosticsClient API to be less fragile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88765 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
221c7211c507482a91e97ede1bf6cf65a456ff67 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Shuffle VerifyDiagnosticsClient API to be less fragile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88765 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/VerifyDiagnosticsClient.h
8feaabf13088d427f1c391e6ef81c09c9f949de2 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::InitializeSourceManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88764 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
ccb6cb6fd9e48697564d536b07397b95dfc28d5b 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::InitializeSourceManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88764 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
45e497945ee1dd30ef583d33e48a5a7dd18838c9 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Turn -fixit it back into a mode, but make -fixit-at imply that mode this time
(instead of running it with arbitrary consumers).
- Also, turn any -fixit-at lookup failure into an error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/FrontendOptions.h
79b55f97c826f5fd28b4c4f037b088d0cc960457 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Turn -fixit it back into a mode, but make -fixit-at imply that mode this time
(instead of running it with arbitrary consumers).
- Also, turn any -fixit-at lookup failure into an error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/FrontendOptions.h
52a3f666f09dc4ef7869856f1168a0e62f8fca9a 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add VerifyDiagnosticsClient, to replace old -verify.
- This reimplements -verify as just another DiagnosticClient, which buffers the diagnostics and checks them when the source file is complete. There are some hacks to make this work, but they are all internal, and this exposes a better external interface.

- This also tweaks a few things:
o Errors are now just regular diagnostics.
o Frontend diagnostics are now caught (for example, errors in command line arguments), although there isn't yet a way to specify that they are expected. That would be nice though.

- Not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
rontend/VerifyDiagnosticsClient.h
81f5a1e699b2eefa4a5e50b5dfc06df600748f59 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add VerifyDiagnosticsClient, to replace old -verify.
- This reimplements -verify as just another DiagnosticClient, which buffers the diagnostics and checks them when the source file is complete. There are some hacks to make this work, but they are all internal, and this exposes a better external interface.

- This also tweaks a few things:
o Errors are now just regular diagnostics.
o Frontend diagnostics are now caught (for example, errors in command line arguments), although there isn't yet a way to specify that they are expected. That would be nice though.

- Not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88748 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/CompilerInstance.h
rontend/VerifyDiagnosticsClient.h
f69385a9856d46537f3b6420b39bbf460732cc4c 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass Preprocessor through DiagnosticClient::BeginSourceFile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88744 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ChainedDiagnosticClient.h
rontend/TextDiagnosticPrinter.h
7d90199f109290e9d587479a481a2850d390b552 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass Preprocessor through DiagnosticClient::BeginSourceFile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88744 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/ChainedDiagnosticClient.h
rontend/TextDiagnosticPrinter.h
194f7af8c1df30254c2258122cc83690ebb2f46d 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add ASTConsumer to CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88743 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
12ce6943aae499225708ecf364c5a8b0a3269c87 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add ASTConsumer to CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88743 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
e0eb15e014e6d9d4f819cbfacb26a068d1421ee7 14-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> If we attempt to add a constructor template specialization that looks
like a copy constructor to the overload set, just ignore it. This
ensures that we don't try to use such a constructor as a copy
constructor *without* triggering diagnostics at the point of
declaration.

Note that we *do* diagnose such copy constructors when explicitly
written by the user (e.g., as an explicit specialization).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
66724ea67d7d598b937d86fa66f03f09a1c758f3 14-Nov-2009 Douglas Gregor <dgregor@apple.com> If we attempt to add a constructor template specialization that looks
like a copy constructor to the overload set, just ignore it. This
ensures that we don't try to use such a constructor as a copy
constructor *without* triggering diagnostics at the point of
declaration.

Note that we *do* diagnose such copy constructors when explicitly
written by the user (e.g., as an explicit specialization).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
4239bc5bcadb2ec59551de1de217d5f04943cedf 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add static version of Preprocessor::getSpelling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88732 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0ff1042ddaad1419264be0de6da17f3b378482a4 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add static version of Preprocessor::getSpelling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88732 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
b109794893842ef35d2483d1c2665407c22d0879 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move CompilerInstance::set* methods out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88731 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
8a9f569262860b8d03203327afd6047be2a9b5a6 14-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move CompilerInstance::set* methods out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88731 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
9c09e135211c384b5cafae4dfc76af638e27a9d7 14-Nov-2009 Ted Kremenek <kremenek@apple.com> Move definition of GRExprEngine::ProcessEndPath() out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88729 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
73099bfea9f5d4ec05265170bbefec3d76fb6b5e 14-Nov-2009 Ted Kremenek <kremenek@apple.com> Move definition of GRExprEngine::ProcessEndPath() out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88729 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
36eeb3dcc70b38527b866045b673f3345056092f 14-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Revert r88718, which does NOT solve the constructor-template-as-copy-constructor issue. Big thanks to John for finding this

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88724 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fd47648b5d351ff6d1a3e886e1c3d10712ba4675 14-Nov-2009 Douglas Gregor <dgregor@apple.com> Revert r88718, which does NOT solve the constructor-template-as-copy-constructor issue. Big thanks to John for finding this

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88724 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7f42c4ac73a969da3c4df93a1435f4f4cc32a1cd 14-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> A constructor template cannot be instantiated to a copy
constructor. Make sure that such declarations can never be formed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cad84b7c12564ff37feb66d6d004bb609bea8788 14-Nov-2009 Douglas Gregor <dgregor@apple.com> A constructor template cannot be instantiated to a copy
constructor. Make sure that such declarations can never be formed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc9161aa3fd5f78211190fcd996ed34932da8a49 13-Nov-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option "--analyzer-experimental-internal-checks". This
option enables new "internal" checks that will eventually be turned on
by default but still require broader testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88671 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/AnalysisConsumer.h
8382cf57b722f130f1a6b45380639871c07271c1 13-Nov-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option "--analyzer-experimental-internal-checks". This
option enables new "internal" checks that will eventually be turned on
by default but still require broader testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88671 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/AnalysisConsumer.h
795a09872e52ee42e17b33e907f7f93354ad1672 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance utility functions for creating output files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88667 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
f482d59386dbc70716f7a5f65adb37ff86b501e6 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance utility functions for creating output files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88667 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
644714d2905c1a553e81731004b7d6fbd87b937d 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add output file list to CompilerInstance, so that it can track them instead of
forcing all clients to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87103 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
a9204831639e31474b927681b97c46781b758a1a 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add output file list to CompilerInstance, so that it can track them instead of
forcing all clients to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87103 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
247484eab554c849f2f804494e95abb0d07ee597 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CodeCompletion consumer to CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87100 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
c2f484f1f05216a9a427ac84b5773789a4661111 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CodeCompletion consumer to CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87100 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
6e8ce9cc9d02c22a5a6a4657b5ca7a0fe55bd5b0 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Rework Sema code completion interface.
- Provide Sema in callbacks, instead of requiring it in constructor. This
eliminates the need for a factory function. Clients now just pass the object
to consume the results in directly.

- CodeCompleteConsumer is cheap to construct, so building it whenever we are
doing code completion is reasonable.

Doug, please review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87099 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/ParseAST.h
3a2838d14251427089c39caec90c8abbc27f7a14 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Rework Sema code completion interface.
- Provide Sema in callbacks, instead of requiring it in constructor. This
eliminates the need for a factory function. Clients now just pass the object
to consume the results in directly.

- CodeCompleteConsumer is cheap to construct, so building it whenever we are
doing code completion is reasonable.

Doug, please review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87099 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ema/ParseAST.h
b86e2e801d5b291cc40bc0136f2c211b8ca668a6 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::createPCHExternalASTSource.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87097 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
0f800391ffbfe3820e1c60246a09a97e5f065179 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::createPCHExternalASTSource.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87097 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
beec9a9c42ae5b05f355f373e9644cd0e4bde436 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::has* methods for testing if the instance has a particular
subobject.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87096 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
704e48ae75111072eecaa20a365dff46fb49d2be 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::has* methods for testing if the instance has a particular
subobject.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87096 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
785b5a106991fb92e0b88121e43e4497e50b7923 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add ASTContext to CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87095 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
5eb810024dc8a1d12d5f066c02c978f07c4fcb00 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add ASTContext to CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87095 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
4a6deb578c91edd6e8611da7c40edac3bacfe7ce 13-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Check in a new interface of Checker, which will soon be used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87092 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
9400613b54bf56c317786d778f58f45f1080d619 13-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Check in a new interface of Checker, which will soon be used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87092 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
6d916ecc1266527a9fbc8c62d07a3283d953303d 13-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> GRStateManager::CurrentStmt is not used. Remove it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
ccd373a1162803a7a11f877cbca5ad7b78e833a6 13-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> GRStateManager::CurrentStmt is not used. Remove it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
93e4adfac6b648b4c79731109071c09459edec0a 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::createDiagnostics, and move clang-cc to it.

clang-cc.cpp is now under 1k lines, if anyone is counting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87090 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
0fbb3d9a9cdd2201848be9eb017c54cd78538122 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance::createDiagnostics, and move clang-cc to it.

clang-cc.cpp is now under 1k lines, if anyone is counting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87090 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
261eec309cf92775155a5c69de1010421bafad19 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add Preprocessor to CompilerInstance, and move clang-cc CreatePreprocessor to
CompilerInstance::createPreprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87088 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
22dacfacacf5559028550ba6ddfbaa4ea6cb3944 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add Preprocessor to CompilerInstance, and move clang-cc CreatePreprocessor to
CompilerInstance::createPreprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87088 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
840186769433bb1743097e3144d9b90b9aacce88 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Wherein the TargetInfo argument to Preprocessor is made 'const' and propogated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ex/Preprocessor.h
arse/Parser.h
444be7366d0a1e172c0290a1ea54c1cb16b5947c 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Wherein the TargetInfo argument to Preprocessor is made 'const' and propogated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ex/Preprocessor.h
arse/Parser.h
98e19d3f0d2d9cf32b9c578b7b777f782f945bd5 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add {File,Source}Manager to CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87079 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
16b7449d86b843d0926b04f87104cf3fff7149fe 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add {File,Source}Manager to CompilerInstance.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87079 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
a8a0f59ccc6535a55e0589c6d6242133618d6ab6 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance, and starting moving clang-cc to it.
- The design philosophy is in the CompilerInstance doxyment, if you don't agree
with it now would be a good time to speak up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87078 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
2a79e162a3fde25c1941151a67966830d873f2db 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInstance, and starting moving clang-cc to it.
- The design philosophy is in the CompilerInstance doxyment, if you don't agree
with it now would be a good time to speak up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87078 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInstance.h
b2635f59e4d6751728f0c7843c177b36666f210b 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move input kind identification (-x) into FrontendOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87066 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
fbe2fafe317a757031e4f24026a77dd305607d32 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move input kind identification (-x) into FrontendOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87066 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
fc26eec00ec10996922ddce55ef2f77703b733e4 13-Nov-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option "-analyzer-experimental-checks" to enable experimental path-sensitive checks. The idea is to separate "barely working" or "skunkworks" checks from ones that should always run. Later we need more fine-grain checker control.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87053 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/AnalysisConsumer.h
eb94113be0ee5f4d38408b413d92464a0bc16b55 13-Nov-2009 Ted Kremenek <kremenek@apple.com> Add clang-cc option "-analyzer-experimental-checks" to enable experimental path-sensitive checks. The idea is to separate "barely working" or "skunkworks" checks from ones that should always run. Later we need more fine-grain checker control.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87053 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/AnalysisConsumer.h
c680c5ec4c39d78ad14158b4d7617b2b9f8a9e6b 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -target-{triple,abi} options into FrontendOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87051 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
21dac5e24a14d3288565515b35ad98c38460c9dd 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -target-{triple,abi} options into FrontendOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87051 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
24740cf9d313b14283e0ef6e58801361bfaa0b81 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move code completion options to clang-cc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87050 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
914474ca51d202369241a81013208833a6bb3f12 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move code completion options to clang-cc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87050 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FrontendOptions.h
7afa0dc617379fe6a1ac2d56006ffe337341cf82 13-Nov-2009 Chris Lattner <sabre@nondot.org> add a fixme, inheriting from PointerIntPair is gross :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
efc18e41f122b6ccac507bd9ec1aa7cb8845c2db 13-Nov-2009 Chris Lattner <sabre@nondot.org> add a fixme, inheriting from PointerIntPair is gross :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
06b5313223c854877dcc6fba187076ddea3263b6 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move FixItAtLocations into FrontendOptions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87046 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
rontend/FrontendOptions.h
c86804bc9c3f1953520b59084c9ad75104aba123 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move FixItAtLocations into FrontendOptions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87046 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
rontend/FrontendOptions.h
6d12c5245f0264ac1532070b537d03580738f567 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendOptions, and starting moving clang-cc to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87044 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/DiagnosticOptions.h
rontend/FrontendOptions.h
26266885d6eba8ee197577dd42a8e68a0e4dd2e8 13-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add FrontendOptions, and starting moving clang-cc to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87044 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/DiagnosticOptions.h
rontend/FrontendOptions.h
4d07786b4231ef8d83f96aaaf710314c85eed77b 12-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> We need the definition of NamedDecl in DeclContextInternals.h, since Clang is type-checking the template definition more thoroughly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
c0213f2691aed7c3f8f252e073b0b3913ee1c33c 12-Nov-2009 Douglas Gregor <dgregor@apple.com> We need the definition of NamedDecl in DeclContextInternals.h, since Clang is type-checking the template definition more thoroughly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
0e1bd10b5cf2002e337379a09bfbbcc869b557f6 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Spell empty StringRef correctly (0 is a null StringRef, which is not the same).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87011 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ad5757f798b08f24942f093c4ac8b9fc2b527d39 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Spell empty StringRef correctly (0 is a null StringRef, which is not the same).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87011 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
2fcfe27c7e9115b8246d90510cbe079af13b7a16 12-Nov-2009 Chandler Carruth <chandlerc@gmail.com> Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.
This resolves the layering violation where CodeGen depended on Frontend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86998 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
rontend/CompileOptions.h
rontend/CompilerInvocation.h
2811ccf48d6d898c42cc4cfad37abedb36236d20 12-Nov-2009 Chandler Carruth <chandlerc@gmail.com> Move CompileOptions -> CodeGenOptions, and sink it into the CodeGen library.
This resolves the layering violation where CodeGen depended on Frontend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86998 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/CodeGenOptions.h
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
rontend/CompileOptions.h
rontend/CompilerInvocation.h
b0b2636370c810d4140200d9b956dbcb510a7bce 12-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Give CanQual<T> an implicit conversion to bool, so that it can be used
in "if" statements like:

if (CanQual<ReferenceType> RefType = T.getAs<ReferenceType>())

Thanks to Clang for pointing out this mistake :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
cffecd08f1974dc7cc328bd620b2f69daf442fda 12-Nov-2009 Douglas Gregor <dgregor@apple.com> Give CanQual<T> an implicit conversion to bool, so that it can be used
in "if" statements like:

if (CanQual<ReferenceType> RefType = T.getAs<ReferenceType>())

Thanks to Clang for pointing out this mistake :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
a0e2783cbc13e5a0212f4597ebb3a9641f41a2ed 12-Nov-2009 Anders Carlsson <andersca@mac.com> Add a CK_BaseToDerived cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
11de6de25a0110cd7be97eef761ef3b189781da6 12-Nov-2009 Anders Carlsson <andersca@mac.com> Add a CK_BaseToDerived cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c5a93cc90631e2415915f96e3783bdbf9cc8a47e 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Disallow FIX-ITs when generating code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86990 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
e0c4ff2fcef19a84afaacf9eff71636b3bdad071 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Disallow FIX-ITs when generating code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86990 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
bff06d8fa05294f339620d8d9045064c3af4d04d 12-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve source-location information for implicitly-generated member call expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
00b98c229ef28a5e82943bb23d09fb46d24ca381 12-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve source-location information for implicitly-generated member call expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d01de3a57d667e9a241d5117caecfd91252fcdcd 12-Nov-2009 Chris Lattner <sabre@nondot.org> do not store wchar/char16/char32/intmax width/alignment info
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9184646509d015ea66e796113a8c68598681374b 12-Nov-2009 Chris Lattner <sabre@nondot.org> do not store wchar/char16/char32/intmax width/alignment info
into TargetInfo, just derive this based on the underlying type.
This prevents them from getting out of synch, patch by Ken Dyck!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
223f6e4b8e9dfad13113d65afb6fbcb5f1458e07 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move warning options into DiagnosticOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86968 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
rontend/Utils.h
6907943901e0aae5be7618c36c0f8275634e6ab5 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move warning options into DiagnosticOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86968 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
rontend/Utils.h
99b98f8376f0b7caae75e590acc504ec833f3702 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move dump-build-information option into DiagnosticOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86966 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
11e729d295378bdc185c8fb87d3326f24d1840d0 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move dump-build-information option into DiagnosticOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86966 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
d403fdb704a371c2bd735dce2981493c8794d596 12-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove obsolete 'struct NullDerefTag'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86957 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
1acfe8eeafd794c81b8d4fbb27bf483645849156 12-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove obsolete 'struct NullDerefTag'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86957 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
1861aa51b788e2f5ee24dbe1648bb2205e0c86b7 12-Nov-2009 Ted Kremenek <kremenek@apple.com> Enhance Checker class (and GRExprEngine) to support PostVisitation for CallExprs. No clients (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86949 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
31a241a0bbb281040b02ced04d1ad6c45c586d73 12-Nov-2009 Ted Kremenek <kremenek@apple.com> Enhance Checker class (and GRExprEngine) to support PostVisitation for CallExprs. No clients (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86949 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
bbe566dde3063f898d92424a5bdf41a71fcf3402 12-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove GRExprEngine::EvalCall(). It had a single callsite in GRExprEngine, and was easily inlined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86948 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
7422db3eb6753370ece0443c23f636b233f5ec9b 12-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove GRExprEngine::EvalCall(). It had a single callsite in GRExprEngine, and was easily inlined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86948 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1845bc260fd7ffa3035c8c5fbeb86b4685b49938 12-Nov-2009 John McCall <rjmccall@apple.com> Random const correctness, and incidentally use computeDeclContext when building
a using declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
af8e6ed61b5e80ab95632b63f583af79dcb62590 12-Nov-2009 John McCall <rjmccall@apple.com> Random const correctness, and incidentally use computeDeclContext when building
a using declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
72f74be5940cd72580096373637782be3ffd9a61 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move TokenCache option to PreprocessorOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86940 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
b3cb98ee35b4707c59d7f6d1a6ee2eee95cb7eb5 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move TokenCache option to PreprocessorOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86940 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
9ca178568578e21e84b683acb08b76213553cf5d 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Switch PTHManager to using diagnostics for most errors.

Also, always give errors on a token-cache PTH failure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/PTHManager.h
3574f46cf495ec61618fd6864b045c5b1d0d5068 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Switch PTHManager to using diagnostics for most errors.

Also, always give errors on a token-cache PTH failure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/PTHManager.h
7ead0e4bf176e508ab2dd9eea18c3c9d98129ec4 12-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86932 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
e884ff88baa1bd61db273baf107862a2110058ed 12-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86932 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
8b2898a25909781809bedaaeb763ff4034832ad2 12-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve recovery in a wonky case where one tries to specialize a
template template parameter.

When building a template-id type, check whether the template-name
itself is dependent (even if the template arguments are not!) and
handle it as a template-id type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8b13c08b1a181b290600814c765f9f199a74f414 12-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve recovery in a wonky case where one tries to specialize a
template template parameter.

When building a template-id type, check whether the template-name
itself is dependent (even if the template arguments are not!) and
handle it as a template-id type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9d25bee62326178186c615364c3eb783790b6426 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix Makefile dependency bug with out-of-dir builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
1144c218f5d74f2270ebcd5ddd82dc472790eaef 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix Makefile dependency bug with out-of-dir builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
7ae5b5888617dd1a664759956ac51577f1bd3e24 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Tweak AnalyzerOptions for consistency, and make sure default constructed object
is sane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86908 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
918ac48e315d42fed7fe856a3fce70d9d930cdcd 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Tweak AnalyzerOptions for consistency, and make sure default constructed object
is sane.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86908 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
902f17d5d026126e9d1c64ce6f065892888e477b 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move AnalyzerOptions into CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86906 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
rontend/CompilerInvocation.h
5746f1ff6286f5e5bd7fc28e5e2031f18e4676c9 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move AnalyzerOptions into CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86906 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
rontend/CompilerInvocation.h
8d4b7f8f30088d62279ae1753a6dd804ba17b473 12-Nov-2009 John McCall <rjmccall@apple.com> Add <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,
and give that category an explicit test. Generalize the internal diagnostic
name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86905 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c8d8ac5f454311d0154d2d080196cc150edbb2d6 12-Nov-2009 John McCall <rjmccall@apple.com> Add <foo> = [<bar> nextObject] to the -Widiomatic-parentheses category,
and give that category an explicit test. Generalize the internal diagnostic
name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86905 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ac6f92fb12fad4d2c11735ec93810e0f52e991ce 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Tweak PCH -include handling to make sure it matches the name as would be present
in the predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86903 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
c7162937a4ccd044a0df67eed4a73ee828c49162 12-Nov-2009 Daniel Dunbar <daniel@zuster.org> Tweak PCH -include handling to make sure it matches the name as would be present
in the predefines buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86903 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
556a951c9cc08f486749e7e4c374a5e73bbc84bf 12-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Template argument deduction for template template parameters. This
permits, among other things, ripping apart and reconstructing
templates via partial specialization:

template<typename T>
struct DeepRemoveConst { typedef T type; };

template<typename T>
struct DeepRemoveConst<const T> {
typedef typename DeepRemoveConst<T>::type type;
};

template<template<typename> class TT, typename T>
struct DeepRemoveConst<TT<T> > {
typedef TT<typename DeepRemoveConst<T>::type> type;
};

Also, fix a longstanding thinko in the code handling partial ordering
of class template partial specializations. We were performing the
second deduction without clearing out the results of the first
deduction. It's amazing we got through so much code with such a
horrendous error :(



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86893 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
db0d4b751e83b8841b8f48f913f17e50467f13d4 12-Nov-2009 Douglas Gregor <dgregor@apple.com> Template argument deduction for template template parameters. This
permits, among other things, ripping apart and reconstructing
templates via partial specialization:

template<typename T>
struct DeepRemoveConst { typedef T type; };

template<typename T>
struct DeepRemoveConst<const T> {
typedef typename DeepRemoveConst<T>::type type;
};

template<template<typename> class TT, typename T>
struct DeepRemoveConst<TT<T> > {
typedef TT<typename DeepRemoveConst<T>::type> type;
};

Also, fix a longstanding thinko in the code handling partial ordering
of class template partial specializations. We were performing the
second deduction without clearing out the results of the first
deduction. It's amazing we got through so much code with such a
horrendous error :(



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86893 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0100ae4aaad92864c029ebb1eac389823ee99023 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> writable atomic property's setter/getter must be in 'lock' step of
either both synthesized or bith user defined.
Implements radar 6557233.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7ca8b0694840385d707689eba9ad965e7b28c8cb 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> writable atomic property's setter/getter must be in 'lock' step of
either both synthesized or bith user defined.
Implements radar 6557233.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a57c339c88bf248af2aba7f1bae1c284c69e82dd 11-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics when a default template argument does not match
with its corresponding template parameter. This can happen when we
performed some substitution into the default template argument and
what we had doesn't match any more, e.g.,

template<int> struct A;
template<typename T, template<T> class X = A> class B;

B<long> b;

Previously, we'd emit a pretty but disembodied diagnostic showing how
the default argument didn't match the template parameter. The
diagnostic was good, but nothing tied it to the *use* of the default
argument in "B<long>". This commit fixes that.

Also, tweak the counting of active template instantiations to avoid
counting non-instantiation records, such as those we create for
(surprise!) checking default arguments, instantiating default
arguments, and performing substitutions as part of template argument
deduction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86884 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f35f828f9883123772a9731af190a608f3236ef4 11-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics when a default template argument does not match
with its corresponding template parameter. This can happen when we
performed some substitution into the default template argument and
what we had doesn't match any more, e.g.,

template<int> struct A;
template<typename T, template<T> class X = A> class B;

B<long> b;

Previously, we'd emit a pretty but disembodied diagnostic showing how
the default argument didn't match the template parameter. The
diagnostic was good, but nothing tied it to the *use* of the default
argument in "B<long>". This commit fixes that.

Also, tweak the counting of active template instantiations to avoid
counting non-instantiation records, such as those we create for
(surprise!) checking default arguments, instantiating default
arguments, and performing substitutions as part of template argument
deduction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86884 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d1c72c0552298cdff5ceefc3d92e8f842301c8eb 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Always initialize the header search object as part of InitializePreprocessor;
not doing this has little to no utility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86883 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
961c76ea8d5089293e448e5d538570653e28080c 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Always initialize the header search object as part of InitializePreprocessor;
not doing this has little to no utility.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86883 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
6ce3b4c5d6525ee44f2193baf24c3e5c5e6154a1 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Allow Preprocessor to take ownership of the HeaderSearch object. I think it should probably always own the header search object, but I'm not sure...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86882 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
ex/Preprocessor.h
5814e657c9ad9ef6049a2a4af0d2aad248a8a15c 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Allow Preprocessor to take ownership of the HeaderSearch object. I think it should probably always own the header search object, but I'm not sure...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86882 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
ex/Preprocessor.h
d505c1c7f10a0c7753756d8d3b6684d9d9d744cf 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sink AttachDependencyFileGen into CreatePreprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86881 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
ca11f61233b2acc266f371816e48290af4e10528 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Sink AttachDependencyFileGen into CreatePreprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86881 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
266dbdc05284f893f870dc5f71a19bd6f63e001f 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add DependencyOutputOptions to wrap -M... options, and propogate to
CompilerInvocation and clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86880 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/DependencyOutputOptions.h
rontend/PreprocessorOutputOptions.h
rontend/Utils.h
0e0bae8139e25de81f18b6a519783a06f7ba1e25 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add DependencyOutputOptions to wrap -M... options, and propogate to
CompilerInvocation and clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86880 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/DependencyOutputOptions.h
rontend/PreprocessorOutputOptions.h
rontend/Utils.h
0a683793780a98ae3b85a772cb67c4b8a701d154 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove some stale ErrorNodes variables in GRExprEngine and the old buffer overflow logic in GRExprEngineInternalChecks.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86877 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
10f51e8785e43d5a22acc2d2a638307c582949c2 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove some stale ErrorNodes variables in GRExprEngine and the old buffer overflow logic in GRExprEngineInternalChecks.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86877 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8026ff6fa20d0fe3fd7061b9bc1df2d2a5455732 11-Nov-2009 Chandler Carruth <chandlerc@gmail.com> After drinking caffeine, add the two files missing from the previous submit.
Sorry about that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86869 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ManagerRegistry.h
0059f1cfb84bcdd78a385f5e3c016374c953756b 11-Nov-2009 Chandler Carruth <chandlerc@gmail.com> After drinking caffeine, add the two files missing from the previous submit.
Sorry about that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86869 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ManagerRegistry.h
ae0ff4efad2d004c7cddec80942e7583e7f2cb2c 11-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Before checking a template template argument against its corresponding
template template parameter, substitute any prior template arguments
into the template template parameter. This, for example, allows us to
properly check the template template argument for a class such as:

template<typename T, template<T Value> class X> struct Foo;

The actual implementation of this feature was trivial; most of the
change is dedicated to giving decent diagnostics when this
substitution goes horribly wrong. We now get a note like:

note: while substituting prior template arguments into template
template parameter 'X' [with T = float]

As part of this change, enabled some very pedantic checking when
comparing template template parameter lists, which shook out a bug in
our overly-eager checking of default arguments of template template
parameters. We now perform only minimal checking of such default
arguments when they are initially parsed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9148c3f5829f4d031249faeb1043e7be914539e8 11-Nov-2009 Douglas Gregor <dgregor@apple.com> Before checking a template template argument against its corresponding
template template parameter, substitute any prior template arguments
into the template template parameter. This, for example, allows us to
properly check the template template argument for a class such as:

template<typename T, template<T Value> class X> struct Foo;

The actual implementation of this feature was trivial; most of the
change is dedicated to giving decent diagnostics when this
substitution goes horribly wrong. We now get a note like:

note: while substituting prior template arguments into template
template parameter 'X' [with T = float]

As part of this change, enabled some very pedantic checking when
comparing template template parameter lists, which shook out a bug in
our overly-eager checking of default arguments of template template
parameters. We now perform only minimal checking of such default
arguments when they are initially parsed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d451f25a0cf6dc510f7a4e23f095b46aceef0251 11-Nov-2009 Chandler Carruth <chandlerc@gmail.com> Move the ManagerRegistry to the Analysis library to resolve the layering violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86863 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ManagerRegistry.h
f465e85fd8744fce8769f18f0dbfec51dbc6d4af 11-Nov-2009 Chandler Carruth <chandlerc@gmail.com> Move the ManagerRegistry to the Analysis library to resolve the layering violation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86863 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ManagerRegistry.h
31abec71090eb46f2ddcdeee6f444c2f0858e863 11-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add undefined array subscript checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86837 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
d694485f9d6e3ea7b458df8241dfffd38f62aca8 11-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add undefined array subscript checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86837 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
531508de8693babe861d3f3faa46260dd1a6e37a 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add PreprocessorOutputOptions to CompilerInvocation, and move initialization to
clang-cc/Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86828 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/Utils.h
29cf746aef63b1984c013448e843a290b2badf7b 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add PreprocessorOutputOptions to CompilerInvocation, and move initialization to
clang-cc/Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86828 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
rontend/Utils.h
3ce2bf2f10b7e29948011f3af4af7389a22c0dd7 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add PreprocessorOutputOptions, for things like -dM, -C, -CC which control -E
mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86827 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOutputOptions.h
rontend/Utils.h
775bee71ad21c84bc130af22ac47c1c8e0f9e72f 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add PreprocessorOutputOptions, for things like -dM, -C, -CC which control -E
mode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86827 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOutputOptions.h
rontend/Utils.h
8dd8f2672d6fc45c99318ab81b6dbcab38c18166 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Simplifiy target feature handling by coalescing all the logic into
InitializeCompileOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
29a790ba422cfeeea9546b6e76777d98fa73cd67 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Simplifiy target feature handling by coalescing all the logic into
InitializeCompileOptions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f641d19345322d2609ff5190f247c851353194f0 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Allow TextDiagnosticPrinter to have optional ownership of its output stream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86823 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
aea364195b81f933515e8968b5254a1195eb0337 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Allow TextDiagnosticPrinter to have optional ownership of its output stream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86823 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
eb980cc41fff21be5a9649970e9f71d7e08d7d82 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Turn LoggingDiagnosticClient into a more general ChainedDiagnosticClient and
move to libFrontend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86817 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedDiagnosticClient.h
dbf75feeb6e1b0015b72fa42c80b45497e9ffefc 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Turn LoggingDiagnosticClient into a more general ChainedDiagnosticClient and
move to libFrontend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86817 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ChainedDiagnosticClient.h
ef02c9fa5e74a42ad6dde92894018f19c3e73646 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Fix display of "ANALYZE" statements in AnalysisConsumer by correctly resetting the flag indicating that the current Decl* has not yet been displayed. Also move this out of AnalysisManager, since AnalysisManager should not handle text output to the user.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
1d9cbeb76cf4c36acf5545028e2b2ac207086442 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Fix display of "ANALYZE" statements in AnalysisConsumer by correctly resetting the flag indicating that the current Decl* has not yet been displayed. Also move this out of AnalysisManager, since AnalysisManager should not handle text output to the user.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
2b054643672157da4691c9bb378b37bb3350ae43 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Move InitializePreprocessorOptions to Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86811 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
b52d243d3626bb08758022c39b2cbc58160eadd7 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> clang-cc: Move InitializePreprocessorOptions to Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86811 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
f87c837fc0bc59321736a92dc5c60ea472a4e79e 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove public headers for UndefinedArgChecker, AttrNonNullChecker, and BadCallChecker, making their implementations completely private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86809 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/AttrNonNullChecker.h
nalysis/PathSensitive/Checkers/BadCallChecker.h
nalysis/PathSensitive/Checkers/UndefinedArgChecker.h
f493f49fae3ab242ae055ae00b24fa5512655e15 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove public headers for UndefinedArgChecker, AttrNonNullChecker, and BadCallChecker, making their implementations completely private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86809 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/AttrNonNullChecker.h
nalysis/PathSensitive/Checkers/BadCallChecker.h
nalysis/PathSensitive/Checkers/UndefinedArgChecker.h
fb1edf1663f6becf70605fc470cfc52f62c88364 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Redo how PCH handles its implicit include. Instead of treating this specially in
the front-end (as far as the preprocessor goes), follow the usual logic of
inserting the (original include path) name into the predefines buffer. This
pushes the responsibility for handling this to PCH instead of the front-end. In
PCH this requires being a little more clever when we diff the predefines
buffers.

Neither of these solutions are particularly great, I think what we eventually
should do is something like gcc where we insert a special marker to indicate the
PCH file, but then run the preprocessor as usual. This would be clearer and
would allow us to drop the overly clever predefines handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86806 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
7b5a1210d93ca62ecd61800f245c87259b1f8f79 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Redo how PCH handles its implicit include. Instead of treating this specially in
the front-end (as far as the preprocessor goes), follow the usual logic of
inserting the (original include path) name into the predefines buffer. This
pushes the responsibility for handling this to PCH instead of the front-end. In
PCH this requires being a little more clever when we diff the predefines
buffers.

Neither of these solutions are particularly great, I think what we eventually
should do is something like gcc where we insert a special marker to indicate the
PCH file, but then run the preprocessor as usual. This would be clearer and
would allow us to drop the overly clever predefines handling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86806 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
4272cfe3335b7e65d61dd18dba9cd8cf86c054c6 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> More StringRef simplification to PCHValidator::ReadPredefinesBuffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86805 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
4d5936aaa4e4e2d41fe79101ac9c09444951448f 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> More StringRef simplification to PCHValidator::ReadPredefinesBuffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86805 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
7c24bd1fe31cfaf8032b42a502bb26bd368f0053 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Refactor DereferenceChecker to use only the new Checker API instead of
the old builder API. This percolated a bunch of changes up to the
Checker class (where CheckLocation has been renamed VisitLocation) and
GRExprEngine. ProgramPoint now has the notion of a "LocationCheck"
point (with PreLoad and PreStore respectively), and a bunch of the old
ProgramPoints that are no longer used have been removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/DereferenceChecker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
b4b817d704287836b52b34369009e682f208aa2b 11-Nov-2009 Ted Kremenek <kremenek@apple.com> Refactor DereferenceChecker to use only the new Checker API instead of
the old builder API. This percolated a bunch of changes up to the
Checker class (where CheckLocation has been renamed VisitLocation) and
GRExprEngine. ProgramPoint now has the notion of a "LocationCheck"
point (with PreLoad and PreStore respectively), and a bunch of the old
ProgramPoints that are no longer used have been removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/DereferenceChecker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
58b8d15c4daf54f2d19e134a089dd8a8de4f1cd2 11-Nov-2009 John McCall <rjmccall@apple.com> Apparently the following idiom is specifically encouraged:
if (self = [super init])
Recognize it and only warn if -Wparentheses is explicitly enabled.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
a52ef08b26420c8b7208c2fe7f3daf8802b22dd7 11-Nov-2009 John McCall <rjmccall@apple.com> Apparently the following idiom is specifically encouraged:
if (self = [super init])
Recognize it and only warn if -Wparentheses is explicitly enabled.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
63c8e75e3df30caab2d7251514a0d7ddc9cb39a2 11-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new representation for template template
parameters. Rather than storing them as either declarations (for the
non-dependent case) or expressions (for the dependent case), we now
(always) store them as TemplateNames.

The primary change here is to add a new kind of TemplateArgument,
which stores a TemplateName. However, making that change ripples to
every switch on a TemplateArgument's kind, also affecting
TemplateArgumentLocInfo/TemplateArgumentLoc, default template
arguments for template template parameters, type-checking of template
template arguments, etc.

This change is light on testing. It should fix several pre-existing
problems with template template parameters, such as:
- the inability to use dependent template names as template template
arguments
- template template parameter default arguments cannot be
instantiation

However, there are enough pieces missing that more implementation is
required before we can adequately test template template parameters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
ST/TypeLoc.h
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
788cd06cf8e868a67158aafec5de3a1f408d14f3 11-Nov-2009 Douglas Gregor <dgregor@apple.com> Introduce a new representation for template template
parameters. Rather than storing them as either declarations (for the
non-dependent case) or expressions (for the dependent case), we now
(always) store them as TemplateNames.

The primary change here is to add a new kind of TemplateArgument,
which stores a TemplateName. However, making that change ripples to
every switch on a TemplateArgument's kind, also affecting
TemplateArgumentLocInfo/TemplateArgumentLoc, default template
arguments for template template parameters, type-checking of template
template arguments, etc.

This change is light on testing. It should fix several pre-existing
problems with template template parameters, such as:
- the inability to use dependent template names as template template
arguments
- template template parameter default arguments cannot be
instantiation

However, there are enough pieces missing that more implementation is
required before we can adequately test template template parameters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
ST/TypeLoc.h
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
edecc7154650000514f021ad5c5303128a801577 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> StringRefify some PCH interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86775 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
dc3c0d20375bda7775b2fade05b20e315798b9fe 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> StringRefify some PCH interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86775 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
5eda0df7b2eff874c67505f290bf660c92a2139a 11-Nov-2009 John McCall <rjmccall@apple.com> Create a new Scope when parsing a declaration with a C++ scope specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86764 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f7f3d0db754db0500b56d49ac19f795f13965912 11-Nov-2009 John McCall <rjmccall@apple.com> Create a new Scope when parsing a declaration with a C++ scope specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86764 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9e6f870b68c0f139c3ea9acf9c2dc759e912cd73 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic::Report method for reporting diagnostics without a location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/Driver.h
0f9fed70cea107b3f79df554e38bd8e98d48fe47 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic::Report method for reporting diagnostics without a location.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
river/Driver.h
4dae925caba4a4e6708f0d777f6854877ffc1359 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> PreprocessorOptions: Get rid of unnecessary 'isPTH' flag for include entries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86757 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
b6d1cc84d1a7e314f7a7a02fbe092adc4caf67e8 11-Nov-2009 Daniel Dunbar <daniel@zuster.org> PreprocessorOptions: Get rid of unnecessary 'isPTH' flag for include entries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86757 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
8173cdeb026b9f4503618983f5de45dd36c8454d 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose illegally typed operator new/new[].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86755 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b03bfa55d03ca38922ffedac19225d0832e8d911 11-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose illegally typed operator new/new[].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86755 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e15e2040f1c62f495c82bd77deea336cc30e600 10-Nov-2009 Ted Kremenek <kremenek@apple.com> Shuffle order of warning declarations (alphabetize).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86733 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
69a2c268dbc2844bbdecfbbbb82602e6bb4bd1df 10-Nov-2009 Ted Kremenek <kremenek@apple.com> Shuffle order of warning declarations (alphabetize).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86733 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
d89952754074f4de6c86955e8c005e81540d4379 10-Nov-2009 Ted Kremenek <kremenek@apple.com> Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86731 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
dfcaf060d57fdb46e596e93c91dd86ed53a31ba9 10-Nov-2009 Ted Kremenek <kremenek@apple.com> Make -Wsemicolon-before-method-body opt-in (and part of -Wextra). Addresses <rdar://problem/7381735>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86731 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticParseKinds.td
fd09f9daf6e87ace3a29a5c5d56f4c2bd2910028 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Decouple more of clang-cc by moving ImplicitP[CT]H options into
PreprocessorOptions.

Global variables used as [in] [out] parameters considered harmful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86728 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
e0a9581d606ea1a6a723758a8d7eef93650cbe93 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Decouple more of clang-cc by moving ImplicitP[CT]H options into
PreprocessorOptions.

Global variables used as [in] [out] parameters considered harmful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86728 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PreprocessorOptions.h
7af1eaaec2b8014e74e66b0e451e1191768fa5c6 10-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Add newline at EOF.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86720 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Template.h
c1643de31b9acff14b88354c0b13025407db9e8a 10-Nov-2009 Benjamin Kramer <benny.kra@googlemail.com> Add newline at EOF.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86720 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Template.h
b226b2e8514db1c679ed27ebd6a241e0f4cacac6 10-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Improve parsing of template arguments to lay the foundation for
handling template template parameters properly. This refactoring:

- Parses template template arguments as id-expressions, representing
the result of the parse as a template name (Action::TemplateTy)
rather than as an expression (lame!).

- Represents all parsed template arguments via a new parser-specific
type, ParsedTemplateArgument, which stores the kind of template
argument (type, non-type, template) along with all of the source
information about the template argument. This replaces an ad hoc
set of 3 vectors (one for a void*, which was either a type or an
expression; one for a bit telling whether the first was a type or
an expression; and one for a single source location pointing at
the template argument).

- Moves TemplateIdAnnotation into the new Parse/Template.h. It never
belonged in the Basic library anyway.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86708 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
arse/Action.h
arse/DeclSpec.h
arse/Ownership.h
arse/Parser.h
arse/Template.h
314b97f8c564b465af605efaee23f91ec18a982b 10-Nov-2009 Douglas Gregor <dgregor@apple.com> Improve parsing of template arguments to lay the foundation for
handling template template parameters properly. This refactoring:

- Parses template template arguments as id-expressions, representing
the result of the parse as a template name (Action::TemplateTy)
rather than as an expression (lame!).

- Represents all parsed template arguments via a new parser-specific
type, ParsedTemplateArgument, which stores the kind of template
argument (type, non-type, template) along with all of the source
information about the template argument. This replaces an ad hoc
set of 3 vectors (one for a void*, which was either a type or an
expression; one for a bit telling whether the first was a type or
an expression; and one for a single source location pointing at
the template argument).

- Moves TemplateIdAnnotation into the new Parse/Template.h. It never
belonged in the Basic library anyway.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86708 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
arse/Action.h
arse/DeclSpec.h
arse/Ownership.h
arse/Parser.h
arse/Template.h
9a26d359d35a4a4ade8c9486b4d7af4ede219ad5 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Localize -disable-llvm-optzns handling to BackendConsumer::CreatePasses.
- This is conceptually better since the only thing we want this option to do is
preserve the internal module as constructed by IRgen, before running any
passes.

- This also fixes bugs in -disable-llvm-optzns handling with regards to debug
info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86691 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
8d35314401047092eb97b989ed930967ed9e8ccc 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Localize -disable-llvm-optzns handling to BackendConsumer::CreatePasses.
- This is conceptually better since the only thing we want this option to do is
preserve the internal module as constructed by IRgen, before running any
passes.

- This also fixes bugs in -disable-llvm-optzns handling with regards to debug
info.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86691 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
31ed95a876a4a26b3f61aae4c77f06e497a019d8 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompileOptions to CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86685 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
36f4ec353b37067dd4a0a3a7da1afbd1a4f1a5e5 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompileOptions to CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86685 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
adf9faf3e1b76c94c848f79dac89b1bce47274bb 10-Nov-2009 John McCall <rjmccall@apple.com> Make a somewhat more convincing test case for unqualified lookup through
using directives, and fix a bug thereby exposed: since we're playing
tricks with pointers, we need to make certain we're always using the same
pointers for things.
Also tweak an existing error message.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86679 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
12ea5780e7729de3fee009525e49468fd8d0b713 10-Nov-2009 John McCall <rjmccall@apple.com> Make a somewhat more convincing test case for unqualified lookup through
using directives, and fix a bug thereby exposed: since we're playing
tricks with pointers, we need to make certain we're always using the same
pointers for things.
Also tweak an existing error message.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86679 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
4391af20613f300ef4d3584a214cb3c22af4c4eb 10-Nov-2009 Anders Carlsson <andersca@mac.com> Don't try to emit null fixit hints.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2f019aadc96f8fa3185c684c7150bd596d045064 10-Nov-2009 Anders Carlsson <andersca@mac.com> Don't try to emit null fixit hints.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c060c8ebe14943c61fe97febbff838a8fbeac874 10-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refine PointerSubChecker: compare the base region instead of the original
region, so that arithmetic within a memory chunk is allowed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86652 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
adca27102ff733c7d42fcbbc2c7e134a7fc026f9 10-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refine PointerSubChecker: compare the base region instead of the original
region, so that arithmetic within a memory chunk is allowed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86652 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
87d9e0a2772827042a3a8463099cecdaee9eab02 10-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename: StripCasts describes what it does better.
getBaseRegion will be used in another method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86649 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
479529e679957fbb92b56e116e3c86734429331e 10-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename: StripCasts describes what it does better.
getBaseRegion will be used in another method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86649 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
db8393ca63e3a82398c3bfb4e7b441d72995d707 10-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Move all of the type-printing logic to its own C++ source file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fee8a3c003a8894002810a6373bd5b895290974e 10-Nov-2009 Douglas Gregor <dgregor@apple.com> Move all of the type-printing logic to its own C++ source file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9a8b5c15c7e7e092084788a3c22580c743056749 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add PreprocessorOptions to CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86623 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
5fc7d344ae772731d3d7c9076b8786e780a68696 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add PreprocessorOptions to CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86623 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
2805608e3043e0a580926fbff6a41bb8b64762c9 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Privatize InitHeaderSearch, this functionality is only exposed via
ApplyHeaderSearchOptions now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86617 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
rontend/InitHeaderSearch.h
rontend/Utils.h
2cdafa8001ee69b75d2906cbb36f16cf8e1dc60a 10-Nov-2009 Daniel Dunbar <daniel@zuster.org> Privatize InitHeaderSearch, this functionality is only exposed via
ApplyHeaderSearchOptions now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86617 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
rontend/InitHeaderSearch.h
rontend/Utils.h
c198a20435e3aa40dac43b0e3dda902a226546c8 09-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move LangOptions, HeaderSearchOptions, and the target feature map into
CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86612 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
26a0cac165aea204f661b8da7b167623b12ff143 09-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move LangOptions, HeaderSearchOptions, and the target feature map into
CompilerInvocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86612 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
8b0e47f603b3433386b158e2b0a036789eb12ee1 09-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add default initializer for Sysroot ivar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86610 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
0f25ae8bafdfc4265569d9867e793aaa99407934 09-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add default initializer for Sysroot ivar.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86610 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
183948c04cef998fda57c1a39b12e40f934ad031 09-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Changed error for nested type qualifier mismatch to
warning, to match gcc. It used to be warning, so
better keep it a warning (it broke a certain project).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86597 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3451e9282a72f09e834486ce6f5aab803f491e97 09-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Changed error for nested type qualifier mismatch to
warning, to match gcc. It used to be warning, so
better keep it a warning (it broke a certain project).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86597 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
406b56a9a0ed38e9fbcea1f51ea28ee3719517d3 09-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that Type::getAs<ArrayType>() (or Type::getAs<subclass of
ArrayType>()) does not instantiate. Update all callers that used this
unsafe feature to use the appropriate ASTContext::getAs*ArrayType method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86596 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
89c49f09b0292dc7c03885f6c765d667a9837597 09-Nov-2009 Douglas Gregor <dgregor@apple.com> Make sure that Type::getAs<ArrayType>() (or Type::getAs<subclass of
ArrayType>()) does not instantiate. Update all callers that used this
unsafe feature to use the appropriate ASTContext::getAs*ArrayType method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86596 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c7df7c4dba32a7fcca048454c8e3994dd0c5b34c 09-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInvocation object, to capture all the options one needs to invoke
the compiler, and start flood filling it into clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86586 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
e29709f32e82d7f7dfc25d8602b1b828a1aa7f56 09-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add CompilerInvocation object, to capture all the options one needs to invoke
the compiler, and start flood filling it into clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86586 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompilerInvocation.h
21f7874b85ae2cb5f4d6b996d8ecc3815ebf72a6 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Stub out a few more warning groups.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c19aa99b57e9d005121bd7f4d87d408e187a1238 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Stub out a few more warning groups.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
94643353690615a5a531d5f2445f481d7aa13e77 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add additional note to mark the cause of synthesized constructors. Mark
declaration invalid if the constructor can't be properly built. Addresses
remaining review comments from Fariborz for r86500.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
80c30dad6c6fca077293125a96f464b6c8857171 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add additional note to mark the cause of synthesized constructors. Mark
declaration invalid if the constructor can't be properly built. Addresses
remaining review comments from Fariborz for r86500.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86579 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c20fd833cd2e6a75e25e1203ebc80fe23a802ed 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add support for cdecl attribute. (As far as I know, it doesn't affect CodeGen
unless we start implementing command-line switches which override the default
calling convention, so the effect is mostly to silence unknown attribute
warnings.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
8f4c59e912f08919bd051fbca3d0dd2b90382ab3 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Add support for cdecl attribute. (As far as I know, it doesn't affect CodeGen
unless we start implementing command-line switches which override the default
calling convention, so the effect is mostly to silence unknown attribute
warnings.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
c1bd0c680b113f08ac88c78387d876c00e5fcb6b 09-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add checker for CWE-588: Attempt to Access Child of a Non-structure Pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86529 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
4f3dc698a1bbeea16155e51dfc7d0f69ff689598 09-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add checker for CWE-588: Attempt to Access Child of a Non-structure Pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86529 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
6c18a787fb40505ff86829dbb53222b9b4fe2a8f 09-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add checker for CWE-587: Assignment of a Fixed Address to a Pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86523 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
b10a7c235f82c6eb074be097c9ae7ee51fccc9c6 09-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add checker for CWE-587: Assignment of a Fixed Address to a Pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86523 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
4b7c77b50a7674f970d6438ec6a2876d617fe46f 09-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86512 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8e2a9d8adbd2169b46c2edff5b267b05df3febb0 09-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86512 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
ff050356b5529b0745b3039453ad5016d42f515c 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Unify the codepaths used to verify base and member initializers for explicitly
and implicitly defined constructors. This has a number of benefits:

1. Less code.

2. Explicit and implicit constructors get the same diagnostics.

3. The AST explicitly contains constructor calls from implicit default
constructors. This allows handing some cases that previously weren't handled
correctly in IRGen without any additional code. Specifically, implicit default
constructors containing calls to constructors with default arguments are now
handled correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49c16da71b9c95cc53b4af6de2833a022cb69b6a 09-Nov-2009 Eli Friedman <eli.friedman@gmail.com> Unify the codepaths used to verify base and member initializers for explicitly
and implicitly defined constructors. This has a number of benefits:

1. Less code.

2. Explicit and implicit constructors get the same diagnostics.

3. The AST explicitly contains constructor calls from implicit default
constructors. This allows handing some cases that previously weren't handled
correctly in IRGen without any additional code. Specifically, implicit default
constructors containing calls to constructors with default arguments are now
handled correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
50c1fbac3d55d10e88375970668d583b23147e22 08-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a checker for CWE-467: Use of sizeof() on a Pointer Type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86464 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/Analyses.def
28a109f63506d8c96e3fbf1b959b603ccec2f586 08-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a checker for CWE-467: Use of sizeof() on a Pointer Type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86464 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/Analyses.def
2aace57a73eef77967b28d19a2721033eaa3f85a 08-Nov-2009 Sean Hunt <rideau3@gmail.com> Test commit - minor terminology change to my recent patch suggested by John McCall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c9132b697cff37f2918f9501b8ee2262b0bc6f03 08-Nov-2009 Sean Hunt <rideau3@gmail.com> Test commit - minor terminology change to my recent patch suggested by John McCall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bfebffa3b92e064193e1c9b0a55fae424b4d8684 07-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to gives an error that at least points users in the direction of the error, rather
than an error about incompatible types. Patch by Sean Hunt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86402 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
36a862f1d6810e05121d5be1b6458bd11b69e495 07-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to gives an error that at least points users in the direction of the error, rather
than an error about incompatible types. Patch by Sean Hunt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86402 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b0adf4958d3a49dd751a5522cca625e4ba673a9 07-Nov-2009 John McCall <rjmccall@apple.com> Support -Wshorten-64-to-32 for integer types only, which seems to satisfy the
core requirements. Fixes rdar://problem/6389954



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
dc767a1f560ae936a08eeead8164be6f82b6b0f7 07-Nov-2009 John McCall <rjmccall@apple.com> Support -Wshorten-64-to-32 for integer types only, which seems to satisfy the
core requirements. Fixes rdar://problem/6389954



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
d6e3d329768ef9d0cea30b68146ee4e97373fc52 07-Nov-2009 Ted Kremenek <kremenek@apple.com> Use SaveAndRestore to simplify logic in LiveVariables::runOnAllBlocks(). Patch by Kovarththanan Rajaratnam!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86343 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
31d8cadc8337b5f90c2e5eddf712d769e99c977b 07-Nov-2009 Ted Kremenek <kremenek@apple.com> Use SaveAndRestore to simplify logic in LiveVariables::runOnAllBlocks(). Patch by Kovarththanan Rajaratnam!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86343 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
870278bbbab94d3bc38fdd9487aae3829df314be 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add HeaderSearchOptions class, for packaging the information needed to
initialize HeaderSearch. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86338 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
rontend/InitHeaderSearch.h
63c8b77334f90472260d2f48df2742ed5067261e 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Add HeaderSearchOptions class, for packaging the information needed to
initialize HeaderSearch. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86338 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/HeaderSearchOptions.h
rontend/InitHeaderSearch.h
0df9906d1eddee1dbeec1a5b6c097ec3d9ca48e0 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Lift InitHeaderSearch::AddEnvVarPaths logic higher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86337 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
e166582f8f36f4db8f4ea157538fab7fe6bf2658 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Lift InitHeaderSearch::AddEnvVarPaths logic higher.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86337 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
4791e04b59ae973456144bb98cab1ff228ae678b 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Formatting fixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86336 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
5c5758bb0a4ec0f572cd20249277736da5715003 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Formatting fixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86336 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
b795a5daff072412abe32fbe3ead662a11534527 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Rename PreprocessorInitOptions to PreprocessorOptions for consistency, and fix
filenames.

Also, move InitializePreprocessor to Utils.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86335 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
rontend/PreprocessorOptions.h
rontend/Utils.h
8863b985f1cf78a2fb62913e184dc45162853cf9 07-Nov-2009 Daniel Dunbar <daniel@zuster.org> Rename PreprocessorInitOptions to PreprocessorOptions for consistency, and fix
filenames.

Also, move InitializePreprocessor to Utils.h.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86335 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
rontend/PreprocessorOptions.h
rontend/Utils.h
6f80e076a42b3fa954d4da7c7c196d3ae30f3027 07-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove Checker::CheckType() (and instead using CheckerVisitor::PreVisitDeclStmt()), and refactor VLASizeChecker to have only one Checker subclass (not two) and to not use the node builders directly (and instead use the newer CheckerContext).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86329 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/GRState.h
ae1623345aed43dcd2e069970a00618378a37b34 07-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove Checker::CheckType() (and instead using CheckerVisitor::PreVisitDeclStmt()), and refactor VLASizeChecker to have only one Checker subclass (not two) and to not use the node builders directly (and instead use the newer CheckerContext).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86329 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/GRState.h
afcfd753e6c5d50edb13dd0b7f46fc40f6aa8fa0 07-Nov-2009 John McCall <rjmccall@apple.com> Implement -Wconversion. Off by default, in the non-gcc group. There's
significant work left to be done to reduce the false-positive rate here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86326 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
680523a91dd3351389667c8de17121ba7ae82673 07-Nov-2009 John McCall <rjmccall@apple.com> Implement -Wconversion. Off by default, in the non-gcc group. There's
significant work left to be done to reduce the false-positive rate here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86326 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
c2c78ec0b6acd3c5e3d82b58eb3197595d08c082 07-Nov-2009 Steve Naroff <snaroff@apple.com> Add basic code completion support for ObjC messages.

Still a work in progress...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86323 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c4df6d2c05c647a6a5770ba0c749782b6c023a3a 07-Nov-2009 Steve Naroff <snaroff@apple.com> Add basic code completion support for ObjC messages.

Still a work in progress...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86323 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
5117fe60743bb49f91f6e38bf56ff2fa8ecc2e18 07-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Various improvements to Clang's code-completion infrastructure:
- Introduce more code-completion string "chunk" kinds that describe
symbols, the actual text that the user is expected to type, etc.
- Make the generation of macro results optional, since it can be
slow
- Make code-completion accessible through the C API, marshalling the
code-completion results through a temporary file (ick) to maintain
process separation.

The last doesn't have tests yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86306 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0c8296dfb495f41d6f0de6fe1d03014ffd063674 07-Nov-2009 Douglas Gregor <dgregor@apple.com> Various improvements to Clang's code-completion infrastructure:
- Introduce more code-completion string "chunk" kinds that describe
symbols, the actual text that the user is expected to type, etc.
- Make the generation of macro results optional, since it can be
slow
- Make code-completion accessible through the C API, marshalling the
code-completion results through a temporary file (ick) to maintain
process separation.

The last doesn't have tests yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86306 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
86af9e45d2eb35eb6ca2d671826e3b6c8b1645f9 06-Nov-2009 Ted Kremenek <kremenek@apple.com> Make the VLASizeChecker implementation private, and its creation only known to GRExprEngineInternalChecks.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/VLASizeChecker.h
84b3595729d249d89b8b67a547e0992797e19793 06-Nov-2009 Ted Kremenek <kremenek@apple.com> Make the VLASizeChecker implementation private, and its creation only known to GRExprEngineInternalChecks.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/VLASizeChecker.h
2ec81ee9afc929a8b429ddb2d4feb39ef96c718b 06-Nov-2009 Ted Kremenek <kremenek@apple.com> Make the implementation of DivZeroChecker private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86288 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/DivZeroChecker.h
36df58ab9e3eb6823966ee16c5516eea1d88e541 06-Nov-2009 Ted Kremenek <kremenek@apple.com> Make the implementation of DivZeroChecker private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86288 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/DivZeroChecker.h
cc8201ab5d9944974be29d965111068d7b10f6c9 06-Nov-2009 John McCall <rjmccall@apple.com> Don't warn -Wsign-compare if we're in an unevaluated context, and fixed
a typo pointed out by Fariborz.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
7d62a8f81f2f22e25c048edfb412b22e06c542ff 06-Nov-2009 John McCall <rjmccall@apple.com> Don't warn -Wsign-compare if we're in an unevaluated context, and fixed
a typo pointed out by Fariborz.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
bfd5ad645215f07538266b169ebec822c2a9b004 06-Nov-2009 Chris Lattner <sabre@nondot.org> add some const qualifiers, patch by Kovarththanan Rajaratnam!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86260 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
abbbfd960cc0978509e060741ff8cc8db32d6b5c 06-Nov-2009 Chris Lattner <sabre@nondot.org> add some const qualifiers, patch by Kovarththanan Rajaratnam!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86260 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
cb0223508aed978a08628ef9fabb781ed9198540 06-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a checker for CWE-466: Return of Pointer Value Outside of Expected Range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86252 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
ceeb02db9ad4232ea248a44192180d5bc7fe2653 06-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a checker for CWE-466: Return of Pointer Value Outside of Expected Range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86252 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
7f7b91e7aee474a258b6132d5ba04143b417d7c8 06-Nov-2009 John McCall <rjmccall@apple.com> Create a warning group "non-gcc" for diagnostics which are not enabled
by default in GCC. Users who want to emulate gcc's warning behavior
exactly should be able to use CC="clang -Wno-non-gcc"; this should help
projects to transition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86241 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
4c2620705b87ab6899fb2756bf191bb89d1995c8 06-Nov-2009 John McCall <rjmccall@apple.com> Create a warning group "non-gcc" for diagnostics which are not enabled
by default in GCC. Users who want to emulate gcc's warning behavior
exactly should be able to use CC="clang -Wno-non-gcc"; this should help
projects to transition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86241 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
8d825b261b61699d3312326e5d4140a3cb3cc113 06-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Rework the fix-it hint for code like

get_origin->x

where get_origin is actually a function and the user has forgotten the
parentheses. Instead of giving a lame note for the fix-it, give a
full-fledge error, early, then build the call expression to try to
recover.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f0b5fd3a55baf1e3e768fe981bcc3ad5e209ec1 06-Nov-2009 Douglas Gregor <dgregor@apple.com> Rework the fix-it hint for code like

get_origin->x

where get_origin is actually a function and the user has forgotten the
parentheses. Instead of giving a lame note for the fix-it, give a
full-fledge error, early, then build the call expression to try to
recover.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
13b2bab70fd6034cb0461b74a9738bf5a23a8a4c 06-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Turn off -Wsign-compare warnings by default

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86233 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
35de813674503b87ec5117b6492cc0a4ef7d8728 06-Nov-2009 Douglas Gregor <dgregor@apple.com> Turn off -Wsign-compare warnings by default

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86233 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
ed1db4d1eb4e1e67ae71d56d59090c8342978bfe 06-Nov-2009 Ted Kremenek <kremenek@apple.com> static analyzer: refactor checking logic for returning the address of a stack variable or a garbage
value into their own respective subclasses of Checker (and put them in .cpp files where their
implementation details are hidden from GRExprEngine).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86215 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/GRExprEngine.h
1053d246f451c399468248625d1146e3d845e21e 06-Nov-2009 Ted Kremenek <kremenek@apple.com> static analyzer: refactor checking logic for returning the address of a stack variable or a garbage
value into their own respective subclasses of Checker (and put them in .cpp files where their
implementation details are hidden from GRExprEngine).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86215 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/GRExprEngine.h
32aff13caef037f4296d2efe6192a5d759633dbd 06-Nov-2009 Ted Kremenek <kremenek@apple.com> Minor cleanup: use BuiltinBug (which will soon be renamed) for DeferenceChecker and friends so that they always report the same bug type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86208 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
2c791bd122285e1212094147454ef996dee8ebaf 06-Nov-2009 Ted Kremenek <kremenek@apple.com> Minor cleanup: use BuiltinBug (which will soon be renamed) for DeferenceChecker and friends so that they always report the same bug type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86208 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
4176705b836ea3720fcec92428c688fb0a9fc9b1 05-Nov-2009 John Thompson <john.thompson.jtsoftware@gmail.com> Eliminate tabls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
40d1bb6383c14d5f8249d0640e8088a91b694c66 05-Nov-2009 John Thompson <John.Thompson.JTSoftware@gmail.com> Eliminate tabls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
cffa5b706a6ccbc5c2f96e6778d0e1b33b666144 05-Nov-2009 Chris Lattner <sabre@nondot.org> clean up integer preprocessor type definitions, patch by Ken Dyck!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9099e7bcda3922cee0cffcdf21332ac4aa193cea 05-Nov-2009 Chris Lattner <sabre@nondot.org> clean up integer preprocessor type definitions, patch by Ken Dyck!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e65800a6496207b51379f92540789206b990781e 05-Nov-2009 John Thompson <john.thompson.jtsoftware@gmail.com> Adding -fshort-wchar option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86167 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
asic/TargetInfo.h
river/Options.def
a6fda124bf380479529d6a80b84b62cacd3cb707 05-Nov-2009 John Thompson <John.Thompson.JTSoftware@gmail.com> Adding -fshort-wchar option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86167 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
asic/TargetInfo.h
river/Options.def
9c7ab14293ca026170bfa698aa5141dd136c2cd2 05-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Don't allow definitions of array variables without some size information in C++. Fixed PR5401

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e8247556807ecaaac470852222762db998a05b2 05-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Don't allow definitions of array variables without some size information in C++. Fixed PR5401

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bd48e8c48190a8f036a539463e7b55ebb0a573c7 05-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Adds doxygen comment for HasSideEffects method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6ddf4784a22b994b954ed74c6061d4603d474639 05-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Adds doxygen comment for HasSideEffects method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
90157f6d8093abd6c42c97481f5b9cd8252c6139 05-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Added support for static variables which require
initialization before main. Fixes pr5396.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
393c247fe025ccb5f914e37e948192ea86faef8c 05-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Added support for static variables which require
initialization before main. Fixes pr5396.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dac6742b8ae1203ba81978ee1f0c98524bc4b690 05-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate some false positives due to a thinko in the "'blah' is
always zero in this context" warning logic. Also, make the diagnostic
itself more precise when referring to pointer values ("NULL" vs. "zero").


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Scope.h
9c4b838782132ec670fd7e48d1a7a7fd433fed06 05-Nov-2009 Douglas Gregor <dgregor@apple.com> Eliminate some false positives due to a thinko in the "'blah' is
always zero in this context" warning logic. Also, make the diagnostic
itself more precise when referring to pointer values ("NULL" vs. "zero").


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86143 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Scope.h
78bfc818ad9b7502e0a16c4b90e960881b4db4ac 05-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parse C++0x constexpr. Test case follows when this does something useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86135 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
2ac67239b4ab81c439ffcc56367574c869f87dae 05-Nov-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parse C++0x constexpr. Test case follows when this does something useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86135 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
a93c19302a410443d4ec3d12f97a0b0ac178c40c 05-Nov-2009 John McCall <rjmccall@apple.com> Implement the conditional-operator part of -Wsign-compare. Turn
DiagnoseSignCompare into Sema::CheckSignCompare and call it from more places.

Add some enumerator tests. These seem to expose some oddities in the
types we're converting C++ enumerators to; in particular, they're converting
to unsigned before int, which seems to contradict 4.5 [conv.prom] p2.

Note to self: stop baiting Doug in my commit messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b13c87f0c9705d91d5a3e134be9934c9ad531071 05-Nov-2009 John McCall <rjmccall@apple.com> Implement the conditional-operator part of -Wsign-compare. Turn
DiagnoseSignCompare into Sema::CheckSignCompare and call it from more places.

Add some enumerator tests. These seem to expose some oddities in the
types we're converting C++ enumerators to; in particular, they're converting
to unsigned before int, which seems to contradict 4.5 [conv.prom] p2.

Note to self: stop baiting Doug in my commit messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a0be7a010356fc4a0806317227fec73fedea10a7 05-Nov-2009 Ted Kremenek <kremenek@apple.com> Tweak wording and classifications of analyzer diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86127 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
ae78447ef124fcbc6bef14f73a67586420c0196a 05-Nov-2009 Ted Kremenek <kremenek@apple.com> Tweak wording and classifications of analyzer diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86127 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
815ef4694cfca2e39767546be78d92d1fd9f8bfc 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Replace DiagnosticClient::setLangOptions with {Begin,End}SourceFile, and clarify
invariants (diagnostics with source informations must occur between
{Begin,End}SourceFile).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86113 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/TextDiagnosticPrinter.h
efcbe9475348ecab6b85153baa21d0e894e39607 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Replace DiagnosticClient::setLangOptions with {Begin,End}SourceFile, and clarify
invariants (diagnostics with source informations must occur between
{Begin,End}SourceFile).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86113 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/TextDiagnosticPrinter.h
a93f338bc8bebdafc6fe241e87312ad312a1fe6b 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Convert CreateAnalysisConsumer and friends to just take a const Preprocessor&, and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86112 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
rontend/PathDiagnosticClients.h
efceabd2380f49306bc0229583458e93b062094b 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Convert CreateAnalysisConsumer and friends to just take a const Preprocessor&, and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86112 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
rontend/PathDiagnosticClients.h
fe5ab32a071721c7fabc0729b8dc4daca567e70c 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove unused SetPreprocessor method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86111 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
eb6aeb51977b6755481213a1f31512538648e24b 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Remove unused SetPreprocessor method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86111 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
0e2a50f5a0f0171f2d7836a5860bf5b82d39f80a 05-Nov-2009 Ted Kremenek <kremenek@apple.com> AnalysisManager: Don't rely on PathDiagnosicClients flushing their diagnostics when they are destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86110 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
b01f06ca72362d527bb65fbf018ac53df575ded1 05-Nov-2009 Ted Kremenek <kremenek@apple.com> AnalysisManager: Don't rely on PathDiagnosicClients flushing their diagnostics when they are destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86110 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
a8f606dbba86bc18edad2956887a276f466b60be 05-Nov-2009 Ted Kremenek <kremenek@apple.com> Acting on Daniel's nagging, remove PathDiagnosticClientFactory() and
migrate work in the destructors of PathDiagnosticClients from their
destructors to FlushReports(). The destructors now currently call
FlushReports(); this will be fixed in a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86108 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
rontend/PathDiagnosticClients.h
b697a4e4118d2d59dc0f38463c8417ddaf58a11f 05-Nov-2009 Ted Kremenek <kremenek@apple.com> Acting on Daniel's nagging, remove PathDiagnosticClientFactory() and
migrate work in the destructors of PathDiagnosticClients from their
destructors to FlushReports(). The destructors now currently call
FlushReports(); this will be fixed in a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86108 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
rontend/PathDiagnosticClients.h
54c27bec7e039582b418511eaf52cab34239e98b 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Make html::{SyntaxHighlight,HighlightMacros} take a const Preprocessor.

This is conceptually correct, but adds a huge hack to HighlightMacros which is
in fact doing all sorts of mutation to the Preprocessor. See FIXME.

Chris, please review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86107 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
ff6912b5a9d5073221956fe4d6367b14f3f4b68f 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Make html::{SyntaxHighlight,HighlightMacros} take a const Preprocessor.

This is conceptually correct, but adds a huge hack to HighlightMacros which is
in fact doing all sorts of mutation to the Preprocessor. See FIXME.

Chris, please review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86107 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
c577cb6cdabd5883fdf654241cfea08d0d4967b3 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Make LookUpIdentifierInfo const. This makes the Identifiers table mutable and is
a little fuzzy, but conceptually it's just uniquing the identifier.

Chris, please review. I debated splitting into const/non-const versions where
the const one propogated constness to the resulting IdentifierInfo*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86106 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c3222091e1ffa35d0264ca6b680a88c9dc84ede2 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Make LookUpIdentifierInfo const. This makes the Identifiers table mutable and is
a little fuzzy, but conceptually it's just uniquing the identifier.

Chris, please review. I debated splitting into const/non-const versions where
the const one propogated constness to the resulting IdentifierInfo*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86106 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
24a324f88279837ce7f3d6783a66fc186a66d40d 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> StringRefize Preprocessor::getIdentifierInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86105 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
3da736c1143126be19b253804b3b135ebcd3d6ff 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> StringRefize Preprocessor::getIdentifierInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86105 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
226cd92ffbd118e46109e40168e7fb1aaf148889 05-Nov-2009 Ted Kremenek <kremenek@apple.com> Modify GRExprEngine::EvalBind() to take both a "store expression" and
an "assign expression", representing the expressions where the value
binding occurs and the assignment takes place respectively. These are
largely syntactic clues for better error reporting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86084 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
nalysis/PathSensitive/GRExprEngine.h
50ecd1536a2b70327e9eb2c2c2a652cde3dae365 05-Nov-2009 Ted Kremenek <kremenek@apple.com> Modify GRExprEngine::EvalBind() to take both a "store expression" and
an "assign expression", representing the expressions where the value
binding occurs and the assignment takes place respectively. These are
largely syntactic clues for better error reporting.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86084 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
nalysis/PathSensitive/GRExprEngine.h
ea3fd09ae9d2c5eb51cdd626b329785546856fa8 05-Nov-2009 John McCall <rjmccall@apple.com> Implement -Wsign-compare, or at least the actual comparison part of it.
Conditional operands are next.

Fixes part of rdar://problem/7289584.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86083 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
45aa4557fe4210034e85f4a807ff637a9dd146d6 05-Nov-2009 John McCall <rjmccall@apple.com> Implement -Wsign-compare, or at least the actual comparison part of it.
Conditional operands are next.

Fixes part of rdar://problem/7289584.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86083 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d321195358ca63f30a5eb83ef8b8c3a4f74ba41 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Kill PreprocessorFactory, which was both morally repugnant and totally unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86076 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/AnalysisConsumer.h
rontend/PathDiagnosticClients.h
rontend/Utils.h
ex/Preprocessor.h
ewrite/HTMLRewrite.h
90b1827c1c1cf075266b96b416eefcf37924333b 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Kill PreprocessorFactory, which was both morally repugnant and totally unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86076 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/AnalysisConsumer.h
rontend/PathDiagnosticClients.h
rontend/Utils.h
ex/Preprocessor.h
ewrite/HTMLRewrite.h
7536a5fe4cf7fa1a9972e1401a32c54fbae88cf2 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Tweak formatting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
3926a1fe92f622f194d7d99560d0b17b2af65a61 05-Nov-2009 Daniel Dunbar <daniel@zuster.org> Tweak formatting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
9a5062f947c83614745ee356083115b67ba78e8b 05-Nov-2009 John McCall <rjmccall@apple.com> Diagnose using a field to initialize itself. Patch by Brandon Pearcy!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b41900410fae8cba4bc02db2e3e44142e7f4c625 05-Nov-2009 John McCall <rjmccall@apple.com> Diagnose using a field to initialize itself. Patch by Brandon Pearcy!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e08e7487e619e2a37d6c8d8ad811173ade97ba1 04-Nov-2009 Chris Lattner <sabre@nondot.org> ignore two new -W flags, patch by Tom Jablin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
655fe9b0d93471e02d6510058355389bbac154f8 04-Nov-2009 Chris Lattner <sabre@nondot.org> ignore two new -W flags, patch by Tom Jablin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
cdf4f468399c6598b2238772c09c12208365069d 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> InitializePreprocessor cannot fail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86048 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
938963f076418aa61b570e5317240f66642af2df 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> InitializePreprocessor cannot fail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86048 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
053eb03fc0dd1c3038f653859ca0e83b49648734 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -undef flag into PreprocessorInitOptions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86047 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
468fe246192c3683360d1a6b1b333d85b8794f77 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Move -undef flag into PreprocessorInitOptions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86047 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
26c32514ce211ace671036d3dae6898e520b3aab 04-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate the "old" ways of parsing operator-function-ids and
conversion-function-ids; all clients have moved on to
ParseUnqualifiedId.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86028 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1cf7f0adb4a9cbb9cc971a46af5eca9fcb6c566e 04-Nov-2009 Douglas Gregor <dgregor@apple.com> Eliminate the "old" ways of parsing operator-function-ids and
conversion-function-ids; all clients have moved on to
ParseUnqualifiedId.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86028 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a5f7cb98b31f09b1011a46a37643fc6e6f451674 04-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Switch parsing of using declarations over to ParseUnqualifiedId.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
12c118a8ff9f61a4d63146fe1a5c0d60987f99bb 04-Nov-2009 Douglas Gregor <dgregor@apple.com> Switch parsing of using declarations over to ParseUnqualifiedId.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
000f59548655c6a0f9dc69521406506de022f5c8 04-Nov-2009 John McCall <rjmccall@apple.com> Preserve type source information in sizeof/alignof expressions, and pass it
through to indexing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5ab75172051a6d2ea71a80a79e81c65519fd3462 04-Nov-2009 John McCall <rjmccall@apple.com> Preserve type source information in sizeof/alignof expressions, and pass it
through to indexing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0c29c7363f3b12a7563b56c163414dcd0ca5f891 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix commento.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86016 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
ac9cf4d943c33484caa235627c440d68d82f4337 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix commento.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86016 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
542defb262afbdac5a09bb02dd8ce7de2818f0fa 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out a diagnostic options class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86010 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
rontend/TextDiagnosticPrinter.h
eace8743030d2979251a0c5ae247371cfd9056e5 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Factor out a diagnostic options class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86010 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/DiagnosticOptions.h
rontend/TextDiagnosticPrinter.h
aa934169a09b153bc7475e43fe0d1dcbf60737b9 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Catch uses of undefined values when they are used in assignment, thus catching such bugs closer to the source.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86003 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
nalysis/PathSensitive/GRExprEngine.h
b107c4b7efb907d75620cd3c17f82fe27dc5b745 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Catch uses of undefined values when they are used in assignment, thus catching such bugs closer to the source.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86003 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h
nalysis/PathSensitive/GRExprEngine.h
3f2bda4af4d6e73382a42030dcd94cec0e658f82 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Add mising #ifdef guards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86002 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefinedArgChecker.h
bf960cb0ff08fd766723a059e012daa596f5e918 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Add mising #ifdef guards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86002 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefinedArgChecker.h
3cdeade697dbfcc60cf14c3f87b7d41f5aa0f7f4 04-Nov-2009 John McCall <rjmccall@apple.com> Diagnose the use of 'fastcall' on functions without prototypes or with
varargs prototypes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86001 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9112b93829da90b1612453bea4c491a1678272a4 04-Nov-2009 John McCall <rjmccall@apple.com> Diagnose the use of 'fastcall' on functions without prototypes or with
varargs prototypes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86001 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0ba3aff6166d24f3e6732c033e87bf3d33faad7b 04-Nov-2009 John McCall <rjmccall@apple.com> Diagnose __builtin_offsetof on incomplete types. Fixes
rdar://problem/7222956



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d00f200f64994858492558b54c6f6f2b3d4b4310 04-Nov-2009 John McCall <rjmccall@apple.com> Diagnose __builtin_offsetof on incomplete types. Fixes
rdar://problem/7222956



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9701fea26fbbd52521d6fba23ff272edecb4108d 04-Nov-2009 John McCall <rjmccall@apple.com> Change our basic strategy for avoiding deprecation warnings when the decl use
appears in a deprecated context. In the new strategy, we emit the warnings
as usual unless we're currently parsing a declaration, where "declaration" is
restricted to mean a decl group or a few special cases in Objective C. If
we *are* parsing a declaration, we queue up the deprecation warnings until
the declaration has been completely parsed, and then emit them only if the
decl is not deprecated.
We also standardize the bookkeeping for deprecation so as to avoid special cases.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85998 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
54abf7d4fa3123b8324c09d2a4dfb789fd818403 04-Nov-2009 John McCall <rjmccall@apple.com> Change our basic strategy for avoiding deprecation warnings when the decl use
appears in a deprecated context. In the new strategy, we emit the warnings
as usual unless we're currently parsing a declaration, where "declaration" is
restricted to mean a decl group or a few special cases in Objective C. If
we *are* parsing a declaration, we queue up the deprecation warnings until
the declaration has been completely parsed, and then emit them only if the
decl is not deprecated.
We also standardize the bookkeeping for deprecation so as to avoid special cases.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85998 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
76e653a3565d955f87a1228297377d6ece62db54 04-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Merge ZeroSizedVLAChecker and UndefSizedVLAChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85996 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefSizedVLAChecker.h
nalysis/PathSensitive/Checkers/VLASizeChecker.h
nalysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h
05a2338f7ba1c8a0136e120502f80a38cf0e9fd3 04-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Merge ZeroSizedVLAChecker and UndefSizedVLAChecker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85996 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefSizedVLAChecker.h
nalysis/PathSensitive/Checkers/VLASizeChecker.h
nalysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h
cb368453a76478fcc07a8c08b94aa2311ea3c410 04-Nov-2009 Tanya Lattner <tonic@nondot.org> Merge constant array and structures. This will create a global variables for arrays and structs that are constant and their initializer is constant. It is on by default but can be disable with the flag -fno-merge-all-constants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85991 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
rontend/CompileOptions.h
59876c2713683d1538ca45bb14c2f415862fb716 04-Nov-2009 Tanya Lattner <tonic@nondot.org> Merge constant array and structures. This will create a global variables for arrays and structs that are constant and their initializer is constant. It is on by default but can be disable with the flag -fno-merge-all-constants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85991 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
rontend/CompileOptions.h
d1319d2d62b108c7c24c92e73d4d101b035d1037 04-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for parsing dependent template-ids that refer to
overloaded operators, e.g.,

p->template operator+<T>()




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
asic/OperatorKinds.h
arse/Parser.h
ca1bdd7c269a2390d43c040a60511edd017ee130 04-Nov-2009 Douglas Gregor <dgregor@apple.com> Implement support for parsing dependent template-ids that refer to
overloaded operators, e.g.,

p->template operator+<T>()




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
asic/OperatorKinds.h
arse/Parser.h
773c0e5614b4f5bf5ab40e7730c8bbfd9ff94de0 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Use unsigned char instead of unsigned : 8 to make the optimizer happier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85985 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
082fb9ae304a25aa6be1f74d9b9720c52a96231e 04-Nov-2009 Daniel Dunbar <daniel@zuster.org> Use unsigned char instead of unsigned : 8 to make the optimizer happier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85985 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
1da5135f631dc77b9f5f0a107d72ba36e759e0aa 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Refactor StoreManager::BindDecl() to take a VarRegion* instead of a VarDecl*, and modify GRExprEngine::EvalBind() to handle decl initialization as well. This paves the way for adding "checker" visitation in EvalBind().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85983 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
f6f56d4fc8ebce17e7b83eb2c35f57a055c22283 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Refactor StoreManager::BindDecl() to take a VarRegion* instead of a VarDecl*, and modify GRExprEngine::EvalBind() to handle decl initialization as well. This paves the way for adding "checker" visitation in EvalBind().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85983 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
8ba8cd34a5e7080c3d41c8d344d9ed90d5cdc784 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Change GRTransferFuncs::RegisterChecks() to take a GRExprEngine& instead of a BugReporter&. This paves the way for pulling some of the retain/release checker into a "Checker" class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85971 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
1fb7d0c8323d53d10ae4f61e8bce02029f143ff7 04-Nov-2009 Ted Kremenek <kremenek@apple.com> Change GRTransferFuncs::RegisterChecks() to take a GRExprEngine& instead of a BugReporter&. This paves the way for pulling some of the retain/release checker into a "Checker" class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85971 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
c9f5eac5c940cc542c7f26560653cfeecd264545 04-Nov-2009 Mike Stump <mrs@apple.com> Refine volatile handling, specifically, we must have the canonical
type to look at the volatile specifier. I found these all from just
hand auditing the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
df317bf71653eeb235da8337b1e8e790f9653aa4 04-Nov-2009 Mike Stump <mrs@apple.com> Refine volatile handling, specifically, we must have the canonical
type to look at the volatile specifier. I found these all from just
hand auditing the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3bd3bc4796da157e94d39ba30154b2fc7bf8af0a 04-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Parsing and semantic analysis for template-ids that name overloaded
operators, e.g.,

operator+<int>

which now works in declarators, id-expressions, and member access
expressions. This commit only implements the non-dependent case, where
we can resolve the template-id to an actual declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85966 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ex/Token.h
arse/Action.h
arse/DeclSpec.h
014e88d94ff83e3aad4e33b16413a2d1817ec208 04-Nov-2009 Douglas Gregor <dgregor@apple.com> Parsing and semantic analysis for template-ids that name overloaded
operators, e.g.,

operator+<int>

which now works in declarators, id-expressions, and member access
expressions. This commit only implements the non-dependent case, where
we can resolve the template-id to an actual declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85966 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ex/Token.h
arse/Action.h
arse/DeclSpec.h
a054adf6f7e7edcd096f57b8e21d54c79574dc89 03-Nov-2009 Chris Lattner <sabre@nondot.org> Implement support for the -undef command line option, patch by
Roman Divacky! PR5363


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85932 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
e6113de52df132b89c3a5a6141f17d37e83322ae 03-Nov-2009 Chris Lattner <sabre@nondot.org> Implement support for the -undef command line option, patch by
Roman Divacky! PR5363


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85932 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
b14db815faa116fe0b183c8e916eb7b4259e6125 03-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Replace the code that parses member access expressions after "." or
"->" with a use of ParseUnqualifiedId. Collapse
ActOnMemberReferenceExpr, ActOnDestructorReferenceExpr (both of them),
ActOnOverloadedOperatorReferenceExpr,
ActOnConversionOperatorReferenceExpr, and
ActOnMemberTemplateIdReferenceExpr into a single, new action
ActOnMemberAccessExpr that does the same thing more cleanly (and can
keep more source-location information).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
2d1c21414199a7452f122598189363a3922605b1 03-Nov-2009 Douglas Gregor <dgregor@apple.com> Replace the code that parses member access expressions after "." or
"->" with a use of ParseUnqualifiedId. Collapse
ActOnMemberReferenceExpr, ActOnDestructorReferenceExpr (both of them),
ActOnOverloadedOperatorReferenceExpr,
ActOnConversionOperatorReferenceExpr, and
ActOnMemberTemplateIdReferenceExpr into a single, new action
ActOnMemberAccessExpr that does the same thing more cleanly (and can
keep more source-location information).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
388a960c68b38f593ed6282f391ec505b57ab89d 03-Nov-2009 John McCall <rjmccall@apple.com> Silence a warning by giving Parser::FieldCallback a virtual destructor, and
anchor the vtable to Parser.cpp for good measure.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85927 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
6c94a6d77f456f23ecd4c2061e6413786b5e6571 03-Nov-2009 John McCall <rjmccall@apple.com> Silence a warning by giving Parser::FieldCallback a virtual destructor, and
anchor the vtable to Parser.cpp for good measure.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85927 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bc3aaabab8943d6bfc1f5df4ef068be1c6f81e11 03-Nov-2009 John McCall <rjmccall@apple.com> Reorganize the parsing of decl groups / function definitions so that
declarators are parsed primarily within a single function (at least for
these cases). Remove some excess diagnostics arising during parse failures.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85924 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d8ac05753dc4506224d445ff98399c01da3136e5 03-Nov-2009 John McCall <rjmccall@apple.com> Reorganize the parsing of decl groups / function definitions so that
declarators are parsed primarily within a single function (at least for
these cases). Remove some excess diagnostics arising during parse failures.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85924 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3ce99b53f01404c7f34520d0bd8c5072a7e46643 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Merge NullDerefChecker.[h,cpp] and UndefDerefChecker.[h,cpp]. They are essentially two parts of the same check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85911 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/DereferenceChecker.h
nalysis/PathSensitive/Checkers/NullDerefChecker.h
nalysis/PathSensitive/Checkers/UndefDerefChecker.h
dc998c1b90a17d747ca2fb05e967779740747162 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Merge NullDerefChecker.[h,cpp] and UndefDerefChecker.[h,cpp]. They are essentially two parts of the same check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85911 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/DereferenceChecker.h
nalysis/PathSensitive/Checkers/NullDerefChecker.h
nalysis/PathSensitive/Checkers/UndefDerefChecker.h
4d8e4fe646df7d12f08a9c2681e6b13b7185f72f 03-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Use ParseUnqualifiedId when parsing id-expressions. This eliminates
yet another copy of the unqualified-id parsing code.

Also, use UnqualifiedId to simplify the Action interface for building
id-expressions. ActOnIdentifierExpr, ActOnCXXOperatorFunctionIdExpr,
ActOnCXXConversionFunctionExpr, and ActOnTemplateIdExpr have all been
removed in favor of the new ActOnIdExpression action.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85904 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
02a24ee67c0a91bdb0db8a651d5748595652e670 03-Nov-2009 Douglas Gregor <dgregor@apple.com> Use ParseUnqualifiedId when parsing id-expressions. This eliminates
yet another copy of the unqualified-id parsing code.

Also, use UnqualifiedId to simplify the Action interface for building
id-expressions. ActOnIdentifierExpr, ActOnCXXOperatorFunctionIdExpr,
ActOnCXXConversionFunctionExpr, and ActOnTemplateIdExpr have all been
removed in favor of the new ActOnIdExpression action.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85904 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
c2e8dd74fd21c4ee3be55a63cd55cab00b1c5e4f 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull VLA size checker into its own files.
Split it to two checkers, one for undefined size,
the other for zero size, so that we don't need to query the size
when emitting the bug report.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85895 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/UndefSizedVLAChecker.h
nalysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h
5206f0b913d1a11744c9436c83b24f8daa21152c 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull VLA size checker into its own files.
Split it to two checkers, one for undefined size,
the other for zero size, so that we don't need to query the size
when emitting the bug report.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85895 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/Checkers/UndefSizedVLAChecker.h
nalysis/PathSensitive/Checkers/ZeroSizedVLAChecker.h
b4be4da7a6b37e5296b01b1f2172bfdbef0da7a1 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Implement: <rdar://problem/6250216> Warn against using -[NSAutoreleasePool release] in GC mode


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85887 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
54cb7ccc769a5e81a13812e08c21daf52a781262 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Implement: <rdar://problem/6250216> Warn against using -[NSAutoreleasePool release] in GC mode


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85887 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
7f437c99d5bec4dd91aa7404e64c0237e288f4d8 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Move 'static inline' functions GetNullarySelector() and GetUnarySelector() from CFRefCount.cpp to ASTContext.h. These functions are likely to be generally useful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d5925bdff8bda8e062985caea299946636104d99 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Move 'static inline' functions GetNullarySelector() and GetUnarySelector() from CFRefCount.cpp to ASTContext.h. These functions are likely to be generally useful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fa24b86da2e04bfa3afd4f86d26f666971a3a87a 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull AttrNonNullChecker into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85883 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/AttrNonNullChecker.h
94943b6d913718216a95a91864040ffc11a1d779 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull AttrNonNullChecker into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85883 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/AttrNonNullChecker.h
de62af5132c51cdc718534e53278002b6949a00c 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull UndefinedArgChecker into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/Checkers/UndefinedArgChecker.h
8958fff8aad09f317a51b2d4cda3d7b126a530a4 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull UndefinedArgChecker into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/Checkers/UndefinedArgChecker.h
d3dca2e52a73dcede1c56ef5e4fa7e68e4610f18 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull BadCallChecker into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85868 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/BadCallChecker.h
4f64e5f03149200aaf553d7742966d78b717a32c 03-Nov-2009 Zhongxing Xu <xuzhongxing@gmail.com> Pull BadCallChecker into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85868 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/BadCallChecker.h
bc8aae9e4a2d56b14fa48fd36bcf123443869304 03-Nov-2009 John McCall <rjmccall@apple.com> Switch ParseStructDeclaration to a callback-based API. This will make
it easier to track within Sema whether the parser is parsing a declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85855 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bdd563ec391b0a83fc6d04b8a8ea3022aa702f74 03-Nov-2009 John McCall <rjmccall@apple.com> Switch ParseStructDeclaration to a callback-based API. This will make
it easier to track within Sema whether the parser is parsing a declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85855 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d87f5a7a7cb050e9cec8b330f06d1f034eddb417 03-Nov-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new class, UnqualifiedId, that provides a parsed
representation of a C++ unqualified-id, along with a single parsing
function (Parser::ParseUnqualifiedId) that will parse all of the
various forms of unqualified-id in C++.

Replace the representation of the declarator name in Declarator with
the new UnqualifiedId class, simplifying declarator-id parsing
considerably and providing more source-location information to
Sema. In the future, I hope to migrate all of the other
unqualified-id-parsing code over to this single representation, then
begin to merge actions that are currently only different because we
didn't have a unqualified notion of the name in the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
arse/Parser.h
3f9a0566e6793151b99a65ab936220971cf96c1b 03-Nov-2009 Douglas Gregor <dgregor@apple.com> Introduce a new class, UnqualifiedId, that provides a parsed
representation of a C++ unqualified-id, along with a single parsing
function (Parser::ParseUnqualifiedId) that will parse all of the
various forms of unqualified-id in C++.

Replace the representation of the declarator name in Declarator with
the new UnqualifiedId class, simplifying declarator-id parsing
considerably and providing more source-location information to
Sema. In the future, I hope to migrate all of the other
unqualified-id-parsing code over to this single representation, then
begin to merge actions that are currently only different because we
didn't have a unqualified notion of the name in the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
arse/Parser.h
509ec12b3c2db8166ccac2a9f87de6b6aa280602 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove GRExprEngine::CheckerVisitLocation(). It was only called in one place, so we inlined it in to GRExprEngine::EvalLocation().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85838 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
0296c22557b3735e2ffeff690eb46fb0e9152bcc 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Remove GRExprEngine::CheckerVisitLocation(). It was only called in one place, so we inlined it in to GRExprEngine::EvalLocation().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85838 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
ce45a081aec95156d0c3ab5ab9ca0d37ac268372 02-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Property declared in continuation class can only be used to
change a readonly property declared in the class (and its inherited protocols)
to writable property. (Fixes radar 7350645).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85836 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
a6f14e1a7ee3a9343a838297c73ca87fddb9ed4a 02-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Property declared in continuation class can only be used to
change a readonly property declared in the class (and its inherited protocols)
to writable property. (Fixes radar 7350645).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85836 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
4c746ada4fe8f5b46b213cc50ad5df664dc0d512 02-Nov-2009 John Thompson <john.thompson.jtsoftware@gmail.com> Added __has_include and __has_include_next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
92bd8c70a6837b647a6c55964f8d0a50bf561dbc 02-Nov-2009 John Thompson <John.Thompson.JTSoftware@gmail.com> Added __has_include and __has_include_next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
3d6b1440630e63bb2e8f7cec5cbcb48ed599ff00 02-Nov-2009 Ted Kremenek <kremenek@apple.com> Hopefully make gcc-4.0 happy with respect to the following warning:

warning: 'class clang::StackFrameContext' has virtual functions but non-virtual destructor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85833 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
cf9c789d449e088814c9e254d48112c96c8c6c6a 02-Nov-2009 Ted Kremenek <kremenek@apple.com> Hopefully make gcc-4.0 happy with respect to the following warning:

warning: 'class clang::StackFrameContext' has virtual functions but non-virtual destructor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85833 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
dea1cba5fdb20dc2e685261a19dc6236757a2899 02-Nov-2009 Ted Kremenek <kremenek@apple.com> Add "virtual" keywords for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85815 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
3abf3ad0861fb6eb8368f59dcb4cd454939b1bd2 02-Nov-2009 Ted Kremenek <kremenek@apple.com> Add "virtual" keywords for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85815 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
8ee2fc3918d6eaf8befcfd5d6fa11169987db203 02-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose implementation of a property declared in a category
in its class implementation instead of crashing. Fixes radar 7350345.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85813 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3684bd4c9518f6507d375ff8e4a4e32ce3bb51c3 02-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose implementation of a property declared in a category
in its class implementation instead of crashing. Fixes radar 7350345.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85813 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4b54e8f07c3acbb3919a6b2a28639e8765c62366 31-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Fix the type of __builtin_expect, from Ed Schouten!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
df7c3b955e31a6951822f2adf36e98543ef14c7e 31-Oct-2009 Douglas Gregor <dgregor@apple.com> Fix the type of __builtin_expect, from Ed Schouten!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85666 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
13ead642842f892c86682355db5c6f71770f36a9 31-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85652 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
7e36e95e213285bea70854541150868b6b74842b 31-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85652 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
ecce7f59b973b9f54f180e0369f461fcb588eb01 31-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move CheckDivZero into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85651 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/DivZeroChecker.h
9e56d2360b2cfb66864755396c5a64b5019871b8 31-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move CheckDivZero into its own files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85651 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/DivZeroChecker.h
92641557ce714394ad6e92e64f856afb71d49757 31-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move UndefDerefChecker into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85645 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefDerefChecker.h
246a9ade3e1fd24249c03f1757ed740e35fef0cd 31-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move UndefDerefChecker into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85645 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/UndefDerefChecker.h
3a6c877c4fd82f5b747e205fef45d39f9e11575a 31-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add header comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85644 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
507eec8d849fd86ac42ebdae2a343f9ab64fb274 31-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add header comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85644 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugType.h
fc4cdc9e773e417a67ac53160ced64dd783f0236 30-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Improved fix for PR3844, which recovers better for class template
partial specializations and explicit instantiations of non-templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
c78c06d81f9838aea4198e4965cc1b26bb0bf838 30-Oct-2009 Douglas Gregor <dgregor@apple.com> Improved fix for PR3844, which recovers better for class template
partial specializations and explicit instantiations of non-templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
0cfb3bbb2ebbc7198b55ac255c3d2f2228c484ae 30-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics when parsing something like

template<> struct foo<int> { ... };

where "foo" does not refer to a template. Fixes PR3844.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2cc782f7932f1069d9fa8bb5c518165802aad68d 30-Oct-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics when parsing something like

template<> struct foo<int> { ... };

where "foo" does not refer to a template. Fixes PR3844.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
854d2b8695ea2d66a3ff8973170fc531efae5d0a 30-Oct-2009 John McCall <rjmccall@apple.com> Finally suppress a compiler warning from gcc on release-asserts. Also fixes
a crash on <vector> in same, which bears additional investigation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLoc.h
cbe12738371bec6ff20372e1d3426cffc85d8323 30-Oct-2009 John McCall <rjmccall@apple.com> Finally suppress a compiler warning from gcc on release-asserts. Also fixes
a crash on <vector> in same, which bears additional investigation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLoc.h
c73058aa49e18c39d463d97e94ec98fe5697a951 30-Oct-2009 Ted Kremenek <kremenek@apple.com> Make checkers run in deterministic order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85597 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
094bef56a7900f13bb777f9a352704104b1458e7 30-Oct-2009 Ted Kremenek <kremenek@apple.com> Make checkers run in deterministic order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85597 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
9a10833ddd4ecf88c00662d7696cf02b05ab3044 30-Oct-2009 Ted Kremenek <kremenek@apple.com> Move NullDerefChecker.h instead a 'Checkers' subdirectory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85596 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/NullDerefChecker.h
nalysis/PathSensitive/NullDerefChecker.h
d86caaa6c3d1f8ec4307f883d6b1a7722aecdc81 30-Oct-2009 Ted Kremenek <kremenek@apple.com> Move NullDerefChecker.h instead a 'Checkers' subdirectory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85596 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checkers/NullDerefChecker.h
nalysis/PathSensitive/NullDerefChecker.h
ae18c1dbca608965c06a5b4679c62d01ba44f30f 30-Oct-2009 Ted Kremenek <kremenek@apple.com> Move all logic for the null dereference checker from GRExprEngineInternalChecks.cpp to a separate .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85595 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/NullDerefChecker.h
bc3a021df7f9ee4c4d1e9ec3c2aac2ef6d883206 30-Oct-2009 Ted Kremenek <kremenek@apple.com> Move all logic for the null dereference checker from GRExprEngineInternalChecks.cpp to a separate .cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85595 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/NullDerefChecker.h
12ceb217833981841c85c1231354369f8ee43272 30-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Include macros in code-completion results

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85594 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
3f7c7f48654230d8e379214cfe49fcf2fde0a2c6 30-Oct-2009 Douglas Gregor <dgregor@apple.com> Include macros in code-completion results

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85594 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
ab22afee00f4ca457dfa537892475879bde72448 30-Oct-2009 John Thompson <john.thompson.jtsoftware@gmail.com> Re-arranged some internal functions for coming __has_include changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85589 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
a28cc090f265d5bdaef9ebb24fb9d579928d3a18 30-Oct-2009 John Thompson <John.Thompson.JTSoftware@gmail.com> Re-arranged some internal functions for coming __has_include changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85589 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
ab171c54591c02d246e1938c6ec7ae598fcba2ec 30-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix PR5316: make assignment expressions can be visited as lvalue. Then we
can get the correct base lvalue.
Revert r85578.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85579 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
662174ca204cb520f634bdcb34a3708f45389d14 30-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix PR5316: make assignment expressions can be visited as lvalue. Then we
can get the correct base lvalue.
Revert r85578.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85579 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
a9a97de9a49a3937dbae5e366d48a56a6b4c5b3a 30-Oct-2009 Chris Lattner <sabre@nondot.org> warn about returning the address of a label.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85576 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9e6b37a9f1d499e7ca0950edacd0b6569e491d7f 30-Oct-2009 Chris Lattner <sabre@nondot.org> warn about returning the address of a label.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85576 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
01530b13a7a16858a8505fa90499e7ccae7baa35 30-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> This patch computes composite type of two objective-c expressions
used in a conditional expression by finding the most-derived common
super class of the two and qualifies the resulting type by the
intersection of the protocl qualifier list of the two objective-c
pointer types. ( this is continuation of radar 7334235).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85554 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e23fa2d0e84d1b878e012442a726c664216a9adf 30-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> This patch computes composite type of two objective-c expressions
used in a conditional expression by finding the most-derived common
super class of the two and qualifies the resulting type by the
intersection of the protocl qualifier list of the two objective-c
pointer types. ( this is continuation of radar 7334235).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85554 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
691c8c98e422ea1cfbcd14006b874c0fc1f90714 30-Oct-2009 Anders Carlsson <andersca@mac.com> Add a CK_DerivedToBaseMemberPointer cast kind and use it in Sema (Still no codegen).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1a31a18db9d657751f38c724adc0d62e86852bd7 30-Oct-2009 Anders Carlsson <andersca@mac.com> Add a CK_DerivedToBaseMemberPointer cast kind and use it in Sema (Still no codegen).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d6e6aa154f9dd6184e82950d1bda29e192b1a355 30-Oct-2009 John McCall <rjmccall@apple.com> Include pointee type information in the diagnostic for creating bad pointers or
arrays.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85550 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ac406052f7b980f8caa6b07b4a8d0867d53852c4 30-Oct-2009 John McCall <rjmccall@apple.com> Include pointee type information in the diagnostic for creating bad pointers or
arrays.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85550 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
997b30eccf20a93658b692604a4c89848c098d9c 30-Oct-2009 John McCall <rjmccall@apple.com> Report accurate source-location information when rebuilding types during
template instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
85737a71fee8c737f7cfba79a0aca89298fe573b 30-Oct-2009 John McCall <rjmccall@apple.com> Report accurate source-location information when rebuilding types during
template instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
671b0ff0d8b39fa6ba97a7a16d0d98124020d9aa 30-Oct-2009 John McCall <rjmccall@apple.com> Silence a gcc warning where it notices that default-constructing a class
doesn't initialize anything.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
7c475ee1339c03e2d544a28aa9b8da393ce7d20c 30-Oct-2009 John McCall <rjmccall@apple.com> Silence a gcc warning where it notices that default-constructing a class
doesn't initialize anything.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
3d3c085b441678d5cac46322c10be9d35ddeb813 29-Oct-2009 Steve Naroff <snaroff@apple.com> - Add/tweak some comments.
- change ObjCCategoryImplDecl::getCategoryClass() to getCategoryDecl().

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0d69b8cc8e90a9364771837cb42d7031b4cbb984 29-Oct-2009 Steve Naroff <snaroff@apple.com> - Add/tweak some comments.
- change ObjCCategoryImplDecl::getCategoryClass() to getCategoryDecl().

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1f5b1cfe70f976b9f13294a194c025c8cc3881ae 29-Oct-2009 Daniel Dunbar <daniel@zuster.org> Move some clang-cc errors to use diagnostics, and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
8cb6562f7b7e881342bfb228204545bfc9ee51c0 29-Oct-2009 Daniel Dunbar <daniel@zuster.org> Move some clang-cc errors to use diagnostics, and simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
9260ee905bf6adf1084464ae9abe6a68c2e59cd3 29-Oct-2009 John McCall <rjmccall@apple.com> A few TemplateArgumentLoc clean-ups. Try to remember the Expr for a declaration.
Provide an API for getting the SourceRange of a TAL and use it judiciously.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLoc.h
828bff2079b6a91ecd7ed5b842c59527d7682789 29-Oct-2009 John McCall <rjmccall@apple.com> A few TemplateArgumentLoc clean-ups. Try to remember the Expr for a declaration.
Provide an API for getting the SourceRange of a TAL and use it judiciously.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
ST/TypeLoc.h
9532add6f24ae449c22f8c98f2246a974eee95be 29-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Fix Release-Asserts build breakage

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
8de39b431d3775cd46584080beec3a75d019bd28 29-Oct-2009 Douglas Gregor <dgregor@apple.com> Fix Release-Asserts build breakage

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
2509390283cc92808f9d67495b994f7a0c8eddd4 29-Oct-2009 John McCall <rjmccall@apple.com> Apparently when is now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
4fff4b3fdf49272a26b7cb7bd564a521e938805b 29-Oct-2009 John McCall <rjmccall@apple.com> Apparently when is now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateBase.h
588613178e3a10e2b840c8f4db9e058f2fec0005 29-Oct-2009 John McCall <rjmccall@apple.com> Track source information for template arguments and template specialization
types. Preserve it through template instantiation. Preserve it through PCH,
although TSTs themselves aren't serializable, so that's pretty much meaningless.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/TemplateBase.h
ST/Type.h
ST/TypeLoc.h
rontend/PCHReader.h
rontend/PCHWriter.h
833ca991c1bfc967f0995974ca86f66ba1f666b5 29-Oct-2009 John McCall <rjmccall@apple.com> Track source information for template arguments and template specialization
types. Preserve it through template instantiation. Preserve it through PCH,
although TSTs themselves aren't serializable, so that's pretty much meaningless.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Expr.h
ST/ExprCXX.h
ST/TemplateBase.h
ST/Type.h
ST/TypeLoc.h
rontend/PCHReader.h
rontend/PCHWriter.h
1bffadc0d7351f9d155ca1f62141cc571279f3d0 29-Oct-2009 John McCall <rjmccall@apple.com> Extract TemplateArgument into a new header just for common template
classes. Move its implementation into a new module.

This will seem marginally more justified in a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85499 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
275c10a8a4a43219f67d8d2c912ec6294d9d9af2 29-Oct-2009 John McCall <rjmccall@apple.com> Extract TemplateArgument into a new header just for common template
classes. Move its implementation into a new module.

This will seem marginally more justified in a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85499 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/TemplateBase.h
52128a7f4d9abea59815ca49e00a2e194d1c34b4 29-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move NullDeref and UndefDeref into their own checker.
Add a CheckLocation() interface to Checker.
Now ImplicitNullDeref nodes are cached in NullDerefChecker.
More cleanups follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85471 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/NullDerefChecker.h
ec9227fea66c3439991fc84b0d33b0a8b4b8875e 29-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move NullDeref and UndefDeref into their own checker.
Add a CheckLocation() interface to Checker.
Now ImplicitNullDeref nodes are cached in NullDerefChecker.
More cleanups follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85471 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/BugType.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/NullDerefChecker.h
e91c15fe1a18434b313f3de05d983c60227169ba 29-Oct-2009 Daniel Dunbar <daniel@zuster.org> Reject -I- in driver instead of clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
607d7f6d8f21066cc48bbe2c51e6ca412a00943f 29-Oct-2009 Daniel Dunbar <daniel@zuster.org> Reject -I- in driver instead of clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
c55a11bb31cf885afdc8e62f560f356bc0fdd4a9 29-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for semantic checking and template instantiation of
class template partial specializations of member templates. Also,
fixes a silly little bug in the marking of "used" template parameters
in member templates. Fixes PR5236.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
ed9c0f90b7e0811c209b95e39fe07c211c531285 29-Oct-2009 Douglas Gregor <dgregor@apple.com> Implement support for semantic checking and template instantiation of
class template partial specializations of member templates. Also,
fixes a silly little bug in the marking of "used" template parameters
in member templates. Fixes PR5236.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
adb6d18929adba2aca1b118c148df59190f1c1e9 28-Oct-2009 Steve Naroff <snaroff@apple.com> Remove _clang_initCXLookupHint() and _clang_getCursorWithHint(). Related to <rdar://problem/7310688>.

Localize the optimization to ResolveLocationInAST(). The last valid AST location is now stored with ASTUnit. There still isn't optimal, however it's an improvement (with a much cleaner API). Having the client manage an "hint" is error prone and complex.

I wanted to land the major changes before finishing up the optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85425 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ndex/Utils.h
f96b524306ccfa623235d375deee79637bd38f29 28-Oct-2009 Steve Naroff <snaroff@apple.com> Remove _clang_initCXLookupHint() and _clang_getCursorWithHint(). Related to <rdar://problem/7310688>.

Localize the optimization to ResolveLocationInAST(). The last valid AST location is now stored with ASTUnit. There still isn't optimal, however it's an improvement (with a much cleaner API). Having the client manage an "hint" is error prone and complex.

I wanted to land the major changes before finishing up the optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85425 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ndex/Utils.h
2dc6522289d676177a7bd9c524a59a76c50530ac 28-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Mangle based on the declaration we're given, not the canonical
declaration, since attributes that affect mangling may have been added
to subsequent declarations. However, to determine the linkage of the
declaration, we need to look at the canonical declaration. Fixes PR4412.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85400 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
457e2815d43fa68f7ff7cd2f7e9d1bf7b6fdc653 28-Oct-2009 Douglas Gregor <dgregor@apple.com> Mangle based on the declaration we're given, not the canonical
declaration, since attributes that affect mangling may have been added
to subsequent declarations. However, to determine the linkage of the
declaration, we need to look at the canonical declaration. Fixes PR4412.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85400 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Redeclarable.h
277959bc806648ed3332b7a752ecd0380ff29d34 28-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> make CallGraph more flexible by letting it accept ASTContext instead of ASTUnit.
Patch by Simone Pellegrini.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85386 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
f20288c91601dd3fbab6362a3400a0e6c472795f 28-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> make CallGraph more flexible by letting it accept ASTContext instead of ASTUnit.
Patch by Simone Pellegrini.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85386 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
7872ee90a6a7002574321da3fafb39ca9b035e30 28-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Type of a conditional expression with two distinct objective-c
class pointer is the most derived common class of the two.
This is <rdar://problem/7334235>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85337 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
db07b3f7cdcb505329c1280d7cf70791739a7cad 28-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Type of a conditional expression with two distinct objective-c
class pointer is the most derived common class of the two.
This is <rdar://problem/7334235>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85337 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8b43240c2af348312e8b5d5bcb53018a238879a5 27-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce FunctionDecl::isInlined() to tell whether a function should
be inlined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7ced9c8529b734e313f62a3b81189d6f402f6713 27-Oct-2009 Douglas Gregor <dgregor@apple.com> Introduce FunctionDecl::isInlined() to tell whether a function should
be inlined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
21c878fe794911621478ec927e03d3c44866ca9b 27-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Rename FunctionDecl::isInline/setInline to
FunctionDecl::isInlineSpecified/setInlineSpecified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/DeclXML.def
0130f3cc4ccd5f46361c48d5fe94133d74619424 27-Oct-2009 Douglas Gregor <dgregor@apple.com> Rename FunctionDecl::isInline/setInline to
FunctionDecl::isInlineSpecified/setInlineSpecified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/DeclXML.def
df79222c1d35830ff1e38e82e01ef186bc52ede5 27-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Explicit instantiation suppresses the instantiation of non-inline
function template specializations and member functions of class
template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3b846b6c252972a6f142aa226c1e65aebd0feeca 27-Oct-2009 Douglas Gregor <dgregor@apple.com> Explicit instantiation suppresses the instantiation of non-inline
function template specializations and member functions of class
template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cc04c7d8f91caa9fabeda99728c18407f2ba68c8 27-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> An explicit instantiation definition only instantiations those class
members that have a definition. Also, use
CheckSpecializationInstantiationRedecl as part of this instantiation
to make sure that we diagnose the various kinds of problems that can
occur with explicit instantiations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0d03514da06dffb39a260a1228ea3fd01d196fa4 27-Oct-2009 Douglas Gregor <dgregor@apple.com> An explicit instantiation definition only instantiations those class
members that have a definition. Also, use
CheckSpecializationInstantiationRedecl as part of this instantiation
to make sure that we diagnose the various kinds of problems that can
occur with explicit instantiations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
29806f1ea6f6b496f20425f5a9b675a4f6cecce6 27-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Split AddDefaultSystemIncludePaths into C, C++ and framework specific functions.

The user visible changes are:

*) Frameworks are only searched on OS X
*) The Cygwin c++ headers are now marked as c++ aware. I am almost
sure that not marking them was a bug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85240 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
e4b255c80a786c6f16d3f0362ecb7e1b1e959f63 27-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Split AddDefaultSystemIncludePaths into C, C++ and framework specific functions.

The user visible changes are:

*) Frameworks are only searched on OS X
*) The Cygwin c++ headers are now marked as c++ aware. I am almost
sure that not marking them was a bug.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85240 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
3ea917bf3bdf43c4dd8d1aa3469295d4ba2b8a5a 27-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement Chris's suggestions for the precendence warnings. Reformat the code a bit. Test the fixits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
aee3c9375f97a49edef2a36f15df6abd9748e2a1 27-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement Chris's suggestions for the precendence warnings. Reformat the code a bit. Test the fixits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
07677bbc5b3ebd35868bc3a2a6fd4597373485e0 27-Oct-2009 Mike Stump <mrs@apple.com> __builtin_object_size refinements. Also handle stack based objects. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85174 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
660e6f79a138a30a437c02142f23e7ef4eb21b2e 27-Oct-2009 Mike Stump <mrs@apple.com> __builtin_object_size refinements. Also handle stack based objects. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85174 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4b4153e445952585fb2ffec00987149c0a276b3d 26-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add fixit hint to bitwise precedence warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
6b169accbb182d328ad41746c4071d8e7f90a628 26-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add fixit hint to bitwise precedence warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
1d2ce5a06cd25bf3e6de3cbcea9341c3e9adeb9a 26-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement a warning for mixing bitwise logical with comparison ops. Fixes PR5297.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85117 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9e1d29bb369530c15230e4c92aa67239c283ece2 26-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement a warning for mixing bitwise logical with comparison ops. Fixes PR5297.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85117 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bc328239ed5ed2cf460741e225f7d1df0bb9cd9f 26-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Rename -nostdclanginc to -nobuiltininc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85116 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
8d737cc78cb28f39179d6c7ca00eb5d3cf563129 26-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Rename -nostdclanginc to -nobuiltininc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85116 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
e670df714312e47c62ab4ef4d44db682a55fb604 26-Oct-2009 Chandler Carruth <chandlerc@gmail.com> Update location of DataTypes.h to reflect move in LLVM with r85086.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/RecordLayout.h
ST/StmtIterator.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SymbolManager.h
nalysis/ProgramPoint.h
asic/OnDiskHashTable.h
asic/SourceManager.h
asic/TargetInfo.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
ex/LiteralSupport.h
9f8eb2032030482b1d3de86e9bee725d93564302 26-Oct-2009 Chandler Carruth <chandlerc@gmail.com> Update location of DataTypes.h to reflect move in LLVM with r85086.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85087 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/RecordLayout.h
ST/StmtIterator.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SymbolManager.h
nalysis/ProgramPoint.h
asic/OnDiskHashTable.h
asic/SourceManager.h
asic/TargetInfo.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
ex/LiteralSupport.h
3b822f1b2faac5db9cc6297485f82ac5fe417b0b 25-Oct-2009 Chris Lattner <sabre@nondot.org> rename getTypeSigned() -> isTypeSigned() per daniel's review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
961f0708fb66375acf47f9e9bc1aecfb3f992aea 25-Oct-2009 Chris Lattner <sabre@nondot.org> rename getTypeSigned() -> isTypeSigned() per daniel's review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
efe2668a02c21cfce57380eabad105941bf65906 25-Oct-2009 Chris Lattner <sabre@nondot.org> cleanups


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85069 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e37b3e6d7ed495fdec4067ccc1117a79d2afd450 25-Oct-2009 Chris Lattner <sabre@nondot.org> cleanups


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85069 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
f6d3e11497fbae115d58e7d4e47051e098b945e1 25-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Remove the Skip parameter from GetTypeForDeclarator and dependents. Take the opportunity to improve an error message and fix PR4498.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
8ce35b095e8fca45e04c1bda14ed0548ce7536ad 25-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Remove the Skip parameter from GetTypeForDeclarator and dependents. Take the opportunity to improve an error message and fix PR4498.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
1ea45c2dc05470e81c857750bbe6ed82c4fabcc0 25-Oct-2009 Chris Lattner <sabre@nondot.org> change Sema::ActOnFriendTypeDecl to use GetTypeForDeclarator instead
of ConvertDeclSpecToType, which I'd like to keep private to SemaType.cpp.
We do this by cons'ing up a trivial Declarator for the type.

John, please review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85060 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c7f1904474600aa74f5f014941d2ed5c4cf462aa 25-Oct-2009 Chris Lattner <sabre@nondot.org> change Sema::ActOnFriendTypeDecl to use GetTypeForDeclarator instead
of ConvertDeclSpecToType, which I'd like to keep private to SemaType.cpp.
We do this by cons'ing up a trivial Declarator for the type.

John, please review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85060 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0627d19a4caf3246f1f5948cf754146fc6165cbc 25-Oct-2009 Chris Lattner <sabre@nondot.org> In objc mode, every identifier in a cast expression was using doing a
type looking using getTypeName() and every property access was using
NextToken() to do lookahead to see if the identifier is followed by
a '.'. Rearrange this code to not need lookahead and only do the
type lookup if we have "identifier." in the token stream. Also
improve a diagnostic a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
b7c3fd7b493329550c29dec11d31aca4d537e23e 25-Oct-2009 Chris Lattner <sabre@nondot.org> In objc mode, every identifier in a cast expression was using doing a
type looking using getTypeName() and every property access was using
NextToken() to do lookahead to see if the identifier is followed by
a '.'. Rearrange this code to not need lookahead and only do the
type lookup if we have "identifier." in the token stream. Also
improve a diagnostic a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85056 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
e3a745cf178d0df7e61be9db186979aa9b4d848b 24-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Remove duplicated constructor declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84997 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
63daa6179ea77eb4ff7a213c891aff5f32aca03f 24-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Remove duplicated constructor declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84997 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
7f96d1fe90385d6477dbff418408a5563c3022e3 24-Oct-2009 John McCall <rjmccall@apple.com> Preserve type source information in TypedefDecls. Preserve it across
template instantiation. Preserve it through PCH. Show it off to the indexer.

I'm healthily ignoring the vector type cases because we don't have a sensible
TypeLoc implementation for them anyway.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ba6a9bd384df475780be636ca45bcef5c5bbd19f 24-Oct-2009 John McCall <rjmccall@apple.com> Preserve type source information in TypedefDecls. Preserve it across
template instantiation. Preserve it through PCH. Show it off to the indexer.

I'm healthily ignoring the vector type cases because we don't have a sensible
TypeLoc implementation for them anyway.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b57ab7949f6b2ec0dd49f750843fab093592cacd 24-Oct-2009 John McCall <rjmccall@apple.com> Store the builtin types as CanQualTypes. Expand a bit on the CanQual API,
but also remove some methods that cause ambiguities, and generally
make CanQual<blah> more analogous to QualType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84976 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
e27ec8ad56dbf1efb2de004b90fbbb86f740e3f1 24-Oct-2009 John McCall <rjmccall@apple.com> Store the builtin types as CanQualTypes. Expand a bit on the CanQual API,
but also remove some methods that cause ambiguities, and generally
make CanQual<blah> more analogous to QualType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84976 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
54d2596d47cc4ae9067d3b05f533d2176ef8492a 23-Oct-2009 John McCall <rjmccall@apple.com> Remove OriginalTypeParmDecl; the original type is the one specified
in the DeclaratorInfo, if one is present.

Preserve source information through template instantiation. This is made
more complicated by the possibility that ParmVarDecls don't have DIs, which
is possibly worth fixing in the future.

Also preserve source information for function parameters in ObjC method
declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclNodes.def
nalysis/Visitors/CFGRecStmtDeclVisitor.h
rontend/PCHBitCodes.h
58e4677a948e80c92deeebbcd3bdd9266adda798 23-Oct-2009 John McCall <rjmccall@apple.com> Remove OriginalTypeParmDecl; the original type is the one specified
in the DeclaratorInfo, if one is present.

Preserve source information through template instantiation. This is made
more complicated by the possibility that ParmVarDecls don't have DIs, which
is possibly worth fixing in the future.

Also preserve source information for function parameters in ObjC method
declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclNodes.def
nalysis/Visitors/CFGRecStmtDeclVisitor.h
rontend/PCHBitCodes.h
48527cf92c374e24f3a06dd9ab6fd58c0004d393 23-Oct-2009 John McCall <rjmccall@apple.com> Add ASTContext::getTrivialDeclaratorInfo, which initializes a new
source info block with a single location.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a4eb74d4dfe126c686dc708fec444c85ffb73b47 23-Oct-2009 John McCall <rjmccall@apple.com> Add ASTContext::getTrivialDeclaratorInfo, which initializes a new
source info block with a single location.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c5117f73bbc42ccc149fdd447af0e7ff60e5f95f 23-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose misuse of '.*' and '->*' operators during parse
instead of crashing in code gen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f071e9b173dbaf97b00849c309a97c5aa3c49ae9 23-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose misuse of '.*' and '->*' operators during parse
instead of crashing in code gen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
a86b882c81a748417bbf10b488a779a6e78818cb 23-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix operator precedence in Doug's most recent commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2cf719c3c3d805f630dfc6b1255e52647820888e 23-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix operator precedence in Doug's most recent commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1d5d81452d1e5f93f0fd6537a5909b1fcf94bb73 23-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate QualifiedDeclRefExpr, which captured the notion of a
qualified reference to a declaration that is not a non-static data
member or non-static member function, e.g.,

namespace N { int i; }
int j = N::i;

Instead, extend DeclRefExpr to optionally store the qualifier. Most
clients won't see or care about the difference (since
QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the
number of top-level expression types that clients need to cope with,
brings the implementation of DeclRefExpr into line with MemberExpr,
and simplifies and unifies our handling of declaration references.

Extended DeclRefExpr to (optionally) store explicitly-specified
template arguments. This occurs when naming a declaration via a
template-id (which will be stored in a TemplateIdRefExpr) that,
following template argument deduction and (possibly) overload
resolution, is replaced with a DeclRefExpr that refers to a template
specialization but maintains the template arguments as written.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
a2813cec2605ce7878d1b13471d685f689b251af 23-Oct-2009 Douglas Gregor <dgregor@apple.com> Eliminate QualifiedDeclRefExpr, which captured the notion of a
qualified reference to a declaration that is not a non-static data
member or non-static member function, e.g.,

namespace N { int i; }
int j = N::i;

Instead, extend DeclRefExpr to optionally store the qualifier. Most
clients won't see or care about the difference (since
QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the
number of top-level expression types that clients need to cope with,
brings the implementation of DeclRefExpr into line with MemberExpr,
and simplifies and unifies our handling of declaration references.

Extended DeclRefExpr to (optionally) store explicitly-specified
template arguments. This occurs when naming a declaration via a
template-id (which will be stored in a TemplateIdRefExpr) that,
following template argument deduction and (possibly) overload
resolution, is replaced with a DeclRefExpr that refers to a template
specialization but maintains the template arguments as written.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
4ea8425c9601895fa137f877bc784f75f20adac6 23-Oct-2009 John McCall <rjmccall@apple.com> When building types from declarators, instead of building two types (one for
the DeclaratorInfo, one for semantic analysis), just build a single type whose
canonical type will reflect the semantic analysis (assuming the type is
well-formed, of course).

To make that work, make a few changes to the type system:
* allow the nominal pointee type of a reference type to be a (possibly sugared)
reference type. Also, preserve the original spelling of the reference type.
Both of these can be ignored on canonical reference types.
* Remove ObjCProtocolListType and preserve the associated source information on
the various ObjC TypeLocs. Preserve the spelling of protocol lists except in
the canonical form.
* Preserve some level of source type structure on parameter types, but
canonicalize on the canonical function type. This is still a WIP.

Drops code size, makes strides towards accurate source location representation,
slight (~1.7%) progression on Cocoa.h because of complexity drop.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
54e14c4db764c0636160d26c5bbf491637c83a76 23-Oct-2009 John McCall <rjmccall@apple.com> When building types from declarators, instead of building two types (one for
the DeclaratorInfo, one for semantic analysis), just build a single type whose
canonical type will reflect the semantic analysis (assuming the type is
well-formed, of course).

To make that work, make a few changes to the type system:
* allow the nominal pointee type of a reference type to be a (possibly sugared)
reference type. Also, preserve the original spelling of the reference type.
Both of these can be ignored on canonical reference types.
* Remove ObjCProtocolListType and preserve the associated source information on
the various ObjC TypeLocs. Preserve the spelling of protocol lists except in
the canonical form.
* Preserve some level of source type structure on parameter types, but
canonicalize on the canonical function type. This is still a WIP.

Drops code size, makes strides towards accurate source location representation,
slight (~1.7%) progression on Cocoa.h because of complexity drop.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
7480534aa1979f5c8a6c1d59ede223ba21f280e5 22-Oct-2009 John McCall <rjmccall@apple.com> Canonicality is a property of qualified types, not unqualified types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
467b27b9a24bdc823218ad1ad0e37673b6cc1e83 22-Oct-2009 John McCall <rjmccall@apple.com> Canonicality is a property of qualified types, not unqualified types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
ST/Type.h
1af8faf20679db29c525f3c3f06e9dd7b6830874 22-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> When building and instantiating a template-id reference expression, such as

N::f<int>

keep track of the full nested-name-specifier. This is mainly QoI and
relatively hard to test; will try to come up with a printing-based
test once we also retain the explicit template arguments past overload
resolution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84869 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f17bb74e74aca9bb0525d2249041ab65c7d1fd48 22-Oct-2009 Douglas Gregor <dgregor@apple.com> When building and instantiating a template-id reference expression, such as

N::f<int>

keep track of the full nested-name-specifier. This is mainly QoI and
relatively hard to test; will try to come up with a printing-based
test once we also retain the explicit template arguments past overload
resolution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84869 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1722951a44aeac688e05d9f9310097ef6fa233d5 22-Oct-2009 Mike Stump <mrs@apple.com> Extend out the block descriptor structure for debug information with
the copy/dispose helpers as appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
083c25eea14bb4cc4ecc3ec763c60e2e609e22bd 22-Oct-2009 Mike Stump <mrs@apple.com> Extend out the block descriptor structure for debug information with
the copy/dispose helpers as appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
3726e21e172d2456babf9a8fcb932650942e5bb3 21-Oct-2009 Mike Stump <mrs@apple.com> Complete out debug info generation for captured __block variables. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
af7b44d847d3e44c43346d508b2e55a6254b6e9d 21-Oct-2009 Mike Stump <mrs@apple.com> Complete out debug info generation for captured __block variables. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8b50b3d0f7bd37e80534ecdaf56bbd7ab5d6df70 21-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Downgrade "function declared 'noreturn' should not return" from an
error (by default) to a warning, per C++0x [dcl.attr.noreturn]. Patch
from Sean Hunt!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9dc9c376a9f3e0c72f33e27075caa0647dadb350 21-Oct-2009 Douglas Gregor <dgregor@apple.com> Downgrade "function declared 'noreturn' should not return" from an
error (by default) to a warning, per C++0x [dcl.attr.noreturn]. Patch
from Sean Hunt!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84762 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1c497273203fca91d72920642d61e874a86101af 21-Oct-2009 Steve Naroff <snaroff@apple.com> Extend clang_getCursor() to take a 'relativeDecl' argument (so speed up searching). Without a 'relativeDecl', the algorithm is n-squared. For example, running the following command on 'Large.m' takes hours without a 'relatvieDecl'.

snaroff% time ../../Debug/bin/c-index-test Large.ast all > Large.out
snaroff% cat Large.m
#import <Cocoa/Cocoa.h>
#import <QuickTime/QuickTime.h>
#import <OpenGL/OpenGL.h>

With a 'relativeDecl', it takes <30 seconds:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84760 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Utils.h
6a6de8b4fc944ca1bfa4e47c516d049a0d627b0e 21-Oct-2009 Steve Naroff <snaroff@apple.com> Extend clang_getCursor() to take a 'relativeDecl' argument (so speed up searching). Without a 'relativeDecl', the algorithm is n-squared. For example, running the following command on 'Large.m' takes hours without a 'relatvieDecl'.

snaroff% time ../../Debug/bin/c-index-test Large.ast all > Large.out
snaroff% cat Large.m
#import <Cocoa/Cocoa.h>
#import <QuickTime/QuickTime.h>
#import <OpenGL/OpenGL.h>

With a 'relativeDecl', it takes <30 seconds:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84760 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Utils.h
40a75fef39da6855688629ed68045d3690b29c75 21-Oct-2009 Chris Lattner <sabre@nondot.org> add helpful methods to TargetInfo for querying builtin integer type properties,
patch by Ken Dyck!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b304f77cb621a47221f2aa2d35acdb5c730421ff 21-Oct-2009 Chris Lattner <sabre@nondot.org> add helpful methods to TargetInfo for querying builtin integer type properties,
patch by Ken Dyck!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
57d23a991e94b32b2ce78b7c8c301c48687f7281 21-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics and template instantiation behavior when calling
an overloaded function call operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
4a27d7061ee2fe0e2b71aa470c323e76afb95917 21-Oct-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics and template instantiation behavior when calling
an overloaded function call operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
72f4aae0cff32005612e3d53ad20f9a2db7971de 21-Oct-2009 Chris Lattner <sabre@nondot.org> hookize wint_t's definition, patch by Edward O'Callaghan (from PR5233).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e64ef80363c84f4f431e26b61db554c89beeddb6 21-Oct-2009 Chris Lattner <sabre@nondot.org> hookize wint_t's definition, patch by Edward O'Callaghan (from PR5233).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f9c1e2a127f577045d22ccdcb4a6a3d8bf4fc800 21-Oct-2009 Mike Stump <mrs@apple.com> Prep work to always preallocate BlockDeclRefExprs so that we can
generate the debug information for the first parameter to the block
invoke functions. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ea26cb522e88fc86b0d1cae61dcefcfe4cc20231 21-Oct-2009 Mike Stump <mrs@apple.com> Prep work to always preallocate BlockDeclRefExprs so that we can
generate the debug information for the first parameter to the block
invoke functions. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7ab70b0f6cd7046804ab3fa21ad6631e6f021065 21-Oct-2009 John McCall <rjmccall@apple.com> Add TypeLocBuilder, an API for incrementally creating TypeLocs. Change
the API for creating DeclaratorInfos to allow callers to provide an exact
size.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TypeLocBuilder.h
109de5ead1dfcb3bc985cddb8cb3ed5bcecad88d 21-Oct-2009 John McCall <rjmccall@apple.com> Add TypeLocBuilder, an API for incrementally creating TypeLocs. Change
the API for creating DeclaratorInfos to allow callers to provide an exact
size.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TypeLocBuilder.h
72415c5c8facb2991705e689a092c0affbe75598 21-Oct-2009 John McCall <rjmccall@apple.com> Publicize getSigilLoc / setSigilLoc for better metaprogramming.

Fix the ReferenceTypeLoc hierarchy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
bb833dcc562f686a0652865d1945cfa3a421379c 21-Oct-2009 John McCall <rjmccall@apple.com> Publicize getSigilLoc / setSigilLoc for better metaprogramming.

Fix the ReferenceTypeLoc hierarchy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e2a2319d9367c21590d5b47fb3cf5f7328e8b436 20-Oct-2009 Ted Kremenek <kremenek@apple.com> Add destructor and cleanup code to LocationContext (fixing some leaks). Along the way, have
AnalysisManager periodically cleanup its AnalysisContextManager and LocationContextManager objects,
as they don't need to forever retain all the CFGs ever created when analyzing a file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84684 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
58f5ec7d56b1ebf5f90ee11226ebe7663f2821ea 20-Oct-2009 Ted Kremenek <kremenek@apple.com> Add destructor and cleanup code to LocationContext (fixing some leaks). Along the way, have
AnalysisManager periodically cleanup its AnalysisContextManager and LocationContextManager objects,
as they don't need to forever retain all the CFGs ever created when analyzing a file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84684 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
90b6a295ecb165d2ce4027dc42880bf5227121a8 20-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Changed text of warning in my last patch.
Related to radar:
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
2b1f291bb43ccc2fbaad39c457ab488c74d365dd 20-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Changed text of warning in my last patch.
Related to radar:
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
f10e029650c0899da44cc4b715662dd7ce0a366c 20-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Issue warning if method body starts with a semicolon.
Fixes
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84645 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
209a8c2fa23636f6d065d618e7078e164903f5cd 20-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Issue warning if method body starts with a semicolon.
Fixes
<rdar://problem/7308503> clang should disallow the trailing semicolon in method definitions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84645 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
747e87ce7b0f81bddad5d354ae7718a321592547 20-Oct-2009 Ted Kremenek <kremenek@apple.com> BumpVectorContext: Use 'unsigned' integer type with PointerIntUnion instead of bool to keep it clear that we are reasoning about an unsigned integer with a single bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84607 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
375e69cb19e9ba65ab5f822ad5d44cffae15edb1 20-Oct-2009 Ted Kremenek <kremenek@apple.com> BumpVectorContext: Use 'unsigned' integer type with PointerIntUnion instead of bool to keep it clear that we are reasoning about an unsigned integer with a single bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84607 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
f170dc1c5113bb1749cb77f15609e961688e8c6d 20-Oct-2009 Chris Lattner <sabre@nondot.org> teach FormatDiagnostic to aggregate previously formatted arguments and
pass them down into the ArgToStringFn implementation. This allows
redundancy across operands to a diagnostic to be eliminated.

This isn't used yet, so no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84602 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b54d8af9a66cc20a6a9a9219c7eaea8df7ee7fd4 20-Oct-2009 Chris Lattner <sabre@nondot.org> teach FormatDiagnostic to aggregate previously formatted arguments and
pass them down into the ArgToStringFn implementation. This allows
redundancy across operands to a diagnostic to be eliminated.

This isn't used yet, so no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84602 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
7ec499ecbdabd1c77acc30026ca9e576be629b75 20-Oct-2009 Mike Stump <mrs@apple.com> Refine the type of the first parameter to block invoke functions.
WIP. I have yet to find the magic incantation to get the structure
type to be defined. If someone has a pointer, love to hear it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
adaaad3715c9c26cdcfdfe3401a13d7b4423ddcf 20-Oct-2009 Mike Stump <mrs@apple.com> Refine the type of the first parameter to block invoke functions.
WIP. I have yet to find the magic incantation to get the structure
type to be defined. If someone has a pointer, love to hear it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
5de26c359e36b84c7c7a926d75f5e0fe837d1f78 20-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Parse a simple-template-id following a '~' when calling a destructor, e.g.,

t->~T<A0, A1>()

Fixes PR5213.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84545 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
dd62b15665a4144c45c1f7c53665414ad5f7f4f2 20-Oct-2009 Douglas Gregor <dgregor@apple.com> Parse a simple-template-id following a '~' when calling a destructor, e.g.,

t->~T<A0, A1>()

Fixes PR5213.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84545 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
dc7a434ec19113f620727291e77990b762f76cbb 19-Oct-2009 Ted Kremenek <kremenek@apple.com> The constructor for ASTUnit now takes a DiagnosticClient*, allowing uses of ASTUnit to specify
alternate DiagnosticClients. To match this API, ASTUnit::LoadFromPCHFile() now takes a corresponding
DiagnosticClient* argument as well. The DiagnosticClient object is destroyed when the ASTUnit object
is destroyed.

The CIndex library now uses this API to create a 'IgnoreDiagnosticsClient' that simply silences
diagnostics when using the clang_createTranslationUnitFromSourceFile() function. This fixes
<rdar://problem/7312058>. This API can change in the future as we add more flexibility for clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84539 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
fc0622155fa61349698a8fd0053773c37d9f7ac4 19-Oct-2009 Ted Kremenek <kremenek@apple.com> The constructor for ASTUnit now takes a DiagnosticClient*, allowing uses of ASTUnit to specify
alternate DiagnosticClients. To match this API, ASTUnit::LoadFromPCHFile() now takes a corresponding
DiagnosticClient* argument as well. The DiagnosticClient object is destroyed when the ASTUnit object
is destroyed.

The CIndex library now uses this API to create a 'IgnoreDiagnosticsClient' that simply silences
diagnostics when using the clang_createTranslationUnitFromSourceFile() function. This fixes
<rdar://problem/7312058>. This API can change in the future as we add more flexibility for clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84539 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
d95dfb8afce8a119d0afc95bd83cf08b52092a19 19-Oct-2009 Steve Naroff <snaroff@apple.com> Move Diagnostic/DiagClient/FileManager from Indexer => ASTUnit.

Removing this shared data should enable clang_createTranslationUnit/clang_createTranslationUnitFromSourceFile to be run from multiple threads (related to <rdar://problem/7303432>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84499 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ndex/Indexer.h
36c4464ba6cfc2a63dc67c493ef2f5ab2aea09cc 19-Oct-2009 Steve Naroff <snaroff@apple.com> Move Diagnostic/DiagClient/FileManager from Indexer => ASTUnit.

Removing this shared data should enable clang_createTranslationUnit/clang_createTranslationUnitFromSourceFile to be run from multiple threads (related to <rdar://problem/7303432>).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84499 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ndex/Indexer.h
06b164b7d92a75478ef391104cf745ad473df3e0 19-Oct-2009 Daniel Dunbar <daniel@zuster.org> Update NamedDecl::getName() to work for empty names.
- I'm not sure this is ideal, but otherwise clients must be overly careful when handling decl's which can have empty names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84457 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
45475c696ecfd6d296535adb4723b7ba8817c06c 19-Oct-2009 Daniel Dunbar <daniel@zuster.org> Update NamedDecl::getName() to work for empty names.
- I'm not sure this is ideal, but otherwise clients must be overly careful when handling decl's which can have empty names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84457 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c05b6f3a9ae8cc57d174c6f2ce01d2bacc2d8477 19-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add ObjCImplementationDecl::getName() for consistency, with FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d0c10e20d5ba8c1a8a077db128c03eddc3158673 19-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add ObjCImplementationDecl::getName() for consistency, with FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
226262ae8d69f060747948b1a52aa2c5d244d857 19-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add FIXME calling for rename of NamedDecl::getNameAsString.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84454 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b409e2ddfd97fc51db377e346a6dbb8a317035b3 19-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add FIXME calling for rename of NamedDecl::getNameAsString.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84454 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9712926717b71836e1e287e319ff5653df25a0c3 19-Oct-2009 Anders Carlsson <andersca@mac.com> Fix tyop noticed by Sean Hunt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84449 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f67cea84bac1d3417f0baaf1fcbc86ee126e2d87 19-Oct-2009 Anders Carlsson <andersca@mac.com> Fix tyop noticed by Sean Hunt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84449 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1ed2bb804102b54d62426d8aa4f60bcd6f2a6cb0 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> PR5218: Replace IdentifierInfo::getName with StringRef version, now that clients
are updated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/IdentifierTable.h
01eb9b9683535d8a65c704ad2c545903409e2d36 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> PR5218: Replace IdentifierInfo::getName with StringRef version, now that clients
are updated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/IdentifierTable.h
ae8bee82369414db0865b321f328190bf8fbe4eb 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add ObjCCategoryImplDecl::getName() -> StringRef, and a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b5217efa5be2fd6be48d207267c8bcda6bf9206c 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add ObjCCategoryImplDecl::getName() -> StringRef, and a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5a0c5fb984577232cdaaf527c3e275620b3100a7 18-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> non-POD members => make it a class (also silences MSVC warnings)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
4e0e2f1c5fde88a235d71a6f4f87f5c3fcaab7ac 18-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> non-POD members => make it a class (also silences MSVC warnings)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ac892b549fb25b82a60a28309837b823b45083f5 18-Oct-2009 Anders Carlsson <andersca@mac.com> Add some more cast kinds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
82debc7d282e723e58d183bfa89ddc2500a8daaf 18-Oct-2009 Anders Carlsson <andersca@mac.com> Add some more cast kinds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5cc4b067c9a94ff7a98c34b4a8b14f2643980c79 18-Oct-2009 John McCall <rjmccall@apple.com> When performing template-substitution into a type, don't just replace the
TemplateTypeParmType with the substituted type directly; instead, replace it
with a SubstTemplateTypeParmType which will note that the type was originally
written as a template type parameter. This makes it reasonable to preserve
source information even through template substitution.

Also define the new SubstTemplateTypeParmType class, obviously.

For consistency with current behavior, we stringize these types as if they
were the underlying type. I'm not sure this is the right thing to do.
At any rate, I paled at adding yet another clause to the don't-desugar 'if'
statement, so I extracted a function to do it. The new function also does
The Right Thing more often, I think: e.g. if we have a chain of typedefs
leading to a vector type, we will now desugar all but the last one.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
49a832bd499d6f61c23655f1fac99f0dd229756e 18-Oct-2009 John McCall <rjmccall@apple.com> When performing template-substitution into a type, don't just replace the
TemplateTypeParmType with the substituted type directly; instead, replace it
with a SubstTemplateTypeParmType which will note that the type was originally
written as a template type parameter. This makes it reasonable to preserve
source information even through template substitution.

Also define the new SubstTemplateTypeParmType class, obviously.

For consistency with current behavior, we stringize these types as if they
were the underlying type. I'm not sure this is the right thing to do.
At any rate, I paled at adding yet another clause to the don't-desugar 'if'
statement, so I extracted a function to do it. The new function also does
The Right Thing more often, I think: e.g. if we have a chain of typedefs
leading to a vector type, we will now desugar all but the last one.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeLoc.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
80d53d0b51aa2e48c3954c02ab50f7cb7cf311ed 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add NameDecl::getName() -> StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ecfa8d2d865a997e2240dd7ea8f939844e347200 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add NameDecl::getName() -> StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
14c3221c184cd7305ee9c7d4514caa5c13265b78 18-Oct-2009 John McCall <rjmccall@apple.com> Clone the full Type hierarchy into the TypeLoc hierarchy. Normalize
TypeLoc class names to be $(Type classname)Loc. Rewrite the visitor.
Provide skeleton implementations for all the new TypeLocs.

Handle all cases in PCH. Handle a few more cases when inserting
location information in SemaType.

It should be extremely straightforward to add new location information
to existing TypeLoc objects now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
ndex/ASTLocation.h
51bd803fbdade51d674598ed45da3d54190a656c 18-Oct-2009 John McCall <rjmccall@apple.com> Clone the full Type hierarchy into the TypeLoc hierarchy. Normalize
TypeLoc class names to be $(Type classname)Loc. Rewrite the visitor.
Provide skeleton implementations for all the new TypeLocs.

Handle all cases in PCH. Handle a few more cases when inserting
location information in SemaType.

It should be extremely straightforward to add new location information
to existing TypeLoc objects now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
ndex/ASTLocation.h
9e0e7878a94606ed663d248be2facaea4e973a7a 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
bfec576b1b8882b94670727cac2584b60962a607 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84379 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
0fd358c5649315620fca562d5b7638ff9482c118 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> StringRefize some parts of Diagnostic API.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
eaea925e70e3ee85809e572aa8474b8dfc491af7 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> StringRefize some parts of Diagnostic API.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
082ad908426f9803a1f6318b1728a258ebeb116d 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Remove unused BernsteinHash functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
8b944468737f9bf91cd99454b54f0134fb7e52ee 18-Oct-2009 Daniel Dunbar <daniel@zuster.org> Remove unused BernsteinHash functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
d74e88ea1b5f86f16b3cb281893da8e774bebdf6 18-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a crash with qualified member access into a non-type, from Sean Hunt!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d1c9ae5d27c5190a7793f7ac1224a70cd3df33f 18-Oct-2009 Douglas Gregor <dgregor@apple.com> Fix a crash with qualified member access into a non-type, from Sean Hunt!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
22d7388756439d42657fe3873a939dff0b331f5b 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add IdentifierTable::CreateIdentifierInfo(StringRef).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84361 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
83885f7e3bf68d271e1e96726931814b836353a3 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add IdentifierTable::CreateIdentifierInfo(StringRef).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84361 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
511628ef6364ddd4212c50f01b37ad013a75d2c7 17-Oct-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Fix for PR5190, Credit to Zhanyong Wan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
12356b119032edd64e9c32f9f01920d12c2acc57 17-Oct-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Fix for PR5190, Credit to Zhanyong Wan.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e940efe4c977acfdd693208e654eeb4af89dd88a 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Remove a FIXME that doesn't belong, there are numerous other places that use
alignment in bits in clang. If we really want to fix this, it should be a bugzilla.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
67f594c0a0f285df815fe8eb64c59d4c23f99949 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Remove a FIXME that doesn't belong, there are numerous other places that use
alignment in bits in clang. If we really want to fix this, it should be a bugzilla.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
af8b56844f43fcef07307d5494436e29ad329831 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add IdentiferInfo::getNameStr() -> StringRef.

Also, add getNameStart as a synonym for getName(). getName() is now deprecated,
when all clients are updated then getNameStr() should be renamed to
getName(). PR5218.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/IdentifierTable.h
7fe60650c1133ee74a3395cf1063690e274bb7ac 17-Oct-2009 Daniel Dunbar <daniel@zuster.org> Add IdentiferInfo::getNameStr() -> StringRef.

Also, add getNameStart as a synonym for getName(). getName() is now deprecated,
when all clients are updated then getNameStr() should be renamed to
getName(). PR5218.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/IdentifierTable.h
b65681662aa7c3431805505a0964a391d06e0fa8 17-Oct-2009 Ted Kremenek <kremenek@apple.com> Add 'UseBumpPtrAllocator' flag to ASTUnit::LoadFromPCHFile() to cause the created ASTContext to use
its own BumpPtrAllocator to allocate ASTs.

Change clang_createTranslationUnit (CIndex) to pass 'UseBumpPtrAllocator = true' to
ASTUnit::LoadFromPCHFile().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84296 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5cf48766d626ff6b223acc9d4b7e415ca8480836 17-Oct-2009 Ted Kremenek <kremenek@apple.com> Add 'UseBumpPtrAllocator' flag to ASTUnit::LoadFromPCHFile() to cause the created ASTContext to use
its own BumpPtrAllocator to allocate ASTs.

Change clang_createTranslationUnit (CIndex) to pass 'UseBumpPtrAllocator = true' to
ASTUnit::LoadFromPCHFile().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84296 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
5cd1f9a47e3900fc6e005d78a1b6fc791fe8df72 17-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Merge the "types" and "declarations" blocks in the precompiled header
format, so that we don't end up with multiple declaration and types
blocks. Also, fix a few obscure bugs with PCH loading and generation:

- If the DeclIDs DenseMap reallocates while we are writing a
declaration (due to recursively writing other declarations), we
could end up writing a bad ID to ExternalDefinitions.
- When loading an ArrayLoc (part of DeclaratorInfo), we need to set
the size expression to NULL if no size expression was provided.

PCH -> AST rewriting is still partly broken, unfortunately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84293 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHWriter.h
61d60ee6aa0a5ded0ddcf48679673b37506a1895 17-Oct-2009 Douglas Gregor <dgregor@apple.com> Merge the "types" and "declarations" blocks in the precompiled header
format, so that we don't end up with multiple declaration and types
blocks. Also, fix a few obscure bugs with PCH loading and generation:

- If the DeclIDs DenseMap reallocates while we are writing a
declaration (due to recursively writing other declarations), we
could end up writing a bad ID to ExternalDefinitions.
- When loading an ArrayLoc (part of DeclaratorInfo), we need to set
the size expression to NULL if no size expression was provided.

PCH -> AST rewriting is still partly broken, unfortunately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84293 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHWriter.h
a93c909080d28e87c22dd6e8766bb8b7750db80b 17-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to clean up and improve visual display of
builtin function ambiguity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
866b2744ffe66294c8791cc8407b918f3bb81b2c 17-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to clean up and improve visual display of
builtin function ambiguity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
04b3dcd8226f569d6ff85bebdd47406fb4945cca 17-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> While writing source-location entries to a PCH file, go through an
interface that can load those source-location entries on demand (from
another PCH file).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
bdfe48ac80573e026595af91e541474dbf02565f 17-Oct-2009 Douglas Gregor <dgregor@apple.com> While writing source-location entries to a PCH file, go through an
interface that can load those source-location entries on demand (from
another PCH file).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
7776acedfc946a7dd0c91c7d6f40b2eac909f560 17-Oct-2009 John McCall <rjmccall@apple.com> Allow TypeLocs to be fully initialized with a single SourceLocation. This
will be the keystone of converting existing rewrites to be rewrites on TypeLocs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
4ce74bd425dccd9d9ad6ccfc9ffbc01698a6e71a 17-Oct-2009 John McCall <rjmccall@apple.com> Allow TypeLocs to be fully initialized with a single SourceLocation. This
will be the keystone of converting existing rewrites to be rewrites on TypeLocs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
01b64b35df896f5607325b20c4d4e0e4c914bcab 16-Oct-2009 John McCall <rjmccall@apple.com> Factor out routines to encode/decode DeclaratorInfos and move them into the
core PCH reader/writer implementation files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84278 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
a1ee0c548b8aa4aaf93d1917e304e3da13171a08 16-Oct-2009 John McCall <rjmccall@apple.com> Factor out routines to encode/decode DeclaratorInfos and move them into the
core PCH reader/writer implementation files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84278 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
e99ec20791613393d88c5292be32d90637456272 16-Oct-2009 John McCall <rjmccall@apple.com> Add an accessor to extra the type directly from a DeclaratorInfo
without an opaque call.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84277 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d9067b318604fddf960057fcb59145381c449d9e 16-Oct-2009 John McCall <rjmccall@apple.com> Add an accessor to extra the type directly from a DeclaratorInfo
without an opaque call.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84277 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
99062d43bde01f2e68f9bb3d5744435f7a25cf2a 16-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Make CIndex and c-index-test a little bit more robust. The only
substantive change is that clang_getCursorSource() now returns the
file in which a macro was instantiated when the cursor points into a
macro instantiation, rather than crashing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84275 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
02465750c8c3fa96b1e7e596b02297e24361dc4f 16-Oct-2009 Douglas Gregor <dgregor@apple.com> Make CIndex and c-index-test a little bit more robust. The only
substantive change is that clang_getCursorSource() now returns the
file in which a macro was instantiated when the cursor points into a
macro instantiation, rather than crashing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84275 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
e05db11d09b8461c6eb1a2e4e2ef7f2d2be1c369 16-Oct-2009 Ted Kremenek <kremenek@apple.com> Provide 'static' version of BinaryOperator::isShiftOp().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
40a5ef90ac8d3f29bc8fe4ff80e00eaf3ef5b79f 16-Oct-2009 Ted Kremenek <kremenek@apple.com> Provide 'static' version of BinaryOperator::isShiftOp().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e6f70046cc9acf8b51952211f6d2aa98998e73df 16-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of whether declararions were loaded from a precompiled
header or not via a new "PCHLevel" field in Decl. We currently use
this information to help CIndex filter out declarations that came from
a precompiled header (rather than from an AST file). Further down the
road, it can be used to help implement multi-level precompiled
headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/ASTUnit.h
7d1d49d2971b20a97b3c2a301470b9eaaa130137 16-Oct-2009 Douglas Gregor <dgregor@apple.com> Keep track of whether declararions were loaded from a precompiled
header or not via a new "PCHLevel" field in Decl. We currently use
this information to help CIndex filter out declarations that came from
a precompiled header (rather than from an AST file). Further down the
road, it can be used to help implement multi-level precompiled
headers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
rontend/ASTUnit.h
f0281ef6cb826acaf5090ea65d69164fe28e9352 16-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Add support for a chain of stat caches in the FileManager, rather than
only supporting a single stat cache. The immediate benefit of this
change is that we can now generate a PCH/AST file when including
another PCH file; in the future, the chain of stat caches will likely
be useful with multiple levels of PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/PCHReader.h
52e7108f51a4a9f4d6e84f33fb594d06e1d79560 16-Oct-2009 Douglas Gregor <dgregor@apple.com> Add support for a chain of stat caches in the FileManager, rather than
only supporting a single stat cache. The immediate benefit of this
change is that we can now generate a PCH/AST file when including
another PCH file; in the future, the chain of stat caches will likely
be useful with multiple levels of PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/PCHReader.h
551bc1f4cd792579735f79e935d07e1a26e34d81 16-Oct-2009 Anders Carlsson <andersca@mac.com> Add CK_VectorSplat and use it for casting non-pointer scalars to ExtVectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
16a8904f3f5ed19158657e1da95e5902fbee66f7 16-Oct-2009 Anders Carlsson <andersca@mac.com> Add CK_VectorSplat and use it for casting non-pointer scalars to ExtVectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5e564fd5a07022a4603e0b4d0856ad06196a1730 16-Oct-2009 Anders Carlsson <andersca@mac.com> Add a ToVoid cast kind and start using it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84241 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ebeaf2031c968143c531bfe232d7507f20c57347 16-Oct-2009 Anders Carlsson <andersca@mac.com> Add a ToVoid cast kind and start using it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84241 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
79f4bc78271e554430dfe13938de5928aefb4b4e 16-Oct-2009 Ted Kremenek <kremenek@apple.com> retain/release checker: Stop tracking reference counts for any symbols touched by StoreManager::InvalidateRegion().

This fixes <rdar://problem/7257223> and <rdar://problem/7283470>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84223 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
473e16745a6f3370ba3ab6fe70bff43b1c8b2ab9 16-Oct-2009 Ted Kremenek <kremenek@apple.com> retain/release checker: Stop tracking reference counts for any symbols touched by StoreManager::InvalidateRegion().

This fixes <rdar://problem/7257223> and <rdar://problem/7283470>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84223 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
32b25ab7d4b3355b804e367c90f5cd55f4c9187e 16-Oct-2009 John McCall <rjmccall@apple.com> Remove the ConstantArrayType subtypes. This information is preserved in the
TypeLoc records for declarations; it should not be necessary to represent it
directly in the type system.

Please complain if you were using these classes and feel you can't replicate
previous functionality using the TypeLoc API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84222 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
46a617a792bfab0d9b1e057371ea3b9540802226 16-Oct-2009 John McCall <rjmccall@apple.com> Remove the ConstantArrayType subtypes. This information is preserved in the
TypeLoc records for declarations; it should not be necessary to represent it
directly in the type system.

Please complain if you were using these classes and feel you can't replicate
previous functionality using the TypeLoc API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84222 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
953d06ccb58f1e73e09ee892631ee86cf1de3157 16-Oct-2009 John McCall <rjmccall@apple.com> ConcreteTypeLoc subclasses which call getInnerTypeLoc() should get a
compile-time error now; moreover, remove the need for an explicit hasInnerType()
call. Thanks to Doug Gregor for the metaprogramming approach.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84215 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
a6f56429aa9a02e71426e99db8b0ae94d0115215 16-Oct-2009 John McCall <rjmccall@apple.com> ConcreteTypeLoc subclasses which call getInnerTypeLoc() should get a
compile-time error now; moreover, remove the need for an explicit hasInnerType()
call. Thanks to Doug Gregor for the metaprogramming approach.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84215 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ca55f6feb4c1785fa35fd9e69494df0912ccc3c5 16-Oct-2009 Steve Naroff <snaroff@apple.com> Make sure temporary files get unlinked.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84208 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHReader.h
e19944c93961b7618f4f3f3185f698f46369ea54 16-Oct-2009 Steve Naroff <snaroff@apple.com> Make sure temporary files get unlinked.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84208 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
rontend/PCHReader.h
f445d2d26b272f4180b5c08a5c335077f594492c 15-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Simplify checking of explicit template specialization/explicit
instantiation redeclaration semantics for function template
specializations and member functions of class template
specializations. Also, record the point of instantiation for
explicit-instantiated functions and static data members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84188 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0a897e32a09d290aa5b375444fe33928e47168bb 15-Oct-2009 Douglas Gregor <dgregor@apple.com> Simplify checking of explicit template specialization/explicit
instantiation redeclaration semantics for function template
specializations and member functions of class template
specializations. Also, record the point of instantiation for
explicit-instantiated functions and static data members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84188 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
193c2422457a7cd1cbe94450d1119a8d724601eb 15-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Check the interactions between explicit instantiations and template
specializations. Work in progress; there's more cleanup required to
actually use the new CheckSpecializationInstantiationRedecl checker
uniformly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
454885ec4f59959a01a2c7861b88abdea8617147 15-Oct-2009 Douglas Gregor <dgregor@apple.com> Check the interactions between explicit instantiations and template
specializations. Work in progress; there's more cleanup required to
actually use the new CheckSpecializationInstantiationRedecl checker
uniformly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e44e62ba4163f0da137ff736cb5bd040ac0a54a5 15-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose explicit instantiations of function templates and member
functions/static data members of class template specializations that
do not have definitions. This is the latter part of [temp.explicit]p4;
the former part still needs more testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84182 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2d3a3de71b2fa35614cb732a6da95a41fa38ad9 15-Oct-2009 Douglas Gregor <dgregor@apple.com> Diagnose explicit instantiations of function templates and member
functions/static data members of class template specializations that
do not have definitions. This is the latter part of [temp.explicit]p4;
the former part still needs more testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84182 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
79c0657c022ff95b8fecfc48c5eeff35796ce40f 15-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> More explicit template instantiation. Now we're checking for more
cases where an explicit instantiation requires a definition; the
remainder of these checks will come with the implementation of
paragraph 4 of [temp.explicit].


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bf7643e7966cd9acd797a84870018034112e49d3 15-Oct-2009 Douglas Gregor <dgregor@apple.com> More explicit template instantiation. Now we're checking for more
cases where an explicit instantiation requires a definition; the
remainder of these checks will come with the implementation of
paragraph 4 of [temp.explicit].


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3d3d16cfa0a911055c5d7cb2ff4400c48752dd94 15-Oct-2009 John McCall <rjmccall@apple.com> Complete some unfinished comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
f2130a6e3cef10b435feadf6ad8bebaaf9a81a88 15-Oct-2009 John McCall <rjmccall@apple.com> Complete some unfinished comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
6816472475db68c155dc71a0a4402b5a0f2cfb0c 15-Oct-2009 John McCall <rjmccall@apple.com> Better living through metaprogramming. Create a base class which abstracts
most of the unsafe boilerplate out of TypeLoc. Create a QualifiedLoc class
to represent the idea that we *might* start representing source locations
of qualifiers. Dealing with qualifiers explicitly like this also lets us
efficiently ignore them in all the concrete cases.

This should make it obvious and easy to add new TypeLoc subclasses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
34a0447b8072e0da14c0980597da9d03a1495662 15-Oct-2009 John McCall <rjmccall@apple.com> Better living through metaprogramming. Create a base class which abstracts
most of the unsafe boilerplate out of TypeLoc. Create a QualifiedLoc class
to represent the idea that we *might* start representing source locations
of qualifiers. Dealing with qualifiers explicitly like this also lets us
efficiently ignore them in all the concrete cases.

This should make it obvious and easy to add new TypeLoc subclasses.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
ST/TypeLocVisitor.h
46709fd0c6e48a27f6abc31b04bf59fce446799f 15-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> CheckTemplateSpecializationScope isn't going to be used for explicit
instantiations, since the requirements are too different from those
for template specializations. Simplify it slightly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9302da67eabe2e9ad27433994b6727d670839476 15-Oct-2009 Douglas Gregor <dgregor@apple.com> CheckTemplateSpecializationScope isn't going to be used for explicit
instantiations, since the requirements are too different from those
for template specializations. Simplify it slightly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84156 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49628d8472551b062b7c1d4368f9516c9f577986 15-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Additional semantic checking for explicit template instantiations,
focusing on the scope- and qualifier-related semantic requirements in
C++ [temp.explicit]p2.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84154 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
558c03222c77873a934b002073667a3c971fe8a9 15-Oct-2009 Douglas Gregor <dgregor@apple.com> Additional semantic checking for explicit template instantiations,
focusing on the scope- and qualifier-related semantic requirements in
C++ [temp.explicit]p2.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84154 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89f408a6b2d78c18b79163415ba155c1029fab63 14-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Give explicit and implicit instantiations of static data members of
class templates the proper linkage.

Daniel, please look over the CodeGenModule bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1028c9f0afc1cc5f4951b39b7067fa57c1fea07b 14-Oct-2009 Douglas Gregor <dgregor@apple.com> Give explicit and implicit instantiations of static data members of
class templates the proper linkage.

Daniel, please look over the CodeGenModule bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3377acc532d272744e956203abb45b6862336bcd 14-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Testing and some minor fixes for explicit template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticSemaKinds.td
663b5a0be7261c29bc4c526a71cffcfa02d4153e 14-Oct-2009 Douglas Gregor <dgregor@apple.com> Testing and some minor fixes for explicit template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticSemaKinds.td
850c3e7b448a03033d430acea9273dd405fb2316 14-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Add support for having different c++ search dirs with -m32 and -m64. So far
this is only used in darwin10, 64 bit ubuntu 9.10 and 64 bit openSUSE 11.1.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84115 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
31b63beefa058aa42a12a1c2b72b43a4ba21f7f1 14-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Add support for having different c++ search dirs with -m32 and -m64. So far
this is only used in darwin10, 64 bit ubuntu 9.10 and 64 bit openSUSE 11.1.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84115 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
1cfff33985f932c3145835d3d8d8a27c4e3344a0 14-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Have the exception specification checkers take partial diagnostics. Use this to merge two diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84105 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
37c38ec5f1c155886929739338110a0b70ac3362 14-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Have the exception specification checkers take partial diagnostics. Use this to merge two diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84105 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3e15f36d74a85df70045d25232df9e0d746308af 14-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Use partial diagnostics properly in call to RequireCompleteType. Among other things, this means we get a note on the declaration of the incomplete type when it is used in an exception specification.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84099 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
491b84c062ead1c69911a8d5f0d57826afacc099 14-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Use partial diagnostics properly in call to RequireCompleteType. Among other things, this means we get a note on the declaration of the incomplete type when it is used in an exception specification.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84099 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
229e0a852b3a8b4d64eedf685c5f9f38bb910972 14-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Now StoreManager::CastRegion() takes a MemRegion, returns a MemRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84081 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
09270cc1b9cdd4c50012cb7984df8745e05833e5 14-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Now StoreManager::CastRegion() takes a MemRegion, returns a MemRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84081 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
bba981c237207bf87b57575837748a53c64f10d9 14-Oct-2009 Chris Lattner <sabre@nondot.org> fix some cfstring related issues:
1) -fwritable-string does affect the non-utf16 version of cfstrings
just not the utf16 ones.
2) utf16 strings should always be marked constant, as the __TEXT segment
is readonly.
3) The name of the global doesn't matter, remove it from TargetInfo.
4) Trust the asmprinter to drop cstrings into the right section, like llvmgcc does now.

This fixes rdar://7115750



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84077 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
278b9f06933c385ffbccc15f8491787470cb4a1b 14-Oct-2009 Chris Lattner <sabre@nondot.org> fix some cfstring related issues:
1) -fwritable-string does affect the non-utf16 version of cfstrings
just not the utf16 ones.
2) utf16 strings should always be marked constant, as the __TEXT segment
is readonly.
3) The name of the global doesn't matter, remove it from TargetInfo.
4) Trust the asmprinter to drop cstrings into the right section, like llvmgcc does now.

This fixes rdar://7115750



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84077 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b55ff6d82d9fe4b87cfb936ab16814727749c357 14-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> * Remove unused GRState* parameter
* Make all Base value the last argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84071 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
d0f8bb1f6b51b93bf07b27b4a8f9d1823063cba8 14-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> * Remove unused GRState* parameter
* Make all Base value the last argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84071 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
d417f4491ec35c2bccb0d852ce4d6eab80a35af3 14-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Handle ambiguity of reference initialization.
Removes a FIXME.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d9290cb5ad9eae8d10487cea5392331cf6a47142 14-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Handle ambiguity of reference initialization.
Removes a FIXME.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84068 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
65365455dc48e8382aab5079aa2e23ed5ab65eb3 14-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics when the parser encounters a declarator with an
unknown type name, e.g.,

foo::bar x;

when "bar" does not refer to a type in "foo".

With this change, the parser now calls into the action to perform
diagnostics and can try to recover by substituting in an appropriate
type. For example, this allows us to easily diagnose some missing
"typename" specifiers, which we now do:

test/SemaCXX/unknown-type-name.cpp:29:1: error: missing 'typename'
prior to dependent type name 'A<T>::type'
A<T>::type A<T>::f() { return type(); }
^~~~~~~~~~
typename

Fixes PR3990.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
a786fdbf6c1d8ff08c3e61c7eb6bf2872895e2b4 14-Oct-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics when the parser encounters a declarator with an
unknown type name, e.g.,

foo::bar x;

when "bar" does not refer to a type in "foo".

With this change, the parser now calls into the action to perform
diagnostics and can try to recover by substituting in an appropriate
type. For example, this allows us to easily diagnose some missing
"typename" specifiers, which we now do:

test/SemaCXX/unknown-type-name.cpp:29:1: error: missing 'typename'
prior to dependent type name 'A<T>::type'
A<T>::type A<T>::f() { return type(); }
^~~~~~~~~~
typename

Fixes PR3990.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
f1aa12fb490a02785a57140f0af5163be5f24619 13-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Unify our diagnostic printing for errors of the form, "we didn't like
what we found when we looked into <blah>", where <blah> is a
DeclContext*. We can now format DeclContext*'s in nice ways, e.g.,
"namespace N", "the global namespace", "'class Foo'".

This is part of PR3990, but we're not quite there yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
3f09327b26033d0a9676d52d80cf92c48f581aff 13-Oct-2009 Douglas Gregor <dgregor@apple.com> Unify our diagnostic printing for errors of the form, "we didn't like
what we found when we looked into <blah>", where <blah> is a
DeclContext*. We can now format DeclContext*'s in nice ways, e.g.,
"namespace N", "the global namespace", "'class Foo'".

This is part of PR3990, but we're not quite there yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84028 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
f2013e7533228afe9ce1ca158b88f7a8447f85f8 13-Oct-2009 John McCall <rjmccall@apple.com> Turn -Wparentheses on by default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f66d5cd8926541099def3cb187d56eff60d3be99 13-Oct-2009 John McCall <rjmccall@apple.com> Turn -Wparentheses on by default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
33316b8add2209c6af2336373c92856dc5638942 13-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose attempts to add default function arguments to a
specialization. This completes C++ [temp.expl.spec]!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
096ebfda90b35a5cd6e399920fca7d9b5b0859f3 13-Oct-2009 Douglas Gregor <dgregor@apple.com> Diagnose attempts to add default function arguments to a
specialization. This completes C++ [temp.expl.spec]!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
db056de08969d15cbc275de3e955db2f375ff8ae 13-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> When explicitly specializing a member that is a template, mark the
template as a specialization. For example, this occurs with:

template<typename T>
struct X {
template<typename U> struct Inner { /* ... */ };
};

template<> template<typename T>
struct X<int>::Inner {
T member;
};

We need to treat templates that are member specializations as special
in two contexts:

- When looking for a definition of a member template, we look
through the instantiation chain until we hit the primary template
*or a member specialization*. This allows us to distinguish
between the primary "Inner" definition and the X<int>::Inner
definition, above.
- When computing all of the levels of template arguments needed to
instantiate a member template, don't add template arguments
from contexts outside of the instantiation of a member
specialization, since the user has already manually substituted
those arguments.

Fix up the existing test for p18, which was actually wrong (but we
didn't diagnose it because of our poor handling of member
specializations of templates), and add a new test for member
specializations of templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
fd056bc86a8b22a9421b5d921bbca276d0f9d0f7 13-Oct-2009 Douglas Gregor <dgregor@apple.com> When explicitly specializing a member that is a template, mark the
template as a specialization. For example, this occurs with:

template<typename T>
struct X {
template<typename U> struct Inner { /* ... */ };
};

template<> template<typename T>
struct X<int>::Inner {
T member;
};

We need to treat templates that are member specializations as special
in two contexts:

- When looking for a definition of a member template, we look
through the instantiation chain until we hit the primary template
*or a member specialization*. This allows us to distinguish
between the primary "Inner" definition and the X<int>::Inner
definition, above.
- When computing all of the levels of template arguments needed to
instantiate a member template, don't add template arguments
from contexts outside of the instantiation of a member
specialization, since the user has already manually substituted
those arguments.

Fix up the existing test for p18, which was actually wrong (but we
didn't diagnose it because of our poor handling of member
specializations of templates), and add a new test for member
specializations of templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
85fef1d87e35b508bf0ca18e89e42eedcef22af3 13-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Improve the internal representation and semantic analysis of friend
function templates.

This commit ensures that friend function templates are constructed as
FunctionTemplateDecls rather than partial FunctionDecls (as they
previously were). It then implements template instantiation for friend
function templates, injecting the friend function template only when
no previous declaration exists at the time of instantiation.

Oh, and make sure that explicit specialization declarations are not
friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83970 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a735b206fdb5c15767a45289e1ffb3b568f70f2b 13-Oct-2009 Douglas Gregor <dgregor@apple.com> Improve the internal representation and semantic analysis of friend
function templates.

This commit ensures that friend function templates are constructed as
FunctionTemplateDecls rather than partial FunctionDecls (as they
previously were). It then implements template instantiation for friend
function templates, injecting the friend function template only when
no previous declaration exists at the time of instantiation.

Oh, and make sure that explicit specialization declarations are not
friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83970 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e74439f006a375143871936abcb2866f1f278184 13-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Return the original state by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83949 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
d6116cc4730245f09d458167aa94f2ea6e2b2b53 13-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Return the original state by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83949 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
128121838edc20d691df3eff6506d88dbf28d81c 13-Oct-2009 Chris Lattner <sabre@nondot.org> make the diagnostic in the 'unused result' warning more precise
about the reason, rdar://7186119.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
bc8d42c6f1565c0b2f93ad524edebfd7a4e6cac6 13-Oct-2009 Chris Lattner <sabre@nondot.org> make the diagnostic in the 'unused result' warning more precise
about the reason, rdar://7186119.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
a44a241c8b49eee747f7f31847d9a6b53ebdbfae 13-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add two utility methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83935 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/GRCoreEngine.h
798d2ca60d1cd6de70d28a5ce60337a2b03a663f 13-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add two utility methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83935 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/GRCoreEngine.h
bd247025a48f05aa94c3c4a182c8248c84bff116 13-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add an initial implementation of EnterStackFrame() to the StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83934 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/Store.h
4e3c1f7c2a2053cf770f744846a87087415eb340 13-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add an initial implementation of EnterStackFrame() to the StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83934 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/Store.h
17cfb461d4d8d0d40dcd740df1c0ad8c6f0d88cc 12-Oct-2009 John McCall <rjmccall@apple.com> Implement -Wparentheses: warn about using assignments in contexts that require
conditions. Add a fixit to insert the parentheses. Also fix a very minor
possible memory leak in 'for' conditions.

Fixes PR 4876 and rdar://problem/7289172



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5a881bb09928b7ade891efc680088aaad276f8d6 12-Oct-2009 John McCall <rjmccall@apple.com> Implement -Wparentheses: warn about using assignments in contexts that require
conditions. Add a fixit to insert the parentheses. Also fix a very minor
possible memory leak in 'for' conditions.

Fixes PR 4876 and rdar://problem/7289172



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c33bbc52e3e2f7e160b34dd923159238a5ae7154 12-Oct-2009 Ted Kremenek <kremenek@apple.com> Use a BumpPtrAllocator to allocate all aspects of CFG, including CFGBlocks, successor and predecessor vectors, etc.

Speedup: when doing 'clang-cc -analyze -dump-cfg' (without actual printing, just
CFG building) on the amalgamated SQLite source (all of SQLite in one source
file), runtime reduced by 9%.

This fixes: <rdar://problem/7250745>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83899 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
ee82d9bdc5025b82de8ce2a4ad4685e0a8b79da9 12-Oct-2009 Ted Kremenek <kremenek@apple.com> Use a BumpPtrAllocator to allocate all aspects of CFG, including CFGBlocks, successor and predecessor vectors, etc.

Speedup: when doing 'clang-cc -analyze -dump-cfg' (without actual printing, just
CFG building) on the amalgamated SQLite source (all of SQLite in one source
file), runtime reduced by 9%.

This fixes: <rdar://problem/7250745>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83899 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
fa64ec0971d80624416a6af735808aa7db59994e 12-Oct-2009 Mike Stump <mrs@apple.com> Fixup windows include paths. Patch by John Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83898 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
620d57a293143e3f07d6e4f5ba50020a80f45564 12-Oct-2009 Mike Stump <mrs@apple.com> Fixup windows include paths. Patch by John Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83898 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
c176c0af307cfcd6cd9d9069ac7fb29d8da1d4bf 12-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose the declaration of explicit specializations after an implicit
instantiation has already been required. To do so, keep track of the
point of instantiation for anything that can be instantiated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
b3ae4fcd4314a9c1c46d41b200883599c32025b4 12-Oct-2009 Douglas Gregor <dgregor@apple.com> Diagnose the declaration of explicit specializations after an implicit
instantiation has already been required. To do so, keep track of the
point of instantiation for anything that can be instantiated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
e8385e054e1b35df057af080fb5ed69d1b5ad923 12-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Handle built-in unary operators when reporting ambiguities.
wip - To prune excessive reporting.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83889 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2ebe7ebb1d6149a1845dd3169009f99b78e91bc9 12-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Handle built-in unary operators when reporting ambiguities.
wip - To prune excessive reporting.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83889 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7bd12db210d40fbc6530e51f7c6c8b6cdd619027 12-Oct-2009 Ted Kremenek <kremenek@apple.com> Allow BumpVectorContext to conditionally own the underlying BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
87342dc37237c6efb9e311bacb12547de3ccbc0f 12-Oct-2009 Ted Kremenek <kremenek@apple.com> Allow BumpVectorContext to conditionally own the underlying BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
52f24e6d2307a19eacc5fb393d59b9a131df96b2 12-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Use CanQualType (instead of QualType) to store collection of visible
canonical conversion types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f4e462c2c2f4cb76c5a75d952adeb4355f32f6a7 12-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Use CanQualType (instead of QualType) to store collection of visible
canonical conversion types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83869 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e4cb91964a91bd5bbaae5a556b8df0ebc821279f 12-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> If built-in operators could not be selected because of ambiguity in
user-defined type conversions, issue list of ambiguites in addition
to the diagnostic. So, clang now issues the following:

b.cpp:19:19: error: left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'struct C1'
int i = c1->*pmf;
~~^
b.cpp:19:19: note: because of ambiguity in conversion of 'struct C1' to 'struct E *'
b.cpp:5:5: note: candidate function
operator E*();
^
b.cpp:11:5: note: candidate function
operator E*();
^


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83862 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27687cf7f6fea50e592f653549a33f07bf5c0667 12-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> If built-in operators could not be selected because of ambiguity in
user-defined type conversions, issue list of ambiguites in addition
to the diagnostic. So, clang now issues the following:

b.cpp:19:19: error: left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'struct C1'
int i = c1->*pmf;
~~^
b.cpp:19:19: note: because of ambiguity in conversion of 'struct C1' to 'struct E *'
b.cpp:5:5: note: candidate function
operator E*();
^
b.cpp:11:5: note: candidate function
operator E*();
^


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83862 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0368a85c12e24c008960c9b73c8f79343bec38c0 11-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Test exception spec compatibility on return type and parameters.

Along the way, use RequireCompleteType when testing exception spec types.
Separate all the ugly spec stuff into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83764 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dced226e37f7c2c31c25d06c514f29b610fe2a54 11-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Test exception spec compatibility on return type and parameters.

Along the way, use RequireCompleteType when testing exception spec types.
Separate all the ugly spec stuff into its own file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83764 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
798d96a85399a9f99a6f43ef4b11cb554445909f 10-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement the core checking for compatible exception specifications in assignment and initialization.

The exception specification of the assignee must be the same or a subset of the target. In addition, exception specifications on arguments and return types must be equivalent, but this is not implemented yet.
This currently produces two diagnostics for every invalid assignment/initialization, due to the diagnostic produced outside PerformImplicitConversion, e.g. in CheckSingleInitializer. I don't know how to suppress this; in any case I think it is the wrong place for a diagnostic, since there are other diagnostics produced inside the function. So I'm leaving it as it is for the moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c7588f1260c6655cfb73126b695d2f79ae170bb 10-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement the core checking for compatible exception specifications in assignment and initialization.

The exception specification of the assignee must be the same or a subset of the target. In addition, exception specifications on arguments and return types must be equivalent, but this is not implemented yet.
This currently produces two diagnostics for every invalid assignment/initialization, due to the diagnostic produced outside PerformImplicitConversion, e.g. in CheckSingleInitializer. I don't know how to suppress this; in any case I think it is the wrong place for a diagnostic, since there are other diagnostics produced inside the function. So I'm leaving it as it is for the moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9399940fd9562dd693525bcdcdb81cb89ae63cef 10-Oct-2009 John McCall <rjmccall@apple.com> Qualified lookup through using declarations. Diagnose a new type of ambiguity.
Split the various ambiguous result enumerators into their own enum. Tests
for most of C++ [namespace.qual].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6e24726524c2b51b31bb4b622aa678a46b024f42 10-Oct-2009 John McCall <rjmccall@apple.com> Qualified lookup through using declarations. Diagnose a new type of ambiguity.
Split the various ambiguous result enumerators into their own enum. Tests
for most of C++ [namespace.qual].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bb78b8e78e76cce6453774bb4c1f2dfe6c69fd6b 10-Oct-2009 Anders Carlsson <andersca@mac.com> Add CheckCallReturnType and start using it for regular call expressions. This will improve error messages. For

struct B;

B f();

void g() {
f();
}

We now get

t.cpp:6:3: error: calling 'f' with incomplete return type 'struct B'
f();
^~~
t.cpp:3:3: note: 'f' declared here
B f();
^
t.cpp:1:8: note: forward declaration of 'struct B'
struct B;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
8c8d91917c307dc3ba4f60661377c745f2a6bef2 10-Oct-2009 Anders Carlsson <andersca@mac.com> Add CheckCallReturnType and start using it for regular call expressions. This will improve error messages. For

struct B;

B f();

void g() {
f();
}

We now get

t.cpp:6:3: error: calling 'f' with incomplete return type 'struct B'
f();
^~~
t.cpp:3:3: note: 'f' declared here
B f();
^
t.cpp:1:8: note: forward declaration of 'struct B'
struct B;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
de9af1f057b3ea9005e629384f1af9859716227c 09-Oct-2009 Mike Stump <mrs@apple.com> Efficiency refinements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83666 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
ec05766fe525a8f81c7dc96ddbdc874814a14b2c 09-Oct-2009 Mike Stump <mrs@apple.com> Efficiency refinements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83666 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
2835511b72c361fa346767a65bd2df7b79f9b9f4 09-Oct-2009 Axel Naumann <Axel.Naumann@cern.ch> Passing const Triple& is sufficient for AddDefaultSystemIncludePaths()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83663 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
38ee4e07633f1548f6b703e74ac7ad2208059d39 09-Oct-2009 Axel Naumann <Axel.Naumann@cern.ch> Passing const Triple& is sufficient for AddDefaultSystemIncludePaths()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83663 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
3ef7e3242f4a4c489fc8a1aaa9f5f72dd837f5ea 09-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Produce good looking diagnostics on ambiguous built-in operators.
Now we produce things like:
bug1.cpp:21:11: error: use of overloaded operator '->*' is ambiguous
int i = c->*pmf; // expected-error {{use of overloaded operator '->*' is ambiguous}} \
~^ ~~~
bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int const struct A::*')
bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int restrict struct A::*')
...

Still need to look at an issue (indicated as FIXME in the test case).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ad3607da8ad626c408d8e6d804bf1359977b200a 09-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Produce good looking diagnostics on ambiguous built-in operators.
Now we produce things like:
bug1.cpp:21:11: error: use of overloaded operator '->*' is ambiguous
int i = c->*pmf; // expected-error {{use of overloaded operator '->*' is ambiguous}} \
~^ ~~~
bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int const struct A::*')
bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int restrict struct A::*')
...

Still need to look at an issue (indicated as FIXME in the test case).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
acf555b5a0774d696039aa473a1c81cf382f98a0 09-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83612 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
82887688bdd931c37488c9a8d089fd811485947f 09-Oct-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83612 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
6ac11c8e90789d2b101cbde272a75d623f4d035e 09-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Improve on reporting ambiguity involving built-in candidates.
I still don't like it but it is improvement over what we had.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16a5eac559730f4a7ec5ffdab3f236f51df85b63 09-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Improve on reporting ambiguity involving built-in candidates.
I still don't like it but it is improvement over what we had.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
030f8967a3a687dce7196f9268731ef8eeb7080a 09-Oct-2009 Mike Stump <mrs@apple.com> Set up include paths for VC++ and Cygwin headers, along with the
existing MinGW headers, plus the newer 4.4.0 version. Patch by John
Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83594 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
43d8176d2e8e304b2d419fb0fe139cc07af80dea 09-Oct-2009 Mike Stump <mrs@apple.com> Set up include paths for VC++ and Cygwin headers, along with the
existing MinGW headers, plus the newer 4.4.0 version. Patch by John
Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83594 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
75d19e667f0c48cc21ed4dd23f5c4aa6d350f069 09-Oct-2009 Mike Stump <mrs@apple.com> This fixes support for complex literals, reworked to avoid a goto, and
to add a flag noting the presence of a Microsoft extension suffix (i8,
i16, i32, i64). Patch by John Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83591 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
b79fe2d28777652a4df4f49dc876cbec060ca90e 09-Oct-2009 Mike Stump <mrs@apple.com> This fixes support for complex literals, reworked to avoid a goto, and
to add a flag noting the presence of a Microsoft extension suffix (i8,
i16, i32, i64). Patch by John Thompson.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83591 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
0d05afc49b3ad3f82835eb758d6f98ae8223d257 09-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Fix up error reporting when object cannot be constructed
because of missing default constructor of a member.
Fixes pr5154.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0c728f1eb2e8e6e5adc2501c6fdcd87105b34d5c 09-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Fix up error reporting when object cannot be constructed
because of missing default constructor of a member.
Fixes pr5154.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6cd088ae0272f34c202bf7b67fd55de43b287582 08-Oct-2009 Steve Naroff <snaroff@apple.com> Add code completion support for ObjC property declarations/attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83579 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ece8e71d12b6f4cb2dc501297afef126dab8ad74 08-Oct-2009 Steve Naroff <snaroff@apple.com> Add code completion support for ObjC property declarations/attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83579 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1dac9df4db4cc39667df05bf306178f521a32f04 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for -Wunused-variable, from Oscar Bonilla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b5352cf949898cd42c8c5bc96a17a831b61ac2e5 08-Oct-2009 Douglas Gregor <dgregor@apple.com> Implement support for -Wunused-variable, from Oscar Bonilla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2fc4b612a23127bf2a180642ff9313f6a163456c 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Fix an assertion in the XML output, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83576 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/StmtXML.def
b46f57d9daa0c30d79dc8149d30c3e3a12fe2b32 08-Oct-2009 Douglas Gregor <dgregor@apple.com> Fix an assertion in the XML output, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83576 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/StmtXML.def
89f31cf5d2248186424147302dc1bfeadcd3528c 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Improve checking for specializations of member classes of class
templates, and keep track of how those member classes were
instantiated or specialized.

Make sure that we don't try to instantiate an explicitly-specialized
member class of a class template, when that explicit specialization
was a declaration rather than a definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
f6b1185f0a8a209c06dfc1efdb6a59cc851e970c 08-Oct-2009 Douglas Gregor <dgregor@apple.com> Improve checking for specializations of member classes of class
templates, and keep track of how those member classes were
instantiated or specialized.

Make sure that we don't try to instantiate an explicitly-specialized
member class of a class template, when that explicit specialization
was a declaration rather than a definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
f044bb1ea8e4a0d6840a7638ae8e8fd054c6917b 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> For instantiations of static data members of class templates, keep
track of the kind of specialization or instantiation. Also, check the
scope of the specialization and ensure that a specialization
declaration without an initializer is not a definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticSemaKinds.td
251b4ff2578e26959a4c036140ccd61c5e9292f2 08-Oct-2009 Douglas Gregor <dgregor@apple.com> For instantiations of static data members of class templates, keep
track of the kind of specialization or instantiation. Also, check the
scope of the specialization and ensure that a specialization
declaration without an initializer is not a definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticSemaKinds.td
b6a0249748ea465da1e75880239044d6e8fac4cb 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Compress storage for MemberSpecializationInfo into a single
pointer. Yay, PointerIntPair.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
44e368b6a85c42d681148ccd5e0052418ff9751e 08-Oct-2009 Douglas Gregor <dgregor@apple.com> Compress storage for MemberSpecializationInfo into a single
pointer. Yay, PointerIntPair.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
193fb2be18e531ad344bf02099a72fd05b17d846 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of whether a member function instantiated from a member
function of a class template was implicitly instantiated, explicitly
instantiated (declaration or definition), or explicitly
specialized. The same MemberSpecializationInfo structure will be used
for static data members and member classes as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
2db323294ac02296125e1e0beb4c3595992e75bb 08-Oct-2009 Douglas Gregor <dgregor@apple.com> Keep track of whether a member function instantiated from a member
function of a class template was implicitly instantiated, explicitly
instantiated (declaration or definition), or explicitly
specialized. The same MemberSpecializationInfo structure will be used
for static data members and member classes as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
af2cbe1ec5e4b07df78c70f5f57a111d735d356e 08-Oct-2009 John McCall <rjmccall@apple.com> Refactoring around friend class templates. Better error message for friend enums.
Don't create a new declaration for friend classes if a declaration already exists.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e3af0235ce6548e221e04c2ae5aeb0fb413ba736 08-Oct-2009 John McCall <rjmccall@apple.com> Refactoring around friend class templates. Better error message for friend enums.
Don't create a new declaration for friend classes if a declaration already exists.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9e639362fc5f5cf4016bf83355917c8614f95ed5 08-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Type checking for specializations of member functions of class
templates. Previously, these weren't handled as specializations at
all. The AST for representing these as specializations is still a work
in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1fef4e60e7e884803977a8376c172ea584f8a5d1 08-Oct-2009 Douglas Gregor <dgregor@apple.com> Type checking for specializations of member functions of class
templates. Previously, these weren't handled as specializations at
all. The AST for representing these as specializations is still a work
in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
68a8293229299e6d6593c18c828ec27736101ca4 07-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes problem in finding visible convertion functions of a class
where matching conversion types in base classes were still visible.
Plus refactoring and cleanup.
Added a test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83485 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0351a1e2e17c1edf27f90c23fbf65d8fcad995c4 07-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes problem in finding visible convertion functions of a class
where matching conversion types in base classes were still visible.
Plus refactoring and cleanup.
Added a test case.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83485 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bea479409a94af5abf202739e5688fdb452f9aa9 07-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose explicit instantiations and specializations that occur in class scope

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0a4074768a6ecd81513f0db02bfb0e96ab3e56a0 07-Oct-2009 Douglas Gregor <dgregor@apple.com> Diagnose explicit instantiations and specializations that occur in class scope

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4b0eb87ebf2f12cf8ebacd208e9c5d8c0d5a5877 07-Oct-2009 Ted Kremenek <kremenek@apple.com> Add 'template' keyword to disambiguate the use of a member template within a templated class. Hopefully this will please the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83452 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
f0e75d6baf0dc6ba0a7d66726d9e3ba455db8639 07-Oct-2009 Ted Kremenek <kremenek@apple.com> Add 'template' keyword to disambiguate the use of a member template within a templated class. Hopefully this will please the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83452 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/BumpVector.h
116cb606331bf8eacd400d25c14c4feec83eddbd 07-Oct-2009 Ted Kremenek <kremenek@apple.com> Change ExplodedNode to have its NodeGroups all BumpPtrAllocated, avoiding malloc() traffic when adding successors/predecessors to a node. This was done by introducing BumpVector, which is essentially SmallVector with all memory being BumpPtrAllocated (this can certainly be cleaned up or moved into llvm/ADT).

This change yields a 1.8% speed increase when running the analyzer (with -analyzer-store=region) on a small benchmark file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/Support/BumpVector.h
5fe4d9deb543a19f557e3d85c5f33867af97cd96 07-Oct-2009 Ted Kremenek <kremenek@apple.com> Change ExplodedNode to have its NodeGroups all BumpPtrAllocated, avoiding malloc() traffic when adding successors/predecessors to a node. This was done by introducing BumpVector, which is essentially SmallVector with all memory being BumpPtrAllocated (this can certainly be cleaned up or moved into llvm/ADT).

This change yields a 1.8% speed increase when running the analyzer (with -analyzer-store=region) on a small benchmark file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/Support/BumpVector.h
f70acbff9a538f988571af4980262424c0dac6a0 07-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor checking of the scope of explicit template specialization
declarations and explicit template instantiations, improving
diagnostics and making the code usable for function template
specializations (as well as class template specializations and partial
specializations).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d5cb8765ad3841ead8eaacb0360ac385f2f0e080 07-Oct-2009 Douglas Gregor <dgregor@apple.com> Refactor checking of the scope of explicit template specialization
declarations and explicit template instantiations, improving
diagnostics and making the code usable for function template
specializations (as well as class template specializations and partial
specializations).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
26b8955aaa75ca5ae58e1671731f0752ed28c1e0 07-Oct-2009 Mike Stump <mrs@apple.com> Fix eof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
da5529121eb3102432170ee0a1797b9e58044a2f 07-Oct-2009 Mike Stump <mrs@apple.com> Fix eof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
812e771af3dd667402707ad3680cca137ef05081 07-Oct-2009 Mike Stump <mrs@apple.com> Add codegen for __builtin_abort. Convert to FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83427 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
31c5141451d537720615edf67f15a048077bdc5f 07-Oct-2009 Mike Stump <mrs@apple.com> Add codegen for __builtin_abort. Convert to FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83427 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
44f1fa60787902f79b9679c5a0a5064fa1893f59 06-Oct-2009 Mike Stump <mrs@apple.com> Add more of __builtin_abort, WIP, still missing codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83410 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
07b1270f438292710466ca77a1ab83e74f1abebc 06-Oct-2009 Mike Stump <mrs@apple.com> Add more of __builtin_abort, WIP, still missing codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83410 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c54f652cb72837e087f396dfbcf6dbeaa500c08d 06-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor the code that walks a C++ inheritance hierarchy, searching
for bases, members, overridden virtual methods, etc. The operations
isDerivedFrom and lookupInBases are now provided by CXXRecordDecl,
rather than by Sema, so that CodeGen and other clients can use them
directly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
ST/DeclarationName.h
a8f32e0965ee19ecc53cd796e34268377a20357c 06-Oct-2009 Douglas Gregor <dgregor@apple.com> Refactor the code that walks a C++ inheritance hierarchy, searching
for bases, members, overridden virtual methods, etc. The operations
isDerivedFrom and lookupInBases are now provided by CXXRecordDecl,
rather than by Sema, so that CodeGen and other clients can use them
directly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CXXInheritance.h
ST/DeclCXX.h
ST/DeclarationName.h
020092eede29117ae1af0854b9e6efaae9f426b2 06-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the -nostdclanginc option to clang (the driver).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83377 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
6961fdd661f75b8452f526143b9f60b54e175c9d 06-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the -nostdclanginc option to clang (the driver).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83377 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
28ca54a01ef2b89a8a20d22f1af1ea625f6357db 06-Oct-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/7275774> Static analyzer warns about NULL pointer when
adding assert

This fix required a few changes:

SimpleSValuator:
- Eagerly replace a symbolic value with its constant value in EvalBinOpNN
when it is constrained to a constant. This allows us to better constant fold
values along a path.
- Handle trivial case of '<', '>' comparison of pointers when the two pointers
are exactly the same.

RegionStoreManager:





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83358 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SValuator.h
cd8f6ac9b613e1fe962ebf9c87d822ce765275e6 06-Oct-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/7275774> Static analyzer warns about NULL pointer when
adding assert

This fix required a few changes:

SimpleSValuator:
- Eagerly replace a symbolic value with its constant value in EvalBinOpNN
when it is constrained to a constant. This allows us to better constant fold
values along a path.
- Handle trivial case of '<', '>' comparison of pointers when the two pointers
are exactly the same.

RegionStoreManager:





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83358 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SValuator.h
23ad4eb7d6a8a45f17531a75f7bc3bd8f5ca01e4 06-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Refactor the c++ include path a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83357 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
2e9f652d53346bf7e64c8a12a9ff06b004a3e489 06-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Refactor the c++ include path a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83357 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitHeaderSearch.h
6fe12e8550fc84db231cb60c093c1e59fcf56b4c 06-Oct-2009 Mike Stump <mrs@apple.com> This is slightly contentious, but, if llvm has gone to addressable
units, we should as well. The problem is the non-predictability of
the dimension of the values. I'd love for the dimension to be part of
the static type system... but in C++ it is kinda annoying to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83345 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
8cf7a1a6dd284a356d0cc69448e35f9b13a7b35a 06-Oct-2009 Mike Stump <mrs@apple.com> This is slightly contentious, but, if llvm has gone to addressable
units, we should as well. The problem is the non-predictability of
the dimension of the values. I'd love for the dimension to be part of
the static type system... but in C++ it is kinda annoying to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83345 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
eeca8bc32b7825c78c67bb5d09353edd0f715fb1 05-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Encode the Clang branch and Subversion revision into a PCH file, and
assume that PCH files from different Clang revisions are not
compatible. Addresses <rdar://problem/7266572>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHBitCodes.h
445e23e9b909ec8e21303c7dd82c90b72fc09ac4 05-Oct-2009 Douglas Gregor <dgregor@apple.com> Encode the Clang branch and Subversion revision into a PCH file, and
assume that PCH files from different Clang revisions are not
compatible. Addresses <rdar://problem/7266572>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHBitCodes.h
7eb9e2e342729219ed2dc0c39b80710db97f5547 05-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement Protocols on class extensions.
<rdar://problem/7269631> Protocols on class extensions don't work



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
339798eae1eb61c50ca68766ed028c0a16d0a284 05-Oct-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement Protocols on class extensions.
<rdar://problem/7269631> Protocols on class extensions don't work



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
45e728a16a4ed8662ae0b051940f4a984ce520a6 05-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Provide a common set of routines in Version.h that return Subversion
branch/revision information. Use that information in the driver,
rather than one-off branch/revision computation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83321 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
b8d1191fdeb4eec9bc5cf9bf4b027add0fb467b3 05-Oct-2009 Douglas Gregor <dgregor@apple.com> Provide a common set of routines in Version.h that return Subversion
branch/revision information. Use that information in the driver,
rather than one-off branch/revision computation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83321 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
0c6d1f94a45dcb3f83adf9fb44461ea9b55dfd85 02-Oct-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure to free the explicit template arguments provided for an
explicit instantiation. Also, tighten up reference-count checking to
help catch these issues earlier. Fixes PR5069.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b2f81cf7f8445e0c65c0428f4fbb0442566916b8 02-Oct-2009 Douglas Gregor <dgregor@apple.com> Make sure to free the explicit template arguments provided for an
explicit instantiation. Also, tighten up reference-count checking to
help catch these issues earlier. Fixes PR5069.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b36cf1c496192714a73be212156f9215d35276bd 02-Oct-2009 Steve Naroff <snaroff@apple.com> - Remove Sema::FindMethodInNestedImplementations().
- Add ObjCInterfaceDecl::lookupPrivateInstanceMethod().
- Convert clients.

No functionality change - One less method in Sema:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d789d3d985e28c9404e62157af46dcb7331920e0 02-Oct-2009 Steve Naroff <snaroff@apple.com> - Remove Sema::FindMethodInNestedImplementations().
- Add ObjCInterfaceDecl::lookupPrivateInstanceMethod().
- Convert clients.

No functionality change - One less method in Sema:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
df41c4d4174d9d12829544508c9786d9e2290915 01-Oct-2009 John McCall <rjmccall@apple.com> Anonymous namespaces, sema + codegen. A lot of semantics are still broken,
apparently because using directives aren't quite working correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
9aeed32282fe8a775c24c01c923717ca86695685 01-Oct-2009 John McCall <rjmccall@apple.com> Anonymous namespaces, sema + codegen. A lot of semantics are still broken,
apparently because using directives aren't quite working correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
91d6427d55572d892fdc2d9e67c898f63af5be6d 30-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue good diagnostics when initializing a refernce type with
a bad initializer. Fixes pr4274.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83169 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
893f955321cdf49dd0ceaf4ff821632e9b265000 30-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue good diagnostics when initializing a refernce type with
a bad initializer. Fixes pr4274.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83169 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c5bd24265e5a0b38a3c2149d2b11dbf064a2b243 30-Sep-2009 Tanya Lattner <tonic@nondot.org> Add an error for function parameters that have a qualified address space since this is not allowed by the embedded c extension spec.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27a84d01614609c094029a49f7a86f0f7f8fe7f1 30-Sep-2009 Tanya Lattner <tonic@nondot.org> Add an error for function parameters that have a qualified address space since this is not allowed by the embedded c extension spec.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83165 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
be568a229d8947727a49a4719cd08d237a2db5fa 30-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> self-referecing operator '->' member function was causing
infinit recursion. This patch fixes it. [13.3.1.2]-p2



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83124 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4a4e345a8bf749b5462a127ecfb1f90d4a9d6ba7 30-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> self-referecing operator '->' member function was causing
infinit recursion. This patch fixes it. [13.3.1.2]-p2



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83124 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0afd9f4ac27a7cef40c7a879f4b3fac0c612a218 30-Sep-2009 John McCall <rjmccall@apple.com> Desugaring optimizations. Add single-step desugaring methods to all
concrete types. Use unqualified desugaring for getAs<> and sundry.
Fix a few users to either not desugar or use qualified desugar, as seemed
appropriate. Removed Type's qualified desugar method, as it was easy
to accidentally use instead of QualType's.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
nalysis/PathSensitive/MemRegion.h
bf1cc05907ceb2081e8158b26f3d3f48b31caad3 30-Sep-2009 John McCall <rjmccall@apple.com> Desugaring optimizations. Add single-step desugaring methods to all
concrete types. Use unqualified desugaring for getAs<> and sundry.
Fix a few users to either not desugar or use qualified desugar, as seemed
appropriate. Removed Type's qualified desugar method, as it was easy
to accidentally use instead of QualType's.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
nalysis/PathSensitive/MemRegion.h
7c10e9e6304a7ab7175c9bdadf5c75b39db1b856 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Pull TypeLocVisitor into its own header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocVisitor.h
0c411806d540f7158bf12fee5c10f7de2647de76 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Pull TypeLocVisitor into its own header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocVisitor.h
f70c796848eaa08e8b2986d5be82e5a6b7eec3d7 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Fix Decl class hierarchy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
fbc85e565271c762debfb3dcfce3a18df3e2b396 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix Decl class hierarchy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
96eac694184d88ab34e621e7d44f3dc526927398 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ObjCInterfaceLoc which provides type source information for ObjC interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
eb66759e9a1d7c041354d132a14674b2d948059b 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ObjCInterfaceLoc which provides type source information for ObjC interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
f453db071fe7be38ede2607671fa196c58cffc88 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce TypedefLoc::getTypedefDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83096 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
9036d5e369aae65e3baccdeed74c796e3d367b3d 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce TypedefLoc::getTypedefDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83096 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
389b93309a90a7447a7c625cd4f3a490fafd24b8 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Modify ASTLocation and apart from being a Decl or Stmt, allow it to also be:

-A NamedDecl reference
-A TypeLoc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83095 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
f4526e3fd48248af78b3d59ec36a37bc055b326f 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modify ASTLocation and apart from being a Decl or Stmt, allow it to also be:

-A NamedDecl reference
-A TypeLoc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83095 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
225d6ca735de81dfb9bdc95645e30c6ba9514f43 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ObjCProtocolListLoc for keeping source location information for protocol references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
f352bddf015e537350416c296dd2963524f554f9 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ObjCProtocolListLoc for keeping source location information for protocol references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
ST/TypeLocNodes.def
3921aa9c84f6876fdf2b7feb596ccb94fb83989e 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ObjCProtocolListType type subclass.

This is used only for keeping detailed type source information for protocol references,
it should not participate in the semantics of the type system.

Its protocol list is not canonicalized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
24fab41057e4b67ed69a6b4027d5ae0f2f6934dc 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ObjCProtocolListType type subclass.

This is used only for keeping detailed type source information for protocol references,
it should not participate in the semantics of the type system.

Its protocol list is not canonicalized.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
a42559185fa17298b63dada8e84046ce5b7d175a 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move DeclSpec::setProtocolQualifiers() out of line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83092 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e3a535bb6b39ff721aa3a7177dc427974ca0ff42 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move DeclSpec::setProtocolQualifiers() out of line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83092 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
81a8f5c228d256bc51ff13c7a588c0636b81d3dc 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Keep protocol source locations when parsing protocol references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83091 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
71b0addffbdeed29cc062c962e236c34107755d6 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep protocol source locations when parsing protocol references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83091 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
6cbe8f397e8fd4aa01310bcefdcbe36639eea7e0 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce Type::getTypeClassName() that returns the string associated with the TypeClass enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
cd01f17358dc8ef19338c0e2321138dd0a6160d9 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Type::getTypeClassName() that returns the string associated with the TypeClass enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7c9745c42bd7714a8f52bc5039bc65809da9e30c 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce TypeLoc::getSourceRange().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
68006af18fb880cd8547ce797152111b810aa0ba 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce TypeLoc::getSourceRange().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
0a1f4eb1b3533b9fc898feb44cb6c09da5d97ff8 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Introduce TypeLoc::getOpaqueData()
-Make TypeLoc's constructor public.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
b735471f3848065120d7210e557b5f0d37ed4c43 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Introduce TypeLoc::getOpaqueData()
-Make TypeLoc's constructor public.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e5477d6e6dd834cb3944a623723a6e6443fad849 29-Sep-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add more const-goodness to ASTLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83087 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
1ebd7405be6dbea497d5ec72ab15e65debb0d72e 29-Sep-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add more const-goodness to ASTLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83087 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
b532d84f56b8cce3c92b8a0e4fe1d929c1d067cf 29-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Handle C++ delete expressions when the overloaded delete operator is a
"usual deallocation function" with two arguments. CodeGen will have to
handle this case specifically, since the value for the second argument
(the size of the allocated object) may have to be computed at run
time.

Fixes the Sema part of PR4782.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9091656e423f2354e53b2b3baa95b3eb5510badc 29-Sep-2009 Douglas Gregor <dgregor@apple.com> Handle C++ delete expressions when the overloaded delete operator is a
"usual deallocation function" with two arguments. CodeGen will have to
handle this case specifically, since the value for the second argument
(the size of the allocated object) may have to be computed at run
time.

Fixes the Sema part of PR4782.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cff17421f6486c8baf51cea99a95d486f2ee735f 29-Sep-2009 Mike Stump <mrs@apple.com> Fix http://llvm.org/PR5090.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/Redeclarable.h
740256bafbba6c5b5cb95a5c5bd7db161f3b2833 29-Sep-2009 Mike Stump <mrs@apple.com> Fix http://llvm.org/PR5090.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/Redeclarable.h
986d177fbc817b81035ef75f152ce9070d9f63d7 28-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Add all of the C99 complex builtins prefixed with __builtin_

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d3a23b238a2b2c0f11e6ac4951c7410a8c5717bf 28-Sep-2009 Douglas Gregor <dgregor@apple.com> Add all of the C99 complex builtins prefixed with __builtin_

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83020 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
1cbff35ede6b8a46fc4dda8e200a8e8748bb71de 28-Sep-2009 Rafael Espindola <rafael.espindola@gmail.com> Add -Wbuiltin-macro-redefined/-Wno-builtin-macro-redefined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
4eda2143f1543faa0399e69bad95756f08fbf0ff 28-Sep-2009 Rafael Espindola <rafael.espindola@gmail.com> Add -Wbuiltin-macro-redefined/-Wno-builtin-macro-redefined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
9a56fc75142846a3130910c5eb0806ca920fc123 28-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Provide a custom diagnostic when code tries to use an unknown builtin

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9a8c9a2eacd80437f18edb339a37516ab7e773cd 28-Sep-2009 Douglas Gregor <dgregor@apple.com> Provide a custom diagnostic when code tries to use an unknown builtin

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
46c99a20531dcfa2a194ae9d760372589972f952 28-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Add __builtin_vsnprintf. Thanks to Anders Johnsen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82998 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
1bffabaa357563607196b59d009bc3a12f19c032 28-Sep-2009 Douglas Gregor <dgregor@apple.com> Add __builtin_vsnprintf. Thanks to Anders Johnsen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82998 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
9da9394cff9bfc5ce9773bbaaf669e1551151b23 27-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix:

<rdar://problem/6914474> checker doesn't realize that variable might
have been assigned if a pointer to that variable was passed to another
function via a structure

The problem here was the RegionStoreManager::InvalidateRegion didn't
invalidate the bindings of invalidated regions. This required a
rewrite of this method using a worklist.

As part of this fix, changed ValueManager::getConjuredSymbolVal() to
require a 'void*' SymbolTag argument. This tag is used to
differentiate two different symbols created at the same location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82920 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
8780679b02bea5ab6360f3f8ebf3b221aaeda93f 27-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix:

<rdar://problem/6914474> checker doesn't realize that variable might
have been assigned if a pointer to that variable was passed to another
function via a structure

The problem here was the RegionStoreManager::InvalidateRegion didn't
invalidate the bindings of invalidated regions. This required a
rewrite of this method using a worklist.

As part of this fix, changed ValueManager::getConjuredSymbolVal() to
require a 'void*' SymbolTag argument. This tag is used to
differentiate two different symbols created at the same location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82920 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
76ee308b7fc21f689473a9138a5562d6ee8c89f1 26-Sep-2009 Anders Carlsson <andersca@mac.com> Make Decl::dump const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f88df8652e0726fe9eee5d78f92e3c5b34d0a537 26-Sep-2009 Anders Carlsson <andersca@mac.com> Make Decl::dump const.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6eb2a8a4cd21ea03ef4bbdfe71dda5d2eaf3d886 26-Sep-2009 Chris Lattner <sabre@nondot.org> builtin_trap should be noreturn, this fixes PR5062, patch by
Roman Divacky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82876 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
50dd255e5ad05f0d44bb92f358ff3f541a3d7a4b 26-Sep-2009 Chris Lattner <sabre@nondot.org> builtin_trap should be noreturn, this fixes PR5062, patch by
Roman Divacky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82876 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
6d716e4336f0cb7ff537bda8d25ee33c22aa4d5f 26-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Rework the Parse-Sema interaction for friends to better support friend
class templates. We now treat friend class templates much more like
normal class templates, except that they still get special name lookup
rules. Fixes PR5057 and eliminates a bunch of spurious diagnostics in
<iostream>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82848 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
d85bea2affdd59d83d1be7d24b97f436484c3625 26-Sep-2009 Douglas Gregor <dgregor@apple.com> Rework the Parse-Sema interaction for friends to better support friend
class templates. We now treat friend class templates much more like
normal class templates, except that they still get special name lookup
rules. Fixes PR5057 and eliminates a bunch of spurious diagnostics in
<iostream>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82848 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
2a5d2c4ce951afc0e6cecfad4508778392ae9caf 26-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Use explicitly-specified template argument lists to help naming
explicit template specializations, when available.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
0b60d9e0097e2d6a1a5e62396967e207c4a772f2 26-Sep-2009 Douglas Gregor <dgregor@apple.com> Use explicitly-specified template argument lists to help naming
explicit template specializations, when available.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
d9e25cd62162910982a8f4335438ef493b6d9696 25-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Declarators can now properly represent template-ids, e.g., for

template void f<int>(int);
~~~~~~
Previously, we silently dropped the template arguments. With this
change, we now use the template arguments (when available) as the
explicitly-specified template arguments used to aid template argument
deduction for explicit template instantiations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82806 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
db422dffb720ff41d0b60e228f45c685600ffa9e 25-Sep-2009 Douglas Gregor <dgregor@apple.com> Declarators can now properly represent template-ids, e.g., for

template void f<int>(int);
~~~~~~
Previously, we silently dropped the template arguments. With this
change, we now use the template arguments (when available) as the
explicitly-specified template arguments used to aid template argument
deduction for explicit template instantiations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82806 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
06c13d6e31ba05d4a0bb31274aecce4544571673 25-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> WIP implementation of explicit instantiation of function templates,
member functions of class template specializations, and static data
members. The mechanics are (mostly) present, but the semantic analysis
is very weak.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
arse/Action.h
d5a423b279e787e9fdd8309fe52cb515388c54ea 25-Sep-2009 Douglas Gregor <dgregor@apple.com> WIP implementation of explicit instantiation of function templates,
member functions of class template specializations, and static data
members. The mechanics are (mostly) present, but the semantic analysis
is very weak.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
arse/Action.h
eadb1e8ff5a7d778576df4c4d7ce0eadc3fd867e 25-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Fix checking for a null pointer constant when the expression itself is
value-dependent. Audit (and fixed) all calls to
Expr::isNullPointerConstant() to provide the correct behavior with
value-dependent expressions. Fixes PR5041 and a crash in libstdc++
<locale>.

In the same vein, properly compute value- and type-dependence for
ChooseExpr. Fixes PR4996.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ce94049b69f75b44c18584fe79cd238978b6b0d5 25-Sep-2009 Douglas Gregor <dgregor@apple.com> Fix checking for a null pointer constant when the expression itself is
value-dependent. Audit (and fixed) all calls to
Expr::isNullPointerConstant() to provide the correct behavior with
value-dependent expressions. Fixes PR5041 and a crash in libstdc++
<locale>.

In the same vein, properly compute value- and type-dependence for
ChooseExpr. Fixes PR4996.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ad571b45cadf91b0ce32dc47a0b591bc4d31130a 25-Sep-2009 Anders Carlsson <andersca@mac.com> Handle array fields that contain empty structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fbbce49c116aa8c8c7c0707cb6048b55f70461a9 25-Sep-2009 Anders Carlsson <andersca@mac.com> Handle array fields that contain empty structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
220b672dca732949a43bf8d40237a605f19d60ea 25-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix <rdar://problem/7249327> by allowing silent conversions between signed and unsigned integer values for symbolic values. This is an intermediate solution (i.e. hack) until we support extension/truncation of symbolic integers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82737 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
80417471b01ab2726cd04773b2ab700ce564073c 25-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix <rdar://problem/7249327> by allowing silent conversions between signed and unsigned integer values for symbolic values. This is an intermediate solution (i.e. hack) until we support extension/truncation of symbolic integers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82737 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
25fe73ffe15ec725db0642d95138f305dfab4148 25-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> When entering the scope of a declarator, make sure that the scope is
complete (or, possibly causing template instantiation).

Test this via some explicit specializations of member functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82732 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
7dfd0fb08300b60a9657748bda7d8b3ceb07babe 25-Sep-2009 Douglas Gregor <dgregor@apple.com> When entering the scope of a declarator, make sure that the scope is
complete (or, possibly causing template instantiation).

Test this via some explicit specializations of member functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82732 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
451b7b9a60208869cf5d6d958134cb104343949f 25-Sep-2009 John McCall <rjmccall@apple.com> Make it really, really easy to change the alignment of Type (and ExtQuals).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6b304a0254a13f42390b865ff5ba668a49cc58ae 25-Sep-2009 John McCall <rjmccall@apple.com> Make it really, really easy to change the alignment of Type (and ExtQuals).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
04f30d3ffeaf87f6db1cc6664901b73569f9753f 25-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> WIP implementation of explicit function template specialization. This
first implementation recognizes when a function declaration is an
explicit function template specialization (based on the presence of a
template<> header), performs template argument deduction + ambiguity
resolution to determine which template is being specialized, and hooks

There are many caveats here:
- We completely and totally drop any explicitly-specified template
arguments on the floor
- We don't diagnose any of the extra semantic things that we should
diagnose.
- I haven't looked to see that we're getting the right linkage for
explicit specializations

On a happy note, this silences a bunch of errors that show up in
libstdc++'s <iostream>, although Clang still can't get through the
entire header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82728 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
b9aa6b214c8fbc3e081dde575eef1f0913d48bdc 25-Sep-2009 Douglas Gregor <dgregor@apple.com> WIP implementation of explicit function template specialization. This
first implementation recognizes when a function declaration is an
explicit function template specialization (based on the presence of a
template<> header), performs template argument deduction + ambiguity
resolution to determine which template is being specialized, and hooks

There are many caveats here:
- We completely and totally drop any explicitly-specified template
arguments on the floor
- We don't diagnose any of the extra semantic things that we should
diagnose.
- I haven't looked to see that we're getting the right linkage for
explicit specializations

On a happy note, this silences a bunch of errors that show up in
libstdc++'s <iostream>, although Clang still can't get through the
entire header.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82728 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
3ddc81456e4ee7e1017f17860053f3eec505a50e 24-Sep-2009 John McCall <rjmccall@apple.com> Refactor the representation of qualifiers to bring ExtQualType out of the
Type hierarchy. Demote 'volatile' to extended-qualifier status. Audit our
use of qualifiers and fix a few places that weren't dealing with qualifiers
quite right; many more remain.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
ST/TypeNodes.def
rontend/DocumentXML.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/TypeXML.def
arse/DeclSpec.h
0953e767ff7817f97b3ab20896b229891eeff45b 24-Sep-2009 John McCall <rjmccall@apple.com> Refactor the representation of qualifiers to bring ExtQualType out of the
Type hierarchy. Demote 'volatile' to extended-qualifier status. Audit our
use of qualifiers and fix a few places that weren't dealing with qualifiers
quite right; many more remain.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/Type.h
ST/TypeNodes.def
rontend/DocumentXML.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/TypeXML.def
arse/DeclSpec.h
51287e77727c6ad39e7654ff77949700389c46bf 24-Sep-2009 Anders Carlsson <andersca@mac.com> Add a -dump-record-layouts argument to clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82703 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
78762ebb9ad71d681110d4bada4b0575eaadfebe 24-Sep-2009 Anders Carlsson <andersca@mac.com> Add a -dump-record-layouts argument to clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82703 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
54995045eee24b2e28d19e596d3f425151dd3c11 24-Sep-2009 Ted Kremenek <kremenek@apple.com> When building CFGs, no longer reverse the statements in the CFGBlock. Instead
have the iterators and operator[] handle the traversal of statements, as they
are stored in reverse order. Tests show this has no real performance impact, but
it does simply the CFG construction logic and will make it slightly easier to
change the allocation strategy for CFGBlocks (as we have fewer copies).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82702 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
6c2497248bc4f7fd8e5fb0a206d20abbf0e16645 24-Sep-2009 Ted Kremenek <kremenek@apple.com> When building CFGs, no longer reverse the statements in the CFGBlock. Instead
have the iterators and operator[] handle the traversal of statements, as they
are stored in reverse order. Tests show this has no real performance impact, but
it does simply the CFG construction logic and will make it slightly easier to
change the allocation strategy for CFGBlocks (as we have fewer copies).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82702 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
e0dd8ec0b57438c26f2565c5fabb9d62d27a6a6a 24-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Make C++ temporary-related expressions provide proper source-range information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
96be6917e1c4ba1f4435a14c9e7c6c139571d086 24-Sep-2009 Douglas Gregor <dgregor@apple.com> Make C++ temporary-related expressions provide proper source-range information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ad10374fde0659fd4388aa51973f2869de5b9ff2 23-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> This patch addresses a few issues related to 8.5.3 [dcl.init.ref]
It uses a recent API to find inherited conversion functions to do
the initializer to reference lvalue conversion (and removes a FIXME).
It issues the ambiguity diagnostics when multiple conversions are found.
WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51bebc83e74001ed0412d82aadae9eb247fee2d4 23-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> This patch addresses a few issues related to 8.5.3 [dcl.init.ref]
It uses a recent API to find inherited conversion functions to do
the initializer to reference lvalue conversion (and removes a FIXME).
It issues the ambiguity diagnostics when multiple conversions are found.
WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
aa339184940ceb3aa0cac0b5cb45262796aa3341 23-Sep-2009 Chris Lattner <sabre@nondot.org> implement support for __builtin_eh_return_data_regno on x86-32 and x86-64.
This implements PR5034 and rdar://6836445.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/TargetInfo.h
21fb98ee003e992b0c4e204d98a19e0ef544cae3 23-Sep-2009 Chris Lattner <sabre@nondot.org> implement support for __builtin_eh_return_data_regno on x86-32 and x86-64.
This implements PR5034 and rdar://6836445.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/TargetInfo.h
bbcd5ea763a8ad80171a937f46f9a6e6f4bbba0d 23-Sep-2009 Chris Lattner <sabre@nondot.org> return a bool value as a bool


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6a3bc6df36848188e9d0c1d978170c2b0918c6a3 23-Sep-2009 Chris Lattner <sabre@nondot.org> return a bool value as a bool


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1575c954eec7015c93aff49b57b52cf9f9d732f3 23-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Produce detailed diagnostics when overload
resolution failed to select a candidate due to
ambiguity in type conversion function selection.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b1663d050744ab3a4987df2d3a394f3ae0468435 23-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Produce detailed diagnostics when overload
resolution failed to select a candidate due to
ambiguity in type conversion function selection.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cc47e57e3421542eb343394bfc45ec568716a26c 23-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Print the results of code-completion for overloading by displaying the
signature of the function with the current parameter highlighted as a
placeholder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82593 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
86d802e03a267af79663990c39865c67e0645238 23-Sep-2009 Douglas Gregor <dgregor@apple.com> Print the results of code-completion for overloading by displaying the
signature of the function with the current parameter highlighted as a
placeholder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82593 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
bbc18cb67a198b42a0e20d6f4a57eae050438330 23-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Separate the code-completion results for call completion from the
results for other, textual completion. For call completion, we now
produce enough information to show the function call argument that we
are currently on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82592 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0594438e06f58ab3798416324780ab39ca9c8f54 23-Sep-2009 Douglas Gregor <dgregor@apple.com> Separate the code-completion results for call completion from the
results for other, textual completion. For call completion, we now
produce enough information to show the function call argument that we
are currently on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82592 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
3d2491e8c664a3ffe39921fa442a28d524dcc631 23-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> When code-completion finds a declaration only because it is usable as
the start of a nested-name-specifier, add the "::" after the
nested-name-specifier to the code-completion string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82587 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
3e7253f155e1e40542a6815689adef5abc65b17b 23-Sep-2009 Douglas Gregor <dgregor@apple.com> When code-completion finds a declaration only because it is usable as
the start of a nested-name-specifier, add the "::" after the
nested-name-specifier to the code-completion string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82587 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
29e94efa938bf9d27f9d0a18d9214a4c0ca92d9b 23-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Tweak the code-completion results ranking and formation, so that
members found in base classes have the same ranking as members found
in derived classes. However, we will introduce an informative note for
members found in base classes, showing (as a nested-name-specifier)
the qualification to name the base class, to make it clear which
members are from bases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82586 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
0563c2677cfc20c9450342ddc53aa96971671c71 23-Sep-2009 Douglas Gregor <dgregor@apple.com> Tweak the code-completion results ranking and formation, so that
members found in base classes have the same ranking as members found
in derived classes. However, we will introduce an informative note for
members found in base classes, showing (as a nested-name-specifier)
the qualification to name the base class, to make it clear which
members are from bases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82586 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
62a09c2ac45fc86c21edd303209096de84b28cf0 23-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push "clang-is-production" logic up to tools/driver, and make it hittable by
defining the CLANG_IS_PRODUCTION Makefile variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82583 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
f44c58563286bb448a72ed9c9af5f21718633230 23-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push "clang-is-production" logic up to tools/driver, and make it hittable by
defining the CLANG_IS_PRODUCTION Makefile variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82583 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
79361ebfc1dc90a1d63c30748450202045da2023 23-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Add getDeclaration()/getKind() accessors to CodeCompleteConsumer::Result

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82581 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
76e0fece5b0c829ee4c184e78863806d3ca04be8 23-Sep-2009 Douglas Gregor <dgregor@apple.com> Add getDeclaration()/getKind() accessors to CodeCompleteConsumer::Result

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82581 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
5ae137150d5623de6fe4c2c25138551cefb9bd49 22-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> In C++, a variadic function does not need an ellipsis prior to the comma. Parse it in both C and C++, but diagnose it as an error in C with a fix-it hint to add the comma.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82576 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ed5d651b0d4b99d0b68bb8d4633e49b98c95bd8f 22-Sep-2009 Douglas Gregor <dgregor@apple.com> In C++, a variadic function does not need an ellipsis prior to the comma. Parse it in both C and C++, but diagnose it as an error in C with a fix-it hint to add the comma.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82576 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
4d8a77769e8da39c0cd25d67941cb153fb4a9782 22-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Replace the -code-completion-dump option with

-code-completion-at=filename:line:column

which performs code completion at the specified location by truncating
the file at that position and enabling code completion. This approach
makes it possible to run multiple tests from a single test file, and
gives a more natural command-line interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/SourceManager.h
ex/Preprocessor.h
b657f115c3b4e262e72906a28cbcf3eaccd9460c 22-Sep-2009 Douglas Gregor <dgregor@apple.com> Replace the -code-completion-dump option with

-code-completion-at=filename:line:column

which performs code completion at the specified location by truncating
the file at that position and enabling code completion. This approach
makes it possible to run multiple tests from a single test file, and
gives a more natural command-line interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/SourceManager.h
ex/Preprocessor.h
a1234addb02a8789b63c82db4c660874778a6a19 22-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue good ambiguity diagnostic when convesion fails.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82565 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
455acd9452f5b2a69d7ab8e53f733e46b500473a 22-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue good ambiguity diagnostic when convesion fails.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82565 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7bc38e309657a5b406c2a66addc6bd1806f2e8a9 22-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Implement code completion within a function call, triggered after the
opening parentheses and after each comma. We gather the set of visible
overloaded functions, perform "partial" overloading based on the set
of arguments that we have thus far, and return the still-viable
results sorted by the likelihood that they will be the best candidate.

Most of the changes in this patch are a refactoring of the overloading
routines for a function call, since we needed to separate out the
notion of building an overload set (common to code-completion and
normal semantic analysis) and then what to do with that overload
set. As part of this change, I've pushed explicit template arguments
into a few more subroutines.

There is still much more work to do in this area. Function templates
won't be handled well (unless we happen to deduce all of the template
arguments before we hit the completion point), nor will overloaded
function-call operators or calls to member functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82549 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
9c6a0e92dbf89897eae6106b24bfd017f269bfd0 22-Sep-2009 Douglas Gregor <dgregor@apple.com> Implement code completion within a function call, triggered after the
opening parentheses and after each comma. We gather the set of visible
overloaded functions, perform "partial" overloading based on the set
of arguments that we have thus far, and return the still-viable
results sorted by the likelihood that they will be the best candidate.

Most of the changes in this patch are a refactoring of the overloading
routines for a function call, since we needed to separate out the
notion of building an overload set (common to code-completion and
normal semantic analysis) and then what to do with that overload
set. As part of this change, I've pushed explicit template arguments
into a few more subroutines.

There is still much more work to do in this area. Function templates
won't be handled well (unless we happen to deduce all of the template
arguments before we hit the completion point), nor will overloaded
function-call operators or calls to member functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82549 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
b4e0bb9b13133eefecf17005e93d55f401fa5e48 22-Sep-2009 Daniel Dunbar <daniel@zuster.org> Spell function pointer correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82543 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
e119e84ea5ea66eb2090aec05310c23e9d6f63fc 22-Sep-2009 Daniel Dunbar <daniel@zuster.org> Spell function pointer correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82543 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
0700c31e43f6d1805de0e8a34420b5eecec92690 22-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add StringLiteral::getString -> StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b648023da23e8b227cdda57a241db4c6f368726b 22-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add StringLiteral::getString -> StringRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82514 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bbb56d126f2f1c094d848a473d785c04eabe0803 22-Sep-2009 Anders Carlsson <andersca@mac.com> Store the set of indirect primary bases directly in the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3f066522342538509cf0aa4f381503b43fbdb68b 22-Sep-2009 Anders Carlsson <andersca@mac.com> Store the set of indirect primary bases directly in the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
17a07a1724c34d4fe8f86a945d27294b941d354f 22-Sep-2009 Anders Carlsson <andersca@mac.com> Record layout builder cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82502 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
e4feb834fb1a6b03291ed78fd32d13729b5a3c4a 22-Sep-2009 Anders Carlsson <andersca@mac.com> Record layout builder cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82502 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
cac0eaf6caa1035b6a971b32adeea895ba14715c 22-Sep-2009 John McCall <rjmccall@apple.com> Change all the Type::getAsFoo() methods to specializations of Type::getAs().
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely. Several more 'leaf'
optimizations were introduced.

The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/Type.h
ST/TypeNodes.def
rontend/DeclXML.def
183700f494ec9b6701b6efe82bcb25f4c79ba561 22-Sep-2009 John McCall <rjmccall@apple.com> Change all the Type::getAsFoo() methods to specializations of Type::getAs().
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely. Several more 'leaf'
optimizations were introduced.

The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/Type.h
ST/TypeNodes.def
rontend/DeclXML.def
f2833355dec1227932d8255542b28e2019b3a7c0 22-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Removed -fobjc-newgc-api option. clang now conforms to
gcc-style write-barrier api only.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
b924259cc53e4d38e493616715e7b3e95bdee1ef 22-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Removed -fobjc-newgc-api option. clang now conforms to
gcc-style write-barrier api only.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
eba53155ef9b46ebeadd7850b19aae8f4ce78509 21-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Another code-completion TODO

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82482 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
cfd2f625318ddce258e4c243b54492235ecf0e02 21-Sep-2009 Douglas Gregor <dgregor@apple.com> Another code-completion TODO

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82482 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7c559f33215453ee80f0c36857b6845858e1a9a0 21-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for ordinary names when we're starting a declaration, expression, or statement

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82481 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
791215b7a24666912c0b71175d2ca5ba082f666e 21-Sep-2009 Douglas Gregor <dgregor@apple.com> Code completion for ordinary names when we're starting a declaration, expression, or statement

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82481 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
07c960b2a56da11355727295ebba130e97044c08 21-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> -fobjc-newgc-api is now the default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82478 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
90b4fd48a6b42c2fc7b162a5e61e5f8bfa17d4ee 21-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> -fobjc-newgc-api is now the default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82478 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
a51a7ad10bb5d1c8df03c7da637188638921b5b3 21-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Enhance "case" code completion in C++ to suggest qualified names for
enumerators when either the user intentionally wrote a qualified name
(in which case we just use that nested-name-specifier to match
the user's code) or when this is the first "case" statement and we
need a qualified name to refer to an enumerator in a different scope.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82474 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
b9d0ef76347574a147b8456b018fe94dc1e2be26 21-Sep-2009 Douglas Gregor <dgregor@apple.com> Enhance "case" code completion in C++ to suggest qualified names for
enumerators when either the user intentionally wrote a qualified name
(in which case we just use that nested-name-specifier to match
the user's code) or when this is the first "case" statement and we
need a qualified name to refer to an enumerator in a different scope.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82474 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
fbf10cd4af8d30d49f616492be227b85d5363c7e 21-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Code completion for "case" statements within a switch on an expression
of enumeration type, providing the various unused enumerators as options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82467 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3e1005f085006dfb3545f0c54ac5e22483137c7d 21-Sep-2009 Douglas Gregor <dgregor@apple.com> Code completion for "case" statements within a switch on an expression
of enumeration type, providing the various unused enumerators as options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82467 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
78bfefe6d1c9a17d51581167150187a9b7905082 21-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor and simplify the CodeCompleteConsumer, so that all of the
real work is performed within Sema. Addresses Chris's comments, but
still retains the heavyweight list-of-multimaps data structure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82459 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
86d9a52c24d390631a888d4ff812e1b15445e0a0 21-Sep-2009 Douglas Gregor <dgregor@apple.com> Refactor and simplify the CodeCompleteConsumer, so that all of the
real work is performed within Sema. Addresses Chris's comments, but
still retains the heavyweight list-of-multimaps data structure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82459 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
a740be9bd9a01fd70bd25db2481d16af868dc670 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add missing PCH support for -fstack-protector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
ab8e281b32a3d3b9b18257d26844362bf806ecdc 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add missing PCH support for -fstack-protector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
97304c0cb855e6ec9a1f5a68853327086a4ae4fe 21-Sep-2009 Chris Lattner <sabre@nondot.org> Implement __builtin_unreachable(), a GCC 4.5 extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
21190d54634d6e244e85d28ad915ce2fe86ecbff 21-Sep-2009 Chris Lattner <sabre@nondot.org> Implement __builtin_unreachable(), a GCC 4.5 extension.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82433 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
5d8871d4a40dbf5618062638e110f1d7bb03ca7b 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Change ASTUnit to take the Diagnostic as an argument, the client should have control of this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82430 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
31b87d8006d4863dd9b17e515ac720941efc38e3 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Change ASTUnit to take the Diagnostic as an argument, the client should have control of this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82430 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
2e7db60c94e121de287cc58a99ee4626a41ae2f7 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic to Indexer, and have it keep its own FileManager instead of taking an external reference (which was leaked in the case of the CIndex library).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82429 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Indexer.h
a39075952caea0af902f174ce26ad5ac787b3974 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic to Indexer, and have it keep its own FileManager instead of taking an external reference (which was leaked in the case of the CIndex library).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82429 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Indexer.h
0326de31eee2694e21ffa9f17866b6b6e722e0de 20-Sep-2009 Chris Lattner <sabre@nondot.org> switch command line 'parse' methods to use StringRef for efficiency, which
is also required for an llvm-side change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82344 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
59b2172751e78ef7c0895d9a5d1359b61ab63a33 20-Sep-2009 Chris Lattner <sabre@nondot.org> switch command line 'parse' methods to use StringRef for efficiency, which
is also required for an llvm-side change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82344 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
341acdb918360aeaa9e6f5a712cac92cfd51e3b3 19-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Simplify code with a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
c2ff3f85481fbfa79f56a444b5726d4ab394bf4d 19-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Simplify code with a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
e0cc499a04a09bbbe297433faacbf3d0c067f308 19-Sep-2009 Ted Kremenek <kremenek@apple.com> Reintroduce FoldingSet profiling for PathDiagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82299 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
db8338a35fa729c08bc2dfd87cdc43533506f548 19-Sep-2009 Ted Kremenek <kremenek@apple.com> Reintroduce FoldingSet profiling for PathDiagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82299 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
ac547d56ba6725811c9f09c241785bc230ce5345 19-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce code completion strings, which describe how to *use* the
results of code completion, e.g., by providing function call syntax
with placeholders for each of the parameters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82293 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
e6e0361984b077d205e9a45d64257d41d2c788c8 19-Sep-2009 Douglas Gregor <dgregor@apple.com> Introduce code completion strings, which describe how to *use* the
results of code completion, e.g., by providing function call syntax
with placeholders for each of the parameters.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82293 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
fc9c5997e8bd83d62fca2908628aae9222378710 18-Sep-2009 Chris Lattner <sabre@nondot.org> allow clearing this value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82271 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
0369297684c13d5495ab490d46ed9d14ef235ce3 18-Sep-2009 Chris Lattner <sabre@nondot.org> allow clearing this value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82271 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
270f5b6882bd9746bac5eefab4dec5b17744e35c 18-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> C++ code completion after the "operator" keyword. Provide overloaded
operators, type specifiers, type names, and nested-name-specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82264 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
ed8d322b4086b8b1e1f78b21389cabb23457dcb3 18-Sep-2009 Douglas Gregor <dgregor@apple.com> C++ code completion after the "operator" keyword. Provide overloaded
operators, type specifiers, type names, and nested-name-specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82264 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
7b7274e575c184d8c0841063f8bf6428f5522ade 18-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce four new code-completion hooks for C++:

- after "using", show anything that can be a nested-name-specifier.
- after "using namespace", show any visible namespaces or namespace aliases
- after "namespace", show any namespace definitions in the current scope
- after "namespace identifier = ", show any visible namespaces or
namespace aliases



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82251 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
49f40bd0c9c9de5e74727774fec429b47d36303a 18-Sep-2009 Douglas Gregor <dgregor@apple.com> Introduce four new code-completion hooks for C++:

- after "using", show anything that can be a nested-name-specifier.
- after "using namespace", show any visible namespaces or namespace aliases
- after "namespace", show any namespace definitions in the current scope
- after "namespace identifier = ", show any visible namespaces or
namespace aliases



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82251 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
23f40faeea7911e5f0fb1e37e8f357e29487f76e 18-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Don't perform name lookup into a given declaration context more than once during code completion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82234 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
5836b010d0a74c8b7be3f2616332cd70d3c87f83 18-Sep-2009 Douglas Gregor <dgregor@apple.com> Don't perform name lookup into a given declaration context more than once during code completion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82234 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
03546f72ab350b0181d20a9e95da6b451401cc00 18-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> For code completion in C++ member access expressions and tag names,
look into the current scope for anything that could start a
nested-names-specifier. These results are ranked worse than any of the
results actually found in the lexical scope.

Perform a little more pruning of the result set, eliminating
constructors, __va_list_tag, and any duplication of declarations in
the result set. For the latter, implemented
NamespaceDecl::getCanonicalDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/CodeCompleteConsumer.h
33224e61bfca370850abae89bbd415a4dabe07fa 18-Sep-2009 Douglas Gregor <dgregor@apple.com> For code completion in C++ member access expressions and tag names,
look into the current scope for anything that could start a
nested-names-specifier. These results are ranked worse than any of the
results actually found in the lexical scope.

Perform a little more pruning of the result set, eliminating
constructors, __va_list_tag, and any duplication of declarations in
the result set. For the latter, implemented
NamespaceDecl::getCanonicalDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ema/CodeCompleteConsumer.h
9437430d8dde6c1f4273bb2f7600c44abd5fd621 18-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> When gathering results for code completion, only include hidden
results when there is some way to refer to them in the language, such
as with a qualified name in C++.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82223 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
b1c28a1f7ef3bd3616df6ddcdb503f4b480a8df6 18-Sep-2009 Douglas Gregor <dgregor@apple.com> When gathering results for code completion, only include hidden
results when there is some way to refer to them in the language, such
as with a qualified name in C++.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82223 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
d143259608d01ca37a3172ce31e725b3167ef4f1 18-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Implement code completion for tags, e.g., code completion after "enum"
will provide the names of various enumerations currently
visible. Introduced filtering of code-completion results when we build
the result set, so that we can identify just the kinds of declarations
we want.

This implementation is incomplete for C++, since we don't consider
that the token after the tag keyword could start a
nested-name-specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82222 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
374929f7e88f6c7a96382b3eb4201b721c418372 18-Sep-2009 Douglas Gregor <dgregor@apple.com> Implement code completion for tags, e.g., code completion after "enum"
will provide the names of various enumerations currently
visible. Introduced filtering of code-completion results when we build
the result set, so that we can identify just the kinds of declarations
we want.

This implementation is incomplete for C++, since we don't consider
that the token after the tag keyword could start a
nested-name-specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82222 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ema/CodeCompleteConsumer.h
a50e796b429b487ff5d73f75fb02aede2825e75c 18-Sep-2009 Ted Kremenek <kremenek@apple.com> Revert most of r82198, which was causing a large number of crashes
when running the analyzer on real projects. We'll keep the change to
AnalysisManager.cpp in r82198 so that -fobjc-gc analyzes code
correctly in both GC and non-GC modes, although this may emit two
diagnostics for each bug in some cases (a better solution will come
later).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82201 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
7f473c546602de69b35f0c657619c2ffe8e4136a 18-Sep-2009 Ted Kremenek <kremenek@apple.com> Revert most of r82198, which was causing a large number of crashes
when running the analyzer on real projects. We'll keep the change to
AnalysisManager.cpp in r82198 so that -fobjc-gc analyzes code
correctly in both GC and non-GC modes, although this may emit two
diagnostics for each bug in some cases (a better solution will come
later).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82201 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
6902706ff2be3b90f376e735dacc0a955e4e3ccd 18-Sep-2009 Ted Kremenek <kremenek@apple.com> Introduce caching of diagnostics in BugReporter. This provides extra
pruning of diagnostics that may be emitted multiple times. This is
accomplished by adding FoldingSet profiling support to PathDiagnostic,
and then having BugReporter record what diagnostics have been issued.

This was motived to a serious bug introduced by moving the
'divide-by-zero' checking outside of GRExprEngine into a separate
'Checker' class. When analyzing code using the '-fobjc-gc' option, a
given function would be analyzed twice, but the second time various
"internal checks" would be disabled to avoid emitting multiple
diagnostics (e.g., "null dereference") for the same issue. The
problem is that such checks also effect path pruning and don't just
emit diagnostics. This resulted in an assertion failure involving a
real divide-by-zero in some analyzed code where we would get an
assertion failure in APInt because the 'DivZero' check was disabled
and didn't prune the logic that resulted in the divide-by-zero in the
analyzer.

The implemented solution is somewhat of a hack, and may not perform
extremely well. This will need to be cleaned up over time.

As a regression test, 'misc-ps.m' has been modified so that its tests
are run using -fobjc-gc to test this diagnostic pruning behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82198 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
6a19832d08f00ac78c0a69c4fbe38b04a55b75cc 18-Sep-2009 Ted Kremenek <kremenek@apple.com> Introduce caching of diagnostics in BugReporter. This provides extra
pruning of diagnostics that may be emitted multiple times. This is
accomplished by adding FoldingSet profiling support to PathDiagnostic,
and then having BugReporter record what diagnostics have been issued.

This was motived to a serious bug introduced by moving the
'divide-by-zero' checking outside of GRExprEngine into a separate
'Checker' class. When analyzing code using the '-fobjc-gc' option, a
given function would be analyzed twice, but the second time various
"internal checks" would be disabled to avoid emitting multiple
diagnostics (e.g., "null dereference") for the same issue. The
problem is that such checks also effect path pruning and don't just
emit diagnostics. This resulted in an assertion failure involving a
real divide-by-zero in some analyzed code where we would get an
assertion failure in APInt because the 'DivZero' check was disabled
and didn't prune the logic that resulted in the divide-by-zero in the
analyzer.

The implemented solution is somewhat of a hack, and may not perform
extremely well. This will need to be cleaned up over time.

As a regression test, 'misc-ps.m' has been modified so that its tests
are run using -fobjc-gc to test this diagnostic pruning behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82198 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
2515c3925fd57d7af37d10498579155fb88a9734 17-Sep-2009 Mike Stump <mrs@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82170 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
87667dcbc1301409c9c07a3f6281a2c496997649 17-Sep-2009 Mike Stump <mrs@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82170 91177308-0d34-0410-b5e6-96231b3b80d8
ema/CodeCompleteConsumer.h
70aa572f9b5ebb13221f2062f40459a58bc59497 17-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of a code-completion interface in Clang. In
essence, code completion is triggered by a magic "code completion"
token produced by the lexer [*], which the parser recognizes at
certain points in the grammar. The parser then calls into the Action
object with the appropriate CodeCompletionXXX action.

Sema implements the CodeCompletionXXX callbacks by performing minimal
translation, then forwarding them to a CodeCompletionConsumer
subclass, which uses the results of semantic analysis to provide
code-completion results. At present, only a single, "printing" code
completion consumer is available, for regression testing and
debugging. However, the design is meant to permit other
code-completion consumers.

This initial commit contains two code-completion actions: one for
member access, e.g., "x." or "p->", and one for
nested-name-specifiers, e.g., "std::". More code-completion actions
will follow, along with improved gathering of code-completion results
for the various contexts.

[*] In the current -code-completion-dump testing/debugging mode, the
file is truncated at the completion point and EOF is translated into
"code completion".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82166 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/TokenKinds.def
ex/Lexer.h
ex/Preprocessor.h
arse/Action.h
ema/CodeCompleteConsumer.h
ema/ParseAST.h
81b747b7fcc91c2fba9a3183d8fac80adbfc1d3e 17-Sep-2009 Douglas Gregor <dgregor@apple.com> Initial implementation of a code-completion interface in Clang. In
essence, code completion is triggered by a magic "code completion"
token produced by the lexer [*], which the parser recognizes at
certain points in the grammar. The parser then calls into the Action
object with the appropriate CodeCompletionXXX action.

Sema implements the CodeCompletionXXX callbacks by performing minimal
translation, then forwarding them to a CodeCompletionConsumer
subclass, which uses the results of semantic analysis to provide
code-completion results. At present, only a single, "printing" code
completion consumer is available, for regression testing and
debugging. However, the design is meant to permit other
code-completion consumers.

This initial commit contains two code-completion actions: one for
member access, e.g., "x." or "p->", and one for
nested-name-specifiers, e.g., "std::". More code-completion actions
will follow, along with improved gathering of code-completion results
for the various contexts.

[*] In the current -code-completion-dump testing/debugging mode, the
file is truncated at the completion point and EOF is translated into
"code completion".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82166 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/TokenKinds.def
ex/Lexer.h
ex/Preprocessor.h
arse/Action.h
ema/CodeCompleteConsumer.h
ema/ParseAST.h
f26c8cfeee1f5294b190615ee0d4137dbd4ebfe1 17-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add a bunch of math builtins, #include <cmath> passes now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82126 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
aa14a1b949fafc1263d9d28ee2e3496aabb831ef 17-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add a bunch of math builtins, #include <cmath> passes now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82126 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
dd5e046ff2d1eeeec5642d2a5f2cd8ba3a1298ee 17-Sep-2009 Daniel Dunbar <daniel@zuster.org> Improve driver error message when only running the preprocessor and an input is
already preprocessed.

--
ddunbar@giles:tmp$ touch t.i
ddunbar@giles:tmp$ gcc -E t.i
ddunbar@giles:tmp$ clang -E t.i
clang: warning: t.i: previously preprocessed input unused when '-E' is present
ddunbar@giles:tmp$
--

<rdar://problem/6813375> [driver] driver prints confusing message when running -E on preprocessed file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82120 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
634b24563be901f8adc37c07ffba3eeac1f1d4cc 17-Sep-2009 Daniel Dunbar <daniel@zuster.org> Improve driver error message when only running the preprocessor and an input is
already preprocessed.

--
ddunbar@giles:tmp$ touch t.i
ddunbar@giles:tmp$ gcc -E t.i
ddunbar@giles:tmp$ clang -E t.i
clang: warning: t.i: previously preprocessed input unused when '-E' is present
ddunbar@giles:tmp$
--

<rdar://problem/6813375> [driver] driver prints confusing message when running -E on preprocessed file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82120 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
3112bf37eb8d1149983a9d08d77551dda16a6bc5 17-Sep-2009 Daniel Dunbar <daniel@zuster.org> Initial support for code generation from .ast files.
- Doesn't actually work yet because only module level asm's get correctly marked as externally visible in the PCH.

- Other things like 'clang-cc foo.ast -ast-dump' now work, as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82107 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
aca2ebdf416ade724e71a81aa150977ac5baa9b0 17-Sep-2009 Daniel Dunbar <daniel@zuster.org> Initial support for code generation from .ast files.
- Doesn't actually work yet because only module level asm's get correctly marked as externally visible in the PCH.

- Other things like 'clang-cc foo.ast -ast-dump' now work, as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82107 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
d3ad986df2a0accecb98f83881ce20c3874e9d76 17-Sep-2009 John McCall <rjmccall@apple.com> Improved representation and support for friend class templates. Angst about same.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
arse/Action.h
dd4a3b0065b9a7e7b00073df415a798886c090f3 17-Sep-2009 John McCall <rjmccall@apple.com> Improved representation and support for friend class templates. Angst about same.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82088 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
arse/Action.h
3c861932313947f863a233ec3273f6b237c29ead 16-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Starting patch to generate more specific API for objc's
GC. Currently, new API will be generated under
clang-cc's -fobjc-newgc-api flag which will eventually
become the default. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
b123ea395ee607de85161f84c6e78595946304a5 16-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Starting patch to generate more specific API for objc's
GC. Currently, new API will be generated under
clang-cc's -fobjc-newgc-api flag which will eventually
become the default. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
6115803d4017efcda82aef639a3254be4d3698f3 16-Sep-2009 Anders Carlsson <andersca@mac.com> Improve handling of vector casts in C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82072 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0de51bc6122f6cee0e8081d65dfcc7d500da1c6f 16-Sep-2009 Anders Carlsson <andersca@mac.com> Improve handling of vector casts in C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82072 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fed00f32a343674a6edff91f9de51a07554c1efe 16-Sep-2009 Ted Kremenek <kremenek@apple.com> Remove ImplicitBadDivides/ExplicitBadDivides node sets. This checking is now down by a 'Checker' and not build into GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82017 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
76823024e0b68068915f7631acc88f44e1315133 16-Sep-2009 Ted Kremenek <kremenek@apple.com> Remove ImplicitBadDivides/ExplicitBadDivides node sets. This checking is now down by a 'Checker' and not build into GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82017 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b6b91043dfa57420fec7b8e2af10becda81ccd85 16-Sep-2009 Mike Stump <mrs@apple.com> Chris doesn't want the FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b95519a3835a1fb16c6106c4570066e7693187a5 16-Sep-2009 Mike Stump <mrs@apple.com> Chris doesn't want the FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81988 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f7b39b9826d01e0fad5131bce58d86aa264ed79b 16-Sep-2009 Mike Stump <mrs@apple.com> Add a FIXME, so the next person don't trip as hard on the landmines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
f36fa37c4e51167e92b87af599702c5ea51e8747 16-Sep-2009 Mike Stump <mrs@apple.com> Add a FIXME, so the next person don't trip as hard on the landmines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
5c000ca60eb1d0a28fc4e69ec061e68103f2710d 16-Sep-2009 Mike Stump <mrs@apple.com> Some people don't want to fix their broken code just yet, so turn off
hard error for falling off a noreturn function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81971 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
29813c3509a0229947e35897a9a145c4fb3bc147 16-Sep-2009 Mike Stump <mrs@apple.com> Some people don't want to fix their broken code just yet, so turn off
hard error for falling off a noreturn function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81971 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
faea0812d816d842a6ef25954e2894e1f7a8b186 16-Sep-2009 Mike Stump <mrs@apple.com> Back to 1.1 we go.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81944 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
1f2c32e61ca0825e05e7bf6af2f3cb59e21ed2b9 16-Sep-2009 Mike Stump <mrs@apple.com> Back to 1.1 we go.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81944 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
ae55579764060c7c12356d8c55461ac5b553c1a6 16-Sep-2009 Mike Stump <mrs@apple.com> Back out for now, as apparently there is some really broken code somewhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81941 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
a08feb7718cc4a07c7d44c23c9a1c93575b36359 16-Sep-2009 Mike Stump <mrs@apple.com> Back out for now, as apparently there is some really broken code somewhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81941 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
6bd18e7fff34cb0f01fa8c01571a73cfcfa5fb51 16-Sep-2009 Mike Stump <mrs@apple.com> Bump.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81929 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
13392aa6895bcdbbec4aa4abe48fb3d709f1e596 16-Sep-2009 Mike Stump <mrs@apple.com> Bump.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81929 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Version.h
38c42b40321aacf18da8a70b1d5d5131ab922a5c 15-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> When printing an overload candidate that is a function template specialization,
point at the template and print out its template arguments, e.g.,

ambiguous-ovl-print.cpp:5:8: note: candidate function template specialization
[with T = int]
void f(T*, long);




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1fdd89ba1d14ee11fda5b9e1c171db428b1acb23 15-Sep-2009 Douglas Gregor <dgregor@apple.com> When printing an overload candidate that is a function template specialization,
point at the template and print out its template arguments, e.g.,

ambiguous-ovl-print.cpp:5:8: note: candidate function template specialization
[with T = int]
void f(T*, long);




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3fa04998b1be7a53e60d121b40c3dd86a9346266 15-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue good diagnostics when initialization failes due to
ambiguity in type conversion function selection.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
34acd3e62c4ca3a2904f2515ff2a1a94c7d27b01 15-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue good diagnostics when initialization failes due to
ambiguity in type conversion function selection.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f3adbe0eac82acf2213ea2623d47b8cb7887cf4c 15-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Perform overload resolution when selecting a pointer conversion
function for delete of a class expression and issue
good diagnostic when result is ambiguous.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81870 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f652793d4d32cc71b5ee2167069cbd363baa75de 15-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Perform overload resolution when selecting a pointer conversion
function for delete of a class expression and issue
good diagnostic when result is ambiguous.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81870 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cebb824cf2fb8701a7e4a744de1ab064375e1c5e 15-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Implement partial ordering of class template partial specializations
(C++ [temp.class.order]).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
bf4ea56cdc376cef5a12abf6bf18dc34805c2226 15-Sep-2009 Douglas Gregor <dgregor@apple.com> Implement partial ordering of class template partial specializations
(C++ [temp.class.order]).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
75f48e16726933b75d77737f4af43620e21bfdcd 15-Sep-2009 Anders Carlsson <andersca@mac.com> Get rid of the CastInfo struct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81839 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
c0a2fd8f092722c8f78b566ac4506a21437040e9 15-Sep-2009 Anders Carlsson <andersca@mac.com> Get rid of the CastInfo struct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81839 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
e3ffcdc86649d032d1d928653a3e0807653d0931 15-Sep-2009 Anders Carlsson <andersca@mac.com> Handle reinterpret_cast between integral types and pointer types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
7f9e646b7ed47bc8e9a60031ad0c2b55031e2077 15-Sep-2009 Anders Carlsson <andersca@mac.com> Handle reinterpret_cast between integral types and pointer types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
2d9010f78bf1c83d5b97ca237cf5ea4375db2a08 15-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue a good diagnostics when attempt to select
a type convesion function results in ambiguity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81812 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
78cf9a26d27349a7b9ae83a0b7d5451571b9b41e 15-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue a good diagnostics when attempt to select
a type convesion function results in ambiguity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81812 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c93226665c934b286c70db0f2d729860e0d900a8 15-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/5905851> do not report a leak when post-dominated by a call
to a noreturn or panic function


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81803 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
06c9cb4d1a29e708f51bce9f7ee5acbe1c3761c3 15-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/5905851> do not report a leak when post-dominated by a call
to a noreturn or panic function


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81803 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
c927d7e282394200e6fc1cb82576ad6a17c64f53 14-Sep-2009 John McCall <rjmccall@apple.com> Skeletal support for friend class templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
05b23ea2119b4c411719bd6631e5d679ba5e7ef1 14-Sep-2009 John McCall <rjmccall@apple.com> Skeletal support for friend class templates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
276d7841778cce99f534266cb81a97a8edce5a16 14-Sep-2009 Anders Carlsson <andersca@mac.com> For consistency, use "bit-field" instead of "bitfield" in our diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c313e11e2c224fe1caa46bbb85f7b5e2be3c83ef 14-Sep-2009 Anders Carlsson <andersca@mac.com> For consistency, use "bit-field" instead of "bitfield" in our diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e3bc121ad330c2e4e178fbca54edda07d0004d88 14-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Implement partial ordering of function template specializations
(C++ [temp.func.order]).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81777 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a51491d936d8c50480f3c3ca6647be12a7ad51f 14-Sep-2009 Douglas Gregor <dgregor@apple.com> Implement partial ordering of function template specializations
(C++ [temp.func.order]).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81777 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f0290ae15164d38be7083a5b8a0276c07628b8d 14-Sep-2009 Sam Weinig <sam.weinig@gmail.com> Remove duplicate definition of char-subscripts DiagGroup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81775 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f6412c6479e2027a35d74bd37869b50adc49b620 14-Sep-2009 Sam Weinig <sam.weinig@gmail.com> Remove duplicate definition of char-subscripts DiagGroup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81775 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
d4f0283ca56ac6229e552cba4be4c5eec0b66f03 14-Sep-2009 Sam Weinig <sam.weinig@gmail.com> Add support for -Wchar-subscripts. Fixes PR4801.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
76e2b710a92bceb9575a81db181109664946986e 14-Sep-2009 Sam Weinig <sam.weinig@gmail.com> Add support for -Wchar-subscripts. Fixes PR4801.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81747 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
0d83d5116ec471aa80c4aaa4aab3e5d91b9265f2 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::getABI(), and base ARM APCS vs AAPCS choice on that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81735 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
018ba5ab0671d9b6eefecaffc118c869bea151a1 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::getABI(), and base ARM APCS vs AAPCS choice on that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81735 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
88439e1b2ae2a57887dd0233d0f5a59b67173684 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Support -mabi= for clang/ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81734 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2030d8f46b4226fa99e59389e3ca856a79c27e9a 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Support -mabi= for clang/ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81734 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
45e5ad87f1c9b79dc92adf0dd7470342ca66cda5 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add -target-abi clang-cc option, currently unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81731 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/TargetInfo.h
73b79596bac6f6169e5979d0c7241924259d2a76 14-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add -target-abi clang-cc option, currently unused.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81731 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/TargetInfo.h
fa4770459f62d47f6889d145347b8bf02462b543 14-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a bug in getFriendObjectKind where we would clear out all mask bits except IDNS_TagFriend and IDNS_OrdinaryFriend but then check for IDNS_Tag and IDNS_Ordinary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
255d6415a692e8384971755f91541497d54b3193 14-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a bug in getFriendObjectKind where we would clear out all mask bits except IDNS_TagFriend and IDNS_OrdinaryFriend but then check for IDNS_Tag and IDNS_Ordinary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ee39e6176a9e5e34999a55a48a57abde2ee21eb8 13-Sep-2009 Anders Carlsson <andersca@mac.com> CXXMethodDecl::isVirtual needs to check the canonical declaration. Fixes PR4878.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8195bc932d27e21be46b9a1f8ce268ebd419246b 13-Sep-2009 Anders Carlsson <andersca@mac.com> CXXMethodDecl::isVirtual needs to check the canonical declaration. Fixes PR4878.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ed52be042b68b329a9ca40030e809547bc527d6c 13-Sep-2009 Eli Friedman <eli.friedman@gmail.com> Add utility to evaluate lvalues which are an offset relative to a stack
location. Patch by Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81672 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b2f295c8050fb8c141bf2cf38eed0a56e99d0092 13-Sep-2009 Eli Friedman <eli.friedman@gmail.com> Add utility to evaluate lvalues which are an offset relative to a stack
location. Patch by Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81672 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d7e072a022193d8fab49a31e5875025661e8c4fa 13-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Rework the way we determine whether an externally visible symbol is
generated for an inline function definition, taking into account C99
and GNU inline/extern inline semantics. This solution is simpler,
cleaner, and fixes PR4536.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1fc09a92d0bffda20e06fa882388c01e192e2069 13-Sep-2009 Douglas Gregor <dgregor@apple.com> Rework the way we determine whether an externally visible symbol is
generated for an inline function definition, taking into account C99
and GNU inline/extern inline semantics. This solution is simpler,
cleaner, and fixes PR4536.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
21ded519fdd8f9bf08d7f85e35920ba32d81626a 12-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Removed Context argument from couple of methods which don't
need them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
debc629300e4c6c774b7d2a1d3c665c2c719e803 12-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Removed Context argument from couple of methods which don't
need them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3b3f5749ef24073d20a9d235540ddd540bb38110 12-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> More work toward having an access method for visible
conversion functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6250921cc5bd3493a0d99fa2c32ec9716767a965 12-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> More work toward having an access method for visible
conversion functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1af472ef14ec61bd3f93cd9aa6c81550367a8831 12-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> SmallVectorize preprocessor's token cache. Testing shows there is almost never
more than one token in the cache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81612 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f4d5eb4866a27d497f0bb75b12c2ffd48ad4d9c0 12-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> SmallVectorize preprocessor's token cache. Testing shows there is almost never
more than one token in the cache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81612 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
a51c20938769d33ad75db6dfe7f7e9082999d8c7 12-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Remove unnecessary ASTContext parameter from FunctionDecl::isBuiltinID

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7814e6d6645d587891293d59ecf6576defcfac92 12-Sep-2009 Douglas Gregor <dgregor@apple.com> Remove unnecessary ASTContext parameter from FunctionDecl::isBuiltinID

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4c7050d630d296460793c5dddccd09b823e0ca27 12-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Remove unnecessary ASTContext parameters from isMain and isExternC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81589 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
48a83b5e7ae4051c7c11680ac00c1fa02d610a62 12-Sep-2009 Douglas Gregor <dgregor@apple.com> Remove unnecessary ASTContext parameters from isMain and isExternC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81589 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d3693926e6834c657d1b64b68f790f36daf5f8c2 12-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate FunctionDecl::getBodyIfAvailable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
af3280fadbdab6305581955c973e1229970958eb 12-Sep-2009 Douglas Gregor <dgregor@apple.com> Eliminate FunctionDecl::getBodyIfAvailable

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1c6fa28a7a2e715c1421f724755d90e38ac7e61d 12-Sep-2009 Ted Kremenek <kremenek@apple.com> Introduce "DefinedOrUnknownSVal" into the SVal class hierarchy, providing a way
to statically type various methods in SValuator/GRState as required either a
defined value or a defined-but-possibly-unknown value. This leads to various
logic cleanups in GRExprEngine, and lets the compiler enforce via type checking
our assumptions about what symbolic values are possibly undefined and what are
not.

Along the way, clean up some of the static analyzer diagnostics regarding the uses of uninitialized values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81579 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/ValueManager.h
5b9bd2137ebef350af803c634e3fdf5d74678100 12-Sep-2009 Ted Kremenek <kremenek@apple.com> Introduce "DefinedOrUnknownSVal" into the SVal class hierarchy, providing a way
to statically type various methods in SValuator/GRState as required either a
defined value or a defined-but-possibly-unknown value. This leads to various
logic cleanups in GRExprEngine, and lets the compiler enforce via type checking
our assumptions about what symbolic values are possibly undefined and what are
not.

Along the way, clean up some of the static analyzer diagnostics regarding the uses of uninitialized values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81579 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/ValueManager.h
b0abe0316f62bd3175cc7e34dc54ce1c27769867 11-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to build visible conversion function list lazily and make its
first use in calling the conversion function on delete statements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5346278f81930e7fd0545bbbb2fc217c6921b109 11-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to build visible conversion function list lazily and make its
first use in calling the conversion function on delete statements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e9bd85c32d6c8c66fa648b3a0f54783abb3b20fe 11-Sep-2009 John McCall <rjmccall@apple.com> Alter Action's friend interface to prepare for templated friend declarations and
to stop making promises we can't currently keep.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81571 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bbbcdd9cc06b6078939129330ecc9bda3310984d 11-Sep-2009 John McCall <rjmccall@apple.com> Alter Action's friend interface to prepare for templated friend declarations and
to stop making promises we can't currently keep.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81571 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6bd72d4b2c8aef8b667feb91c1144e68f712d6f4 11-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Tweak the semantics of FunctionDecl::isOutOfLine to consider an
instantiation of a member function template or member function of a
class template to be out-of-line if the definition of that function
template or member function was defined out-of-line. This ensures that
we get the correct linkage for explicit instantiations of out-of-line
definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
9f185076dc8b79c8240b20a8746da96beb3f147b 11-Sep-2009 Douglas Gregor <dgregor@apple.com> Tweak the semantics of FunctionDecl::isOutOfLine to consider an
instantiation of a member function template or member function of a
class template to be out-of-line if the definition of that function
template or member function was defined out-of-line. This ensures that
we get the correct linkage for explicit instantiations of out-of-line
definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
f40d6390380632f6cc7964074fe97744c765c256 11-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Cleanup and test C++ default arguments. Improvements include:

- Diagnose attempts to add default arguments to templates (or member
functions of templates) after the initial declaration (DR217).
- Improve diagnostics when a default argument is redefined. Now, the
note will always point at the place where the default argument was
previously defined, rather than pointing to the most recent
declaration of the function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
6cc1518b9f15ca846b8c35518eeae9557935678d 11-Sep-2009 Douglas Gregor <dgregor@apple.com> Cleanup and test C++ default arguments. Improvements include:

- Diagnose attempts to add default arguments to templates (or member
functions of templates) after the initial declaration (DR217).
- Improve diagnostics when a default argument is redefined. Now, the
note will always point at the place where the default argument was
previously defined, rather than pointing to the most recent
declaration of the function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
93c4d4d481fde4024e734e19551d2de0e8555ba0 11-Sep-2009 John McCall <rjmccall@apple.com> Track a class template specialization's point of instantiation separately
from its location. Initialize appropriately.

When implicitly creating a declaration of a class template specialization
after encountering the first reference to it, use the pattern class's
location instead of the location of the first reference.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9cc7807e1622c2f945b607bdd39dd283df5e7bb5 11-Sep-2009 John McCall <rjmccall@apple.com> Track a class template specialization's point of instantiation separately
from its location. Initialize appropriately.

When implicitly creating a declaration of a class template specialization
after encountering the first reference to it, use the pattern class's
location instead of the location of the first reference.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
541ebfb9469f442190f1d21f093a1279f6ec0a1a 11-Sep-2009 John McCall <rjmccall@apple.com> When stringizing a NamedDecl for a diagnostic, treat the template
specialization types differently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
136a6988960ac3aeb96f298da7a1a182db7217cd 11-Sep-2009 John McCall <rjmccall@apple.com> When stringizing a NamedDecl for a diagnostic, treat the template
specialization types differently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
c090f84847510c1cc210010e89ba7b51c453c6f2 11-Sep-2009 John McCall <rjmccall@apple.com> Support elaborated dependent types and diagnose tag mismatches.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81504 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c4e7019d5c9034a2d84ee4695f8e98dc025ac131 11-Sep-2009 John McCall <rjmccall@apple.com> Support elaborated dependent types and diagnose tag mismatches.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81504 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
59b2cf88fd200aa96f385a0c2834f3e9abd36f2c 11-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Start to add a new transfer function that inlines callee. To be continued.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81501 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
rontend/Analyses.def
66847a2826c97b8e09aec304a0a7b4fe1dc35969 11-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Start to add a new transfer function that inlines callee. To be continued.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81501 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
rontend/Analyses.def
73cf66ee8e3e654e21345bc1303b60f28d298eac 11-Sep-2009 Anders Carlsson <andersca@mac.com> Instantiate PredefinedExprs correctly. Patch by Sam Weinig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
773f3973cf5e2b6b8788e895967dcb3c1e6ffe79 11-Sep-2009 Anders Carlsson <andersca@mac.com> Instantiate PredefinedExprs correctly. Patch by Sam Weinig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3f361b5c731e14d7fa08efd76a93f2f912e66e73 11-Sep-2009 Daniel Dunbar <daniel@zuster.org> Swizzle the target triple based on -mthumb, and update clang-cc to recognize
thumb-foo-bar as an ARM target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81497 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
f4aa4f61de7d364364dc94bbf83ff71448a11327 11-Sep-2009 Daniel Dunbar <daniel@zuster.org> Swizzle the target triple based on -mthumb, and update clang-cc to recognize
thumb-foo-bar as an ARM target.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81497 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
dfdfcb0e3aa078285da702e458c88387a703afd0 11-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose VLAs as an error in C++.

Also, treat the GNU __null as an integral constant expression to match
GCC's behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
043cad21b78c6b02597cdc7b6ead32388e27ebc7 11-Sep-2009 Douglas Gregor <dgregor@apple.com> Diagnose VLAs as an error in C++.

Also, treat the GNU __null as an integral constant expression to match
GCC's behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
27d83340140f245595bf5542fe478466dbafd152 11-Sep-2009 Daniel Dunbar <daniel@zuster.org> Initial handling of -m{soft-float,hard-float,float-abi=} for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.def
cbd1933f83e2332b2d7add10459f80cc4e7eb7bf 11-Sep-2009 Daniel Dunbar <daniel@zuster.org> Initial handling of -m{soft-float,hard-float,float-abi=} for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.def
9c73aa02c1e3dc693ae66b223ab2e3105f50007c 10-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Non fragile ABI for GNU runtime. Patch bu David Chisnall.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
d9a1db3a4ded1c8f0daa43c0d6167576e2766453 10-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Non fragile ABI for GNU runtime. Patch bu David Chisnall.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
4ed32e95d2de203884ed4af3d254d252137f20ba 10-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> When performing unqualified name lookup into a DeclContext, also look into
all of the parent DeclContexts that aren't represented within the
Scope chain. This fixes some name-lookup problems in out-of-line
definitions of members of nested classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
e942bbe02b6fb332d1f13d38c6e1980b416cf89a 10-Sep-2009 Douglas Gregor <dgregor@apple.com> When performing unqualified name lookup into a DeclContext, also look into
all of the parent DeclContexts that aren't represented within the
Scope chain. This fixes some name-lookup problems in out-of-line
definitions of members of nested classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3f37ee9a48a7ab02a95bf21f0ec19004825419ea 10-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make AnalysisManager stateless. Now other analyzer components only depends on
local node information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81433 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
b317f8f5ca8737a5bbad97a3f7566a2dbd2ed61b 10-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make AnalysisManager stateless. Now other analyzer components only depends on
local node information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81433 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
05b416eb4bcf019f3affa0538ed5d11992e12a0f 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Implement Darwin/ARM behavior for defaulting to -fno-builtin-str{cat,cpy}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81425 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2ba91575905a54f712a7f64304e56002e4882499 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Implement Darwin/ARM behavior for defaulting to -fno-builtin-str{cat,cpy}.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81425 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
972576178833d9a0f4f18acc8aa6837ce065d050 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Recognize and ignore -Woverloaded-virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81419 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
659862902cdf115c6ae2bd064e2bf9fea2525b7e 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Recognize and ignore -Woverloaded-virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81419 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
55d931bb427b489a614efa3a4fc733b524258047 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix dependencies for DiagnosticGroups.td.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81418 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
70ba7e026011b9a94cb3fbe85bccbad74a976c5f 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix dependencies for DiagnosticGroups.td.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81418 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
343aad6b139537dc285f667a406ccdf63da7a8d4 10-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Improve handling of initialization by constructor, by ensuring that
such initializations properly convert constructor arguments and fill
in default arguments where necessary. This also makes the ownership
model more clear.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
39da0b8145eaec7da7004f9b3645c5c9f4f63b1d 10-Sep-2009 Douglas Gregor <dgregor@apple.com> Improve handling of initialization by constructor, by ensuring that
such initializations properly convert constructor arguments and fill
in default arguments where necessary. This also makes the ownership
model more clear.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
rontend/PCHBitCodes.h
7b3d2c8ede936b03a654a528aed3b9a93360ba2d 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Change Get{File,Program}Path to return an std::string (instead of a sys::Path).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81389 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
5ed34f4c58b6ad4e21038d713c1fae31a6146ff5 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> Change Get{File,Program}Path to return an std::string (instead of a sys::Path).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81389 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
d60f9d826e2cce7fb980b9494ccace4abb0d1ef6 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> StringRefize ArgList construction of ArgStrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81385 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
16484afe5ca790d2f9a16650638e54067c037d7d 10-Sep-2009 Daniel Dunbar <daniel@zuster.org> StringRefize ArgList construction of ArgStrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81385 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
0c6215978605dfde5ba2c4fdea8fb3c11ec67f81 09-Sep-2009 Anders Carlsson <andersca@mac.com> If a cast expression needs either a conversion function or a constructor to be called, generate implicit child expressions that call them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
0aebc81e02397a5987aaa8e8c7acbdb01a31d7c3 09-Sep-2009 Anders Carlsson <andersca@mac.com> If a cast expression needs either a conversion function or a constructor to be called, generate implicit child expressions that call them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
1301bf756f8243177a493a3f151571b864a94d5f 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push bound architecture name into TranslateArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81366 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
0dcb9a3705743ec972af37f48ead81a0939e3958 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push bound architecture name into TranslateArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81366 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
cc50b82fa5f3547471a0eab4f7b74ae870a30551 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push bound architecture name into Compilation::getArgsForToolChain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81365 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
4954018954bbc97363eef02d0c83bea19ce9b329 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Push bound architecture name into Compilation::getArgsForToolChain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81365 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
25cf760b54d3b88633827501013bc51a29b28aba 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/Attr.h
ST/CanonicalType.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclContextInternals.h
ST/DeclGroup.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/ExternalASTSource.h
ST/NestedNameSpecifier.h
ST/ParentMap.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/Stmt.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtObjC.h
ST/StmtVisitor.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeOrdering.h
ST/TypeVisitor.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisDiagnostic.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/LocalCheckers.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRStateTrait.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/GRWorkList.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/Optional.h
nalysis/Support/SaveAndRestore.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
asic/Builtins.h
asic/ConvertUTF.h
asic/Diagnostic.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/OnDiskHashTable.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/TargetInfo.h
asic/TokenKinds.h
odeGen/ModuleBuilder.h
river/Action.h
river/Arg.h
river/ArgList.h
river/Compilation.h
river/Driver.h
river/DriverDiagnostic.h
river/HostInfo.h
river/Job.h
river/Option.h
river/Options.h
river/Tool.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/CommandLineSourceLoc.h
rontend/CompileOptions.h
rontend/DocumentXML.h
rontend/FixItRewriter.h
rontend/FrontendDiagnostic.h
rontend/ManagerRegistry.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/PathDiagnosticClients.h
rontend/TextDiagnosticPrinter.h
rontend/Utils.h
ndex/ASTLocation.h
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/GlobalSelector.h
ndex/Handlers.h
ndex/Indexer.h
ndex/Program.h
ndex/STLExtras.h
ndex/SelectorMap.h
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/LexDiagnostic.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Pragma.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ex/Token.h
ex/TokenConcatenation.h
ex/TokenLexer.h
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseDiagnostic.h
arse/Parser.h
arse/Scope.h
ewrite/DeltaTree.h
ewrite/HTMLRewrite.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
ema/ExternalSemaSource.h
ema/ParseAST.h
ema/SemaConsumer.h
ema/SemaDiagnostic.h
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/ASTDiagnostic.h
ST/Attr.h
ST/CanonicalType.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclContextInternals.h
ST/DeclGroup.h
ST/DeclObjC.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/ExternalASTSource.h
ST/NestedNameSpecifier.h
ST/ParentMap.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Redeclarable.h
ST/Stmt.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtObjC.h
ST/StmtVisitor.h
ST/TemplateName.h
ST/Type.h
ST/TypeLoc.h
ST/TypeOrdering.h
ST/TypeVisitor.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/AnalysisDiagnostic.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/LocalCheckers.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRStateTrait.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/GRWorkList.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/Optional.h
nalysis/Support/SaveAndRestore.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
asic/Builtins.h
asic/ConvertUTF.h
asic/Diagnostic.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/OnDiskHashTable.h
asic/SourceLocation.h
asic/SourceManager.h
asic/SourceManagerInternals.h
asic/TargetInfo.h
asic/TokenKinds.h
odeGen/ModuleBuilder.h
river/Action.h
river/Arg.h
river/ArgList.h
river/Compilation.h
river/Driver.h
river/DriverDiagnostic.h
river/HostInfo.h
river/Job.h
river/Option.h
river/Options.h
river/Tool.h
rontend/ASTConsumers.h
rontend/ASTUnit.h
rontend/CommandLineSourceLoc.h
rontend/CompileOptions.h
rontend/DocumentXML.h
rontend/FixItRewriter.h
rontend/FrontendDiagnostic.h
rontend/ManagerRegistry.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
rontend/PathDiagnosticClients.h
rontend/TextDiagnosticPrinter.h
rontend/Utils.h
ndex/ASTLocation.h
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/GlobalSelector.h
ndex/Handlers.h
ndex/Indexer.h
ndex/Program.h
ndex/STLExtras.h
ndex/SelectorMap.h
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/LexDiagnostic.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Pragma.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ex/Token.h
ex/TokenConcatenation.h
ex/TokenLexer.h
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
arse/ParseDiagnostic.h
arse/Parser.h
arse/Scope.h
ewrite/DeltaTree.h
ewrite/HTMLRewrite.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
ema/ExternalSemaSource.h
ema/ParseAST.h
ema/SemaConsumer.h
ema/SemaDiagnostic.h
6dbc2003c38702cfdcdee292224d9c422a5601fe 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tab characters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81340 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
river/HostInfo.h
ex/PreprocessorLexer.h
arse/Ownership.h
79d39f92590cf2e91bf81486b02cd1156d13ca54 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tab characters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81340 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
river/HostInfo.h
ex/PreprocessorLexer.h
arse/Ownership.h
cc00fc02fb26921c2f1f99632ea1d96aa5d4d183 09-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Initial stab at implement dependent member references to member
templates, e.g.,

x.template get<T>

We can now parse these, represent them within an UnresolvedMemberExpr
expression, then instantiate that expression node in simple cases.

This allows us to stumble through parsing LLVM's Casting.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/TemplateName.h
3b6afbb99a1c44b4076f8e15fb7311405941b306 09-Sep-2009 Douglas Gregor <dgregor@apple.com> Initial stab at implement dependent member references to member
templates, e.g.,

x.template get<T>

We can now parse these, represent them within an UnresolvedMemberExpr
expression, then instantiate that expression node in simple cases.

This allows us to stumble through parsing LLVM's Casting.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/TemplateName.h
f985dabfc82c71996bdb97015fd7df817fe59182 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Validate arguments to -arch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
36df2904354ac150500ec16238a1ec3cce4ba83e 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Validate arguments to -arch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
31a70e9cf8a025ebe368b23f08ebfdc85fa9749a 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Rename HostInfo::getToolChain to HostInfo::CreateToolChain, and don't recreate
the default tool chain when binding the default architecture.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81279 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
d7502d0a662b5c299125aba04245aefce67cbc22 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Rename HostInfo::getToolChain to HostInfo::CreateToolChain, and don't recreate
the default tool chain when binding the default architecture.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81279 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
a28b9d49dc8fa8247da173a83cf9d2d5d28add04 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix ShouldUseClangCompiler to use llvm::Triple.
- -1 FIXME, and fixes 'clang -arch armv4t ...', for example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81276 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
a6046bec7fc835186dde134fb81aa1b7d45cd9f0 09-Sep-2009 Daniel Dunbar <daniel@zuster.org> Fix ShouldUseClangCompiler to use llvm::Triple.
- -1 FIXME, and fixes 'clang -arch armv4t ...', for example.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81276 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
6fb019f2873c3391d140d2ad99c60528568d4ad9 08-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure to access APValue's data via a char array (rather than
through an array of void*), so that we don't run afoul of the
strict-aliasing rules in C++ 3.10p15. Unfortunately, GCC 4.4 still
complains about this code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
983004686a1bfc816f7aeb47bac7e16049550278 08-Sep-2009 Douglas Gregor <dgregor@apple.com> Make sure to access APValue's data via a char array (rather than
through an array of void*), so that we don't run afoul of the
strict-aliasing rules in C++ 3.10p15. Unfortunately, GCC 4.4 still
complains about this code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
4bb774e2352b6c5f459b345a5e0f41bd244e70a7 08-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a regression in generating objc's GC API
in assiging to c pointer types with a GC'able
attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ac423ba85bb59cc7cc1d43081b20d7e8d40355ff 08-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a regression in generating objc's GC API
in assiging to c pointer types with a GC'able
attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2c087d5956b1921cdb4015a493453526aa06c487 08-Sep-2009 Anders Carlsson <andersca@mac.com> Vastly improve PredefinedExpr output, both in Sema and CodeGen. Patch by Sam Weinig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
3a082d81006e7a2e01a6e431a22e21c78490ff8f 08-Sep-2009 Anders Carlsson <andersca@mac.com> Vastly improve PredefinedExpr output, both in Sema and CodeGen. Patch by Sam Weinig!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
d321d4999177cb0267a54a2b1903411ba6996ceb 08-Sep-2009 John McCall <rjmccall@apple.com> Support templateids in friend declarations. Fixes bug 4859.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81233 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6b2becfc434b0bdced8560802c4d0e03148c61b8 08-Sep-2009 John McCall <rjmccall@apple.com> Support templateids in friend declarations. Fixes bug 4859.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81233 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e4f848ca6fadd15fd47fe10dee94766a8094188c 08-Sep-2009 Anders Carlsson <andersca@mac.com> Handle variadic constructors better. Share code between BuildCXXConstructExpr and BuildCXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d74d4149f759b8abec15fb8163a4206e8c7068c8 08-Sep-2009 Anders Carlsson <andersca@mac.com> Handle variadic constructors better. Share code between BuildCXXConstructExpr and BuildCXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d42b0d9c2c541eb8fc8bc75a47408cd4be0efabd 08-Sep-2009 Anders Carlsson <andersca@mac.com> Clean up the CXXConstructExpr constructor, add Arg getters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
bcb11d01c034f967503bd98f28bdf458c1ab8001 08-Sep-2009 Anders Carlsson <andersca@mac.com> Clean up the CXXConstructExpr constructor, add Arg getters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d23693c609ddebadca0cbbf3d9ec489c0678786c 07-Sep-2009 Anders Carlsson <andersca@mac.com> Check that the destination type of a static_cast expression is a complete type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d851b37a331a7bc0047922ea9244aff85470987e 07-Sep-2009 Anders Carlsson <andersca@mac.com> Check that the destination type of a static_cast expression is a complete type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6ba693c29fa2d99ba4b6a8f24f785fadfa825c25 05-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Replace some instances of std::string with StringRefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81079 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/InitHeaderSearch.h
458fb10ef5ba2d7b375c6c64095c1458af0a5be3 05-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Replace some instances of std::string with StringRefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81079 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/InitHeaderSearch.h
fbec6a92f5bf5cbae1ea922f8ec04d6a6d18682f 05-Sep-2009 John McCall <rjmccall@apple.com> Start emitting ElaboratedTypes in C++ mode. Support the effort in various
ways: remove elab types during desugaring, enhance pretty-printing to allow
tags to be suppressed without suppressing scopes, look through elab types
when associating a typedef name with an anonymous record type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81065 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
2191b20bfb31fc0e22a158f6b4204cd0b7dbd0fd 05-Sep-2009 John McCall <rjmccall@apple.com> Start emitting ElaboratedTypes in C++ mode. Support the effort in various
ways: remove elab types during desugaring, enhance pretty-printing to allow
tags to be suppressed without suppressing scopes, look through elab types
when associating a typedef name with an anonymous record type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81065 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
21d18f2893c38398e147708d48ceb5d4c9c1290f 05-Sep-2009 Anders Carlsson <andersca@mac.com> Use a separate diagnostic for default function argument expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
25cae7f4b1155b1a6ca959ea5143ea39eae656cd 05-Sep-2009 Anders Carlsson <andersca@mac.com> Use a separate diagnostic for default function argument expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
07d2c655103d927962071c5e3e2b0eaa5f527baa 05-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor builtin function evaluation code into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81061 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
248072a8b9cd956c4ac63172fc2af09790f7c6a9 05-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor builtin function evaluation code into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81061 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
49743ab9531cef4ee3b205bf99c8d7433b450513 05-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add missing include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81059 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
0c5920c3159e6a8c83a871f26f7d7ea621c29860 05-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add missing include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81059 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
379448fc7bc91bba33e3d2df073f6cf011960b96 05-Sep-2009 John McCall <rjmccall@apple.com> Basic support for representing elaborated type specifiers
directly in the AST. The current thinking is to create these
only in C++ mode for efficiency. But for now, they're not being
created at all; patch to follow.

This will let us do things like verify that tags match during
template instantation, as well as signal that an elaborated type
specifier was used for clients that actually care.

Optimally, the TypeLoc hierarchy should be adjusted to carry tag
location information as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
7da2431c23ef1ee8acb114e39692246e1801afc2 05-Sep-2009 John McCall <rjmccall@apple.com> Basic support for representing elaborated type specifiers
directly in the AST. The current thinking is to create these
only in C++ mode for efficiency. But for now, they're not being
created at all; patch to follow.

This will let us do things like verify that tags match during
template instantation, as well as signal that an elaborated type
specifier was used for clients that actually care.

Optimally, the TypeLoc hierarchy should be adjusted to carry tag
location information as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
8e7e4609012900d1a0eafafb49b5089acddf5b7a 05-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Improve the AST representation and semantic analysis for extern
templates. We now distinguish between an explicit instantiation
declaration and an explicit instantiation definition, and know not to
instantiate explicit instantiation declarations. Unfortunately, there
is some remaining confusion w.r.t. instantiation of out-of-line member
function definitions that causes trouble here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81053 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
d0e3daf2b980b505e535d35b432c938c6d0208ef 05-Sep-2009 Douglas Gregor <dgregor@apple.com> Improve the AST representation and semantic analysis for extern
templates. We now distinguish between an explicit instantiation
declaration and an explicit instantiation definition, and know not to
instantiate explicit instantiation declarations. Unfortunately, there
is some remaining confusion w.r.t. instantiation of out-of-line member
function definitions that causes trouble here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81053 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
0670594f65a1718aa383721718bc6b6d89025a1e 04-Sep-2009 Mike Stump <mrs@apple.com> Cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81024 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
f79079565e15e6a328372076ac5583af16c8dbce 04-Sep-2009 Mike Stump <mrs@apple.com> Cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81024 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
bc56aa3e51bac38cea6c6dbb2406ea5c094c41c2 04-Sep-2009 Daniel Dunbar <daniel@zuster.org> Tweak darwin::Link::AddLinkArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81021 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d82f8fa53771b454885c546f0fd452a4980b3a3e 04-Sep-2009 Daniel Dunbar <daniel@zuster.org> Tweak darwin::Link::AddLinkArgs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81021 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
455bf703e26c1bb65057e65c27fb697ce6d72507 04-Sep-2009 Daniel Dunbar <daniel@zuster.org> Implement darwin::Link::AddDarwinArch for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81020 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
78dbd580a02759bbc408dbefb6754afa71b2c24c 04-Sep-2009 Daniel Dunbar <daniel@zuster.org> Implement darwin::Link::AddDarwinArch for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81020 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
e89a0af97237fb82f3c709e2e8e6264bd38c2d7b 04-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> If a destructor is referenced or a pseudo-destructor expression is
formed without a trailing '(', diagnose the error (these expressions
must be immediately called), emit a fix-it hint, and fix the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
a78c5c34fbd20fde02261c3f3e21933cd58fcc04 04-Sep-2009 Douglas Gregor <dgregor@apple.com> If a destructor is referenced or a pseudo-destructor expression is
formed without a trailing '(', diagnose the error (these expressions
must be immediately called), emit a fix-it hint, and fix the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
3e36851cc872a3e8461234e69642852d46b545ce 04-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Implement AST, semantics, and CodeGen for C++ pseudo-destructor
expressions, e.g.,

p->~T()

when p is a pointer to a scalar type.

We don't currently diagnose errors when pseudo-destructor expressions
are used in any way other than by forming a call.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
a71d819bb8f50c28938db0f2867d3fb6e2ce5910 04-Sep-2009 Douglas Gregor <dgregor@apple.com> Implement AST, semantics, and CodeGen for C++ pseudo-destructor
expressions, e.g.,

p->~T()

when p is a pointer to a scalar type.

We don't currently diagnose errors when pseudo-destructor expressions
are used in any way other than by forming a call.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
e39087aff486958d7736015153344e13c8ebf7ad 04-Sep-2009 Steve Naroff <snaroff@apple.com> Implement accessors clang_getCursorKind(), clang_getCursorDecl().
Implement clang_getCursor() - wired up to Argiris's work.
Implement callbacks for CXCursor_ObjCProtocolRef.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81004 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
9efa767be8e9f2dae509d3a0be93ade01bfa1560 04-Sep-2009 Steve Naroff <snaroff@apple.com> Implement accessors clang_getCursorKind(), clang_getCursorDecl().
Implement clang_getCursor() - wired up to Argiris's work.
Implement callbacks for CXCursor_ObjCProtocolRef.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81004 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
7a3747265a26b68d1b9f2b55d11ef38b262e50eb 04-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Parse extern templates, pass that information all the way to Sema,
then drop it on the floor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80989 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
45f965581935791a018df829a14dff53c1dd8f47 04-Sep-2009 Douglas Gregor <dgregor@apple.com> Parse extern templates, pass that information all the way to Sema,
then drop it on the floor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80989 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
122f940d749ab8a0f78b97b0f9252b41fb1248cd 04-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Actually initialize HasQualifier and HasExplicitTemplateArgumentList in the EmptyShell constructor for MemberExpr. Should clear up some valgrind failures in PCH reading

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e6585a7d71510be00a625686153f48d496d3bbf1 04-Sep-2009 Douglas Gregor <dgregor@apple.com> Actually initialize HasQualifier and HasExplicitTemplateArgumentList in the EmptyShell constructor for MemberExpr. Should clear up some valgrind failures in PCH reading

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fd02518096d78c6d4ccf1156e64cd4dd34221444 04-Sep-2009 John McCall <rjmccall@apple.com> Correctly handle elaborated template ids. Still not handled properly for friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
f1bbbb49f06a7462476cd88166fccda5feb15cab 04-Sep-2009 John McCall <rjmccall@apple.com> Correctly handle elaborated template ids. Still not handled properly for friends.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
d4b30098043a0f4273818c5a6cec4b7ca629d22b 04-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to instantiate destructors used to destruct
base and data members when they are needed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
34374e6ce5710a91c478f69379220ff20c3e7f15 04-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to instantiate destructors used to destruct
base and data members when they are needed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bc2fb7fd319e8beaf899395ffa5b44ea833a648e 03-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Improve template instantiation for member access expressions that
involve qualified names, e.g., x->Base::f. We now maintain enough
information in the AST to compare the results of the name lookup of
"Base" in the scope of the postfix-expression (determined at template
definition time) and in the type of the object expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
c68afe2cbe7f875a9243c411077602fb5f5dc74b 03-Sep-2009 Douglas Gregor <dgregor@apple.com> Improve template instantiation for member access expressions that
involve qualified names, e.g., x->Base::f. We now maintain enough
information in the AST to compare the results of the name lookup of
"Base" in the scope of the postfix-expression (determined at template
definition time) and in the type of the object expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f988e2228fd3d7a78ee4ad03be58bb919e7c918e 03-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue diagnostics in variety of situations involving
reference/const data members when user has declared
the constructor. This necessitated some non-minor
refactoring.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
80545ad0f9b8e52177a8c37bd140bae0ffbd0cc6 03-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> Issue diagnostics in variety of situations involving
reference/const data members when user has declared
the constructor. This necessitated some non-minor
refactoring.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
5bfadbe7135ab3b9c796c142b986337941f51426 03-Sep-2009 Steve Naroff <snaroff@apple.com> Add ASTUnit::getOriginalSourceFileName() and use in clang_getTranslationUnitSpelling().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80932 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
77accc11f04ed4ff9afd4e27d430144d4714be56 03-Sep-2009 Steve Naroff <snaroff@apple.com> Add ASTUnit::getOriginalSourceFileName() and use in clang_getTranslationUnitSpelling().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80932 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
0f927cf843bfe5a54ad059ab17d0beeffeec2275 03-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Improved handling for dependent, qualified member access expressions, e.g.,

t->Base::f

where t has a dependent type. We save the nested-name-specifier in the
CXXUnresolvedMemberExpr then, during instantiation, substitute into
the nested-name-specifier with the (transformed) object type of t, so
that we get name lookup into the type of the object expression.

Note that we do not yet retain information about name lookup into the
lexical scope of the member access expression, so several regression
tests are still disabled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a38c687ef5354678b9d76a7b29354159f2b83736 03-Sep-2009 Douglas Gregor <dgregor@apple.com> Improved handling for dependent, qualified member access expressions, e.g.,

t->Base::f

where t has a dependent type. We save the nested-name-specifier in the
CXXUnresolvedMemberExpr then, during instantiation, substitute into
the nested-name-specifier with the (transformed) object type of t, so
that we get name lookup into the type of the object expression.

Note that we do not yet retain information about name lookup into the
lexical scope of the member access expression, so several regression
tests are still disabled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
172cb43b46e0deccbe4113bf65e278ce76ab5b18 03-Sep-2009 Daniel Dunbar <daniel@zuster.org> Revert "Visit function/method bodies and issue callback for parameters and local
variables.", this is breaking x86_64-apple-darwin10 and Linux tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80896 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
bce6f62ae7d2c15992617f64e30067803fb5b47f 03-Sep-2009 Daniel Dunbar <daniel@zuster.org> Revert "Visit function/method bodies and issue callback for parameters and local
variables.", this is breaking x86_64-apple-darwin10 and Linux tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80896 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
62a7cbc34a427d95d86fb35c69ac073c252465a9 03-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add basic support for -pthread.
- Patch by David Chisnall, with PCH and Darwin support mixed in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
5345c391c65d1780a0d7b0102b7f735cc3f82732 03-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add basic support for -pthread.
- Patch by David Chisnall, with PCH and Darwin support mixed in.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
4e38d7077289117a0b072492423abf7cf2625964 03-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
e1ccccff777f6bad6b25e9c6a762f98fd8003181 03-Sep-2009 Ted Kremenek <kremenek@apple.com> Fix 80 column violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
4584765b41dc942a8e37a562411c473e585dd44c 03-Sep-2009 Anders Carlsson <andersca@mac.com> Add CastExpr::getCastKindName and use it in the StmtDumper.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f8ec55a104e55961f8666f773dce99bbc628298f 03-Sep-2009 Anders Carlsson <andersca@mac.com> Add CastExpr::getCastKindName and use it in the StmtDumper.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
81699d95c5924301824c3ff5ebff984c17063726 03-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> This patch does the following.
1) Issue digsnostics in non-fragile ABI, when an expression
evaluates to an interface type (except when it is used to
access a non-fragile ivar).
2) Issue unsupported error in fragile ABI when an expression
evaluates to an interface type (except when it is used to
access a fragile ivar).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16b10378a93e8644008289fd86c1caf737d1395c 03-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> This patch does the following.
1) Issue digsnostics in non-fragile ABI, when an expression
evaluates to an interface type (except when it is used to
access a non-fragile ivar).
2) Issue unsupported error in fragile ABI when an expression
evaluates to an interface type (except when it is used to
access a fragile ivar).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6b0576bf7b3751de35b77061fcd18bf3cb402d2f 03-Sep-2009 Steve Naroff <snaroff@apple.com> Visit function/method bodies and issue callback for parameters and local variables.
Add clang_getTranslationUnitSpelling().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80859 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
23d8bea7056e7f474ce7f42042021a148feee8f7 03-Sep-2009 Steve Naroff <snaroff@apple.com> Visit function/method bodies and issue callback for parameters and local variables.
Add clang_getTranslationUnitSpelling().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80859 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
ad979bd99b8a3afa145e78d66bd8eac8d249a9c5 03-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Add a wicked little test-case that illustrates what we have to deal
with to properly support member access expressions in templates. This
test is XFAIL'd, because we get it completely wrong, but I've made the
minimal changes to the representation to at least avoid a crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
2700dcde044893642b9b77638e052aa90be7cd51 03-Sep-2009 Douglas Gregor <dgregor@apple.com> Add a wicked little test-case that illustrates what we have to deal
with to properly support member access expressions in templates. This
test is XFAIL'd, because we get it completely wrong, but I've made the
minimal changes to the representation to at least avoid a crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
681d31d4185cfa8a5378440dee12fc1535e3de99 03-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Rewrite of our handling of name lookup in C++ member access expressions, e.g.,

x->Base::f

We no longer try to "enter" the context of the type that "x" points
to. Instead, we drag that object type through the parser and pass it
into the Sema routines that need to know how to perform lookup within
member access expressions.

We now implement most of the crazy name lookup rules in C++
[basic.lookup.classref] for non-templated code, including performing
lookup both in the context of the type referred to by the member
access and in the scope of the member access itself and then detecting
ambiguities when the two lookups collide (p1 and p4; p3 and p7 are
still TODO). This change also corrects our handling of name lookup
within template arguments of template-ids inside the
nested-name-specifier (p6; we used to look into the scope of the
object expression for them) and fixes PR4703.

I have disabled some tests that involve member access expressions
where the object expression has dependent type, because we don't yet
have the ability to describe dependent nested-name-specifiers starting
with an identifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
2dd078ae50ff7be1fb25ebeedde45e9ab691a4f0 03-Sep-2009 Douglas Gregor <dgregor@apple.com> Rewrite of our handling of name lookup in C++ member access expressions, e.g.,

x->Base::f

We no longer try to "enter" the context of the type that "x" points
to. Instead, we drag that object type through the parser and pass it
into the Sema routines that need to know how to perform lookup within
member access expressions.

We now implement most of the crazy name lookup rules in C++
[basic.lookup.classref] for non-templated code, including performing
lookup both in the context of the type referred to by the member
access and in the scope of the member access itself and then detecting
ambiguities when the two lookups collide (p1 and p4; p3 and p7 are
still TODO). This change also corrects our handling of name lookup
within template arguments of template-ids inside the
nested-name-specifier (p6; we used to look into the scope of the
object expression for them) and fixes PR4703.

I have disabled some tests that involve member access expressions
where the object expression has dependent type, because we don't yet
have the ability to describe dependent nested-name-specifiers starting
with an identifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
e7228108544bf81c0a5fd9979f55911414dd0318 02-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a crash when referencing static data members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80835 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a0d4b63d15138ca00e12df3c0573954b07ea40a8 02-Sep-2009 Anders Carlsson <andersca@mac.com> Fix a crash when referencing static data members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80835 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e49d8f0656f05e4494cf4aedd58da46e242513de 02-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor the check for bad divide into a checker.

Also fix a checker context bug: the Dst set is not always empty initially.
Because in GRExprEngine::CheckerVisit(), *CurrSet is used repeatedly.
So we removed the Dst.empty() condition in ~CheckerContext() when deciding
whether to do autotransision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
6403b57eda05a22273d920ad0bd2991d11eaa7b8 02-Sep-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor the check for bad divide into a checker.

Also fix a checker context bug: the Dst set is not always empty initially.
Because in GRExprEngine::CheckerVisit(), *CurrSet is used repeatedly.
So we removed the Dst.empty() condition in ~CheckerContext() when deciding
whether to do autotransision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
53ec7aa095aa4c79e4dde7011b44d96804526875 02-Sep-2009 Ted Kremenek <kremenek@apple.com> Replace uses of ImmutableSet in SymbolReaper with DenseSet. This was
motivated from Shark profiles that shows that 'markLive' was very
heavy when using --analyzer-store=region. On my benchmark file, this
reduces the analysis time for --analyzer-store=region from 19.5s to
13.5s and for --analyzer-store=basic from 5.3s to 3.5s. For the
benchmark file, this is a reduction of about 30% analysis time for
both analysis modes (a huge win).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80765 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
a97d54c165ca6b6e57b9f333059a84c2188dd591 02-Sep-2009 Ted Kremenek <kremenek@apple.com> Replace uses of ImmutableSet in SymbolReaper with DenseSet. This was
motivated from Shark profiles that shows that 'markLive' was very
heavy when using --analyzer-store=region. On my benchmark file, this
reduces the analysis time for --analyzer-store=region from 19.5s to
13.5s and for --analyzer-store=basic from 5.3s to 3.5s. For the
benchmark file, this is a reduction of about 30% analysis time for
both analysis modes (a huge win).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80765 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
b98cc63ed75cc49f8b8853564779d81eaebea093 02-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> It is illegal to derefrercne to an interface in
objc's non-fragile ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ce8827a4941fb966e3f6c32fbe97a7bbb7da5840 02-Sep-2009 Fariborz Jahanian <fjahanian@apple.com> It is illegal to derefrercne to an interface in
objc's non-fragile ABI.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80739 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
80f0075a200e7c7cec5a986723955a4285dcd82b 01-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> In CXXBaseOrMemberInitializer, don't confuse CtorTocall with
AnonUnionMember. Fixes PR4826.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80721 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
72f6d678c8de9f3a770e8ae5fc4979abf3940668 01-Sep-2009 Douglas Gregor <dgregor@apple.com> In CXXBaseOrMemberInitializer, don't confuse CtorTocall with
AnonUnionMember. Fixes PR4826.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80721 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b6feaf3f96a6f93e4afcc103a058f63c78f105b3 01-Sep-2009 Anders Carlsson <andersca@mac.com> Add a CK_FunctionToPointerDecay cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b633c4ee622df81d4572ef57dac54ebed69bb9bf 01-Sep-2009 Anders Carlsson <andersca@mac.com> Add a CK_FunctionToPointerDecay cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f02d2aefb7a9b3d186de72b0109ea00f74bd459d 01-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Add DeclContext::Equals to compare declaration contexts based on their primary context. Use this instead of pointer comparisons

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80690 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
61481dad22ebca3fba3fe4fb67a3b926d0895e9c 01-Sep-2009 Douglas Gregor <dgregor@apple.com> Add DeclContext::Equals to compare declaration contexts based on their primary context. Use this instead of pointer comparisons

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80690 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f750e26620957224ea107e426abc135bf97246f3 01-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> "The attached patch moves AttributeList::addAttributeList outside the
class so as to accomodate one or both parameters being NULL, " from Sean Hunt!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80683 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
arse/DeclSpec.h
ac25503714ba1a384d4f1cae05b84bc785eb5fad 01-Sep-2009 Douglas Gregor <dgregor@apple.com> "The attached patch moves AttributeList::addAttributeList outside the
class so as to accomodate one or both parameters being NULL, " from Sean Hunt!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80683 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
arse/DeclSpec.h
ec4380002e5ed2527ae3f21c7841a4391f6319e3 01-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add driver support for -emit-ast and AST compilation steps.
- <rdar://problem/7185031> Add 'clang' option '-emit-ast'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80678 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.def
river/Types.def
5915fbf310e171c4cd3c2af05e9de360c0fa988a 01-Sep-2009 Daniel Dunbar <daniel@zuster.org> Add driver support for -emit-ast and AST compilation steps.
- <rdar://problem/7185031> Add 'clang' option '-emit-ast'

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80678 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.def
river/Types.def
6e862e28ca9115c404fd0542e8727a476366c849 01-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Tip-toe around strict-aliasing violation. Fixes PR4061.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
35f153f8ff4fd6a9b39c077026c3e5cc2c721a82 01-Sep-2009 Douglas Gregor <dgregor@apple.com> Tip-toe around strict-aliasing violation. Fixes PR4061.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
20c55141395e22b6002b42ef30fcf4238402e48c 01-Sep-2009 Anders Carlsson <andersca@mac.com> Don't assert when instantiating member references to fields in anonymous structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d8b285fee4471f393da8ee30f552ceacdc362afa 01-Sep-2009 Anders Carlsson <andersca@mac.com> Don't assert when instantiating member references to fields in anonymous structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d33e328e84080d75879182f882b578ffa7db52ab 01-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Preliminary AST representation and semantic analysis for
explicitly-specified template argument lists in member reference
expressions, e.g.,

x->f<int>()



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c4bf26fbdff42967d660f505a83f75a4df2cc752 01-Sep-2009 Douglas Gregor <dgregor@apple.com> Preliminary AST representation and semantic analysis for
explicitly-specified template argument lists in member reference
expressions, e.g.,

x->f<int>()



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c1991bf37685134f7a139f22883a6c7448aa0f62 01-Sep-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate CXXAdornedMemberExpr entirely. Instead, optionally allocate
space within the MemberExpr for the nested-name-specifier and its
source range. We'll do the same thing with explicitly-specified
template arguments, assuming I don't flip-flop again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
83f6faf37d9bf58986bedc9bc0ea897a56b4dbad 01-Sep-2009 Douglas Gregor <dgregor@apple.com> Eliminate CXXAdornedMemberExpr entirely. Instead, optionally allocate
space within the MemberExpr for the nested-name-specifier and its
source range. We'll do the same thing with explicitly-specified
template arguments, assuming I don't flip-flop again.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
ea7c7ce3586b1a1774fe41c53267bc7c5dfad6bf 01-Sep-2009 John McCall <rjmccall@apple.com> Fix bug 4784 and allow friend declarations to properly extend
existing declaration chains.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ab88d97734f1260402a0c6a8f6b77bed7ed4e295 01-Sep-2009 John McCall <rjmccall@apple.com> Fix bug 4784 and allow friend declarations to properly extend
existing declaration chains.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
efccbec93fa2bc73800857b0208b583cb3d68d78 31-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Rename CXXQualifiedMemberExpr -> CXXAdornedMemberExpr, since we will
also be adding explicit template arguments as an additional
"adornment". No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
0979c805475d1ba49b5d6ef93c4d2ce6d2eab6ed 31-Aug-2009 Douglas Gregor <dgregor@apple.com> Rename CXXQualifiedMemberExpr -> CXXAdornedMemberExpr, since we will
also be adding explicit template arguments as an additional
"adornment". No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
cfa0a63ebe696ba691ffad4963c6945d3d13fa84 31-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Add parsing for references to member function templates with explicit
template argument lists, e.g., x.f<int>().

Semantic analysis will be a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80624 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f328a2857d6dc397ec7a304b07d40893891f7f98 31-Aug-2009 Douglas Gregor <dgregor@apple.com> Add parsing for references to member function templates with explicit
template argument lists, e.g., x.f<int>().

Semantic analysis will be a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80624 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9841cdf19fd7601b35e1a42c679d87b6cfdbd7f6 31-Aug-2009 Eli Friedman <eli.friedman@gmail.com> PR4836, part 1: add Sema support for __builtin_isnan and friends; they
are apparently used by Solaris libc despite the fact that clang claims
to be compatible with gcc 4.2, which doesn't support them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/DiagnosticSemaKinds.td
9ac6f62a77be5b281a7ddc24a16669b457ac47c2 31-Aug-2009 Eli Friedman <eli.friedman@gmail.com> PR4836, part 1: add Sema support for __builtin_isnan and friends; they
are apparently used by Solaris libc despite the fact that clang claims
to be compatible with gcc 4.2, which doesn't support them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/DiagnosticSemaKinds.td
04b3aa87d282f222719838ccb7b236cc960b6c0c 31-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Support explicit C++ member operator syntax, from James Porter!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80608 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a6f0f9d589a06737707fe914e06bd6d4bfae0997 31-Aug-2009 Douglas Gregor <dgregor@apple.com> Support explicit C++ member operator syntax, from James Porter!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80608 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
cd118e609b2bd1abedf9a99b543770a425597e20 31-Aug-2009 David Chisnall <csdavec@swan.ac.uk> Updated GNU runtime non-fragile ABI.
Added -fconstant-string-class= option.
Added __has_feature() test for non-fragile ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
8a5a9aaddb627c0884c2ed8db55cc29fdb601195 31-Aug-2009 David Chisnall <csdavec@swan.ac.uk> Updated GNU runtime non-fragile ABI.
Added -fconstant-string-class= option.
Added __has_feature() test for non-fragile ABI.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
f1cb83539bb1ec38bae49a189e107b298e360df8 30-Aug-2009 Anders Carlsson <andersca@mac.com> Improve missing error messages as suggested by Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80489 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
639bfc7b1e55e01dd38d2ef399366b5efa55a9a7 30-Aug-2009 Anders Carlsson <andersca@mac.com> Improve missing error messages as suggested by Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80489 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4355a39424035ba0bcdfa3f89bda6eff5ec6de3b 30-Aug-2009 Anders Carlsson <andersca@mac.com> Improve diagnostics for missing members. This renames the err_typecheck_no_member to err_typecheck_no_member_deprecated. The idea is that err_typecheck_no_member_deprecated should be phased out and any call sites that reference it should call DiagnoseMissingMember instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f4d84b663ef7dda959cbe45561d90e59760cbb74 30-Aug-2009 Anders Carlsson <andersca@mac.com> Improve diagnostics for missing members. This renames the err_typecheck_no_member to err_typecheck_no_member_deprecated. The idea is that err_typecheck_no_member_deprecated should be phased out and any call sites that reference it should call DiagnoseMissingMember instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80469 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e6c7b0611256a2e2dbaad79d1f587b18186d41e5 30-Aug-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Fix TypeLoc::operator bool().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
19a97e27a545959ee9b395a96140661148a6b5b0 30-Aug-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix TypeLoc::operator bool().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80447 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeLoc.h
e16b4fe4afe3b13b013d2b0a092c80932fddddee 29-Aug-2009 Anders Carlsson <andersca@mac.com> Set the access specifier for using decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80435 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
595adc1795cc2c079ef5876100e01acd10a0504a 29-Aug-2009 Anders Carlsson <andersca@mac.com> Set the access specifier for using decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80435 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
8197c48a5bedf9418f8616ee4b6ed98e4bfd2ed3 29-Aug-2009 Anders Carlsson <andersca@mac.com> Improve instantiation of UnresolvedUsingDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0d8df780aef1acda5962347a32591efc629b6748 29-Aug-2009 Anders Carlsson <andersca@mac.com> Improve instantiation of UnresolvedUsingDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
99aa43241a83ae52eaaeaa9ff64afcdca1f89d8e 29-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of mostly-unused, buggy method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d933a0198f3ccce9c73bf2951625315b911d37bf 29-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of mostly-unused, buggy method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a903eb4de66320b25f766fdf6bdd505283a8fd1d 29-Aug-2009 John McCall <rjmccall@apple.com> Fix the breakage by handling indirect instantiations. This would be much
improved if there were a consistent name for getInstantiatedFromMemberX()
across all classes. Cheap refactor if someone wants to do it, but let's get the
buildbots happy first.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
52a575a5ce7b27b6612357cdba5aa4ec1574ad5e 29-Aug-2009 John McCall <rjmccall@apple.com> Fix the breakage by handling indirect instantiations. This would be much
improved if there were a consistent name for getInstantiatedFromMemberX()
across all classes. Cheap refactor if someone wants to do it, but let's get the
buildbots happy first.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
6d68ad4556299aea1408c20fffc9c3e9444313a7 29-Aug-2009 Anders Carlsson <andersca@mac.com> Store the SourceLocation of right parentheses in member initializers. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80416 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8c57a66a2aa59939a902ffa8c4ad0ddd5b949a21 29-Aug-2009 Anders Carlsson <andersca@mac.com> Store the SourceLocation of right parentheses in member initializers. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80416 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cc6b85d68cdcb334790e64fb1cfc0b016e759b3a 29-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> path to ir-gen 12.3.1 Conversion by constructor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7fe5d72fbc8605b60d42d32394248ea76cf763a0 29-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> path to ir-gen 12.3.1 Conversion by constructor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
948945747bcd09eabe2504c1798d41edcefdf92b 28-Aug-2009 Anders Carlsson <andersca@mac.com> Fix this for real.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
faccd72e2448b552f17992eaba6cfe12ec497e58 28-Aug-2009 Anders Carlsson <andersca@mac.com> Fix this for real.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80377 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3ba83e97b3b528b83e2ee293e275be1a03b5ee6d 28-Aug-2009 Steve Naroff <snaroff@apple.com> Lot's of little changes to get the C-based indexing API going...

Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80367 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Indexer.h
50398199fb10e196a8d92fbf7a062dbe42ed88fd 28-Aug-2009 Steve Naroff <snaroff@apple.com> Lot's of little changes to get the C-based indexing API going...

Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80367 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Indexer.h
6145173144dc3a03dcfcc021df08cbcd76af91c4 28-Aug-2009 Anders Carlsson <andersca@mac.com> Instantiate unresolved using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0dde18e5a713bc186062ca1ebc9967500b07faee 28-Aug-2009 Anders Carlsson <andersca@mac.com> Instantiate unresolved using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7de15913bed5143cebaf1ea32eba3d26a9e4ae83 28-Aug-2009 John McCall <rjmccall@apple.com> Omnibus friend decl refactoring. Instead of cloning AST classes for friend
declarations of same, introduce a single AST class and add appropriate bits
(encoded in the namespace) for whether a decl is "real" or not. Much hackery
about previously-declared / not-previously-declared, but it's essentially
mandated by the standard that friends alter lookup, and this is at least
fairly non-intrusive.

Refactor the Sema methods specific to friends for cleaner flow and less nesting.

Incidentally solve a few bugs, but I remain confident that we can put them back.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80353 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
02cace78cf48cc26686bd5b07c78606abca13bcd 28-Aug-2009 John McCall <rjmccall@apple.com> Omnibus friend decl refactoring. Instead of cloning AST classes for friend
declarations of same, introduce a single AST class and add appropriate bits
(encoded in the namespace) for whether a decl is "real" or not. Much hackery
about previously-declared / not-previously-declared, but it's essentially
mandated by the standard that friends alter lookup, and this is at least
fairly non-intrusive.

Refactor the Sema methods specific to friends for cleaner flow and less nesting.

Incidentally solve a few bugs, but I remain confident that we can put them back.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80353 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
50bc7088e5d8534dfac0fbb91bb267c6da8f3071 28-Aug-2009 Anders Carlsson <andersca@mac.com> Create UnresolvedUsingDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
550b14b410eaed037c9b791806194e6cea1ebe90 28-Aug-2009 Anders Carlsson <andersca@mac.com> Create UnresolvedUsingDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e75006e36f088f43ebd712025b1742871e6d0ed 28-Aug-2009 Anders Carlsson <andersca@mac.com> Check in UnresolvedUsingDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
665b49c62d637d16826036118f92d35f116f3ef3 28-Aug-2009 Anders Carlsson <andersca@mac.com> Check in UnresolvedUsingDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
f772e8b18cf221bcc36474a4dd8ab7005a5ebb8f 28-Aug-2009 Ted Kremenek <kremenek@apple.com> Use SymbolicRegion instead of CodeTextRegion for symbolic function
pointers. Most logic cares first about whether or not a region is
symbolic, and second if represents code. This should fix a series of
silent corner case bugs (as well as simplify a bunch of code).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80335 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
abd46e13cfd48f2c9bf26d9759edb4366aaa6d5b 28-Aug-2009 Ted Kremenek <kremenek@apple.com> Use SymbolicRegion instead of CodeTextRegion for symbolic function
pointers. Most logic cares first about whether or not a region is
symbolic, and second if represents code. This should fix a series of
silent corner case bugs (as well as simplify a bunch of code).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80335 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
66b082afa97af35fa317529ec3c4f9be73380889 28-Aug-2009 Anders Carlsson <andersca@mac.com> More work on using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
73b39cf02eaa346c6d7a76c32bf13759de7516db 28-Aug-2009 Anders Carlsson <andersca@mac.com> More work on using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
b49f1bd5691c6e04b84f6aa365853bf49688c82e 28-Aug-2009 Anders Carlsson <andersca@mac.com> Many improvements to using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cf9f921268e67703d9cddcf9f2d6ac057c4c3cc8 28-Aug-2009 Anders Carlsson <andersca@mac.com> Many improvements to using declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a133e244a156b76bd06b98a66210e9868601c994 28-Aug-2009 Chris Lattner <sabre@nondot.org> Accept and ignore a few more -Wflags.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
dd46adef4e839686bf9f22c2f861d1f29c9095d4 28-Aug-2009 Chris Lattner <sabre@nondot.org> Accept and ignore a few more -Wflags.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
2993eddf5716775128f10b731a0627daab97bacc 28-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> When looking for overloaded member operators, make sure to instantiate
class template specializations (when possible) and look into base
classes. Thanks to Eli for the test case!

FIXME -=1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80302 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8a5ae2401645788144c0ae769a2fb899866801f5 28-Aug-2009 Douglas Gregor <dgregor@apple.com> When looking for overloaded member operators, make sure to instantiate
class template specializations (when possible) and look into base
classes. Thanks to Eli for the test case!

FIXME -=1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80302 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a7b9c669ba16390d7aed1b279cd2155eebf4005b 28-Aug-2009 Ted Kremenek <kremenek@apple.com> Rename 'bindExpr' to 'BindExpr'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80294 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
8e0293406f9d62a293be6be3b1fb89d359f5ea40 28-Aug-2009 Ted Kremenek <kremenek@apple.com> Rename 'bindExpr' to 'BindExpr'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80294 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
ab5bb918631236a7130112be9c245721712fd313 28-Aug-2009 Ted Kremenek <kremenek@apple.com> Move the AnalysisContext* from GRState to Environment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80293 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
6d2c657b528d9ac1bacd382281f0bc49975aa89a 28-Aug-2009 Ted Kremenek <kremenek@apple.com> Move the AnalysisContext* from GRState to Environment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80293 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
53cf7f5e99596f38a4211d0e051ee1cd151a87a0 28-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Add __builtin_memchr (used by GNU libstdc++).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
51ac7d494f5ed15718edde97d190dbb52ea664be 28-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Add __builtin_memchr (used by GNU libstdc++).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80288 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
c75673a0fcde5c85abe95a4df6b4ac37fa7507ea 27-Aug-2009 Eli Friedman <eli.friedman@gmail.com> PR4800: Implement -Wpointer-arith. I think this is the correct behavior
per the documentation, although I'm not completely sure.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cbdebdd11395ac1e63f5d5762f886549ae329464 27-Aug-2009 Eli Friedman <eli.friedman@gmail.com> PR4800: Implement -Wpointer-arith. I think this is the correct behavior
per the documentation, although I'm not completely sure.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3b896451923635c7d82f943dbaba1c03e6bb7c1f 27-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Implement instantiation of the declarations of member function
templates within class templates, producing a member function template
of a class template specialization. If you can parse that, I'm
sorry. Example:

template<typename T>
struct X {
template<typename U> void f(T, U);
};

When we instantiate X<int>, we now instantiate the declaration
X<int>::f, which looks like this:

template<typename U> void X<int>::f(int, U);

The path this takes through
TemplateDeclInstantiator::VisitCXXMethodDecl is convoluted and
ugly, but I don't know how to improve it yet. I'm resting my hopes on
the multi-level substitution required to instantiate definitions of
nested templates, which may simplify this code as well.

More testing to come...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
d60e105e6d1624da647ef7dd35a9cf6fad1b763e 27-Aug-2009 Douglas Gregor <dgregor@apple.com> Implement instantiation of the declarations of member function
templates within class templates, producing a member function template
of a class template specialization. If you can parse that, I'm
sorry. Example:

template<typename T>
struct X {
template<typename U> void f(T, U);
};

When we instantiate X<int>, we now instantiate the declaration
X<int>::f, which looks like this:

template<typename U> void X<int>::f(int, U);

The path this takes through
TemplateDeclInstantiator::VisitCXXMethodDecl is convoluted and
ugly, but I don't know how to improve it yet. I'm resting my hopes on
the multi-level substitution required to instantiate definitions of
nested templates, which may simplify this code as well.

More testing to come...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
bcd4749cafde917323f114afa09c5bb8f9e08628 27-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused utility methods of GRStmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80237 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
1d8bdd34101651e5ffca93486f9f4034eb0a564f 27-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused utility methods of GRStmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80237 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
ba4592cbfb3cccd23740942fbbd9aa9defa0f0e3 27-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused utility methods of GRStmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80236 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
99330ca3e3e5311b8106b631ea25dbc2b924a944 27-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused utility methods of GRStmtNodeBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80236 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
9bc6bbfff7ee44e24015a82827f32ab87b22b79f 27-Aug-2009 Gabor Greif <ggreif@gmail.com> restore indentation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80229 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
cf78271b0a932b94598a9dec83fb33046fd033ce 27-Aug-2009 Gabor Greif <ggreif@gmail.com> restore indentation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80229 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ef0d74385f9ac97a31f16e7fc35dbc60c00115aa 27-Aug-2009 Gabor Greif <ggreif@gmail.com> add missing header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80228 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
156c4134fc936c8080ab6f15794da936f815bf8a 27-Aug-2009 Gabor Greif <ggreif@gmail.com> add missing header

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80228 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
998cd55ec625fa78d5ae5a8d211a168f437556a2 27-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove a unused member variable. Instead query the option from AnalysisManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80226 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c99949653fa00bab038af008ceeec15d3d8f62cc 27-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove a unused member variable. Instead query the option from AnalysisManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80226 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
aa5bff55484f0610783419d493e692aafa40faf9 27-Aug-2009 Gabor Greif <ggreif@gmail.com> iterator.h is no more. Be standards compliant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
ewrite/RewriteRope.h
f5afb5e1fa1877a4adf3328e5be31b2f959d82eb 27-Aug-2009 Gabor Greif <ggreif@gmail.com> iterator.h is no more. Be standards compliant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
ewrite/RewriteRope.h
430390dc279d39481598846b973d51786cf9e357 27-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> When checking whether one declaration context encloses another, make sure to look at the primary contexts. Thanks to Eli for the test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6dd38daf1495367db8fe9e9a5cacb7420cf08e27 27-Aug-2009 Douglas Gregor <dgregor@apple.com> When checking whether one declaration context encloses another, make sure to look at the primary contexts. Thanks to Eli for the test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b30f1c83501f3d6526cefa39a62f236352503bce 27-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Stub out an error so we don't crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80207 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2a16a138812f2f725f645cca95c41e6bd12ad14f 27-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Stub out an error so we don't crash.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80207 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3a4fed165ad3b46aee9ac07e25474fe98d5a13f2 27-Aug-2009 Anders Carlsson <andersca@mac.com> In ActOnCXXTypeConstructExpr, check that the type is complete and non-abstract before creating any expressions. This assures that any templates are instantiated if necessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80200 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bb60a509f47a95a4ed9366ec1fc65850da654d38 27-Aug-2009 Anders Carlsson <andersca@mac.com> In ActOnCXXTypeConstructExpr, check that the type is complete and non-abstract before creating any expressions. This assures that any templates are instantiated if necessary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80200 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5b76b8344ac7a91c30516e93b9d6c81910c4c489 27-Aug-2009 Ted Kremenek <kremenek@apple.com> Simplify 'Environment' to contain only one map from 'const Stmt*' to SVals, greatly simplifying the logic of the analyzer in many places. We now only distinguish between block-level expressions and subexpressions in Environment::RemoveDeadBindings and GRState pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80194 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
0fb0bc4067d6c9d7c0e655300ef309b05d3adfc9 27-Aug-2009 Ted Kremenek <kremenek@apple.com> Simplify 'Environment' to contain only one map from 'const Stmt*' to SVals, greatly simplifying the logic of the analyzer in many places. We now only distinguish between block-level expressions and subexpressions in Environment::RemoveDeadBindings and GRState pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80194 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
980108de0acaf5ecdfc16bb18b997dc9ffa2d708 27-Aug-2009 Mike Stump <mrs@apple.com> Cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0e88b16fe88d7419fe2b48362d38c960bc93982c 27-Aug-2009 Mike Stump <mrs@apple.com> Cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
62ce58301ea9dfb179993943fa96a590b7c07516 27-Aug-2009 Anders Carlsson <andersca@mac.com> New RequireNonAbstractType function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
a6ec7ad25a137fd42d84e6b6d44b32976cae440c 27-Aug-2009 Anders Carlsson <andersca@mac.com> New RequireNonAbstractType function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/PartialDiagnostic.h
e399ad4e75a7cb3e0abd0b8210f66393711d1360 27-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> When a member reference expression includes a qualifier on the member
name, e.g.,

x->Base::f()

retain the qualifier (and its source range information) in a new
subclass of MemberExpr called CXXQualifiedMemberExpr. Provide
construction, transformation, profiling, printing, etc., for this new
expression type.

When a virtual function is called via a qualified name, don't emit a
virtual call. Instead, call that function directly. Mike, could you
add a CodeGen test for this, too?



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80167 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
bd4c4aebe6035e7a7125470cc9f0f92511230ee3 27-Aug-2009 Douglas Gregor <dgregor@apple.com> When a member reference expression includes a qualifier on the member
name, e.g.,

x->Base::f()

retain the qualifier (and its source range information) in a new
subclass of MemberExpr called CXXQualifiedMemberExpr. Provide
construction, transformation, profiling, printing, etc., for this new
expression type.

When a virtual function is called via a qualified name, don't emit a
virtual call. Instead, call that function directly. Mike, could you
add a CodeGen test for this, too?



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80167 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
11415f75d95e088ce4748b8cc438f2d015b47e51 27-Aug-2009 Anders Carlsson <andersca@mac.com> The PartialDiagnostic constructor doesn't need to be explicit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80164 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
022fb28d79829c40c9b3a3bdd400dcacea495e26 27-Aug-2009 Anders Carlsson <andersca@mac.com> The PartialDiagnostic constructor doesn't need to be explicit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80164 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
9c71db1d83b6c08e92f0dd69fd0e23bc0aeaf6d2 27-Aug-2009 Mike Stump <mrs@apple.com> Regularize the case and sort.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
1feade8e520be483293dbf55eb57a51720899589 27-Aug-2009 Mike Stump <mrs@apple.com> Regularize the case and sort.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
7e5a7e363903a188018a33cd3ad4a5964ecc8bdd 26-Aug-2009 Anders Carlsson <andersca@mac.com> More improvements to PartialDiagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
21c2e20a00c2215d297470e6b657ede366b147d3 26-Aug-2009 Anders Carlsson <andersca@mac.com> More improvements to PartialDiagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PartialDiagnostic.h
52be1ca6972aae4d4bc4e4293b2b49cb05272b4c 26-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for C++ direct initializers that involve dependent
types or type-dependent expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
83ddad3ab513f5d73698cf9fbeb4ed3f011bc3b9 26-Aug-2009 Douglas Gregor <dgregor@apple.com> Implement support for C++ direct initializers that involve dependent
types or type-dependent expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a1377ad3b9dd3b078f419b3a829bfb83e8c2baaa 26-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80136 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
58d3f1af9b4efa426826816a16894986b78b2692 26-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Fixes a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80136 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c3e811318b81d07db4b2a4f8aca7e83298e4366c 26-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> AST for conversion by conversion functions. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80135 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9099ff0cf91ac9e0b2d5a142807fa384ce842fc4 26-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> AST for conversion by conversion functions. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80135 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3d56748bff1454d33f1f5a9ae1644f4c54c37b44 26-Aug-2009 Anders Carlsson <andersca@mac.com> More support for pseudo dtors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2cf738f1944d1cc724ea7561b84440a3a1059e45 26-Aug-2009 Anders Carlsson <andersca@mac.com> More support for pseudo dtors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80129 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cf13d4ad85bceb69c8dfb2fc9f2b4276ccd3a130 26-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> update to CXXFunctionalCastExpr to support ir-gen for
type convesions of class objects [class.conv]. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e9f42087aabfdb6b2afc35c7e38ac65da063b409 26-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> update to CXXFunctionalCastExpr to support ir-gen for
type convesions of class objects [class.conv]. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
64037c8170f3c38f7946558be14085bb392bc9f1 26-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> When we know that we are parsing a class-name, implicitly construct a
TypenameType if getTypeName is looking at a member of an unknown
specialization. This allows us to properly parse class templates that
derived from type that could only otherwise be described by a typename type,
e.g.,

template<class T> struct X {};
template<typename T> struct Y : public X<T>::X { };

Fixes PR4381.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80123 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
42c39f39184c5ce9d7f489e5dcb7eec770728a9a 26-Aug-2009 Douglas Gregor <dgregor@apple.com> When we know that we are parsing a class-name, implicitly construct a
TypenameType if getTypeName is looking at a member of an unknown
specialization. This allows us to properly parse class templates that
derived from type that could only otherwise be described by a typename type,
e.g.,

template<class T> struct X {};
template<typename T> struct Y : public X<T>::X { };

Fixes PR4381.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80123 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
691e04e82d51364fe3c2a68cf6fd902a7ba30e06 26-Aug-2009 Anders Carlsson <andersca@mac.com> Address some of Doug's comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80114 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3aa4ca439da54bc71def778126c9cf10c7d910ed 26-Aug-2009 Anders Carlsson <andersca@mac.com> Address some of Doug's comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80114 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
daa1f3e4599eadb8ae87aabfef0928b14b2542d4 26-Aug-2009 Anders Carlsson <andersca@mac.com> Add the partially implemented PartialDiagnostic class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80106 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
b2153946fff330e54abfdc740c0a83aedd485b33 26-Aug-2009 Anders Carlsson <andersca@mac.com> Add the partially implemented PartialDiagnostic class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80106 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/PartialDiagnostic.h
346198721c8f96f8ab2f0fcf1fe129170ad2394f 26-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Source location information for ? and : in a ConditionalOperator, from Enea Zaffanella

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
47e1f7c68bf375cac470fdb2b599ddbb395aeb52 26-Aug-2009 Douglas Gregor <dgregor@apple.com> Source location information for ? and : in a ConditionalOperator, from Enea Zaffanella

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
936d0d6b7438b967f0ee65c36f186c1adeb23161 26-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Fix bug in __extension__ handling for declarations, from Abramo
Bagnara with a fix from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
arse/DeclSpec.h
91a2886d558ea6ca7a0bed73ab5acea5ae78eac2 26-Aug-2009 Douglas Gregor <dgregor@apple.com> Fix bug in __extension__ handling for declarations, from Abramo
Bagnara with a fix from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
arse/DeclSpec.h
3e208d820f141072cfbb82bee660850654932e66 26-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics and recovery when the nested-name-specifier of a
qualified name does not actually refer into a class/class
template/class template partial specialization.

Improve printing of nested-name-specifiers to eliminate redudant
qualifiers. Also, make it possible to output a nested-name-specifier
through a DiagnosticBuilder, although there are relatively few places
that will use this leeway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80056 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
dacd434c49658286c380c7b4c357d76d53cb4aa1 26-Aug-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics and recovery when the nested-name-specifier of a
qualified name does not actually refer into a class/class
template/class template partial specialization.

Improve printing of nested-name-specifiers to eliminate redudant
qualifiers. Also, make it possible to output a nested-name-specifier
through a DiagnosticBuilder, although there are relatively few places
that will use this leeway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80056 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
asic/Diagnostic.h
asic/DiagnosticSemaKinds.td
093ba8b2ac7f6fae34282b88dd142c2eb5ea062f 26-Aug-2009 Anders Carlsson <andersca@mac.com> Parsing of pseudo-destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80055 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ec7738776ba68576db5d8316af399d1f983245ee 26-Aug-2009 Anders Carlsson <andersca@mac.com> Parsing of pseudo-destructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80055 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c03d3303fb298ae86bf5d5d6c98755928fdbde00 26-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Improve support for out-of-line definitions of nested templates and
their members, including member class template, member function
templates, and member classes and functions of member templates.

To actually parse the nested-name-specifiers that qualify the name of
an out-of-line definition of a member template, e.g.,

template<typename X> template<typename Y>
X Outer<X>::Inner1<Y>::foo(Y) {
return X();
}

we need to look for the template names (e.g., "Inner1") as a member of
the current instantiation (Outer<X>), even before we have entered the
scope of the current instantiation. Since we can't do this in general
(i.e., we should not be looking into all dependent
nested-name-specifiers as if they were the current instantiation), we
rely on the parser to tell us when it is parsing a declaration
specifier sequence, and, therefore, when we should consider the
current scope specifier to be a current instantiation.

Printing of complicated, dependent nested-name-specifiers may be
somewhat broken by this commit; I'll add tests for this issue and fix
the problem (if it still exists) in a subsequent commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80044 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
495c35d291da48c4f5655bbb54d15128ddde0d4d 26-Aug-2009 Douglas Gregor <dgregor@apple.com> Improve support for out-of-line definitions of nested templates and
their members, including member class template, member function
templates, and member classes and functions of member templates.

To actually parse the nested-name-specifiers that qualify the name of
an out-of-line definition of a member template, e.g.,

template<typename X> template<typename Y>
X Outer<X>::Inner1<Y>::foo(Y) {
return X();
}

we need to look for the template names (e.g., "Inner1") as a member of
the current instantiation (Outer<X>), even before we have entered the
scope of the current instantiation. Since we can't do this in general
(i.e., we should not be looking into all dependent
nested-name-specifiers as if they were the current instantiation), we
rely on the parser to tell us when it is parsing a declaration
specifier sequence, and, therefore, when we should consider the
current scope specifier to be a current instantiation.

Printing of complicated, dependent nested-name-specifiers may be
somewhat broken by this commit; I'll add tests for this issue and fix
the problem (if it still exists) in a subsequent commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80044 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
2e38e1e3988ef4a50b3551a33c8decc9790f8fe3 25-Aug-2009 Ted Kremenek <kremenek@apple.com> Fix crash reported in <rdar://problem/7124210> by "back-porting" some of the
implicit cast logic in RegionStoreManager to BasicStoreManager. This involved
moving CastRetriedVal from RegionStoreManager to StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80026 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
1894dce96476dbe58c0e60d47f8987cbeb3d3869 25-Aug-2009 Ted Kremenek <kremenek@apple.com> Fix crash reported in <rdar://problem/7124210> by "back-porting" some of the
implicit cast logic in RegionStoreManager to BasicStoreManager. This involved
moving CastRetriedVal from RegionStoreManager to StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80026 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
90d6e4d832c48f214970b9be930fd11b2cf60282 25-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Changed condition of an assert.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
cf5c19b9b7145e7fc092fa1309085deded25b0f1 25-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Changed condition of an assert.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d7a0049ccf7c0ca3fbd0210c2f6cdd47e7705a41 25-Aug-2009 Ted Kremenek <kremenek@apple.com> Move logic of GRExprEngine::EvalBinOp to SValuator::EvalBinOp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80018 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/SValuator.h
ff4264dae31cf42807b64ecc114906b0b835690a 25-Aug-2009 Ted Kremenek <kremenek@apple.com> Move logic of GRExprEngine::EvalBinOp to SValuator::EvalBinOp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80018 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/SValuator.h
82d05b9db0e33bfd819442cbc51dfa5c5818669a 25-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Sanity checking for statement reference counts. Thanks for the suggestion, Fariborz

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8b55ce79391dcce51c52f8aff923f4607e6cd977 25-Aug-2009 Douglas Gregor <dgregor@apple.com> Sanity checking for statement reference counts. Thanks for the suggestion, Fariborz

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b4fa87b8e064c6b104c5e918e7df0587c8d9bc27 25-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove CodeDecl and CFG from GRExprEngine and GRStateManager.
Now AnalysisManager is the only place we can get CodeDecl.
This leads to an API change: GRState::bindExpr() now takes the CFG argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79980 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
5032ffe4259e7d436f2eb19e5a29fdae559e7c12 25-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove CodeDecl and CFG from GRExprEngine and GRStateManager.
Now AnalysisManager is the only place we can get CodeDecl.
This leads to an API change: GRState::bindExpr() now takes the CFG argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79980 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
dd5c0339f04bb08e2397571eb41a97e01b3aa0db 25-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove Decl and CFG from ExplodedGraph. This leads to a series small changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79973 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
cc0255383f96a557c36923f602819bdb0cdd2761 25-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove Decl and CFG from ExplodedGraph. This leads to a series small changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79973 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
fef99322746767af932eec8260f2ce7a813e4c01 25-Aug-2009 Anders Carlsson <andersca@mac.com> Add Decl getter/setters for uninstantiated default arguments for function parameters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
66e78e23e35630e72d77b27ea145f236f49e2732 25-Aug-2009 Anders Carlsson <andersca@mac.com> Add Decl getter/setters for uninstantiated default arguments for function parameters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d53d05841afc14d472a0d43a7d0ce81558c0fb9c 25-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of the template parameter depth properly when we have
member templates declared inside other templates. This allows us to
match out-of-line definitions of member function templates within
class templates to the declarations within the class template. We
still can't handle out-of-line definitions for member class templates,
however.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79955 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c3058338075a2132e057f1249a13b55a81fe021c 25-Aug-2009 Douglas Gregor <dgregor@apple.com> Keep track of the template parameter depth properly when we have
member templates declared inside other templates. This allows us to
match out-of-line definitions of member function templates within
class templates to the declarations within the class template. We
still can't handle out-of-line definitions for member class templates,
however.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79955 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
27959208cc1499c65770d46337979306600de498 25-Aug-2009 Ted Kremenek <kremenek@apple.com> ConstraintManager::AssumeDual now accepts a 'DefinedSVal' instead of 'SVal' for
the condition. This eliminates a source of bugs where the client doesn't
correctly reason about undefined or unknown values. This fixes PR 4759.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/SVals.h
08780078183ae4b2534c69a3e0ded596cdb695ba 25-Aug-2009 Ted Kremenek <kremenek@apple.com> ConstraintManager::AssumeDual now accepts a 'DefinedSVal' instead of 'SVal' for
the condition. This eliminates a source of bugs where the client doesn't
correctly reason about undefined or unknown values. This fixes PR 4759.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/SVals.h
4a73ab2981ca6b80af515262c852318a2f48b985 25-Aug-2009 Ted Kremenek <kremenek@apple.com> Introduce 'DefinedSVal', an intermediate parent class between Loc/NonLoc and
SVal. This allows us to use the C++ type system to distinguish between SVals
that are potentially unknown/undefined and those that are not.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79951 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
c3a94151d12e3821f760e1e342f719ddeebeea19 25-Aug-2009 Ted Kremenek <kremenek@apple.com> Introduce 'DefinedSVal', an intermediate parent class between Loc/NonLoc and
SVal. This allows us to use the C++ type system to distinguish between SVals
that are potentially unknown/undefined and those that are not.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79951 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
d5afcd799493200dfe8fca7f33311c34d27a3b0b 24-Aug-2009 Chris Lattner <sabre@nondot.org> normalize the CharacterLiteral::getLocation method name, patch
by Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
018d8e0596dd57401eeddcf11ac84ff0a065fbbe 24-Aug-2009 Chris Lattner <sabre@nondot.org> normalize the CharacterLiteral::getLocation method name, patch
by Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b35c799aeb381f5e4e8a61e839a1bea9cc21a68e 24-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Try to complete a type before looking for conversion functions within
that type. Note that we do not produce a diagnostic if the type is
incomplete; rather, we just don't look for conversion functions. Fixes PR4660.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5842ba9fd482bb2fe5198b32c2ae549cd5474e6d 24-Aug-2009 Douglas Gregor <dgregor@apple.com> Try to complete a type before looking for conversion functions within
that type. Note that we do not produce a diagnostic if the type is
incomplete; rather, we just don't look for conversion functions. Fixes PR4660.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
2e967de5e6f7a9ab2e382bc3b3bed638d12bdd4b 24-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove TargetInfo::getTargetPrefix().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
55cc2ed722e041228670d26d548e5590e355aced 24-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove TargetInfo::getTargetPrefix().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
608b388b563b5ccf7eeac5da78b539ea8f7ae4cd 24-Aug-2009 Daniel Dunbar <daniel@zuster.org> Switch TargetInfo to store an llvm::Triple.
- Primarily to discourage clients form making decisions based on the string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79901 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1752ee4849f4c37f5e03193e658be92650b0e65a 24-Aug-2009 Daniel Dunbar <daniel@zuster.org> Switch TargetInfo to store an llvm::Triple.
- Primarily to discourage clients form making decisions based on the string.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79901 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
4eff2865ac5f8dc5fce65a523e27dba02d56547f 24-Aug-2009 Chris Lattner <sabre@nondot.org> prune #includes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79889 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
0fa0daafdfc631681cc42a26a99618e9f9e63f97 24-Aug-2009 Chris Lattner <sabre@nondot.org> prune #includes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79889 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
02fdbfe99a5648dbca42720198f420acccaf5ac5 23-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Catch a few more cases of illegal comparisons.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3075e760ceb73b6fafc2fb4977ad68552d83aef8 23-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Catch a few more cases of illegal comparisons.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79793 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
124569f192b4c4cc6d5d0bcaa310d618fe4456e0 23-Aug-2009 Chris Lattner <sabre@nondot.org> Eli points out that we really must diagnose "void* > 0" as an extension.
Explicitly add it as an EXTENSION instead of an EXTWARN so that it only
comes out with -pedantic. Thanks Eli!




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
06c0f5b1bb1623a93a2bc4c345fb3be52a2b22a7 23-Aug-2009 Chris Lattner <sabre@nondot.org> Eli points out that we really must diagnose "void* > 0" as an extension.
Explicitly add it as an EXTENSION instead of an EXTWARN so that it only
comes out with -pedantic. Thanks Eli!




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
512f4ba8728430f8b7c015123fe12eecd8991dc0 23-Aug-2009 Anders Carlsson <andersca@mac.com> Add CK_NullToMemberPointer and CK_BaseToDerivedMemberPointer cast kinds. Make -ast-dump print out the cast kinds of cast expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
27a5b9b9babd1e4f8a19c5c9c0736c4b311c79b2 23-Aug-2009 Anders Carlsson <andersca@mac.com> Add CK_NullToMemberPointer and CK_BaseToDerivedMemberPointer cast kinds. Make -ast-dump print out the cast kinds of cast expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9a0c2a528cab3391cc1c8635155a12fc1d4240b1 23-Aug-2009 Anders Carlsson <andersca@mac.com> Add a -fno-elide-constructors option to clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
92f5822df6a0d7571df44b5d279ed4f017fbb0e6 23-Aug-2009 Anders Carlsson <andersca@mac.com> Add a -fno-elide-constructors option to clang-cc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
6a5eb0ea571145251124a14a21c417add4f43253 22-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Removed couple of FIXME comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c47285c44fdffa6b2dbdeb3ee825e6e856e31e5f 22-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Removed couple of FIXME comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79757 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
71da36ef59252de09ee7515ed73a2d62248a3b96 22-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Removed -Wundeclared-selector and -Wreadonly-setter-attrs from
-Wmost group (too noisy). Placed warning on parameter type
misatch between methods in sub and super class under
-Wsuper-class-method-mismatch (also too noisy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
92eaacbccfa27837de0ee4749062cf91b8364508 22-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Removed -Wundeclared-selector and -Wreadonly-setter-attrs from
-Wmost group (too noisy). Placed warning on parameter type
misatch between methods in sub and super class under
-Wsuper-class-method-mismatch (also too noisy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
b68ac567934bb139c5ac01d6eecf9d1b56a59964 22-Aug-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Second half of, clang, AuroraUX toolchain support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79713 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
e7925a075f110ab21afeae084670a155dea568e3 22-Aug-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Second half of, clang, AuroraUX toolchain support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79713 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
6ee3505754a995ce47e91de424cab07631a64248 22-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Implement delayed parsing for member function templates. Fixes PR4608.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79709 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d83d04041f64a2c89123d227fa8003b482391279 22-Aug-2009 Douglas Gregor <dgregor@apple.com> Implement delayed parsing for member function templates. Fixes PR4608.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79709 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
8724ebaa64d8f4d9d943a24de8c040da92a17fea 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Remove 'AnalysisContext::setDecl()', as we the Decl associated with an
AnalysisContext should never change. Along the way, propagate some constness
around.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79701 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
2376002038c8b904acd20be754aedd1a7471be71 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Remove 'AnalysisContext::setDecl()', as we the Decl associated with an
AnalysisContext should never change. Along the way, propagate some constness
around.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79701 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
698edee0c2a62bdee9165f057801458299a7ccf5 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Constify LocationContext* (parent) and Stmt* fields in LocationContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79700 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
54c809b19444a01444f36e93d1d28c9a5668484c 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Constify LocationContext* (parent) and Stmt* fields in LocationContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79700 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
22e45e8d4c55977fa5e1c9b10d20c3d15f67f43f 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Remove 'SelfRegion' field from both BasicStoreManager and RegionStoreManager.
SelfRegion represented the object bound to 'self' (when analyzing Objective-C
methods) upon entry to a method. Having this region stored on the side ignores
the current stack frame that we might be analyzing (among other things), and is
a problem for interprocedural analysis.

For RegionStoreManager, the value for SelfRegion is just lazily created.

For BasicStoreManager, the value for SelfRegion is bound eagerly to 'self', but
no explicit tracking of SelfRegion on the side is made.

As part of this change, remove the restriction in BasicStoreManager that we only
track ivars for 'self'. This shouldn't actually change anything in terms of
precision, and simplifies the logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79694 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
82cd37cf1cccde162d1f13eda6cdfe1398216f36 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Remove 'SelfRegion' field from both BasicStoreManager and RegionStoreManager.
SelfRegion represented the object bound to 'self' (when analyzing Objective-C
methods) upon entry to a method. Having this region stored on the side ignores
the current stack frame that we might be analyzing (among other things), and is
a problem for interprocedural analysis.

For RegionStoreManager, the value for SelfRegion is just lazily created.

For BasicStoreManager, the value for SelfRegion is bound eagerly to 'self', but
no explicit tracking of SelfRegion on the side is made.

As part of this change, remove the restriction in BasicStoreManager that we only
track ivars for 'self'. This shouldn't actually change anything in terms of
precision, and simplifies the logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79694 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
8c860df7de4a8e2e56020ad1907b81d1c242738a 22-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Implement conversion function templates, along with the ability to use
template argument deduction from a conversion function (C++
[temp.deduct.conv]) with implicit conversions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
65ec1fda479688d143fe2403242cd9c730c800a1 22-Aug-2009 Douglas Gregor <dgregor@apple.com> Implement conversion function templates, along with the ability to use
template argument deduction from a conversion function (C++
[temp.deduct.conv]) with implicit conversions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6555ff9df18a7fe9a58421e7da567937e144c068 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Add LocationContext* field to VarRegion. This is needed for interprocedural analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79680 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
d17da2b99f323fa91b01e1dd119cc32e0ee8197d 22-Aug-2009 Ted Kremenek <kremenek@apple.com> Add LocationContext* field to VarRegion. This is needed for interprocedural analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79680 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
050cabf8b5ba0448c07fca099f3bcfceb1ad77a1 21-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce support for constructor templates, which can now be declared
and will participate in overload resolution. Unify the instantiation
of CXXMethodDecls and CXXConstructorDecls, which had already gotten
out-of-sync.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
dec06664a1c4d8984251083db2215875aea1c80d 21-Aug-2009 Douglas Gregor <dgregor@apple.com> Introduce support for constructor templates, which can now be declared
and will participate in overload resolution. Unify the instantiation
of CXXMethodDecls and CXXConstructorDecls, which had already gotten
out-of-sync.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
c6c3838a12f723db5b808c55700f7f6d9b81240d 21-Aug-2009 Chris Lattner <sabre@nondot.org> remove a dead warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0aa3f75d161629a2172696093e4ae40c2fe180b3 21-Aug-2009 Chris Lattner <sabre@nondot.org> remove a dead warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dae3e75fa046ddb930251c67b65e2f6cf97db7d0 21-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Introduce getConstantArrayElementCount API and use it in
construction/destruction of array members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0de78998e7bda473b408437053e48661b510d453 21-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Introduce getConstantArrayElementCount API and use it in
construction/destruction of array members.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f4a15d5e3d85e125d5e80778a93ed1c53956863a 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix commentos


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79610 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
f3cd67369289014929ccc8431aaea536adade001 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix commentos


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79610 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
be1f991d902710c2ef8722ce9f2df7c821c92b68 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix refacto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79609 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
7cd830be364eaf98d9c9279e0d58b52dcde614c5 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix refacto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79609 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
ab7c0725f67a6b862607cd0bc124a8b0167ea0d0 21-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Tie the local check NSErrorCheck to a Decl to pave the way
to untie the ExplodedGraph from a specific Decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79588 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
5ab128b02d3b10413fb30738ec9f401dcfb47252 21-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Tie the local check NSErrorCheck to a Decl to pave the way
to untie the ExplodedGraph from a specific Decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79588 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
d55021f24c4264133442c7bbc7e486a50124cf92 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove comma at the end of enumerator list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79586 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
3caa4fb0d128575903fa2a024c776a747934538c 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove comma at the end of enumerator list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79586 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
42556e426eaf5b19971c2dd15c0564657fcdd235 21-Aug-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
a5d82000f7b173a0a5ce34dc8c09a03f98d9e439 21-Aug-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
90107998c89fe5f17d3d48b57c8bcd2deaa51d00 21-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Make the new Objective-C "id" and "Class" redefinition types special
types that are preloaded by the PCH file. Fixes PCH breakage
introduced in r79248.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79583 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
d1571acc700b652a52c766e36a6c688d9bf6f3a1 21-Aug-2009 Douglas Gregor <dgregor@apple.com> Make the new Objective-C "id" and "Class" redefinition types special
types that are preloaded by the PCH file. Fixes PCH breakage
introduced in r79248.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79583 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
398a801c9b914b01c4f6222c8338448314dd6f4f 21-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Initial support for parsing and representation of member function templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79570 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
37b372b76a3fafe77186d7e6079e5642e2017478 21-Aug-2009 Douglas Gregor <dgregor@apple.com> Initial support for parsing and representation of member function templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79570 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
9e2b9e01aeaf38e474da3acce29f2f751b727ad7 20-Aug-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Issue an error if the user specifies parameters in a function marked as ISR.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79544 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
da3e03ec5d7161135bd90c0786421e8994bcc2f8 20-Aug-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Issue an error if the user specifies parameters in a function marked as ISR.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79544 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
128cdc592c93af458ae89032d83dc75242eac52d 20-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Using "ObjCImplicitSetterGetterRefExpr" instead of "ObjCImplctSetterGetterRefExpr".
A field rename and more comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79537 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
rontend/PCHBitCodes.h
09105f52b1f28cbb1374c27c3c70f5517e2c465d 20-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Using "ObjCImplicitSetterGetterRefExpr" instead of "ObjCImplctSetterGetterRefExpr".
A field rename and more comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79537 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
rontend/PCHBitCodes.h
627c055b81f90ad8af138615887af68a55bd1383 20-Aug-2009 John McCall <rjmccall@apple.com> Add syntax examples for the friend declaration types.

Remove an assert trivialized by dominating code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f18970d1dd3a88b7a50e9abd4fd4ceef675a8a2e 20-Aug-2009 John McCall <rjmccall@apple.com> Add syntax examples for the friend declaration types.

Remove an assert trivialized by dominating code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1931cc820eeece9852582c3c3896c8e548f698a8 20-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Fix bit-field promotion to be a bit closer to the behavior of gcc.
Patch by Enea Zaffanella, with some simplifications/corrections to
isPromotableBitField by me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
04e8357f6801e9ff52673e7e899a67bbabf9de93 20-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Fix bit-field promotion to be a bit closer to the behavior of gcc.
Patch by Enea Zaffanella, with some simplifications/corrections to
isPromotableBitField by me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d64b41e7dda166fef72cb25b2c26f28c0c22a425 20-Aug-2009 John McCall <rjmccall@apple.com> Basic nested-template implementation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
e29ba20148e9b7835ad463b39cd4ee9223eafbbf 20-Aug-2009 John McCall <rjmccall@apple.com> Basic nested-template implementation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
28bf0810110322cc6a3b6604482b0f06751d9e69 20-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename: ProgramPoint::getContext() => ProgramPoint::getLocationContext().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/ProgramPoint.h
fafd3834754d2093e0ad7a1c005860fd527ecb7f 20-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename: ProgramPoint::getContext() => ProgramPoint::getLocationContext().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/ProgramPoint.h
ba47c2f0e888abadd4cbaaee049f04b8c9a60229 20-Aug-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Keep track of the right paren ')' source location in a function declarator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79489 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
82bf01061b97404fed8c422fc0eda0a380689cc9 20-Aug-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep track of the right paren ')' source location in a function declarator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79489 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
274d336c68ad8d36d8859370578dba9b97ec7f5f 19-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove now unnecessary helper methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79460 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
44ba7bf54434be88bda7a752f857d42cc92b462d 19-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove now unnecessary helper methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79460 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
60987c9074e5ae6d6a1a2cba8bbf36788f5ea82b 19-Aug-2009 Daniel Dunbar <daniel@zuster.org> Convert parts of Rewriter to StringRef based API.
- Please accept my sincere apologies for the gratuitous elimination of code
duplication, manual string length counting, unnecessary strlen calls, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79448 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
d7407dc92c7d19cafce429e7e1cf9819d3fc0b92 19-Aug-2009 Daniel Dunbar <daniel@zuster.org> Convert parts of Rewriter to StringRef based API.
- Please accept my sincere apologies for the gratuitous elimination of code
duplication, manual string length counting, unnecessary strlen calls, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79448 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
eb627495cc903ed7c9980107b256a7ef490b8dd5 19-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Get the Decl from the current ExplodedNode. Eventually the diagnostic client
and other core analysis logic will be untied to a particular Decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79420 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
f7a50a4ee255b3a624ae64125537a7bdbd1da0ef 19-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Get the Decl from the current ExplodedNode. Eventually the diagnostic client
and other core analysis logic will be untied to a particular Decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79420 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
6ae7d117d878330ed52c8c50265168678b348cae 19-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Make integer promotions work correctly on PIC16 and other platforms
where sizeof(short) == sizeof(int). Move UsualArithmeticConversionsType
out of Sema, since it was only there as a historical artifact. Patch by
Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a95d75769edae299816ec7fd9bbcdf1ef617c5c9 19-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Make integer promotions work correctly on PIC16 and other platforms
where sizeof(short) == sizeof(int). Move UsualArithmeticConversionsType
out of Sema, since it was only there as a historical artifact. Patch by
Enea Zaffanella.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fd3d5fdac0d25464e1b9c36bc646965494d44f66 19-Aug-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce LocInfoType which is a Sema-specific implementation detail.

This is a Type subclass that can hold a DeclaratorInfo* when we have type source info coming
out of a declarator that we want to preserve. This is used only at the "border" of Parser/Sema for
passing/getting QualTypes, it does not participate in the type system semantics in any way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1bb8a45f7386a23871598d05141a07af03067925 19-Aug-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce LocInfoType which is a Sema-specific implementation detail.

This is a Type subclass that can hold a DeclaratorInfo* when we have type source info coming
out of a declarator that we want to preserve. This is used only at the "border" of Parser/Sema for
passing/getting QualTypes, it does not participate in the type system semantics in any way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79394 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b17120c5d87b1b078891071188b89ec4fe6857bf 19-Aug-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema interfaces.

DeclaratorDecl contains a DeclaratorInfo* to keep type source info.
Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl.
EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo.

Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79392 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclObjC.h
ST/DeclTemplate.h
a1d5662d96465f0fddf8819d245da4d19b892eff 19-Aug-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema interfaces.

DeclaratorDecl contains a DeclaratorInfo* to keep type source info.
Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl.
EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo.

Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79392 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclObjC.h
ST/DeclTemplate.h
f1a75054ec58a51b415e7cc1b317e20ec3504c32 19-Aug-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce DeclaratorInfo and TypeLoc, intended to be used for storing and reading source information for types.

DeclaratorInfo will contain a flat memory block for source information about a type that came out of a declarator.
TypeLoc and its subclasses will be used by clients as wrappers to "traverse" the memory block and read the information.

Both DeclaratorInfo and TypeLoc are not utilized in this commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/TypeLoc.h
ST/TypeLocNodes.def
b17166c8077cd900cca83a895c43b30ea6660598 19-Aug-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce DeclaratorInfo and TypeLoc, intended to be used for storing and reading source information for types.

DeclaratorInfo will contain a flat memory block for source information about a type that came out of a declarator.
TypeLoc and its subclasses will be used by clients as wrappers to "traverse" the memory block and read the information.

Both DeclaratorInfo and TypeLoc are not utilized in this commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/TypeLoc.h
ST/TypeLocNodes.def
5bb99723ed13ea4fe0d6b9bbb837b3c04daacd29 18-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed ClassProp data member of ObjCImplctSetterGetterRefExpr
to InterfaceDecl, as it is unrelated to any property and
holds the InterfaceDecl needed for accessing class getter/setter
methods using the dot-syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
d2ae5aa732e8587816fd7a7be911460e337c178e 18-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed ClassProp data member of ObjCImplctSetterGetterRefExpr
to InterfaceDecl, as it is unrelated to any property and
holds the InterfaceDecl needed for accessing class getter/setter
methods using the dot-syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
1c4da457d434b07b67f4d7dbb0b31351142de64d 18-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed ObjCKVCRefExpr to ObjCImplctSetterGetterRefExpr.
Removed an unnecessary loop to get to setters incoming
argument. Added DoxyGen comments. Still more work
to do in this area (WIP).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
rontend/PCHBitCodes.h
154440e6a8fa6ac5bca395876d79b530b39a2c1c 18-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed ObjCKVCRefExpr to ObjCImplctSetterGetterRefExpr.
Removed an unnecessary loop to get to setters incoming
argument. Added DoxyGen comments. Still more work
to do in this area (WIP).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
rontend/PCHBitCodes.h
e9835e137aeb9eb377f86cda52942c5acf279185 18-Aug-2009 Anders Carlsson <andersca@mac.com> Change ActOnReturnStmt to not take a FullExprArg. Instead, Sema will wrap the return expr inside a CXXExprWithTemporaries if needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79342 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f53b4433abb7a3bc14c0329d3175cbc291280137 18-Aug-2009 Anders Carlsson <andersca@mac.com> Change ActOnReturnStmt to not take a FullExprArg. Instead, Sema will wrap the return expr inside a CXXExprWithTemporaries if needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79342 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
8e69143ac6ce2bf331e8e81b63351866f0162b10 18-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused parameter BugReporter due to previous patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79328 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
292a5c04694ebf0cfcf41f5afe7e3db27019260e 18-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused parameter BugReporter due to previous patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79328 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
b31dd5bbb7f02867efd9210a92949d00bd5bbc1e 18-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Now we can get the CFG from the ProgramPoint. No need to pass in the
BugReporter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79327 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/BugReporter.h
50d5bc4e3b53eb8bb4ebf198f1213348a3fa0f38 18-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Now we can get the CFG from the ProgramPoint. No need to pass in the
BugReporter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79327 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/BugReporter.h
c447418cd19ac0a79c404455c2b35de76d415984 18-Aug-2009 Ted Kremenek <kremenek@apple.com> Enhance static analyzer diagnostics by introducing a new 'EnhancedBugReporter'
which allows custom checks to register callback creator functions for creating
BugReporterVisitor objects. This allows various checks to include diagnostics
such as 'assuming value is null' with little extra work. Eventually this API
should be refactored to be cleaner and more simple.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79302 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/Checker.h
592362b46ad69db0db0988e7f9d8cbe647510bdd 18-Aug-2009 Ted Kremenek <kremenek@apple.com> Enhance static analyzer diagnostics by introducing a new 'EnhancedBugReporter'
which allows custom checks to register callback creator functions for creating
BugReporterVisitor objects. This allows various checks to include diagnostics
such as 'assuming value is null' with little extra work. Eventually this API
should be refactored to be cleaner and more simple.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79302 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/Checker.h
44663db1b5b82107ccb94fe1cc08de2b1adf3fac 17-Aug-2009 David Chisnall <csdavec@swan.ac.uk> Initial patch to support definitions of id and Class from headers in Objective-C code.

This currently breaks test/SemaObjC/id-isa-ref.m and issues some spurious warnings when you attempt to assign a struct objc_class* value to a Class variable. The test case probably should fail as it's written, because without the definition of Class the compiler should not assume struct objc_class* is a valid receiver type, but it's left broken because it would be nice if we could get that passing too for the special case of isa.

Approved by snaroff.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0f436560640a1cff5b6d96f80f540770f139453f 17-Aug-2009 David Chisnall <csdavec@swan.ac.uk> Initial patch to support definitions of id and Class from headers in Objective-C code.

This currently breaks test/SemaObjC/id-isa-ref.m and issues some spurious warnings when you attempt to assign a struct objc_class* value to a Class variable. The test case probably should fail as it's written, because without the definition of Class the compiler should not assume struct objc_class* is a valid receiver type, but it's left broken because it would be nice if we could get that passing too for the special case of isa.

Approved by snaroff.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5c65d29c4215b57c2a2b72f176127ef4becadff9 17-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79229 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
94f1d16bb0f46c22bc51f4d7a483b77c0766201d 17-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79229 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
43c60b81bb2d3dd7684f2d7af0f1241fac3f1cce 17-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> To make the analysis independent on the locally stored liveness and cfg
of GRStateManager and GRExprEngine, pass the initial location context
to the getInitialState() method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79228 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/Store.h
17fd8632dcda97022a51effc24060eacdad9dbe0 17-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> To make the analysis independent on the locally stored liveness and cfg
of GRStateManager and GRExprEngine, pass the initial location context
to the getInitialState() method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79228 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRSubEngine.h
nalysis/PathSensitive/Store.h
010bd7dc60facc8769d91521d9a6a6b932eb58bb 16-Aug-2009 Anders Carlsson <andersca@mac.com> Destroy bound temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79196 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
8478ce6d3f2416a694e39f791655a473c3907d62 16-Aug-2009 Anders Carlsson <andersca@mac.com> Destroy bound temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79196 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
b2df16619b7395f44d53800d60182cd5da4cef02 16-Aug-2009 Chris Lattner <sabre@nondot.org> Improve the diagnostic emitted when an unused ObjC property getter
is found. Instead of complaining about a generic "unused expr",
emit:
t.m:7:3: warning: property access result unused - getters should not have side effects

While objc property getters *could* have side effects, according to
the language best practices, they *shouldn't*. Hopefully the
diagnostic now gets this across.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
419cfb318cd69b6c717019288d5a3822be18d8f9 16-Aug-2009 Chris Lattner <sabre@nondot.org> Improve the diagnostic emitted when an unused ObjC property getter
is found. Instead of complaining about a generic "unused expr",
emit:
t.m:7:3: warning: property access result unused - getters should not have side effects

While objc property getters *could* have side effects, according to
the language best practices, they *shouldn't*. Hopefully the
diagnostic now gets this across.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bd9f51a0eb90a9be5e1394231d5e2925c546d527 16-Aug-2009 Anders Carlsson <andersca@mac.com> AddInitializerToDecl can't take a FullExprArg. Make it take an ExprArg, and create the CXXExprWithTemporaries before setting the initializer on the VarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79176 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9abf2aedae7538cfd85f3ff0898a6d14385c8e36 16-Aug-2009 Anders Carlsson <andersca@mac.com> AddInitializerToDecl can't take a FullExprArg. Make it take an ExprArg, and create the CXXExprWithTemporaries before setting the initializer on the VarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79176 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7fb13801b165ac3b72d62fde53f16187e6cdec07 16-Aug-2009 Anders Carlsson <andersca@mac.com> Move builtin call checking out into a separate function, make CheckFunctionCall and CheckBlockCall return bool instead. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79157 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
d406bf0e8c17012110a8476d03c6f9a97b56ecf7 16-Aug-2009 Anders Carlsson <andersca@mac.com> Move builtin call checking out into a separate function, make CheckFunctionCall and CheckBlockCall return bool instead. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79157 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
10747ff6448c87cdfd2b438042738036ecb5de86 15-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Implement __is_empty. Patch by Sean Hunt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1d954f6a0057cb55a3a5d483904a3c57d03c996f 15-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Implement __is_empty. Patch by Sean Hunt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
190f9406d5fea03448d4cae409ca4d6c046e812d 15-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Ignore -Wno-import.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
0d9a279e9ebac8d99267a4dce645186e0b72816e 15-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Ignore -Wno-import.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79128 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
2ac46a53b5e5098e3c413cd65518981121f48d23 15-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Extend the ProgramPoint to include the context information LocationContext,
which is either a stack frame context of the function or a local scope
context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79072 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
25e695b2d574d919cc1bbddf3a2efe073d449b1c 15-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Extend the ProgramPoint to include the context information LocationContext,
which is either a stack frame context of the function or a local scope
context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79072 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/PathSensitive/AnalysisManager.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
cb6dd8a2171c0e8e996078a91377b8e9b31c40a3 15-Aug-2009 John McCall <rjmccall@apple.com> Disable all recognition of main() in -ffreestanding. Addresses bug #4720.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
07a5c22bb6fb0674c95205ae189365bf8e1b695e 15-Aug-2009 John McCall <rjmccall@apple.com> Disable all recognition of main() in -ffreestanding. Addresses bug #4720.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f87ef44558ee53d1f8fbe5f43f2655870370e738 15-Aug-2009 Ted Kremenek <kremenek@apple.com> Change handling of attribute 'malloc' to only accept the attribute on function
declarations (and not function pointers). This is consistent with GCC. Accepting
this attribute on function pointers means that the attribute should be treated
as a type qualifier, which apparently is not what GCC does. We obviously can
change this later should we desire to enhance the 'malloc' attribute in this
way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2cff7d16fe58e6d6447ec9cad2af083beb20d6b5 15-Aug-2009 Ted Kremenek <kremenek@apple.com> Change handling of attribute 'malloc' to only accept the attribute on function
declarations (and not function pointers). This is consistent with GCC. Accepting
this attribute on function pointers means that the attribute should be treated
as a type qualifier, which apparently is not what GCC does. We obviously can
change this later should we desire to enhance the 'malloc' attribute in this
way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79060 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3d752dbee56ff1988d81644613aa595fc8d7bfa4 14-Aug-2009 Anders Carlsson <andersca@mac.com> Make the CXXDefaultArgExpr constructor protected and add a static Create function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f1480eee38b59d15438fb7bc50865ac7c7e22403 14-Aug-2009 Anders Carlsson <andersca@mac.com> Make the CXXDefaultArgExpr constructor protected and add a static Create function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
42368bbdc9866806962ce35f27ba7372410bd639 14-Aug-2009 Mike Stump <mrs@apple.com> Deconflate virtual base offsets from non-virtual base offsets.
Deconflate a virtual base primary from a non-virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
215389180617e4edb8aa95a5526509948ed1416f 14-Aug-2009 Mike Stump <mrs@apple.com> Deconflate virtual base offsets from non-virtual base offsets.
Deconflate a virtual base primary from a non-virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
04500242a5c45dd1165547dcaafd88956e197edd 13-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> More toward synthesizing copy assignments. SWIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0270b8aa3f9b50ec3acd1abfd2b97377a3e1bb05 13-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> More toward synthesizing copy assignments. SWIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
651efb73490efb9715fb4ca21cac71b9ae86d2a2 12-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for synthesizing copy assignment operator.
WIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2198ba12b73a8e6801d13f25de38031da6df46b6 12-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for synthesizing copy assignment operator.
WIP.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
23a7302d3447acb67ac823ebb96eb68dea99da6d 12-Aug-2009 Nate Begeman <natebegeman@mac.com> Transition the PCH support for ShuffleVectorExpr over to ASTContext allocation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
888376a2bbcfc2f047902249f8455918e2489ae1 12-Aug-2009 Nate Begeman <natebegeman@mac.com> Transition the PCH support for ShuffleVectorExpr over to ASTContext allocation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d7552175d63ba7dfbaf97da4dff06342938dc87b 12-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> More cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
e96de2dfde487211fb52f9139cdcae64d051a406 12-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> More cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
1e47b19a7b8ed85d5ec17135bc376a5735b3d0ad 12-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove redundant forward declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78781 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
2ddde27ac627a1daf85edcf16e13eedc3b688984 12-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove redundant forward declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78781 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
257589e9035a669dd4c67645009cedca2b491b01 12-Aug-2009 Nate Begeman <natebegeman@mac.com> Fix a fixme by allocating ShuffleVectorExprs in the Context


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a88dc3079bedf70a5cfc39791727e43a10383006 12-Aug-2009 Nate Begeman <natebegeman@mac.com> Fix a fixme by allocating ShuffleVectorExprs in the Context


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
92c7b16d2d171d92187c44a2cf8fa34b0314602a 12-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to warn if a property which is 'assign' by default
may not implement NSCopying protocol in -fobjc-gc[-only] mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
0fd8904c5f71a11d29f67716c3ebdf7ad1c855fb 12-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to warn if a property which is 'assign' by default
may not implement NSCopying protocol in -fobjc-gc[-only] mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
7be34f4c71849160496fc33f5e7a1a150e9d0add 11-Aug-2009 John McCall <rjmccall@apple.com> Add a FriendClassDecl type for holding declarations of friend types in
the AST, and create such declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
c48fbdfb83a5e50fed693f0bdda3396e5b67051d 11-Aug-2009 John McCall <rjmccall@apple.com> Add a FriendClassDecl type for holding declarations of friend types in
the AST, and create such declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
fef75cbb293a4684ae4799d0f4211c4b78fcaf3b 11-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen support for anonymous union data member
copying in copy constructors and used in
default constructor's initializer list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e64941280877d065a27e8cefd2a9038256d0e3ac 11-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen support for anonymous union data member
copying in copy constructors and used in
default constructor's initializer list.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a2ca746d9b6f6e763c0ce2c39ad2d4dc44236d9a 11-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> LLVMContext is a class now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78691 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
f21efe9088a0b3eda1209d1706529f6cb2073092 11-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> LLVMContext is a class now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78691 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
3649308db6bd13b6e3ada598cad1cc40daaf504d 11-Aug-2009 John McCall <rjmccall@apple.com> Argument-dependent lookup for friend declarations. Add a new decl type,
FriendFunctionDecl, and create instances as appropriate.

The design of FriendFunctionDecl is still somewhat up in the air; you can
befriend arbitrary types of functions --- methods, constructors, etc. ---
and it's not clear that this representation captures that very well.
We'll have a better picture when we start consuming this data in access
control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
arse/Action.h
3f9a8a60614b763785d54ad08821745d03a4af70 11-Aug-2009 John McCall <rjmccall@apple.com> Argument-dependent lookup for friend declarations. Add a new decl type,
FriendFunctionDecl, and create instances as appropriate.

The design of FriendFunctionDecl is still somewhat up in the air; you can
befriend arbitrary types of functions --- methods, constructors, etc. ---
and it's not clear that this representation captures that very well.
We'll have a better picture when we start consuming this data in access
control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
arse/Action.h
9d87976f7f2e258d12eb546a473518d493afedd7 11-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor the template-instantiation logic for expressions into a
generic tree transformation (also used for recanonicalization) and a
small amount of template-instantiation-specific logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78645 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
b98b1991c7ad1eaedb863bdbdd784ec164277675 11-Aug-2009 Douglas Gregor <dgregor@apple.com> Refactor the template-instantiation logic for expressions into a
generic tree transformation (also used for recanonicalization) and a
small amount of template-instantiation-specific logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78645 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
e85f43d31101a875a6621e43bde21dcc13d860ff 11-Aug-2009 Nate Begeman <natebegeman@mac.com> Take 2 on AltiVec-style vector initializers.

Fixes PR4704 problems

Addresses Eli's patch feedback re: ugly cast code

Updates all postfix operators to remove ParenListExprs. While this is awful,
no better solution (say, in the parser) is obvious to me. Better solutions
welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
2ef13e5abef0570a9f567b4671367275c05d4d34 11-Aug-2009 Nate Begeman <natebegeman@mac.com> Take 2 on AltiVec-style vector initializers.

Fixes PR4704 problems

Addresses Eli's patch feedback re: ugly cast code

Updates all postfix operators to remove ParenListExprs. While this is awful,
no better solution (say, in the parser) is obvious to me. Better solutions
welcome.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
c0b0396e7e37b56bc73c43c2dc290cd801fa1567 10-Aug-2009 Anders Carlsson <andersca@mac.com> Add a CastInfo struct that will be used for cast information when constructing cast expressions. Right now it only stores the cast kind, but in the future it might store conversion functions and constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
bd0fb30fa2a039439d1a30a83ea896801394d780 10-Aug-2009 Anders Carlsson <andersca@mac.com> Add a CastInfo struct that will be used for cast information when constructing cast expressions. Right now it only stores the cast kind, but in the future it might store conversion functions and constructors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78599 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
43954311b4159a6f058ff19a5d66817afe0d025f 10-Aug-2009 Chris Lattner <sabre@nondot.org> fix a couple of problems with section attributes:

1. Passing something that isn't a string used to cause:
"argument to annotate attribute was not a string literal"
make it say "section attribute" instead.

2. Fix the location of the above message to point to the
bad argument instead of the section token.

3. Implement rdar://4341926, by diagnosing invalid section
specifiers in the frontend rather than letting them slip all
the way to the assembler (a QoI win).

An example of #3 is that we used to produce something like this:

/var/folders/n7/n7Yno9ihEm894640nJdSQU+++TI/-Tmp-//ccFPFGtT.s:2:Expected comma after segment-name
/var/folders/n7/n7Yno9ihEm894640nJdSQU+++TI/-Tmp-//ccFPFGtT.s:2:Rest of line ignored. 1st junk character valued 46 (.).

Daniel improved clang to use llvm_report_error, so now we got:

$ clang t.c -c
fatal error: error in backend: Global variable 'x' has an invalid section specifier 'sadf': mach-o section specifier
requires a segment and section separated by a comma.

with no loc info. Now we get:

$ clang t.c -fsyntax-only
t.c:4:30: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment
and section separated by a comma
int x __attribute__((section("sadf")));
^

which is nice :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
797c3c4f5dc4fda735e55c6b5d6270a54cf6d263 10-Aug-2009 Chris Lattner <sabre@nondot.org> fix a couple of problems with section attributes:

1. Passing something that isn't a string used to cause:
"argument to annotate attribute was not a string literal"
make it say "section attribute" instead.

2. Fix the location of the above message to point to the
bad argument instead of the section token.

3. Implement rdar://4341926, by diagnosing invalid section
specifiers in the frontend rather than letting them slip all
the way to the assembler (a QoI win).

An example of #3 is that we used to produce something like this:

/var/folders/n7/n7Yno9ihEm894640nJdSQU+++TI/-Tmp-//ccFPFGtT.s:2:Expected comma after segment-name
/var/folders/n7/n7Yno9ihEm894640nJdSQU+++TI/-Tmp-//ccFPFGtT.s:2:Rest of line ignored. 1st junk character valued 46 (.).

Daniel improved clang to use llvm_report_error, so now we got:

$ clang t.c -c
fatal error: error in backend: Global variable 'x' has an invalid section specifier 'sadf': mach-o section specifier
requires a segment and section separated by a comma.

with no loc info. Now we get:

$ clang t.c -fsyntax-only
t.c:4:30: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment
and section separated by a comma
int x __attribute__((section("sadf")));
^

which is nice :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
07d7174ab7769b6ca5b2375081500788d89ae1ea 10-Aug-2009 Mike Stump <mrs@apple.com> Add walking bases in reverse order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b98f05c7389a5426c54f0e864043bb34862fa4e7 10-Aug-2009 Mike Stump <mrs@apple.com> Add walking bases in reverse order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
028ba50032038244543bd3630afb0f42a71d49ac 10-Aug-2009 Daniel Dunbar <daniel@zuster.org> Use LLVM's new error handler API to report back end errors using Diagnostic.

For example,
--
ddunbar@giles:Frontend$ clang -c backend-errors.c
fatal error: error in backend: Global variable 'a' has an invalid section specifier
'I AM, not, legal': mach-o section specifier uses an unknown section type.
--
compare to:
--
ddunbar@giles:Frontend$ gcc -c backend-errors.c
/var/folders/DQ/DQ8GT3++HESEzT1obWBynE+++TI/-Tmp-//cc45w2pq.s:2:Expected comma after segment-name
/var/folders/DQ/DQ8GT3++HESEzT1obWBynE+++TI/-Tmp-//cc45w2pq.s:2:Rest of line ignored. 1st junk character valued 77 (M).
--

Yay!

I am not tied to my wording choice, we could also go with "uncoverable error"
for the prefix, or just leave it off entirely.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78554 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
70121ebd65be51d67025914bd3f035515b0caf4f 10-Aug-2009 Daniel Dunbar <daniel@zuster.org> Use LLVM's new error handler API to report back end errors using Diagnostic.

For example,
--
ddunbar@giles:Frontend$ clang -c backend-errors.c
fatal error: error in backend: Global variable 'a' has an invalid section specifier
'I AM, not, legal': mach-o section specifier uses an unknown section type.
--
compare to:
--
ddunbar@giles:Frontend$ gcc -c backend-errors.c
/var/folders/DQ/DQ8GT3++HESEzT1obWBynE+++TI/-Tmp-//cc45w2pq.s:2:Expected comma after segment-name
/var/folders/DQ/DQ8GT3++HESEzT1obWBynE+++TI/-Tmp-//cc45w2pq.s:2:Rest of line ignored. 1st junk character valued 77 (M).
--

Yay!

I am not tied to my wording choice, we could also go with "uncoverable error"
for the prefix, or just leave it off entirely.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78554 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
48cf40f8f2e06e54a63ff13f06a567f5cf489404 10-Aug-2009 Daniel Dunbar <daniel@zuster.org> Revert r78535, it is causing a number of failures to build projects.

--- Reverse-merging r78535 into '.':
D test/Sema/altivec-init.c
U include/clang/Basic/DiagnosticSemaKinds.td
U include/clang/AST/Expr.h
U include/clang/AST/StmtNodes.def
U include/clang/Parse/Parser.h
U include/clang/Parse/Action.h
U tools/clang-cc/clang-cc.cpp
U lib/Frontend/PrintParserCallbacks.cpp
U lib/CodeGen/CGExprScalar.cpp
U lib/Sema/SemaInit.cpp
U lib/Sema/Sema.h
U lib/Sema/SemaExpr.cpp
U lib/Sema/SemaTemplateInstantiateExpr.cpp
U lib/AST/StmtProfile.cpp
U lib/AST/Expr.cpp
U lib/AST/StmtPrinter.cpp
U lib/Parse/ParseExpr.cpp
U lib/Parse/ParseExprCXX.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
1df5109f475bcbc528eb1fb9fdb179dcadbb33a6 10-Aug-2009 Daniel Dunbar <daniel@zuster.org> Revert r78535, it is causing a number of failures to build projects.

--- Reverse-merging r78535 into '.':
D test/Sema/altivec-init.c
U include/clang/Basic/DiagnosticSemaKinds.td
U include/clang/AST/Expr.h
U include/clang/AST/StmtNodes.def
U include/clang/Parse/Parser.h
U include/clang/Parse/Action.h
U tools/clang-cc/clang-cc.cpp
U lib/Frontend/PrintParserCallbacks.cpp
U lib/CodeGen/CGExprScalar.cpp
U lib/Sema/SemaInit.cpp
U lib/Sema/Sema.h
U lib/Sema/SemaExpr.cpp
U lib/Sema/SemaTemplateInstantiateExpr.cpp
U lib/AST/StmtProfile.cpp
U lib/AST/Expr.cpp
U lib/AST/StmtPrinter.cpp
U lib/Parse/ParseExpr.cpp
U lib/Parse/ParseExprCXX.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78551 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
6a7fda0a3b1b7f5229e1121190e009e92f533555 10-Aug-2009 Ryan Flynn <pizza@parseerror.com> warn, as gcc does, if __attribute__((malloc)) applied to function returning non-pointer type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fd6ad3cf9c8fc6904bd5f33212207aa69743fd45 10-Aug-2009 Ryan Flynn <pizza@parseerror.com> warn, as gcc does, if __attribute__((malloc)) applied to function returning non-pointer type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
31af091f101c08ecb39a00c2b4741bec5cc00150 09-Aug-2009 Ryan Flynn <pizza@parseerror.com> map previously ignored __attribute((malloc)) to noalias attribute of llvm function's return

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
76168e289ca4b307259e3bc9b3353f03b05bb6b9 09-Aug-2009 Ryan Flynn <pizza@parseerror.com> map previously ignored __attribute((malloc)) to noalias attribute of llvm function's return

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
bc8e297c7d620cd63eeb31c641dc7f51a1076785 09-Aug-2009 Nate Begeman <natebegeman@mac.com> AltiVec-style vector initializer syntax, vec4 a = (vec4)(a, b, c, d);

In addition to being defined by the AltiVec PIM, this is also the vector
initializer syntax used by OpenCL, so that vector literals are compatible
with macro arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
25b4fdb9d63095448e6cbc97b8865b36b0c8cbb6 09-Aug-2009 Nate Begeman <natebegeman@mac.com> AltiVec-style vector initializer syntax, vec4 a = (vec4)(a, b, c, d);

In addition to being defined by the AltiVec PIM, this is also the vector
initializer syntax used by OpenCL, so that vector literals are compatible
with macro arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
a5e76935d79d84e3a00a2fbb47651799f5da7fef 08-Aug-2009 Ryan Flynn <pizza@parseerror.com> PR4700 - remove shift by 0 warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8045c7393bc83060f812d0f7b1221edbc767407c 08-Aug-2009 Ryan Flynn <pizza@parseerror.com> PR4700 - remove shift by 0 warning

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c915fa76c5429bbc235d8993dc218ad20bc26e3b 08-Aug-2009 Anders Carlsson <andersca@mac.com> Introduce a new PragmaPack attribute, and use it for #pragma pack. The PackedAttr now only represents __attribute__((packed)).

This is necessary because #pragma pack and __attribute__((packed)) have different semantics. No functionality change yet, but this lays the groundwork for fixing a record layout bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
a860e755f1f9f071b6a6a2f96128a6a258f5c331 08-Aug-2009 Anders Carlsson <andersca@mac.com> Introduce a new PragmaPack attribute, and use it for #pragma pack. The PackedAttr now only represents __attribute__((packed)).

This is necessary because #pragma pack and __attribute__((packed)) have different semantics. No functionality change yet, but this lays the groundwork for fixing a record layout bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
7103a89ce3a9e0628f339028a5ef5a8cde6169e0 08-Aug-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Patch should implement packed enums - PR4098. Credit to Anders Johnsen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78471 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
fee13819693c8492f0c364bc704645e844ef737a 08-Aug-2009 Edward O'Callaghan <eocallaghan@auroraux.org> Patch should implement packed enums - PR4098. Credit to Anders Johnsen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78471 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2665057a9cbee200a2c2c0cb7b8585c698d86e52 08-Aug-2009 Anders Carlsson <andersca@mac.com> Get rid of Stmt::Clone now that we can reference count statements instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
d497206844a894a0557e927adf29b34fe960dffd 08-Aug-2009 Anders Carlsson <andersca@mac.com> Get rid of Stmt::Clone now that we can reference count statements instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
a5d06285584d8c5d4db1ebe09e6c48536b37794d 08-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce reference counting for statements and expressions, using it
to allow sharing of nodes. Simplifies some aspects of template
instantiation, and fixes both PR3444 and <rdar://problem/6757457>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
43d9d9243329b1b75d1a6efdad9f16d6fb386b8e 08-Aug-2009 Douglas Gregor <dgregor@apple.com> Introduce reference counting for statements and expressions, using it
to allow sharing of nodes. Simplifies some aspects of template
instantiation, and fixes both PR3444 and <rdar://problem/6757457>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
5c09af0f78493759fee5948784d270d9126a2d51 08-Aug-2009 Anders Carlsson <andersca@mac.com> Add a CK_ArrayToPointerDecay cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
112a0a8ddf23f6d25e0920002d5d4c1df0515f86 08-Aug-2009 Anders Carlsson <andersca@mac.com> Add a CK_ArrayToPointerDecay cast kind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b4671fa23fe684b71594cf2010d0286d0bd2718d 08-Aug-2009 Anders Carlsson <andersca@mac.com> Add CK_ToUnion and use it for aggregate expression codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4d8673b645ad86e496b886a0f80b60763f67071d 08-Aug-2009 Anders Carlsson <andersca@mac.com> Add CK_ToUnion and use it for aggregate expression codegen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b41b2052f4188f2254c28a877c2c8f1787d9d6a4 08-Aug-2009 John McCall <rjmccall@apple.com> Just add global scope to the associated namespaces set instead of tracking it
separately. Add the framework (currently unfed) for finding friend declarations
during argument-dependent lookup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6ff0785f1e58fb2cfb702d2995d076c6648a9a13 08-Aug-2009 John McCall <rjmccall@apple.com> Just add global scope to the associated namespaces set instead of tracking it
separately. Add the framework (currently unfed) for finding friend declarations
during argument-dependent lookup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
e57c0274c8b59b3674582fd7e1acd16ceca5466f 07-Aug-2009 Mike Stump <mrs@apple.com> Add rbegin and rend for virtual bases, might come in handy some day.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
89ed850a1b586a4ed303ee8a8140bed11b85b390 07-Aug-2009 Mike Stump <mrs@apple.com> Add rbegin and rend for virtual bases, might come in handy some day.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bea9cc83e485cc548edde19a25add74ded7cdbb1 07-Aug-2009 Mike Stump <mrs@apple.com> Add ability to generate vcall offsets for primary virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
928f1506eb38bb26a1284b876213a8f5244f6933 07-Aug-2009 Mike Stump <mrs@apple.com> Add ability to generate vcall offsets for primary virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
e7545629eb1bf23badcf749ee1ac1d944ce82e2b 07-Aug-2009 Mike Stump <mrs@apple.com> Fix some const_cast issues. This is the beginning of the rabbit hole.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e607ed068334bacb8d7b093996b4671c6ca79e25 07-Aug-2009 Mike Stump <mrs@apple.com> Fix some const_cast issues. This is the beginning of the rabbit hole.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f109fffb4f803b7d70450d7809c8473037c4af71 07-Aug-2009 Ryan Flynn <pizza@parseerror.com> PR3333: warn when shifting by invalid amount

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78385 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d0439688fea4dedc28125d246bbdec1f5a208660 07-Aug-2009 Ryan Flynn <pizza@parseerror.com> PR3333: warn when shifting by invalid amount

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78385 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
53e8e4b098c89c1833abf07f79e88a9843298317 07-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Separate Stmt::Destroy into the entrypoint for destroying a statement
or expression (Destroy) from the virtual function used to actually
destroy a given expression (DoDestroy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtCXX.h
42602bb40aefcc2751d4078ba88aacf4d965c9bd 07-Aug-2009 Douglas Gregor <dgregor@apple.com> Separate Stmt::Destroy into the entrypoint for destroying a statement
or expression (Destroy) from the virtual function used to actually
destroy a given expression (DoDestroy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtCXX.h
559024e3bc7986eb5b34b40466d5b13d2e96ba60 06-Aug-2009 Ted Kremenek <kremenek@apple.com> Fix a couple false positive "uninitialized value" warnings with RegionStore
involving reasoning about unions (which we don't handle yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78342 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
d4e5a606c9c64e24c05e5f4610796087e911fb9c 06-Aug-2009 Ted Kremenek <kremenek@apple.com> Fix a couple false positive "uninitialized value" warnings with RegionStore
involving reasoning about unions (which we don't handle yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78342 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/Optional.h
dc9d681e44b05d028a6955c9ddd7887b9f626489 06-Aug-2009 John McCall <rjmccall@apple.com> Drop the friend-inner-class diagnostic from an extwarn to an ext and don't
guard its report on GNUMode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78338 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
470c2a9ab6807be8a695e583a41b20ed69082260 06-Aug-2009 John McCall <rjmccall@apple.com> Drop the friend-inner-class diagnostic from an extwarn to an ext and don't
guard its report on GNUMode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78338 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
392245a58d4fe55d5c73427c97a8c7b319108880 06-Aug-2009 John McCall <rjmccall@apple.com> Permit a class to friend its members in C++0x, without restriction.
Permit a class to friend its class members in C++ 98, as long as extensions
are enabled (and even when they aren't, only give an extwarn about it).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7f27d92006936b16a29ca0a5c442476b4f585b21 06-Aug-2009 John McCall <rjmccall@apple.com> Permit a class to friend its members in C++0x, without restriction.
Permit a class to friend its class members in C++ 98, as long as extensions
are enabled (and even when they aren't, only give an extwarn about it).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
85f5ff382b3dc2dcd10f40fde21e92d715a1e54a 06-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Silence gcc warning about non-virtual destructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRSubEngine.h
b1e92b3d3a095cd2ca820148a86f7239f82fe6c6 06-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Silence gcc warning about non-virtual destructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRSubEngine.h
96b3631207f0c63c6a4ba35868a4ed3b05ac8fa7 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> I forgot adding this header for r78298.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78302 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRSubEngine.h
d91bb0c0c47e2219e94238468f0df0e354bdff29 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> I forgot adding this header for r78298.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78302 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRSubEngine.h
0ace2711397eae9217bda32de87e22ff10450386 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Last step of template cleanup: merge *BuilderImpl to *Builder.
Some Builders need further cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78301 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
031ccc0555a82afc2e8afe29e19dd57ff204e2de 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Last step of template cleanup: merge *BuilderImpl to *Builder.
Some Builders need further cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78301 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
7e1bad42adc3f4799471245baf55f4af4dd22f63 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Core analysis engine template cleanup step 2:
merge GRCoreEngineImpl and GRCoreEngine.

Introduce a new interface class GRSubEngine as the subengine of GRCoreEngine.
GRExprEngine subclasses GRSubEngine now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
0111f575b968e423dccae439e501225b8314b257 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Core analysis engine template cleanup step 2:
merge GRCoreEngineImpl and GRCoreEngine.

Introduce a new interface class GRSubEngine as the subengine of GRCoreEngine.
GRExprEngine subclasses GRSubEngine now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
37d7fc35659ce92bbe2fbdd3df16dba78a8c3f05 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78296 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
bb8e6488bda12b41b32fc22397a44510cacdac50 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78296 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
231ea0a935293b674de793a1ea2adb6533ca4c3e 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Core analysis engine template cleanup step 2:
merge ExplodedGraphImpl and ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRState.h
38b02b912e1a55c912f603c4369431264d36a381 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Core analysis engine template cleanup step 2:
merge ExplodedGraphImpl and ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRState.h
e76416737a75369de358bfdbf3751970824aaddb 06-Aug-2009 Ted Kremenek <kremenek@apple.com> Refactor RegionStoreManager::RemoveDeadBindings to also scan the bindings of LazyCompoundSVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78284 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
451ac091cd1868433985396a25cbbf2092ae8ca9 06-Aug-2009 Ted Kremenek <kremenek@apple.com> Refactor RegionStoreManager::RemoveDeadBindings to also scan the bindings of LazyCompoundSVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78284 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
da61ad2a4875cced61d9a02c2d0ec3b91d463414 06-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Support nested-name-specifiers for C++ member access expressions, e.g.,

this->Base::foo

from James Porter!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78278 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
fe85cedd58df7daed29201703cfb8806e12876d0 06-Aug-2009 Douglas Gregor <dgregor@apple.com> Support nested-name-specifiers for C++ member access expressions, e.g.,

this->Base::foo

from James Porter!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78278 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
140607b259f8139dcc2db963e44c8a37299d76f5 06-Aug-2009 John McCall <rjmccall@apple.com> First pass at friend semantics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
67d1a67f3db2f1aa69083c5c94164d6e0ee05b32 06-Aug-2009 John McCall <rjmccall@apple.com> First pass at friend semantics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
ff71ed00addf14e2245d44045fcd64b77af913f3 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> As GRState seems general enough, it is time to merge some template classes
and their impl base classes. This can greatly simply some code of the core
analysis engine. This patch merges ExplodedNodeImpl into ExplodedNode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78270 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/GRWorkList.h
c5619d901a68dc27a9e310a6a831f03efebcd950 06-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> As GRState seems general enough, it is time to merge some template classes
and their impl base classes. This can greatly simply some code of the core
analysis engine. This patch merges ExplodedNodeImpl into ExplodedNode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78270 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/GRWorkList.h
f1172ab2d77c3390757a71d85f15061384f0cac0 06-Aug-2009 Ted Kremenek <kremenek@apple.com> Implement lazy "copying" of structures and arrays in RegionStore. While
RegionStore already lazily abstracted the contents of arrays and structs, when
doing an assignment from one array/struct to another we did an explicit
element-wise copy, which resulted in a loss of laziness and huge performance
problem when analyzing many code bases.

Now RegionStoreManager handles such assignments using a new SVal could
'LazyCompoundSVal', which basically means the value of a given struct or array
(a MemRegion*) in a specific state (GRState). When we do a load from a field
whose encompassing struct binds to a LazyCompoundSVal, we essentially do a field
lookup in the original structure. This means we have essentially zero copying of
data for structs/arrays and everything stays lazy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78268 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
a5e81f1240bcc5b9b0721fc6275075ad7cadaf5e 06-Aug-2009 Ted Kremenek <kremenek@apple.com> Implement lazy "copying" of structures and arrays in RegionStore. While
RegionStore already lazily abstracted the contents of arrays and structs, when
doing an assignment from one array/struct to another we did an explicit
element-wise copy, which resulted in a loss of laziness and huge performance
problem when analyzing many code bases.

Now RegionStoreManager handles such assignments using a new SVal could
'LazyCompoundSVal', which basically means the value of a given struct or array
(a MemRegion*) in a specific state (GRState). When we do a load from a field
whose encompassing struct binds to a LazyCompoundSVal, we essentially do a field
lookup in the original structure. This means we have essentially zero copying of
data for structs/arrays and everything stays lazy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78268 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
bdc004c037cabf798e8fc4192b795de5615a2861 06-Aug-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78259 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
47a434ff3d49e7906eda88e8e8242e4297725b32 06-Aug-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78259 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
8b82eeb5416860903addcb2244445b909573421f 06-Aug-2009 Mike Stump <mrs@apple.com> Calculate the primary base class better and use that when laying down
the vtable. Still a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecordLayout.h
6f376336138ea719e3c4757ae046a5768043b276 06-Aug-2009 Mike Stump <mrs@apple.com> Calculate the primary base class better and use that when laying down
the vtable. Still a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/RecordLayout.h
0063d7392510dc0a567c59415b27bc0a2f299f2c 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Translate -mcmodel=X to -code-model X and pass it to clang-cc. Patch by Pawel Worach!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78190 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
8e9ef0d87dad25f02e5abc6facf528778236115a 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Translate -mcmodel=X to -code-model X and pass it to clang-cc. Patch by Pawel Worach!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78190 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
7c3c0453bc77deb3c95adce7fbe99833c72e1019 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Add support for the -fno-omit-frame-pointer option. Patch by Roman Divacky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78188 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
091038cbdeab8933720a4b236ab41590fa02d78a 05-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Add support for the -fno-omit-frame-pointer option. Patch by Roman Divacky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78188 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
c28afc985a8b167225c02ece59dda573f61cbd9f 05-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a comment that trailed off

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78167 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
b890f04174d52e41db19b883244abb17a3254ef1 05-Aug-2009 Douglas Gregor <dgregor@apple.com> Fix a comment that trailed off

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78167 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CanonicalType.h
cfe6ae592450d8466b4d78b59ff4526266549a9a 05-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce the canonical type smart pointers, and use them in a few places to
tighten up the static type system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclarationName.h
ST/Type.h
50d62d1b4a98adbc83de8f8cd1379ea1c25656f7 05-Aug-2009 Douglas Gregor <dgregor@apple.com> Introduce the canonical type smart pointers, and use them in a few places to
tighten up the static type system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/CanonicalType.h
ST/DeclarationName.h
ST/Type.h
5f41efcda07c02f9a0e7acaed67c862184e3ddac 05-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> If the UnaryOperator has non-location type, use its type to create the
constant value. If the UnaryOperator has location type, create the
constant with int type and pointer width.

This fixes the bug that all pointer increments 'p++' evaluated to Unknown.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78147 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ValueManager.h
a52ad4e1f423bed2e9e0dcb12661268091d20a54 05-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> If the UnaryOperator has non-location type, use its type to create the
constant value. If the UnaryOperator has location type, create the
constant with int type and pointer width.

This fixes the bug that all pointer increments 'p++' evaluated to Unknown.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78147 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ValueManager.h
beb68c4546bd8cbd1950ca900fd32b96762eea89 05-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Support for use of default argument in constructors.
work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
2eeed7bc4fd457ac57ff32ab3b02674588545f65 05-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Support for use of default argument in constructors.
work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
841324a33cb8dd0868bd3102f5ba0b4f10dddf0f 04-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor template instantiation for types into a generic tree
transformation template (TreeTransform) that handles the
transformation and reconstruction of AST nodes. Template instantiation
for types is a (relatively small) customization of the generic tree
transformation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
577f75a7498e9e2536434da0ef0da0eea390d18b 04-Aug-2009 Douglas Gregor <dgregor@apple.com> Refactor template instantiation for types into a generic tree
transformation template (TreeTransform) that handles the
transformation and reconstruction of AST nodes. Template instantiation
for types is a (relatively small) customization of the generic tree
transformation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
26454cfe7d5c8e991a47bcbf07d578737730c48d 04-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Compare matching selectors in current and
super class(s) and warn on any parameter
type mismatch if potentially unsafe.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78029 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dbdec8bcb5686cd34763db49488f77e88c43eb64 04-Aug-2009 Fariborz Jahanian <fjahanian@apple.com> Compare matching selectors in current and
super class(s) and warn on any parameter
type mismatch if potentially unsafe.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78029 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a2717ea575c0c6d2258746bce5851450171ca3f6 04-Aug-2009 Ted Kremenek <kremenek@apple.com> Per advice that Doug Gregor gave me several months ago, clean up the
implementation of '#pragma unused' by not constructing intermediate
DeclRefExprs, but instead do the name lookup directly. The
implementation is greatly simplified.

Along the way, degrade '#pragma unused(undeclaredvariable)' to a
warning instead of being a hard error. This implements:

<rdar://problem/6761874> [sema] allow #pragma unused to reference undefined variable (with warning)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
7a02a3733cdd2ca672902d869fda4ef2e3f05052 04-Aug-2009 Ted Kremenek <kremenek@apple.com> Per advice that Doug Gregor gave me several months ago, clean up the
implementation of '#pragma unused' by not constructing intermediate
DeclRefExprs, but instead do the name lookup directly. The
implementation is greatly simplified.

Along the way, degrade '#pragma unused(undeclaredvariable)' to a
warning instead of being a hard error. This implements:

<rdar://problem/6761874> [sema] allow #pragma unused to reference undefined variable (with warning)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
532f2316adafa02fccdb835fcafc7f9dfc62f8dc 03-Aug-2009 Ted Kremenek <kremenek@apple.com> Regression fix: reset 'DisplayedFunction' when a new function/method decl gets analyzed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77996 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
98f6f2573e400a4245cfb2d6976ffb8a875d25c7 03-Aug-2009 Ted Kremenek <kremenek@apple.com> Regression fix: reset 'DisplayedFunction' when a new function/method decl gets analyzed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77996 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
9f6e097a64d91bbffd8c829783bef8db7e0a1bbe 03-Aug-2009 John McCall <rjmccall@apple.com> Refactor methods on DeclSpec to take a diagnostic& parameter, and reflect this
elsewhere. Very slightly decouples DeclSpec users from knowing the exact
diagnostics to report, and makes it easier to provide different diagnostics in
some places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77990 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
fec54013fcd0eb72642741584ca04c1bc292bef8 03-Aug-2009 John McCall <rjmccall@apple.com> Refactor methods on DeclSpec to take a diagnostic& parameter, and reflect this
elsewhere. Very slightly decouples DeclSpec users from knowing the exact
diagnostics to report, and makes it easier to provide different diagnostics in
some places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77990 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
0c18019d8d27006e30b6f4db0171bdb7ef85c9dd 03-Aug-2009 John McCall <rjmccall@apple.com> Templatize BadSpecifier and introduce DeclSpec::getSpecifier(T) for the
remaining specifier enums T.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77981 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
32d335e63bd287e5c9297532171284cdf4c7888c 03-Aug-2009 John McCall <rjmccall@apple.com> Templatize BadSpecifier and introduce DeclSpec::getSpecifier(T) for the
remaining specifier enums T.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77981 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
462d7a223e4248ea3e16f15d93f50f6742069e8b 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> add a bunch of routine methods to AnalysisContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77961 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
18c7c06033cafe8c0cdcbe5759c802728688b49f 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> add a bunch of routine methods to AnalysisContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77961 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
nalysis/PathSensitive/AnalysisManager.h
9978ebfcc55dc5d3383e3c9d5b84c89f22ac0398 03-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Tweak diagnostic wording; patch by Sean Hunt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77955 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d7640905de2f8c81c818785e8e869ed7b75ae849 03-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Tweak diagnostic wording; patch by Sean Hunt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77955 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bfae8c9112d0145b69818d26b4982104c0eedd84 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> now we can let AnalysisManager to own the PathDiagnosticClient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77945 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
d07a0d0279c09d1017f8450fce575a94dc9703c0 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> now we can let AnalysisManager to own the PathDiagnosticClient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77945 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
659e33c1812457c742fb7536f324b9f207e40b26 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Create only one AnalysisManager for each translation unit. In HandleCode(),
reset the current analysis context of the AnalysisManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77943 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
c471e7b44e63ff1b46b480e723c4130aeaef5a8a 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Create only one AnalysisManager for each translation unit. In HandleCode(),
reset the current analysis context of the AnalysisManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77943 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
b33c1261193d27c85d3c72136e3282d70aa25b79 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add LocationContext classes to enable creation of cross function
ProgramPoints. ProgramPoints will refer to them in the furture.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77941 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
2e3124486f343d770a2a5c2b7e78268bfc328a58 03-Aug-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add LocationContext classes to enable creation of cross function
ProgramPoints. ProgramPoints will refer to them in the furture.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77941 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
f8e5167d6a3af5a0c152b00973ef33b75912d949 03-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Produce a warning that partial ordering of function templates is not yet supported

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1f561c14edb9c2f54d5f4d0ad0f4b2f4bb6ece5e 03-Aug-2009 Douglas Gregor <dgregor@apple.com> Produce a warning that partial ordering of function templates is not yet supported

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7b0b83f39b4db3fa3c48cc7bb2ca11a365da13f7 03-Aug-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of the template arguments deduced when matching a class
template partial specialization. Then, use those template arguments
when instantiating members of that class template partial
specialization. Fixes PR4607.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
37d93e9252026d4fb836d9c05d0122a2d46e56be 03-Aug-2009 Douglas Gregor <dgregor@apple.com> Keep track of the template arguments deduced when matching a class
template partial specialization. Then, use those template arguments
when instantiating members of that class template partial
specialization. Fixes PR4607.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
1ecbf595ee2f85e3c2bc960193c994041cc053ab 02-Aug-2009 Anders Carlsson <andersca@mac.com> Use the correct cast kind for dynamic_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
714179b179a31a0c3769a968ee18ba87b901b13f 02-Aug-2009 Anders Carlsson <andersca@mac.com> Use the correct cast kind for dynamic_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dce26815f1385190e69930048331fd93f5d340a9 02-Aug-2009 Ted Kremenek <kremenek@apple.com> Remove RegionViews and RegionCasts. These are no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
df74e25bf0d82339a28e8a4c5e9413584771363b 02-Aug-2009 Ted Kremenek <kremenek@apple.com> Remove RegionViews and RegionCasts. These are no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
1601b72bedc333c99ba60f1ea057822c6536dce5 02-Aug-2009 Ted Kremenek <kremenek@apple.com> RegionStoreManager::RemoveDeadBindings() now removes dead 'default' bindings as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
093569cfab473e7b461523136a4df30a0473324d 02-Aug-2009 Ted Kremenek <kremenek@apple.com> RegionStoreManager::RemoveDeadBindings() now removes dead 'default' bindings as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77875 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
e5c07b875b62f59eb38de313a5ead1c6756e965c 02-Aug-2009 Ted Kremenek <kremenek@apple.com> Generalize the interface of 'StoreManager::RemoveDeadBindings()' to manipulate the entire GRState, not just the Store.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
2f26bc39f3b7bc93b9fdfbb79751b25704e5fdc6 02-Aug-2009 Ted Kremenek <kremenek@apple.com> Generalize the interface of 'StoreManager::RemoveDeadBindings()' to manipulate the entire GRState, not just the Store.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
98137f76c77d0aad264da99253eb2d1012d49fae 01-Aug-2009 Ted Kremenek <kremenek@apple.com> This is a fairly large patch, which resulted from a cascade of changes
made to RegionStore (and related classes) in order to handle some
analyzer failures involving casts and manipulation of symbolic memory.

The root of the change is in StoreManager::CastRegion(). Instead of
using ad hoc heuristics to decide when to layer an ElementRegion on a
casted MemRegion, we now always layer an ElementRegion when the cast
type is different than the original type of the region. This carries
the current cast information associated with a region around without
resorting to the error prone recording of "casted types" in GRState.

Along with this new policy of layering ElementRegions, I added a new
algorithm to strip away existing ElementRegions when they simply
represented casts of a base memory object. This algorithm computes
the raw "byte offset" that an ElementRegion represents from the base
region, and allows the new ElementRegion to be based off that offset.
The added benefit is that this naturally handles a series of casts of
a MemRegion without building up a set of redundant ElementRegions
(thus canonicalizing the region view).

Other related changes that cascaded from this one (as tests were
failing in RegionStore):

- Revamped RegionStoreManager::InvalidateRegion() to completely remove
all bindings and default values from a region and all subregions.
Now invalidated fields are not bound directly to new symbolic
values; instead the base region has a "default" symbol value from
which "derived symbols" can be created. The main advantage of this
approach is that it allows us to invalidate a region hierarchy and
then lazily instantiate new values no matter how deep the hierarchy
went (i.e., regardless of the number of field accesses,
e.g. x->f->y->z->...). The previous approach did not do this.

- Slightly reworked RegionStoreManager::RemoveDeadBindings() to also
incorporate live symbols and live regions that do not have direct
bindings but also have "default values" used for lazy instantiation.
The changes to 'InvalidateRegion' revealed that these were necessary
in order to achieve lazy instantiation of values in the region store
with those bindings being removed too early.

- The changes to InvalidateRegion() and RemoveDeadBindings() revealed
a serious bug in 'getSubRegionMap()' where not all region -> subregion
relationships involved in actually bindings (explicit and implicit)
were being recorded. This has been fixed by using a worklist algorithm
to iteratively fill in the region map.

- Added special support to RegionStoreManager::Bind()/Retrieve() to handle
OSAtomicCompareAndSwap in light of the new 'CastRegion' changes and the
layering of ElementRegions.

- Fixed a bug in SymbolReaper::isLive() where derived symbols were not
being marked live if the symbol they were derived from was also live.
This fix was critical for getting lazy instantiation in RegionStore
to work.

- Tidied up the implementation of ValueManager::getXXXSymbolVal() methods
to use SymbolManager::canSymbolicate() to decide whether or not a
symbol should be symbolicated.

- 'test/Analysis/misc-ps-xfail.m' now passes; that test case has been
moved to 'test/Analysis/misc-ps.m'.

- Tweaked some pretty-printing of MemRegions, and implemented
'ElementRegion::getRawOffset()' for use with the CastRegion changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
19e1f0ba5cec738ce6cebe3fe0e1edc782206494 01-Aug-2009 Ted Kremenek <kremenek@apple.com> This is a fairly large patch, which resulted from a cascade of changes
made to RegionStore (and related classes) in order to handle some
analyzer failures involving casts and manipulation of symbolic memory.

The root of the change is in StoreManager::CastRegion(). Instead of
using ad hoc heuristics to decide when to layer an ElementRegion on a
casted MemRegion, we now always layer an ElementRegion when the cast
type is different than the original type of the region. This carries
the current cast information associated with a region around without
resorting to the error prone recording of "casted types" in GRState.

Along with this new policy of layering ElementRegions, I added a new
algorithm to strip away existing ElementRegions when they simply
represented casts of a base memory object. This algorithm computes
the raw "byte offset" that an ElementRegion represents from the base
region, and allows the new ElementRegion to be based off that offset.
The added benefit is that this naturally handles a series of casts of
a MemRegion without building up a set of redundant ElementRegions
(thus canonicalizing the region view).

Other related changes that cascaded from this one (as tests were
failing in RegionStore):

- Revamped RegionStoreManager::InvalidateRegion() to completely remove
all bindings and default values from a region and all subregions.
Now invalidated fields are not bound directly to new symbolic
values; instead the base region has a "default" symbol value from
which "derived symbols" can be created. The main advantage of this
approach is that it allows us to invalidate a region hierarchy and
then lazily instantiate new values no matter how deep the hierarchy
went (i.e., regardless of the number of field accesses,
e.g. x->f->y->z->...). The previous approach did not do this.

- Slightly reworked RegionStoreManager::RemoveDeadBindings() to also
incorporate live symbols and live regions that do not have direct
bindings but also have "default values" used for lazy instantiation.
The changes to 'InvalidateRegion' revealed that these were necessary
in order to achieve lazy instantiation of values in the region store
with those bindings being removed too early.

- The changes to InvalidateRegion() and RemoveDeadBindings() revealed
a serious bug in 'getSubRegionMap()' where not all region -> subregion
relationships involved in actually bindings (explicit and implicit)
were being recorded. This has been fixed by using a worklist algorithm
to iteratively fill in the region map.

- Added special support to RegionStoreManager::Bind()/Retrieve() to handle
OSAtomicCompareAndSwap in light of the new 'CastRegion' changes and the
layering of ElementRegions.

- Fixed a bug in SymbolReaper::isLive() where derived symbols were not
being marked live if the symbol they were derived from was also live.
This fix was critical for getting lazy instantiation in RegionStore
to work.

- Tidied up the implementation of ValueManager::getXXXSymbolVal() methods
to use SymbolManager::canSymbolicate() to decide whether or not a
symbol should be symbolicated.

- 'test/Analysis/misc-ps-xfail.m' now passes; that test case has been
moved to 'test/Analysis/misc-ps.m'.

- Tweaked some pretty-printing of MemRegions, and implemented
'ElementRegion::getRawOffset()' for use with the CastRegion changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77782 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
00df7d348c16573732c70302816164952173d239 01-Aug-2009 Mike Stump <mrs@apple.com> Add beginnigs of rtti generation, wire up more of -fno-exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77751 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
738f8c278da5950d0d4607de2debe0bdfad64185 01-Aug-2009 Mike Stump <mrs@apple.com> Add beginnigs of rtti generation, wire up more of -fno-exceptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77751 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
d067278002fa1cf2e4999da5df9e9e0d23d08ae6 31-Jul-2009 Mike Stump <mrs@apple.com> And now we can generate a simple vtable. Still a work in progress...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
82b56961dcb813674dbda3c5f5aaee703d55741c 31-Jul-2009 Mike Stump <mrs@apple.com> And now we can generate a simple vtable. Still a work in progress...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1c84ec1acddc60268dcd437aa184ab9469f69834 31-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Allow one to update the type representation of the declaration specifiers. Will be used by an upcoming commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77703 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
5296afaa63f7d41fa40fc22fce1382c91ab70daa 31-Jul-2009 Douglas Gregor <dgregor@apple.com> Allow one to update the type representation of the declaration specifiers. Will be used by an upcoming commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77703 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
1d680aeba651b7bf2f31b44e45f751d57a5b7a9e 31-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Fix 80-col violation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
78b89b0ef7f3803cd31df3656f9536bfd6f0dd48 31-Jul-2009 Douglas Gregor <dgregor@apple.com> Fix 80-col violation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
0c1d966bf0f3c5f7a787840c514c3d92fb4cbb3b 31-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Canonicalize dependent extended vector types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
2ec09f1dc123e1942ed756e8ee4fef86451eac9e 31-Jul-2009 Douglas Gregor <dgregor@apple.com> Canonicalize dependent extended vector types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
069c23a8f980c6a76882435fc1b16df5b0eb492e 31-Jul-2009 John McCall <rjmccall@apple.com> Rename Action::TagKind to Action::TagUseKind, which removes both a misnomer
and a name collision.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77658 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0f434ecbead44c1f4d5f9dda088f9827fa0dc40f 31-Jul-2009 John McCall <rjmccall@apple.com> Rename Action::TagKind to Action::TagUseKind, which removes both a misnomer
and a name collision.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77658 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
fcb32f44203c9e2285f992bf8a023dc753e5e41c 31-Jul-2009 John McCall <rjmccall@apple.com> sp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
5c15fe1f59a08c6e2215f99a3b251e14c73b36e2 31-Jul-2009 John McCall <rjmccall@apple.com> sp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
851869475d149002c1ee0ec6cafab37fb645aea8 31-Jul-2009 Anders Carlsson <andersca@mac.com> Add CK_DerivedToBase and use it PerformObjectMemberConversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3503d041ca8a3535a1c1a30005a6b18ae7aed5db 31-Jul-2009 Anders Carlsson <andersca@mac.com> Add CK_DerivedToBase and use it PerformObjectMemberConversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7ef181c5df246e133e86b97e684f650decc67e37 31-Jul-2009 Anders Carlsson <andersca@mac.com> Add a CastKind enum to CastExpr. Right now it's not used for much but it will be :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
cdef2b75aa60cde1ca00e0aa3f89139ac89c6ae4 31-Jul-2009 Anders Carlsson <andersca@mac.com> Add a CastKind enum to CastExpr. Right now it's not used for much but it will be :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
3f87475905a878d00d4f506357c995ad1095c511 31-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix use-after-release bug introduced in r77585 where the PathDiagnosticClient
created by AnalysisConsumer would be released by an instance of AnalysisManager
and then reused by later instances of AnalysisManager. Ownership of the
PathDiagnosticClient now belongs (for now) in AnalysisConsumer.

We also need this layering (for now) because the HTMLDiagnostiClient requires
that the entire translation unit be processed before emitting diagnostics. This
is done in its destructor (which should also be fixed, but that is another
issue).

This fixes PR 4653.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77648 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
82ec2e99084996eecbdf3a304f3cbba8c16c2f6b 31-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix use-after-release bug introduced in r77585 where the PathDiagnosticClient
created by AnalysisConsumer would be released by an instance of AnalysisManager
and then reused by later instances of AnalysisManager. Ownership of the
PathDiagnosticClient now belongs (for now) in AnalysisConsumer.

We also need this layering (for now) because the HTMLDiagnostiClient requires
that the entire translation unit be processed before emitting diagnostics. This
is done in its destructor (which should also be fixed, but that is another
issue).

This fixes PR 4653.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77648 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
7fc8ed7fb83dd8bcd680756624e290d0702d281d 31-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Build canonical types for dependently-sized array types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
04d4beee4b86af20a9e4457023d3925cab8f9908 31-Jul-2009 Douglas Gregor <dgregor@apple.com> Build canonical types for dependently-sized array types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d63e16cae1577c934a6637baebd04c2bdcd2ebf8 31-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Canonicalization of dependent C++0x decltype types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
9d702ae1cd5cfa19d884cbef77e1df99395138bb 31-Jul-2009 Douglas Gregor <dgregor@apple.com> Canonicalization of dependent C++0x decltype types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
63d22fa6071690209b339451e4939de120a45e70 31-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Canonicalization for dependent typeof(expr) types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
b197572cf1cd70a817a1f546478cb2cb9112c48e 31-Jul-2009 Douglas Gregor <dgregor@apple.com> Canonicalization for dependent typeof(expr) types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
36a0ec0ea2597d051d6048c623b3885f37ab89a3 30-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for future ir-gen for destructor calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77608 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
426cc3828ce07a2cff15c9837f5958e6fc4b7739 30-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for future ir-gen for destructor calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77608 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1930d2011783c0355a37ef2aa5d9e27ad4784f42 30-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Support out-of-line definitions of the members of class template
partial specializations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77606 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
b88e888404ad0a2bdd9bfae457e8530bb38a87c5 30-Jul-2009 Douglas Gregor <dgregor@apple.com> Support out-of-line definitions of the members of class template
partial specializations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77606 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
acdd51e121fdb6e33c8014bc41e89b26fba2e0c6 30-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make AnalysisManager into its own source file and a pure data management class.
Move all components creation code into AnalysisConsumer::DigestAnalyzerOptions().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
fda7832b000ff8927386f093b52c067641679469 30-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make AnalysisManager into its own source file and a pure data management class.
Move all components creation code into AnalysisConsumer::DigestAnalyzerOptions().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisManager.h
52900801654a2f4b76179dc061cca465d8f03757 30-Jul-2009 Ryan Flynn <pizza@parseerror.com> PR3679 - handle #pragma weak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e25ff83fb7eee9eeda89b6f2371bc33a37bf1028 30-Jul-2009 Ryan Flynn <pizza@parseerror.com> PR3679 - handle #pragma weak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
22f30424e6655ba9d9a7ac81d8d273d2215f64d1 30-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> This patch collects all analysis context data into a new class
AnalysisContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77563 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
97ab3941effe1f508c7113d9aa0c2887774f6fa8 30-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> This patch collects all analysis context data into a new class
AnalysisContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77563 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisContext.h
3bc07b852eefbbcd83bdfc42010582eddd715e31 30-Jul-2009 Mike Stump <mrs@apple.com> Fix type to be consistent with the rest of the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77560 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
f66eab0bc2a181dee341437ad53cddd5a633586e 30-Jul-2009 Mike Stump <mrs@apple.com> Fix type to be consistent with the rest of the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77560 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
f745834650d26d6db66153a93fcc79b95cdb6dcf 30-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Add support for -Wno-long-long.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
dbb8d81df3477f37657be53f6df56279a61e2e5f 30-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Add support for -Wno-long-long.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticGroups.td
b359ce1c6530701b69ba8e41c8650f1f85cb1758 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add support for ObjC message expressions, in the Analyzer:

-Accept an ObjC method and find all message expressions that this method may respond to.
-Accept an ObjC message expression and find all methods that may respond to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77551 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Analyzer.h
19b732a5461f5023d2335773584ac9aaeb0af514 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add support for ObjC message expressions, in the Analyzer:

-Accept an ObjC method and find all message expressions that this method may respond to.
-Accept an ObjC message expression and find all methods that may respond to it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77551 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Analyzer.h
2939fed785599e90ea0f37a41b7a0c85c73657c9 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Support ObjC methods as Entities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77547 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/GlobalSelector.h
87bcb504f6ea453c50e47beb850258ebe57e9248 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Support ObjC methods as Entities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77547 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/GlobalSelector.h
efb5fd8b966d59f843e01141992a99f1ca924c9b 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Use a STL helper template 'pair_value_iterator', by both DeclReferenceMap and SelectorMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77545 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/DeclReferenceMap.h
ndex/STLExtras.h
ndex/SelectorMap.h
b325146ac7f8e197b6d12aa5c11a3f0a7244e870 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use a STL helper template 'pair_value_iterator', by both DeclReferenceMap and SelectorMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77545 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/DeclReferenceMap.h
ndex/STLExtras.h
ndex/SelectorMap.h
66d14cf34f847b632a6aa479871751235e3298a9 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add ObjCMethodDecl::isThisDeclarationADefinition().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
66570b230941651245accbc5680b60e904eb993c 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add ObjCMethodDecl::isThisDeclarationADefinition().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
046f6540153137f45157e8bcb3986b915a6becd2 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Index the selectors and provide the translation units that contain them
through the IndexProvider.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77543 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/IndexProvider.h
ndex/Indexer.h
d88284b4386169bb165d70796953ef802f2e90a5 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Index the selectors and provide the translation units that contain them
through the IndexProvider.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77543 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/IndexProvider.h
ndex/Indexer.h
6e2956ca3c76b16c42534e408b9f05bc30ffefa2 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add TranslationUnit::getSelectorMap().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77542 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/TranslationUnit.h
0f3984809f998cdfcdef9880fcdade12c9f9b5f6 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add TranslationUnit::getSelectorMap().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77542 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/TranslationUnit.h
d9d35ad44d6b5d5b962e1e33999c788c90e2fd20 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce SelectorMap whose purpose is to map selectors to objc methods and message exprs,
inside a particular ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77541 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/SelectorMap.h
557b1d2535cda65f84fe6a802cf1eec3ccf734e0 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SelectorMap whose purpose is to map selectors to objc methods and message exprs,
inside a particular ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77541 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/SelectorMap.h
3e18131e5feff486391ca4b152279153969ca635 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the GlobalSelector class in the Indexing library.

GlobalSelector is an ASTContext-independent way to refer to Objective C selectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77538 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/GlobalSelector.h
ndex/Program.h
27bd0dcb85cbb5dd3ca3fefc6369f34d6ccaa8b6 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the GlobalSelector class in the Indexing library.

GlobalSelector is an ASTContext-independent way to refer to Objective C selectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77538 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/GlobalSelector.h
ndex/Program.h
9928abbab36fe066fd249a56bd51bee09e1458c9 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Introduce the idx::Analyzer class used for getting indexing information, like finding
references of a declaration across translation units.

-Modify the index-test tool to use it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77536 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Analyzer.h
7f4656eb6b60a7f3596fb26b9d5aed3731b3109e 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Introduce the idx::Analyzer class used for getting indexing information, like finding
references of a declaration across translation units.

-Modify the index-test tool to use it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77536 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Analyzer.h
ca17fa94654ffd1574ba6ffb3120dc375b1daf3d 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce TULocation and TULocationHandler classes.

TULocation is like ASTLocation but also contains the TranslationUnit* that
the ASTLocation originated from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77535 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
ndex/Handlers.h
40c0e73be6b2508c33f802368080f6b369dc67bc 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce TULocation and TULocationHandler classes.

TULocation is like ASTLocation but also contains the TranslationUnit* that
the ASTLocation originated from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77535 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
ndex/Handlers.h
933afdf39fb53828fab7bd96a8771d80c442e93b 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Modify the Indexer class so that it can return the TranslationUnit that internal
decls originated from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77534 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Indexer.h
52f1d4793588af6c5c09ab096818ff942bae3af6 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modify the Indexer class so that it can return the TranslationUnit that internal
decls originated from.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77534 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Indexer.h
d0f9ed513355cfd03636f5d60dee8b4741641293 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add Entity::getInternalDecl() to be used only on Entities that refer to internal
(in translation unit) declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77533 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
e380c51d6f56a2cc32fa0f5723584224214c5b9f 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add Entity::getInternalDecl() to be used only on Entities that refer to internal
(in translation unit) declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77533 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
b942bfe81e712d1f8d6f93aaee063497b06ad252 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Constify ASTLocation::print.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77532 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
6dbbc0e20a648cb2a9d520f5a7a394a6c07d6c68 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Constify ASTLocation::print.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77532 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
7bd3bad3c2e58da42bac332e5313e407ab331312 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Fix some comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77531 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/Program.h
614455cdacdea77cc8ea89efca08f043f65877d7 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix some comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77531 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/DeclReferenceMap.h
ndex/Entity.h
ndex/Program.h
c39d64911896ab6043b465ddd82814ef3c75de33 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add getDeclReferenceMap() to the abstract interface of TranslationUnit class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77530 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/TranslationUnit.h
768a6c94a52ddf4f2f6d0c6d611db6cf224b1a1c 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add getDeclReferenceMap() to the abstract interface of TranslationUnit class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77530 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/TranslationUnit.h
915949fa17fb764ac8d1f3aff5acea3f4d701eab 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce a helper template for the Handler classes and use it instead
of the iterator of the Indexer class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77528 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Handlers.h
ndex/Indexer.h
94431b5b4ceca8831e1ed6d6f646b99052680a85 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a helper template for the Handler classes and use it instead
of the iterator of the Indexer class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77528 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Handlers.h
ndex/Indexer.h
c13d3b65526c4a8fb61a54b4ca3c6006eb916bf5 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Accept Handler objects in parameters as references.

Reinforces that they shouldn't be null and it's a bit more natural when
they are passed as stack objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77526 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/IndexProvider.h
ndex/Indexer.h
ndex/Program.h
16d8bcf248f15d0479b3ccf40297f9ed107db3f1 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Accept Handler objects in parameters as references.

Reinforces that they shouldn't be null and it's a bit more natural when
they are passed as stack objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77526 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/IndexProvider.h
ndex/Indexer.h
ndex/Program.h
21f89b954d5636e9c9392edcc51a8a4cbdab8c25 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Rename EntityHandler::HandleEntity to Handle.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77525 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Handlers.h
77b4a79dd845fa93027f458049a7f71402006414 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename EntityHandler::HandleEntity to Handle.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77525 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Handlers.h
43d4f2e8115481f61fe943be72f004d9c81721d8 30-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Make IndexProvider an abstract interface for getting indexing information.
-Introduce Indexer as an IndexProvider implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77524 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/EntityHandler.h
ndex/Handlers.h
ndex/IndexProvider.h
ndex/Indexer.h
b17dc46c795d5eceeceb1424b96d63739d12a522 30-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Make IndexProvider an abstract interface for getting indexing information.
-Introduce Indexer as an IndexProvider implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77524 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/EntityHandler.h
ndex/Handlers.h
ndex/IndexProvider.h
ndex/Indexer.h
19e567a7f976257558abc106e3ace3cc2c98f561 30-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Make tag declarations redeclarable. This change has three purposes:

1) Allow the Index library (and any other interested client) to walk
the set of declarations for a given tag (enum, union, class,
whatever). At the moment, this information is not readily available.

2) Reduce our dependence on TagDecl::TypeForDecl being mapped down
to a TagType (for which getDecl() will return the tag definition, if
one exists). This property won't exist for class template partial
specializations.

3) Make the canonical declaration of a TagDecl actually canonical,
e.g., so that it does not change when the tag is defined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
8e9e9ef5348bce1a8f0741a5684fac3de9701c28 30-Jul-2009 Douglas Gregor <dgregor@apple.com> Make tag declarations redeclarable. This change has three purposes:

1) Allow the Index library (and any other interested client) to walk
the set of declarations for a given tag (enum, union, class,
whatever). At the moment, this information is not readily available.

2) Reduce our dependence on TagDecl::TypeForDecl being mapped down
to a TagType (for which getDecl() will return the tag definition, if
one exists). This property won't exist for class template partial
specializations.

3) Make the canonical declaration of a TagDecl actually canonical,
e.g., so that it does not change when the tag is defined.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclTemplate.h
d00cd9ec368acf3e615d55f659eca4639044ba7d 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Change uses of:
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsRecordType() -> Type::getAs<RecordType>()
Type::getAsPointerType() -> Type::getAs<PointerType>()
Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsTagType() -> Type::getAs<TagType>()

And remove Type::getAsReferenceType(), etc.

This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
6217b80b7a1379b74cced1c076338262c3c980b3 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Change uses of:
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsRecordType() -> Type::getAs<RecordType>()
Type::getAsPointerType() -> Type::getAs<PointerType>()
Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsTagType() -> Type::getAs<TagType>()

And remove Type::getAsReferenceType(), etc.

This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
d492ebc26c117ddbdffe8566e9d050409344cbbf 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Remove 'StoreManager::OldCastRegion()', TypedViewRegion (which only
OldCastRegion used), and the associated command line option
'-analyzer-store=old-basic-cast'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77509 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
rontend/Analyses.def
f7a0cf426eddae76e1a71dd2295631a2cf0560af 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Remove 'StoreManager::OldCastRegion()', TypedViewRegion (which only
OldCastRegion used), and the associated command line option
'-analyzer-store=old-basic-cast'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77509 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
rontend/Analyses.def
6631cb4e3387064a019f6d677356298a8f7b08b9 29-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> [llvm up]

A template name can refer to a set of overloaded function
templates. Model this in TemplateName, which can now refer to an
OverloadedFunctionDecl that contains function templates. This removes
an unspeakable hack in Sema::isTemplateName.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
d99cbe66403ee39c2ee58024b9582b95649a4fc5 29-Jul-2009 Douglas Gregor <dgregor@apple.com> [llvm up]

A template name can refer to a set of overloaded function
templates. Model this in TemplateName, which can now refer to an
OverloadedFunctionDecl that contains function templates. This removes
an unspeakable hack in Sema::isTemplateName.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TemplateName.h
fa498ae9c875a2c2d2c7db39cc7a61e1bc818193 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Make StoreManager::InvalidateRegion() virtual, move the current implementation
in StoreManager to RegionStoreManager, and create a special, highly reduced
version in BasicStoreManager.

These changes are in preparation for future RegionStore-specific changes to
InvalidateRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77483 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
1004a9f2b9eaf885e55ad8656194ef2a341db0f5 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Make StoreManager::InvalidateRegion() virtual, move the current implementation
in StoreManager to RegionStoreManager, and create a special, highly reduced
version in BasicStoreManager.

These changes are in preparation for future RegionStore-specific changes to
InvalidateRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77483 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
ce563192fb43688225a5c0c36bf31cbcf9cd6d3c 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Add 'MemRegion::getBaseRegion()', a utility method to strip ElementRegions with
index 0. This will be used for refinements to InvalidateRegion and CastRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77481 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
0e3ec3ff2477e60f0ceda922cc2e3a25a59d81f2 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Add 'MemRegion::getBaseRegion()', a utility method to strip ElementRegions with
index 0. This will be used for refinements to InvalidateRegion and CastRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77481 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
07c6c9a52871a5ec52caae374b40465ef5581d3c 29-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Check for identical types in C++ catch expression. Patch by Erik Verbruggen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77475 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c447aba04527a71d254b151f79f444d1cbe83ce9 29-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Check for identical types in C++ catch expression. Patch by Erik Verbruggen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77475 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
99eef4a6d3632a78155e7639a9f91d10b33e8218 29-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Use the new statement/expression profiling code to unique dependent
template arguments, as in template specialization types. This permits
matching out-of-line definitions of members for class templates that
involve non-type template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/Type.h
828e226ab7ed08b3eb766549e9d3306432137460 29-Jul-2009 Douglas Gregor <dgregor@apple.com> Use the new statement/expression profiling code to unique dependent
template arguments, as in template specialization types. This permits
matching out-of-line definitions of members for class templates that
involve non-type template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/Type.h
bbe4f96aaf32fad56812cec2f536256a6554209f 29-Jul-2009 Steve Naroff <snaroff@apple.com> Incorporate feedback from Chris (on r76979).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
99b10be143e3148b9499af4c0e9ebaf46757cfe6 29-Jul-2009 Steve Naroff <snaroff@apple.com> Incorporate feedback from Chris (on r76979).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
9350cfc90eb9979ee0730f9537159967f130a583 29-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> delete an undefined method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77446 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
5a5c60d273130990a7da770d7f5dc809920d3b65 29-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> delete an undefined method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77446 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
90e18745436d0889e8bb7fba650263b38f05694e 29-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Code refactoring to define getCXXRecordDeclForPointerType
and use it in several places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77411 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a91d6a6619a91d0ca7102d8ab5678d855f04d850 29-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Code refactoring to define getCXXRecordDeclForPointerType
and use it in several places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77411 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
06cac85d7ff58a3fb08f792f457471eddf2de02f 29-Jul-2009 Mike Stump <mrs@apple.com> Some minor cleanups, thanks Chris.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f711c41dd9412a8182793259d355c4f6979ed5ed 29-Jul-2009 Mike Stump <mrs@apple.com> Some minor cleanups, thanks Chris.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
04580fbca3a91f56c0af18e831ca5b2702e5529d 29-Jul-2009 Mike Stump <mrs@apple.com> Some style fixes, thanks Chris.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77400 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fd612dbb23cd31c03c898ae53ff18d0dfd8488f9 29-Jul-2009 Mike Stump <mrs@apple.com> Some style fixes, thanks Chris.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77400 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6edde614a8ee027693598fd8a97d8c403a92b505 29-Jul-2009 Mike Stump <mrs@apple.com> Add support for -Wmissing-noreturn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4d9d51ae3b868268082f94d84d0dff4c0b1ad435 29-Jul-2009 Mike Stump <mrs@apple.com> Add support for -Wmissing-noreturn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4262bc9b6a07a78efce52344577130936d1f4296 29-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor the code that produces a TemplateSpecializationType, so that
canonicalization for dependent TemplateSpecializationTypes occurs
within ASTContext::getTemplateSpecializationType. Also, move template
argument canonicalization into ASTContext::getCanonicalTemplateArgument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1275ae098acda31fe0e434510c729fcfed0458a1 29-Jul-2009 Douglas Gregor <dgregor@apple.com> Refactor the code that produces a TemplateSpecializationType, so that
canonicalization for dependent TemplateSpecializationTypes occurs
within ASTContext::getTemplateSpecializationType. Also, move template
argument canonicalization into ASTContext::getCanonicalTemplateArgument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8e288f43956d355114ad904c78cebc2b1183aeda 29-Jul-2009 Mike Stump <mrs@apple.com> Add noreturn support for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5692586ae59be8d49edd7b45dd52c1ffa920ba5e 29-Jul-2009 Mike Stump <mrs@apple.com> Add noreturn support for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4ac7d6980e3c906f469df2504aa64b73ce58fdc9 28-Jul-2009 Ted Kremenek <kremenek@apple.com> Add missing break statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77356 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.h
c4e4acb774ee4437227154215e1f602393eb1389 28-Jul-2009 Ted Kremenek <kremenek@apple.com> Add missing break statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77356 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/CheckerVisitor.h
827f93d0d67a9fd2e35119196a6a4b67ca943b4a 28-Jul-2009 Mike Stump <mrs@apple.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8fad9941a635a42ee644e7396ca84cbaaa5c1b6e 28-Jul-2009 Mike Stump <mrs@apple.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
15308cdd038979bf62ce23e63e1a2e04a3ba5d7b 28-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix regression in attribute 'nonnull' checking when a transition node
was created but not added to the destination NodeSet. This fixes PR 4630.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77353 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
bb977228e642e0d12365862a3838dd5005ef783b 28-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix regression in attribute 'nonnull' checking when a transition node
was created but not added to the destination NodeSet. This fixes PR 4630.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77353 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
f2221dfb6c649cdda22c56112e55c5ee6f397908 28-Jul-2009 Anders Carlsson <andersca@mac.com> Add a field for C++ specific data to ASTRecordLayout. Use it to store the non-virtual size and alignment + base offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77352 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
b2fafd4978166114c54748a73738d8b2c3a37e2b 28-Jul-2009 Anders Carlsson <andersca@mac.com> Add a field for C++ specific data to ASTRecordLayout. Use it to store the non-virtual size and alignment + base offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77352 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
fda7da669298c7428a1c963013d9a8c71cbedbc5 28-Jul-2009 John McCall <rjmccall@apple.com> Bounds checking for address spaces.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77303 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
efadb7768e7c7418185f5a4010ecd8b21ca9731b 28-Jul-2009 John McCall <rjmccall@apple.com> Bounds checking for address spaces.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77303 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
b230eac0d43ae1952dc1c5fa8754f0dd7dce1496 28-Jul-2009 John McCall <rjmccall@apple.com> Reimplement QualifierSet using a single word, as requested by dgregor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7a1bcdf26d48c2c40e900a973f7ffca45f451526 28-Jul-2009 John McCall <rjmccall@apple.com> Reimplement QualifierSet using a single word, as requested by dgregor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
029f78742367275bc5d895d6cbe88922d8d4dcfa 28-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Implement ObjCMethodDecl::getCanonicalDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e7f9d301a10b4b3223e91d9be4362b44cba0a212 28-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement ObjCMethodDecl::getCanonicalDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0f3b8429f32a51c2bff25198295f1c155bfabffe 28-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Add ObjCCategoryImplDecl::getCategoryClass() which returns the category interface decl.
-Correct ObjCMethodDecl::getNextRedeclaration(); A method in a ObjCCategoryImplDecl should point to
a method in the associated ObjCCategoryDecl, not the ObjCInterfaceDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4292073a858f72769fa405b48390620c8932f8ae 28-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Add ObjCCategoryImplDecl::getCategoryClass() which returns the category interface decl.
-Correct ObjCMethodDecl::getNextRedeclaration(); A method in a ObjCCategoryImplDecl should point to
a method in the associated ObjCCategoryDecl, not the ObjCInterfaceDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ed2f9296431718d81ff66ebb5e677a07f870b87f 28-Jul-2009 Mike Stump <mrs@apple.com> Make longjmp a real builtin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.def
asic/DiagnosticSemaKinds.td
rontend/PCHBitCodes.h
782fa308a765aeac2acb39c4e697c937ec21185b 28-Jul-2009 Mike Stump <mrs@apple.com> Make longjmp a real builtin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.def
asic/DiagnosticSemaKinds.td
rontend/PCHBitCodes.h
065e8c860559b117e8a32181d1f2e15d8c249722 28-Jul-2009 John McCall <rjmccall@apple.com> Allow functions to be marked "implicit return zero" and so mark main().
Codegen by initializing the return value with its LLVM type's null value.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77288 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0cfeb63f532973777f6fe75d3468c3acad4adfe3 28-Jul-2009 John McCall <rjmccall@apple.com> Allow functions to be marked "implicit return zero" and so mark main().
Codegen by initializing the return value with its LLVM type's null value.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77288 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5c088cbc435fd831c7585faea59c8c7e1d06fc8a 28-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Add a Profile function for statements so that we can (eventually) determine
when statements and expressions are equivalent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
41ef0c3472a3d09c29bc1792f3d26842f2b8a695 28-Jul-2009 Douglas Gregor <dgregor@apple.com> Add a Profile function for statements so that we can (eventually) determine
when statements and expressions are equivalent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
b81611bdd79f6b0a43e8f2cea48545074fb23164 28-Jul-2009 Mike Stump <mrs@apple.com> Make sure to move the comment with the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
523a8fddefee7836d6317f6dc265acb4ee84a0d4 28-Jul-2009 Mike Stump <mrs@apple.com> Make sure to move the comment with the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77279 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
d0f1a339494d5c181b9e93640d458b79a77f0cfe 28-Jul-2009 Ted Kremenek <kremenek@apple.com> (1) Enable PlistDiagnostics to take an option "PathDiagnosticClientFactory"
object that it can use to forward PathDiagnostics for further processing. Along
with this feature, the PlistDiagnostics object logs which files are created by
the forwarding of the PathDiagnostics.

(2) Create a new PathDiagnosticClientFactory object for HTMLDiagnostics,
allowing other PathDiagnosticClients to forward PathDiagnostics through an
opaque interface.

(3) Create a "plist-html" diagnostics option in AnalysisConsumer to allow the
logging of HTML files created in a hybrid Plist+HTML diagnostic client.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77264 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/PathDiagnosticClients.h
f75560670bcdd59b051149bdece3eac14e313853 28-Jul-2009 Ted Kremenek <kremenek@apple.com> (1) Enable PlistDiagnostics to take an option "PathDiagnosticClientFactory"
object that it can use to forward PathDiagnostics for further processing. Along
with this feature, the PlistDiagnostics object logs which files are created by
the forwarding of the PathDiagnostics.

(2) Create a new PathDiagnosticClientFactory object for HTMLDiagnostics,
allowing other PathDiagnosticClients to forward PathDiagnostics through an
opaque interface.

(3) Create a "plist-html" diagnostics option in AnalysisConsumer to allow the
logging of HTML files created in a hybrid Plist+HTML diagnostic client.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77264 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/PathDiagnosticClients.h
b56fd0b9080fae81e36cfd73dd740f0e06a4815d 27-Jul-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77249 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.h
bc0a2226c7fcd18b29b6846049e2cfcb872d3593 27-Jul-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77249 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.h
67356ae8e55d11c4d3e69f3651d5cb923a36e517 27-Jul-2009 Mike Stump <mrs@apple.com> Add noreturn for exit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
0feecbb3165b06ff34663a8c233316aaf7f84ce1 27-Jul-2009 Mike Stump <mrs@apple.com> Add noreturn for exit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.def
asic/Builtins.h
b2082e1c1199d8499f7a75e914ffbcf60c6c1d1e 27-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Make ObjCImplDecl inherit from ObjCContainerDecl.

ObjCContainerDecl now is the root class for objc decls that contain methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
ST/DeclObjC.h
aecae629269fae3bf484baf1d109e9a89d14eead 27-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make ObjCImplDecl inherit from ObjCContainerDecl.

ObjCContainerDecl now is the root class for objc decls that contain methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
ST/DeclObjC.h
ebc4ebcdfd28074267e2918d9faa69861b929022 27-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Fix typo in error message

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
550b73275069725dbd78f8608305ef23410670f0 27-Jul-2009 Douglas Gregor <dgregor@apple.com> Fix typo in error message

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51301abc49f28c078a78e9745109d3848430b00d 26-Jul-2009 Ryan Flynn <pizza@parseerror.com> PR3575 - warn on declared variable or function attributes after a definition, which are currently ignored.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77095 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
478fbc68b1873678edfb2a3c420749635db100e6 26-Jul-2009 Ryan Flynn <pizza@parseerror.com> PR3575 - warn on declared variable or function attributes after a definition, which are currently ignored.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77095 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
088f18a9adf05f57136cdc993b67b2cf84cb34fa 26-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor ObjCImplDecl::getInstanceMethod/getClassMethod into one
ObjCImplDecl::getMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
16f06bb41b1b02ff0847bc41b89818472053d672 26-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor ObjCImplDecl::getInstanceMethod/getClassMethod into one
ObjCImplDecl::getMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9ac39f328184ba1cb6602497408741d984a53590 26-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor ObjCInterfaceDecl::lookupInstanceMethod/lookupClassMethod into one
ObjCInterfaceDecl::lookupMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
aa5420c1e36ab8e0e4bb87239d8b73a3a8ce75db 26-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor ObjCInterfaceDecl::lookupInstanceMethod/lookupClassMethod into one
ObjCInterfaceDecl::lookupMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
aba400caab2a1606f17710b609141f530adb368e 26-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor ObjCProtocolDecl::lookupInstanceMethod/lookupClassMethod into one
ObjCProtocolDecl::lookupMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
094e2bb6730d63e0f6919e4839522a43b7644181 26-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor ObjCProtocolDecl::lookupInstanceMethod/lookupClassMethod into one
ObjCProtocolDecl::lookupMethod.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7a7757baeb9e59c543cccbc3c5c0aafeeea8b041 26-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor ObjCContainerDecl::getInstanceMethod/getClassMethod into one
ObjCContainerDecl::getMethod.

Avoids code duplication.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77091 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
467c0b165072689ef87fe8d9cd47a5b63485bcdc 26-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor ObjCContainerDecl::getInstanceMethod/getClassMethod into one
ObjCContainerDecl::getMethod.

Avoids code duplication.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77091 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0f95d329cc0ba37faa0f3d522991a581a407482c 26-Jul-2009 Mike Stump <mrs@apple.com> Improve comments (Thanks Fariborz).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ae92140b542d5c1c096e39e74e59526184819b30 26-Jul-2009 Mike Stump <mrs@apple.com> Improve comments (Thanks Fariborz).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1bb806498909a43a7829edb21c42606335d69694 25-Jul-2009 Mike Stump <mrs@apple.com> Add noreturn as a type attribute, handle printing for them and handle
calls to noreturn function pointers when CFG building.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
2455636163fdd18581d7fdae816433f886d88213 25-Jul-2009 Mike Stump <mrs@apple.com> Add noreturn as a type attribute, handle printing for them and handle
calls to noreturn function pointers when CFG building.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77089 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
0e35d04dc95cc25f96f6ddf9436910f1c3b8e07c 25-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement C++ semantics for C-style and functional-style casts. This regresses Clang extension conversions, like vectors, but allows conversions via constructors and conversion operators.
Add custom conversions to static_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9cc11e70031365972424b43f439021d88096b146 25-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement C++ semantics for C-style and functional-style casts. This regresses Clang extension conversions, like vectors, but allows conversions via constructors and conversion operators.
Add custom conversions to static_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
43d2805a83b01e6938928a6da5184bc8da963b2d 25-Jul-2009 John McCall <rjmccall@apple.com> Semantic checking for main().

Fix some invalid main() methods in the test suite that were nicely
exposed by the new checks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
13591ed054d1b2d6d392151ba05cbc883e640648 25-Jul-2009 John McCall <rjmccall@apple.com> Semantic checking for main().

Fix some invalid main() methods in the test suite that were nicely
exposed by the new checks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d484def4535a53f2ecfaf28410727773cb01c8da 25-Jul-2009 John McCall <rjmccall@apple.com> Flesh out the QualifierSet API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8fceb57f6980c67bb8f12e29d75736cf057951e8 25-Jul-2009 John McCall <rjmccall@apple.com> Flesh out the QualifierSet API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
181fe794b8945defefc63443b15fe99a15f0a28b 24-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for static data members that are defined out-of-line.

Note that this also fixes a bug that affects non-template code, where we
were not treating out-of-line static data members are "file-scope" variables,
and therefore not checking their initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticSemaKinds.td
7caa6825f42a0f7e97d6fc06233133c42b218e46 24-Jul-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for static data members that are defined out-of-line.

Note that this also fixes a bug that affects non-template code, where we
were not treating out-of-line static data members are "file-scope" variables,
and therefore not checking their initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticSemaKinds.td
4cbc09206c5b65ecc7dc08a9764cfb1a10d32172 24-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> More Sema check for constructor's member initializer along
with type conversion to fix ir-gen crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77000 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7252f5110de3163a465aa50a2114c1fef9e848e8 24-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> More Sema check for constructor's member initializer along
with type conversion to fix ir-gen crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77000 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
56bacebf94f7cce59d0719a4678416204df295ba 24-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> More work toward initialization of objects
in constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
50b8eea3f36881a988a5757e0f6e15d45900324b 24-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> More work toward initialization of objects
in constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
29d293b79901491af6da2e2368ea8e506402e1fe 24-Jul-2009 Steve Naroff <snaroff@apple.com> Allow front-end 'isa' access on object's of type 'id'.
Enhance test case to cover 'isa' access on interface types (clang produces an error, GCC produces a warning).

Still need back-end CodeGen for ObjCIsaExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
ST/Type.h
rontend/PCHBitCodes.h
f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3 24-Jul-2009 Steve Naroff <snaroff@apple.com> Allow front-end 'isa' access on object's of type 'id'.
Enhance test case to cover 'isa' access on interface types (clang produces an error, GCC produces a warning).

Still need back-end CodeGen for ObjCIsaExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
ST/Type.h
rontend/PCHBitCodes.h
4fd3d0be19bc2962293d11a1d8375d810332efdd 24-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add getDecl() to CallGraph and CallGraphNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76940 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
e3e643f12cc65a70e440bcdbb37b81d5fd022143 24-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add getDecl() to CallGraph and CallGraphNode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76940 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
c910a0dd5a2371bd9249184b1dbb4183926cabb9 24-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Constify methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76939 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
6d8f56f4799042c897831318326d8be55a879cb8 24-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Constify methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76939 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
77740582868469e4de5437ae285f628d5bbfbcf0 24-Jul-2009 Mike Stump <mrs@apple.com> Implement new warning for functions declared 'noreturn' when they fall off the end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76932 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5f28a1edf6decac64ca12e51ca4a929d26fc21f2 24-Jul-2009 Mike Stump <mrs@apple.com> Implement new warning for functions declared 'noreturn' when they fall off the end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76932 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6b98c5818acddb2e6f799db3209c3f3cd372cb6b 24-Jul-2009 Ted Kremenek <kremenek@apple.com> Mark destructor of Checker virtual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
3111218bc7ec7ff8b0ab8fdd15a6949904ef698e 24-Jul-2009 Ted Kremenek <kremenek@apple.com> Mark destructor of Checker virtual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
4af0523edc341c6e7bb4499c45ce45397f2dc979 24-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> This patch fixes the implementations of the __has_trivial_destructor
and __has_trivial_constructor builtin pseudo-functions and
additionally implements __has_trivial_copy and __has_trivial_assign,
from John McCall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/Type.h
5e03f9ea8174ae588c5e69ec6b5ef4c68f8fd766 24-Jul-2009 Douglas Gregor <dgregor@apple.com> This patch fixes the implementations of the __has_trivial_destructor
and __has_trivial_constructor builtin pseudo-functions and
additionally implements __has_trivial_copy and __has_trivial_assign,
from John McCall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/Type.h
7c1771cc1016fac539b364f350f0e33ce11aadb2 24-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose when base classes and members to be intialized
with constructors don't have a matching constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76913 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
87595e46ccd61c9b7c08074c2c64b66b5c0fc694 24-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose when base classes and members to be intialized
with constructors don't have a matching constructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76913 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
95254bc9257d9bcb425c84bbb94a0b47d5e8ee0a 23-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Clean up the ActOnTag action, so that there is only a single entry
point that covers templates and non-templates. This should eliminate
the flood of warnings I introduced yesterday.

Removed the ActOnClassTemplate action, which is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76881 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bd1099efde211cbb63fce3feee4ebcc6bac58781 23-Jul-2009 Douglas Gregor <dgregor@apple.com> Clean up the ActOnTag action, so that there is only a single entry
point that covers templates and non-templates. This should eliminate
the flood of warnings I introduced yesterday.

Removed the ActOnClassTemplate action, which is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76881 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a754eb2b71b0e1e84844bdd8ae34bb1cb8e754f1 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add two nodes to the call graph:
- Root is the main function or 0.
- ExternalCallingNode has edges to all external functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
56a5d8087735438fcedea4ce3e22eb07d1d27e75 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add two nodes to the call graph:
- Root is the main function or 0.
- ExternalCallingNode has edges to all external functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
e0c993f0e4a0b09f96d2c274abb354aac6866ead 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add template specializations to view the call graph in dot format.
- change the DenseMap used in callgraph to std::map, since DenseMap cannot
be used with mapped_iterator and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76874 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
16a705f26d069a0c9e391bf064bcd1bc3496ca83 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add template specializations to view the call graph in dot format.
- change the DenseMap used in callgraph to std::map, since DenseMap cannot
be used with mapped_iterator and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76874 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
97443df414298cb0060f3c0956a2cb6ce7596504 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> constify methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76873 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
f7856437cfcf49523d81ebe1fc2351e3284dedfa 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> constify methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76873 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
cef9bcd1ca491aa26f2a15232fe0292a2d86cd60 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add getter methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76871 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b85bca2676b433ae555db09de4dd2823ff13b856 23-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add getter methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76871 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
b77e00431c304bcdac06df03950b658b2fd388a6 23-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add newline at EOF.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
25c155abc154a23ff59e8def196441a2fbf20270 23-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add newline at EOF.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
506543653ddbcd3fb8b6fd514f841e4af29353a9 23-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r76831, there are many Analyzer test failures on multiple platforms.

--- Reverse-merging r76831 into '.':
U include/clang/Analysis/PathSensitive/GRExprEngine.h
U lib/Analysis/GRExprEngine.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
36292550118ebdd5e0fe8e46df74f7202046d316 23-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r76831, there are many Analyzer test failures on multiple platforms.

--- Reverse-merging r76831 into '.':
U include/clang/Analysis/PathSensitive/GRExprEngine.h
U lib/Analysis/GRExprEngine.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
076d84ef05463f175fcb1377e16e7dab78ca5c1a 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Add initial implementation of checking for uses of floating point as a loop counter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76833 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/Analyses.def
dbfb5f853547c4cc2b4b39e90f01537dd317457a 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Add initial implementation of checking for uses of floating point as a loop counter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76833 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
rontend/Analyses.def
234e410417536afad6519b6e37b9305c656a7dd8 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Add instance predicate method to match static method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a4e70568ae8902d48aad215c16b0fc8b40308106 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Add instance predicate method to match static method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5d97ae754c9a9c5035a489468d7981385939a7d4 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Add 'previsit' Checker pass for ObjCMessageExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76831 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
7a2d953224e51b2b7d7cbf9194a1dbc1ca0be4a0 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Add 'previsit' Checker pass for ObjCMessageExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76831 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
99eb86b296883b55bb49b7c56c7ffa50039b351c 23-Jul-2009 Steve Naroff <snaroff@apple.com> Remove a bunch of FIXME's related to ObjC type checking.

- Move Sema::ObjCQualifiedIdTypesAreCompatible(), Sema::QualifiedIdConformsQualifiedId(), and a couple helper functions to ASTContext.
- Change ASTContext::canAssignObjCInterfaces() to use ASTContext:: ObjCQualifiedIdTypesAreCompatible().
- Tweak several test cases to accommodate the new/improved type checking.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4084c306635b70f37029dca938444e6013f08684 23-Jul-2009 Steve Naroff <snaroff@apple.com> Remove a bunch of FIXME's related to ObjC type checking.

- Move Sema::ObjCQualifiedIdTypesAreCompatible(), Sema::QualifiedIdConformsQualifiedId(), and a couple helper functions to ASTContext.
- Change ASTContext::canAssignObjCInterfaces() to use ASTContext:: ObjCQualifiedIdTypesAreCompatible().
- Tweak several test cases to accommodate the new/improved type checking.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
898f5745d68202867f72ccbc9fb4156fc43d26a7 23-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Add constructor used to initialize base/member in
CXXBaseOrMemberInitializer AST node. Needed by
its clients to do the initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d7b27e1c17d40c72a1ccf8868315bf0c5271aa54 23-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Add constructor used to initialize base/member in
CXXBaseOrMemberInitializer AST node. Needed by
its clients to do the initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
fa5209bec23edb26ae6c52f87b13418fed37224e 23-Jul-2009 Mike Stump <mrs@apple.com> Add warning for falling off the end of a function that should return a
value. This is on by default, and controlled by -Wreturn-type (-Wmost
-Wall). I believe there should be very few false positives, though
the most interesting case would be:

int() { bar(); }

when bar does:

bar() { while (1) ; }

Here, we assume functions return, unless they are marked with the
noreturn attribute. I can envision a fixit note for functions that
never return normally that don't have a noreturn attribute to add a
noreturn attribute.

If anyone spots other false positives, let me know!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b1682c50d26e0f12130d35b7b9b77d40542c4540 23-Jul-2009 Mike Stump <mrs@apple.com> Add warning for falling off the end of a function that should return a
value. This is on by default, and controlled by -Wreturn-type (-Wmost
-Wall). I believe there should be very few false positives, though
the most interesting case would be:

int() { bar(); }

when bar does:

bar() { while (1) ; }

Here, we assume functions return, unless they are marked with the
noreturn attribute. I can envision a fixit note for functions that
never return normally that don't have a noreturn attribute to add a
noreturn attribute.

If anyone spots other false positives, let me know!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
84a20812c8204f2210622729b8a41e53170baaad 23-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for out-of-line definitions of the class members of class
templates, e.g.,

template<typename T>
struct Outer {
struct Inner;
};

template<typename T>
struct Outer<T>::Inner {
// ...
};

Implementing this feature required some extensions to ActOnTag, which
now takes a set of template parameter lists, and is the precursor to
removing the ActOnClassTemplate function from the parser Action
interface. The reason for this approach is simple: the parser cannot
tell the difference between a class template definition and the
definition of a member of a class template; both have template
parameter lists, and semantic analysis determines what that template
parameter list means.

There is still some cleanup to do with ActOnTag and
ActOnClassTemplate. This commit provides the basic functionality we
need, however.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
7cdbc5832084f45721693dfb1d93284c3e08efee 23-Jul-2009 Douglas Gregor <dgregor@apple.com> Implement support for out-of-line definitions of the class members of class
templates, e.g.,

template<typename T>
struct Outer {
struct Inner;
};

template<typename T>
struct Outer<T>::Inner {
// ...
};

Implementing this feature required some extensions to ActOnTag, which
now takes a set of template parameter lists, and is the precursor to
removing the ActOnClassTemplate function from the parser Action
interface. The reason for this approach is simple: the parser cannot
tell the difference between a class template definition and the
definition of a member of a class template; both have template
parameter lists, and semantic analysis determines what that template
parameter list means.

There is still some cleanup to do with ActOnTag and
ActOnClassTemplate. This commit provides the basic functionality we
need, however.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
97f69d63fda7364d1eb465dfbe9a696cc1c63165 23-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Change Preprocessor to keep a copy of LangOptions instead of reference, like ASTContext.

Now when creating a Preprocessor we can pass it a temporary LangOptions object instead of having to remember to keep it around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76815 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ba1e898c64048e25cb65afec3807ad463e41914b 23-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change Preprocessor to keep a copy of LangOptions instead of reference, like ASTContext.

Now when creating a Preprocessor we can pass it a temporary LangOptions object instead of having to remember to keep it around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76815 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c08c21e37a2f7f29d68bd464d07cfca0acf4b122 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Refactor 'PostStmt' and 'PreStmt' to subclass a common parent 'StmtPoint'.

Educate GRExprEngine::VisitGraph() about 'PreStmt'.

Mark the constructor of 'PostStmt' to be explicit, preventing implicit
conversions and the selection of the wrong 'generateNode' method in
GRStmtNodeBuilder.

Constify a bunch of arguments, which falls out of the changes to ProgramPoint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76809 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRState.h
nalysis/ProgramPoint.h
5f85e17df3f5b0a8021443f2b590daecfb2cbd17 23-Jul-2009 Ted Kremenek <kremenek@apple.com> Refactor 'PostStmt' and 'PreStmt' to subclass a common parent 'StmtPoint'.

Educate GRExprEngine::VisitGraph() about 'PreStmt'.

Mark the constructor of 'PostStmt' to be explicit, preventing implicit
conversions and the selection of the wrong 'generateNode' method in
GRStmtNodeBuilder.

Constify a bunch of arguments, which falls out of the changes to ProgramPoint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76809 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRState.h
nalysis/ProgramPoint.h
1e7aa5dc080d033b963fd4fa39944da93fe5bc89 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Use SaveAndRestore in 'clang/Analysis/Support/SaveAndRestore.h'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76800 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngineBuilders.h
6621bcf2a8ee0ff6d4b7c3df64407279d52ed23e 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Use SaveAndRestore in 'clang/Analysis/Support/SaveAndRestore.h'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76800 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngineBuilders.h
af4df4b3de20f4a2aac122f1f8e7ac25a29502d9 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add AssumeDual method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
67afec15ddbea77d9560165282542cbe1b413d01 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add AssumeDual method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76798 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
40035e215be90fbf8555364ac9a892be8d3ee705 22-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Fix the parsing of default arguments for inline member function
definitions.

I'm not very familiar with this code, so please review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76796 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d33133cdc1af466f9c276249b2621be03867888b 22-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Fix the parsing of default arguments for inline member function
definitions.

I'm not very familiar with this code, so please review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76796 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5131a00973c451344f40268d93fc94b1f6fca798 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Make 'SaveAndRestore' and friends reusable classes in libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76795 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
bd0487825751230a4396952b770349d2beac60b3 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Make 'SaveAndRestore' and friends reusable classes in libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76795 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/SaveAndRestore.h
c905836f6173bc5b0491e5a6c8875347effefe8c 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add support for registering 'Checker' objects with GRExprEngine.
Add a 'previsit' stage (that dispatches to registered Checkers) when evaluating the effects of CallExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76794 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5a5d98bc6962dc2d1aaa5e0e522f1bf84273b9c1 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add support for registering 'Checker' objects with GRExprEngine.
Add a 'previsit' stage (that dispatches to registered Checkers) when evaluating the effects of CallExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76794 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8f592c492f8d7b95ff5ccd280fa13e48789bfca2 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add new 'Checker' and 'CheckerVisitor' classes, which represent a more powerful
interface to plug in domain-specific checker logic than the current
GRSimpleAPICheck interface. The new 'Checker' interface can actually generate
new nodes, allowing it to modify the state and refine the analysis (which
GRSimpleAPIChecks could not).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76793 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
29e543cc4cacfec24ccb888b1d82b92a98ffe99b 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add new 'Checker' and 'CheckerVisitor' classes, which represent a more powerful
interface to plug in domain-specific checker logic than the current
GRSimpleAPICheck interface. The new 'Checker' interface can actually generate
new nodes, allowing it to modify the state and refine the analysis (which
GRSimpleAPIChecks could not).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76793 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Checker.h
nalysis/PathSensitive/CheckerVisitor.def
nalysis/PathSensitive/CheckerVisitor.h
377ec10fbb8dfa678da9a501d49b6ef0b575effc 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add support for 'PreStmt' program points to GRCoreEngine and GRStmtNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76792 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
e01ac5712a94279db2404134817fe6bbf16c1f7c 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add support for 'PreStmt' program points to GRCoreEngine and GRStmtNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76792 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
54885ccbc0da28e0be4d1e4e4478704659c533e8 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add 'PreStmt' program point. This will be used to represent checking for
preconditions (in GRExprEngine) before the statement itself is evaluated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76791 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
cdd4f1783da7c7565be2376d14ca6ab2625aa4b6 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Add 'PreStmt' program point. This will be used to represent checking for
preconditions (in GRExprEngine) before the statement itself is evaluated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76791 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
c7a0e979e87a3821a5c286bd7266c9eba6a95fd1 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Implement operator= for ExplodedNodeSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76790 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
cc2c6eb04d882466c7cfbb544c251d7e0ba0f356 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Implement operator= for ExplodedNodeSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76790 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
22294412060d7af091b5fd44498693e3527a2113 22-Jul-2009 Mike Stump <mrs@apple.com> Make -Wreturn-type be part of -Wmost and therefore -Wall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76784 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
cd0c073cb7935dc7b468bd9c190535a46659bd74 22-Jul-2009 Mike Stump <mrs@apple.com> Make -Wreturn-type be part of -Wmost and therefore -Wall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76784 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f73c851b2b05f4a5eabed6227179b49802ddc53c 22-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> "This patch implements the restrictions on union members detailed in
[class.union]p1", from John McCall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
1f2023ab8b35e0f665eb6c0f11dd6d9b9bca12b8 22-Jul-2009 Douglas Gregor <dgregor@apple.com> "This patch implements the restrictions on union members detailed in
[class.union]p1", from John McCall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76766 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
f375fe22015c77278945d0e05b79df5888808f49 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Move bug reporter "visitors" to their own file and make them part of the public
BugReporter API. No real functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76760 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
5350066e7b19d17a5b137caa6c039ab9626dbfa5 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Move bug reporter "visitors" to their own file and make them part of the public
BugReporter API. No real functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76760 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
3f03d52d973c6e2fd267163d416d6b3b642a84fe 22-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Implement parsing and semantic analysis for out-of-line definitions of static
data members of class templates. We don't instantiate the definitions yet,
however.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dfe3f2d8ba49f03d01f42570e640d9a6755e6c08 22-Jul-2009 Douglas Gregor <dgregor@apple.com> Implement parsing and semantic analysis for out-of-line definitions of static
data members of class templates. We don't instantiate the definitions yet,
however.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c862eb17e54cfd7a379ce941fbccbc841d39f1bc 22-Jul-2009 Mike Stump <mrs@apple.com> Add some documentation, to make it so the next person doens't select
the wrong function. :-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76752 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
0c8c5365be0176e8399e97d7da3293c79bc9da24 22-Jul-2009 Mike Stump <mrs@apple.com> Add some documentation, to make it so the next person doens't select
the wrong function. :-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76752 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
27bc49f518604f310aca9ed21be0bee12bdc6237 22-Jul-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6770276> Support Class<Proto> syntax.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76741 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
470301bac9c8abfc6b451b3b669c6695a9fd1518 22-Jul-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6770276> Support Class<Proto> syntax.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76741 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.td
26fe8b057b942827325911a819d126e9f930f6a4 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Restructure ProgramPoint to have the 'Kind' value be its own instance
variable. This gives us much more flexibility with defining more
ProgramPoints, which is the direction we are heading. The removal of
various bit-mangling of pointers also cleans up the logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76721 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
d6b9e37311013bdf24fd709f7e9962e3b141e6fb 22-Jul-2009 Ted Kremenek <kremenek@apple.com> Restructure ProgramPoint to have the 'Kind' value be its own instance
variable. This gives us much more flexibility with defining more
ProgramPoints, which is the direction we are heading. The removal of
various bit-mangling of pointers also cleans up the logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76721 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
01e249d790c57e1646f63bad466075a623e02f1b 22-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Minor mod. per Doug's comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
cf1831204b2b575fc57b851172f0426559ae482c 22-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Minor mod. per Doug's comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
179bcef0720c75c9efdd617e74f53306fd36eab1 22-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Complain if we're entering the context of a dependent nested-name-specifier but
cannot match that nested-name-specifier to a class template or class template
partial specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7551c183e8d788b5254e9c6f8bd8d719cea47da8 22-Jul-2009 Douglas Gregor <dgregor@apple.com> Complain if we're entering the context of a dependent nested-name-specifier but
cannot match that nested-name-specifier to a class template or class template
partial specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76704 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b462c32207196f76f3b2eb0b6bcaa11fbb2f3397 22-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Basic parsing and semantic analysis for out-of-line definitions of the
member functions of class templates, e.g.,

template<typename T>
struct X {
void f(T);
};

template<typename T> X<T>::f(T) { /* ... */ }



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f59a56e180bf54528d7d1d5afa68fcc13300965a 22-Jul-2009 Douglas Gregor <dgregor@apple.com> Basic parsing and semantic analysis for out-of-line definitions of the
member functions of class templates, e.g.,

template<typename T>
struct X {
void f(T);
};

template<typename T> X<T>::f(T) { /* ... */ }



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4e1272381cf2553bcc4394bc1690be1b954f6be6 22-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to accomodate Doug's comment on default
destruction of base/members for each destructor AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
393612e6c7727f1fee50039254d9f434364cc0b2 22-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to accomodate Doug's comment on default
destruction of base/members for each destructor AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
60ed82d28f0048e57ff0015e3a8bfc6e743ddbbc 21-Jul-2009 Ted Kremenek <kremenek@apple.com> Update stale comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76644 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
e38158de9236dfcded7da56126134e5e3e49cb01 21-Jul-2009 Ted Kremenek <kremenek@apple.com> Update stale comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76644 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
6cd3107b3d729dcba9ab57c2b0a50c0d7ed0a0cb 21-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix PR 4594 by refactoring almost all casting logic from GRExprEngine::VisitCast
to SValuator::EvalCast. In the process, the StoreManagers now use this new cast
machinery, and the hack in GRExprEngine::EvalBind to handle implicit casts
involving OSAtomicCompareAndSwap and friends has been removed (and replaced with
logic closer to the logic specific to those functions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76641 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
32c3fa4195762ba93f0b7114ab36c0941bc34432 21-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix PR 4594 by refactoring almost all casting logic from GRExprEngine::VisitCast
to SValuator::EvalCast. In the process, the StoreManagers now use this new cast
machinery, and the hack in GRExprEngine::EvalBind to handle implicit casts
involving OSAtomicCompareAndSwap and friends has been removed (and replaced with
logic closer to the logic specific to those functions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76641 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SValuator.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
e00f1cd9586335e759d978ab82a2942cd307f2d4 21-Jul-2009 Daniel Dunbar <daniel@zuster.org> driver: Print --version on stdout, to match gcc.
- Patch by Jean-Daniel Dupas


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76632 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
793007242ba209b68ce14ec7547ac70ee981303a 21-Jul-2009 Daniel Dunbar <daniel@zuster.org> driver: Print --version on stdout, to match gcc.
- Patch by Jean-Daniel Dupas


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76632 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
c495faafe8fdc1bae552bc53f9e16d547af9106d 21-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Make Sema::ActOnCXXEnterDeclaratorScope robust against failures to compute
the declaration context, as occurs with out-of-line class template member
definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76622 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3fdbed594f4cb238fe37cad2ec3fefa3b6f67125 21-Jul-2009 Douglas Gregor <dgregor@apple.com> Make Sema::ActOnCXXEnterDeclaratorScope robust against failures to compute
the declaration context, as occurs with out-of-line class template member
definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76622 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
48e539966b6ab97c12a5a39a4aff21d1bbf35feb 21-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose when a destructor uses a unrelated class type as its name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c19f959d7fa5303f2fff5fa7a4968361cb7ef068 21-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose when a destructor uses a unrelated class type as its name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9060d0e1f3cf3feccdc9022a33b79b4063fe7cd4 21-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Add the location of the tag keyword into TagDecl. From Enea
Zaffanella, with tweaks from Abramo Bagnara.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
741dd9a7e1d63e4e385b657e4ce11c5d96d44f72 21-Jul-2009 Douglas Gregor <dgregor@apple.com> Add the location of the tag keyword into TagDecl. From Enea
Zaffanella, with tweaks from Abramo Bagnara.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
0d0b565367d14559294a8340ca6f0dd6d28d8abb 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from Entity::getPrintableName().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76546 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/Entity.h
4c7c5a1d01d5e35aa6fb7724336c9506a88b6b62 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from Entity::getPrintableName().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76546 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/Entity.h
122ae34213e558eaf1c488d7213fd5c234ae7d08 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add an assert for safety check.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76539 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2bcb3439b50c7f227a21d7118a2a76904ec60331 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an assert for safety check.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76539 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3adf26a7ebec30e19b3b3a357c90b6e3c1680663 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Fix a crash that occurs in this C++ case:

struct foo {
static bool value;
};
bool (foo::value); // crash because of parens

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76538 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f37006bc8a9d398d40d6ce329f023ed1a92fe484 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix a crash that occurs in this C++ case:

struct foo {
static bool value;
};
bool (foo::value); // crash because of parens

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76538 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
fc02c8218c90fe1ec183fea7ba82eeed9b90bd07 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Keep only canonical Decls in Entities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76532 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
1f717270d0ef91918413a05d513474db7a9b4c3e 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Keep only canonical Decls in Entities.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76532 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
ff08826d5f83fbf105ab043a18d515e55e32ab1f 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Change the semantics for Entity.

Entity can now refer to declarations that are not visible outside the translation unit.
It is a wrapper of a pointer union, it's either a Decl* for declarations that don't
"cross" translation units, or an EntityImpl* which is associated with the specific "visible" Decl.

Included is a test case for handling fields across translation units.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76515 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/Entity.h
ndex/EntityHandler.h
ndex/IndexProvider.h
f7cf15ca3c9bee7c0348f549e7a8f0af32b5fa54 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change the semantics for Entity.

Entity can now refer to declarations that are not visible outside the translation unit.
It is a wrapper of a pointer union, it's either a Decl* for declarations that don't
"cross" translation units, or an EntityImpl* which is associated with the specific "visible" Decl.

Included is a test case for handling fields across translation units.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76515 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/Entity.h
ndex/EntityHandler.h
ndex/IndexProvider.h
29c3387a826f2efea0882bb304a9699744a3f8f4 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Implement the virtual getNextRedeclaration() for ObjCMethodDecl.

If it's in an ObjCContainerDecl, its "redeclaration" is the method definition in the corresponding ObjCImplDecl.
If it's in an ObjCImplDecl, its "redeclaration" is the method in the interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
57ea6bee79cc60ba20c7886b453f40f380dce1b1 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement the virtual getNextRedeclaration() for ObjCMethodDecl.

If it's in an ObjCContainerDecl, its "redeclaration" is the method definition in the corresponding ObjCImplDecl.
If it's in an ObjCImplDecl, its "redeclaration" is the method in the interface.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
467a23c408c93a9c92e65fe1d99146c3c82c8e93 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add an assertion for the return value of Decl::getNextRedeclaration().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
22cbd2b794676c3b29c2b401c26730ed7047809e 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an assertion for the return value of Decl::getNextRedeclaration().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
200968606a3c72e1e53efc2a8ebe48f1e1510706 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove the ObjCCategoryImpls vector from Sema class.
Use ObjCInterfaceDecl::getCategoryClassMethod() and ObjCInterfaceDecl::getCategoryInstanceMethod() for the same functionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
1cb35dd4840d21cec58648361180d5688446a9ca 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the ObjCCategoryImpls vector from Sema class.
Use ObjCInterfaceDecl::getCategoryClassMethod() and ObjCInterfaceDecl::getCategoryInstanceMethod() for the same functionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76510 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
3a4d98341a3b016f6bf2559dde5f3d9d8bf5f358 21-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> - Introduce ASTContext::getObjCImplementation() and ASTContext::setObjCImplementation() which use a DenseMap to associate
an interface/category with its implementation (if one exists).

- Introduce ObjCInterfaceDecl::get/setImplementation() and ObjCCategoryDecl::get/setImplementation() that use the above methods.

- Add a compiler error for when a category is reimplemented.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
8a1d722f13df383600f36d77f842957c8adb5f1b 21-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> - Introduce ASTContext::getObjCImplementation() and ASTContext::setObjCImplementation() which use a DenseMap to associate
an interface/category with its implementation (if one exists).

- Introduce ObjCInterfaceDecl::get/setImplementation() and ObjCCategoryDecl::get/setImplementation() that use the above methods.

- Add a compiler error for when a category is reimplemented.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
asic/DiagnosticSemaKinds.td
bf560028f96f190fa27059ae1b414dd02705f0dd 21-Jul-2009 Mike Stump <mrs@apple.com> Add yet more analysis for CFGs involving conditionals that are actually constant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76500 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
e5af3ce53ec58995b09381ba645ab2117a46647b 21-Jul-2009 Mike Stump <mrs@apple.com> Add yet more analysis for CFGs involving conditionals that are actually constant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76500 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
87cffe3629e0dfb40d611fd50a30ef4ee423beac 21-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Improve message for bad destructor decl. Per Doug's comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
76ed9cb1d7398bb721cb9df67b3004c14dae8aa8 21-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Improve message for bad destructor decl. Per Doug's comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
9c2aefb2845f600a09a8046072bae296d8eff565 21-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Reuse VarDecl::Init to store the default argument of a ParmVarDecl,
reducing the size of ParmVarDecl by one pointer. Also means that we'll
properly (de-)serialize default arguments in C++ PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76487 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
75f1af02091235a21180cf22ac9f7dd0025577f6 21-Jul-2009 Douglas Gregor <dgregor@apple.com> Reuse VarDecl::Init to store the default argument of a ParmVarDecl,
reducing the size of ParmVarDecl by one pointer. Also means that we'll
properly (de-)serialize default arguments in C++ PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76487 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
275c49779bf240c26fa4e1c05ac970a53de69da5 20-Jul-2009 Mike Stump <mrs@apple.com> Remove an apparently unused forward class decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76476 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
02f43e71121d1c9cc4baed7b21770b66fe1f4305 20-Jul-2009 Mike Stump <mrs@apple.com> Remove an apparently unused forward class decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76476 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFG.h
feac54e7fa947812980016cef743955432e6c11e 20-Jul-2009 Ted Kremenek <kremenek@apple.com> Update DataflowSolver to handle the case where a successor/predecessor block
could be NULL. This allows the solver to handle optimized CFGs where branches
can be determined during CFG-construction to be infeasible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76452 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
0b5a07d3a08e84f5c73aedacdda176c5cdb77c4e 20-Jul-2009 Ted Kremenek <kremenek@apple.com> Update DataflowSolver to handle the case where a successor/predecessor block
could be NULL. This allows the solver to handle optimized CFGs where branches
can be determined during CFG-construction to be infeasible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76452 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
1dcc023ca7043b6951647492a40aad894ec25695 20-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Improve GCC compatibility by allowing static tentative definitions of
incomplete type (with a warning), from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76451 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ec8b59ffc30c65051070e6d6cbb8e4b419210d18 20-Jul-2009 Douglas Gregor <dgregor@apple.com> Improve GCC compatibility by allowing static tentative definitions of
incomplete type (with a warning), from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76451 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5f3021960ff0e3a3c789de9a4462da07c3b46edf 20-Jul-2009 Ted Kremenek <kremenek@apple.com> Enhance GRBranchNodeBuilderImpl (part of GRCoreEngine) to understand the case
where the true or false CFGBlock* for a branch could be NULL. This will handle
the case where we can determine during CFG construction that a branch is
infeasible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76450 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
520035439d7133064325c4df6378c5a8f2f05539 20-Jul-2009 Ted Kremenek <kremenek@apple.com> Enhance GRBranchNodeBuilderImpl (part of GRCoreEngine) to understand the case
where the true or false CFGBlock* for a branch could be NULL. This will handle
the case where we can determine during CFG construction that a branch is
infeasible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76450 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
1b8fd7590f37696e93b65e4b2122c19f29fc1cf2 20-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Issue a more descriptive diagnostics when mis-declaring
a destructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
d33c868d386ef47c2942e2dbff0d9955a8591fa9 20-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Issue a more descriptive diagnostics when mis-declaring
a destructor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
d6fee63e73bad455647d9218cf6236cf515bd537 19-Jul-2009 Ted Kremenek <kremenek@apple.com> Improve debug pretty-printing for ObjCIVarRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76380 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
bcfe03a0beb61082fa2f40887216d8dbca19a024 19-Jul-2009 Ted Kremenek <kremenek@apple.com> Improve debug pretty-printing for ObjCIVarRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76380 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
f90b6d72a924303412b3099afcae6765034e732d 19-Jul-2009 Chris Lattner <sabre@nondot.org> enhance the goto checker to reject jumps across __block variable definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
be6d259a375bbec49659d54a302c4758058f2eef 19-Jul-2009 Chris Lattner <sabre@nondot.org> enhance the goto checker to reject jumps across __block variable definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a035994089b81de429a362590714c89d6097c331 18-Jul-2009 Anders Carlsson <andersca@mac.com> Rename NextOffset to DataSize, which better matches the Itanium C++ ABI

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
243a68551ac9ec71bf341e062418e33eb4f286ff 18-Jul-2009 Anders Carlsson <andersca@mac.com> Rename NextOffset to DataSize, which better matches the Itanium C++ ABI

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
5d3825891051fa6009e63f4862c33b4090442b81 18-Jul-2009 Anders Carlsson <andersca@mac.com> Migrate over to the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76338 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
29445a0542d128cd7ee587ee52229670b9b54a12 18-Jul-2009 Anders Carlsson <andersca@mac.com> Migrate over to the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76338 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
ec63557566268ece37c917d484995199202f3964 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ASTLocation::getReferencedDecl(), for getting the declaration that the ASTLocation references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76336 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
dc50c64c13322dd81b10263cbb023fb1f7eae1fd 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTLocation::getReferencedDecl(), for getting the declaration that the ASTLocation references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76336 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
1f11cc7e6599307202352c905cd3fc7dbd8da47b 18-Jul-2009 Anders Carlsson <andersca@mac.com> More layout builder work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76333 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
93fab9d67ca62e3e291803e5a1309473d6e00344 18-Jul-2009 Anders Carlsson <andersca@mac.com> More layout builder work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76333 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
eba0868ee14aec8b1d137feac786ffc5322132f4 18-Jul-2009 Anders Carlsson <andersca@mac.com> Add a new ASTRecordLayoutBuilder class. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
bda4c1015e27ac82d31afb4519dd53586e61a51a 18-Jul-2009 Anders Carlsson <andersca@mac.com> Add a new ASTRecordLayoutBuilder class. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
63f1ad9bb3a6330182b1d2e6477e316ce499ccd5 18-Jul-2009 Anders Carlsson <andersca@mac.com> Revert r75641.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTRecordLayout.h
ST/RecordLayout.h
19cc4abea06a9b49e0e16a50d335c064cd723572 18-Jul-2009 Anders Carlsson <andersca@mac.com> Revert r75641.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTRecordLayout.h
ST/RecordLayout.h
77763c58e3b7783c8e54671c2b696ecd81ed524f 18-Jul-2009 Steve Naroff <snaroff@apple.com> Remove ObjCQualifiedInterfaceType:-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
rontend/TypeXML.def
c15cb2af27514ecc879daba9aa01389c5203685d 18-Jul-2009 Steve Naroff <snaroff@apple.com> Remove ObjCQualifiedInterfaceType:-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
rontend/TypeXML.def
efece9a9f7d61b7892dd1370a97429114b1eb5e2 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ac4e3794c60fc194fb2bd9764aa81d4cae530ecc 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
4253ec52f603b100f545440d74a737f0e42e2bdc 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce a redecl_iterator in Decl class, so that we can do a "iterate over all declarations of the same decl" without knowing the exact type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
1e4bc099882626059f14d687ed7a1a5518b7f3c2 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a redecl_iterator in Decl class, so that we can do a "iterate over all declarations of the same decl" without knowing the exact type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
80ad73bad9b360387336ef4c87d98b66f97b6926 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the Redeclarable template class, which serves as a base type defining the common interface for Decls that can be redeclared.
Make FunctionDecl and VarDecl use it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Redeclarable.h
f23e839e9ddea324c743d26da43fb767f90ca223 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the Redeclarable template class, which serves as a base type defining the common interface for Decls that can be redeclared.
Make FunctionDecl and VarDecl use it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Redeclarable.h
e9d5bb076ba865bb636c7271cd5d104cb5655134 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove getFirstDeclaration/getLatestDeclaration from FunctionDecl and VarDecl.

Their usefulness is questionable since redecl_iterator was introduced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f00068bd7540639405130ff658025d863da41744 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove getFirstDeclaration/getLatestDeclaration from FunctionDecl and VarDecl.

Their usefulness is questionable since redecl_iterator was introduced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
17c7cab301f05a9e88924b00f5988eecdca2c12f 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove ASTContext::getCanonicalDecl() and use Decl::getCanonicalDecl in its place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76274 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
97fbaa2a38804268a024f1a104b43fcf8b4411b0 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove ASTContext::getCanonicalDecl() and use Decl::getCanonicalDecl in its place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76274 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e3fb785e3bed062f3d0fe49b6beead5ba27d7136 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move the functionality of ASTContext::getCanonicalDecl(), into a virtual method Decl::getCanonicalDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclTemplate.h
b57a4fe73b8227c0dba651818b8495dfca61e530 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the functionality of ASTContext::getCanonicalDecl(), into a virtual method Decl::getCanonicalDecl().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclTemplate.h
c5c807c17608381e6019f714fe594a49ee9cc955 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Set ObjCMethodDecl's EndLoc to the '}' when it's a definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a2e85ada1dfef36201a31f6646bc4ea3bd76a89a 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Set ObjCMethodDecl's EndLoc to the '}' when it's a definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f856701d5116b235e2ea551f81212dab24cfa0d4 18-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add getSourceRange() methods for ObjC Decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ddfd4c9eda34765b08fae4cb31ad5a365face107 18-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add getSourceRange() methods for ObjC Decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d9b39bfecbc4faec367c3b2b53b8a3c7f71bdc3b 17-Jul-2009 Ted Kremenek <kremenek@apple.com> Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methods
until Doug Gregor's Type smart pointer code lands (or more discussion occurs).
These methods just call the new Type::getAs<XXX> methods, so we still have
reduced implementation redundancy. Having explicit getAsXXXType() methods makes
it easier to set breakpoints in the debugger.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
nalysis/PathSensitive/MemRegion.h
35366a67baa970c287c714c957cf78a4131cf60d 17-Jul-2009 Ted Kremenek <kremenek@apple.com> Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methods
until Doug Gregor's Type smart pointer code lands (or more discussion occurs).
These methods just call the new Type::getAs<XXX> methods, so we still have
reduced implementation redundancy. Having explicit getAsXXXType() methods makes
it easier to set breakpoints in the debugger.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
nalysis/PathSensitive/MemRegion.h
c2bc147fbf50fb8d3caf93744f25719aea739dca 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename Entity::getName() to Entity::getPrintableName() to make its purpose
more obvious.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76167 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/Entity.h
56aac3f6c2d23c68f527c8225c74d833e534a262 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename Entity::getName() to Entity::getPrintableName() to make its purpose
more obvious.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76167 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
ndex/Entity.h
95ed5d0eb6e1c2186c740f2e84b1cae0d7e52aba 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> As suggested by Argyrios, revert r76159 and make "FindImmediateParent"
a public static method of ASTLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76166 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
7f66bd28b5e9016f2f6f4ddc52e083352f90ed11 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> As suggested by Argyrios, revert r76159 and make "FindImmediateParent"
a public static method of ASTLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76166 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
c2aab6fc972d6f5f1d32897768ab9673f930d3c1 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor code into a new CallExpr::getDirectCallee() method. Simplify some
code with the new method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a00425414e8c209cabc25d1826b200aeb94259af 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Refactor code into a new CallExpr::getDirectCallee() method. Simplify some
code with the new method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
05654fb2f2cfff69006b4ba95bd3f37368024232 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Relax the assertion in ASTLocation's ctor: if the decl is not the immediate
parent of the stmt, find the immediate parent for the stmt.

This is because sometimes we cannot get the immediate decl of the stmt when
creating the ASTLocation. We can only get a parent of the stmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76159 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
adfc8d14ce2e5611aa366cb9135fa20095b7d191 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Relax the assertion in ASTLocation's ctor: if the decl is not the immediate
parent of the stmt, find the immediate parent for the stmt.

This is because sometimes we cannot get the immediate decl of the stmt when
creating the ASTLocation. We can only get a parent of the stmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76159 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
ba64f383fb78804eb87fe2c237285d2bc24d9fc1 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> CallGraph:
- add IfStmt visitor.
- print information only when a function has callee. Otherwise its ASTContext
map is NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76156 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
24ff030f400b261c142bab748bf2d26e5aaa948c 17-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> CallGraph:
- add IfStmt visitor.
- print information only when a function has callee. Otherwise its ASTContext
map is NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76156 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
60d5671481f35143349d08261af20f08facbde17 17-Jul-2009 Ted Kremenek <kremenek@apple.com> Replaced Type::getAsLValueReferenceType(), Type::getAsRValueReferenceType(), Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5cad1f74469d4d8b4fc51fe53a7837778aeb6107 17-Jul-2009 Ted Kremenek <kremenek@apple.com> Replaced Type::getAsLValueReferenceType(), Type::getAsRValueReferenceType(), Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8a9cddd2edc7f89ebba24b63435fcb62769614f5 17-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> ObjCCategoryImplDecl and ObjCImplementation do not derive directly from DeclContext but from a new abstract ObjCImplDecl.
Reflect this change on the "DeclContext hierarchy".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
ST/DeclObjC.h
bfb498d0996ef049efe9476f2802976fd145cd60 17-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> ObjCCategoryImplDecl and ObjCImplementation do not derive directly from DeclContext but from a new abstract ObjCImplDecl.
Reflect this change on the "DeclContext hierarchy".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
ST/DeclObjC.h
6a6c0971f29d9fb7cb5e7318a4a493ed1331258c 17-Jul-2009 Ted Kremenek <kremenek@apple.com> Replace Type::getAsReferenceType() with Type::getAs<ReferenceType>().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
808825cd08704d1cccef605f8cd3ef83c93eac78 17-Jul-2009 Ted Kremenek <kremenek@apple.com> Replace Type::getAsReferenceType() with Type::getAs<ReferenceType>().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f5de0a3cbaa216daf2ea7e42611bbd1ebad42fa7 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.
This method is intended to eventually replace the individual
Type::getAsXXXType<> methods.

The motivation behind this change is twofold:

1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
them are basically copy-and-paste.

2) By centralizing the implementation of the getAs<Type> logic we can more
smoothly move over to Doug Gregor's proposed canonical type smart pointer
scheme.

Along with this patch:

a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
nalysis/PathSensitive/MemRegion.h
1a1a6e2bd4c5aefd7fd643cf25915f9623a02e59 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.
This method is intended to eventually replace the individual
Type::getAsXXXType<> methods.

The motivation behind this change is twofold:

1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
them are basically copy-and-paste.

2) By centralizing the implementation of the getAs<Type> logic we can more
smoothly move over to Doug Gregor's proposed canonical type smart pointer
scheme.

Along with this patch:

a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Type.h
nalysis/PathSensitive/MemRegion.h
ba927fcab0eb1748bed5bf8af58507116a9dc522 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Move the source-level CFG from libAST to libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
e41611aa2237d06a0ef61db4528fb2883a8defcd 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Move the source-level CFG from libAST to libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramPoint.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
a960479e82ebf6c28dfc5843f0d8bf34db5702e3 16-Jul-2009 Steve Naroff <snaroff@apple.com> Cleanup a couple loops and improve a comment (based on feedback from Fariborz).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8f16756441450ed9fb39316e47d107fc2a1ef35b 16-Jul-2009 Steve Naroff <snaroff@apple.com> Cleanup a couple loops and improve a comment (based on feedback from Fariborz).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ad75bd277827709b7597fb94de498548bff4ee23 16-Jul-2009 Steve Naroff <snaroff@apple.com> Remove ASTContext::isObjCObjectPointerType().
Convert all clients to use the new predicate on Type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76076 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f49545602089be5b1f744e04326b8a566f6d8773 16-Jul-2009 Steve Naroff <snaroff@apple.com> Remove ASTContext::isObjCObjectPointerType().
Convert all clients to use the new predicate on Type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76076 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fa011bdce0fb4da854bbaee2e9038cad8470598b 16-Jul-2009 Chris Lattner <sabre@nondot.org> codegen string literals using private linkage now like llvm-gcc, eliminating
some target hooks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75895 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
95b851e55c328af4b69da7bfc1124bf258c0ffe5 16-Jul-2009 Chris Lattner <sabre@nondot.org> codegen string literals using private linkage now like llvm-gcc, eliminating
some target hooks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75895 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
369239cdd9a2dc7b9044064d1404fc36cf378925 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Move RegionStoreManager over to using new
ValueManager::makeArrayIndex()/convertArrayIndex() methods. This
handles yet another crash case when reasoning about array indices of
different bitwidth and signedness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SValuator.h
465373946b5ae84f7c3d890cc25cb23fd88dd650 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Move RegionStoreManager over to using new
ValueManager::makeArrayIndex()/convertArrayIndex() methods. This
handles yet another crash case when reasoning about array indices of
different bitwidth and signedness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SValuator.h
40d9c5882878c29f607470d529ac2a1d2db5c054 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Two changes:

(1) Moved the SValuator object from GRExprEngine to ValueManager. This
allows ValueManager to use the SValuator when creating SVals.

(2) Added ValueManager::makeArrayIndex() and
ValueManager::convertToArrayIndex(), two SVal creation methods
that will help RegionStoreManager always have a consistent set of
SVals with the same integer size and type when reasoning about
array indices.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75882 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueManager.h
06669c8e5c24251f6b140298148fbe53ab70a936 16-Jul-2009 Ted Kremenek <kremenek@apple.com> Two changes:

(1) Moved the SValuator object from GRExprEngine to ValueManager. This
allows ValueManager to use the SValuator when creating SVals.

(2) Added ValueManager::makeArrayIndex() and
ValueManager::convertToArrayIndex(), two SVal creation methods
that will help RegionStoreManager always have a consistent set of
SVals with the same integer size and type when reasoning about
array indices.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75882 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueManager.h
be36bb28e6e97f1ea660027648ff6a88aa4d1c1a 16-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Generate error on declaration containing 'static' and '__attribute__((weak))'
Patch by Ryan Flynn


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f23ecd91bf0205b776dfab2c5231e895019a7400 16-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Generate error on declaration containing 'static' and '__attribute__((weak))'
Patch by Ryan Flynn


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a62ad24ee357721a7f5d6d4111ae5ef563a8aab9 16-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Commit the initial implementation of call graph building.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
6bd8fb50acadeeafd923e98cd6a94efeb75693dc 16-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Commit the initial implementation of call graph building.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CallGraph.h
0a51a999d5088c470c6714522231076dbd1c684d 16-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a stinko which caused an ast-print test failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a8ded8be82f7d5f5fc93c8626cfa9ca9cee4199e 16-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a stinko which caused an ast-print test failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
21e25e780b1a6a44bedef0dae4e89ebb982cacd1 16-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Added ASTs to destructor decl AST for default destruction of object's
base/members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
560de45ccbf21c5e4dbeef3fc49f932e499cc181 16-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Added ASTs to destructor decl AST for default destruction of object's
base/members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
578a5f91b5d5d58d61b2896c88bcf3baca29964e 15-Jul-2009 Steve Naroff <snaroff@apple.com> Remove default argument, since it isn't being used (suggested by Fariborz).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75815 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c02397509bb4057f3a7d6f5f4d764d122ed2381f 15-Jul-2009 Steve Naroff <snaroff@apple.com> Remove default argument, since it isn't being used (suggested by Fariborz).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75815 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9f324ae90f87c56d3c1fc87b27bb9b6ebdf277b0 15-Jul-2009 Steve Naroff <snaroff@apple.com> Add a "t".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75810 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f6265efe7e35fb0fba315da6391368aeee1e57c9 15-Jul-2009 Steve Naroff <snaroff@apple.com> Add a "t".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75810 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7bffd37bd2642e9d1bf0d093e9c1a7b3467f3014 15-Jul-2009 Steve Naroff <snaroff@apple.com> Implement the ObjC pseudo built-in types as clang "BuiltinType's". I say pseudo built-in types, since Sema still injects a typedef for recognition (i.e. they aren't truly built-ins from a parser perspective).

This removes the static data/methods on ObjCObjectPointerType while preserving the nice API (no need to fiddle with ASTContext:-).

This patch also adds Type::isObjCBuiltinType().

This should be the last fairly large patch related to recrafting the ObjC type system. The follow-on patches should be fairly small.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75808 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
rontend/PCHBitCodes.h
de2e22d33afec98324a66a358dfe0951b3c7259a 15-Jul-2009 Steve Naroff <snaroff@apple.com> Implement the ObjC pseudo built-in types as clang "BuiltinType's". I say pseudo built-in types, since Sema still injects a typedef for recognition (i.e. they aren't truly built-ins from a parser perspective).

This removes the static data/methods on ObjCObjectPointerType while preserving the nice API (no need to fiddle with ASTContext:-).

This patch also adds Type::isObjCBuiltinType().

This should be the last fairly large patch related to recrafting the ObjC type system. The follow-on patches should be fairly small.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75808 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticSemaKinds.td
rontend/PCHBitCodes.h
6ae4efab37c530a2a9d4a21f512614e9bc3e7f6c 15-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add getName() method to Entity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75740 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
53363b26d2bd5ae7890957d7acabfd407bd362b7 15-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add getName() method to Entity.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75740 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
2b5c5a04c880f80c2249678baf7f8378134d9a00 15-Jul-2009 Ted Kremenek <kremenek@apple.com> More test cases revealed that the logic in StoreManager::InvalidateRegion() needs more finesse when handling the invalidation of pointers. Pointers that were invalidated as integers could later cause problems for clients using them as pointers. It is easier for us to model a symbolic value as a pointer rather than modeling a non-symbolic value as a pointer.

This patch causes:
- StoreManager::InvalidateRegion() to not used the casted type of a region if
it would cause a pointer type to be invalidated as a non-pointer type.
- Pushes RegionStore::RetrieveElement() further by handling retrievals from
symbolic arrays that have been invalidated. This uses the new SymbolDerived
construct that was recently introduced.

The result is that the failing test in misc-ps-region-store-x86_64.m now passes.
Both misc-ps-region-store-x86_64.m and misc-ps-region-store-i386.m contain a
test case that motivated this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
a6275a534da701f37d19a068e6361e5f10f983a1 15-Jul-2009 Ted Kremenek <kremenek@apple.com> More test cases revealed that the logic in StoreManager::InvalidateRegion() needs more finesse when handling the invalidation of pointers. Pointers that were invalidated as integers could later cause problems for clients using them as pointers. It is easier for us to model a symbolic value as a pointer rather than modeling a non-symbolic value as a pointer.

This patch causes:
- StoreManager::InvalidateRegion() to not used the casted type of a region if
it would cause a pointer type to be invalidated as a non-pointer type.
- Pushes RegionStore::RetrieveElement() further by handling retrievals from
symbolic arrays that have been invalidated. This uses the new SymbolDerived
construct that was recently introduced.

The result is that the failing test in misc-ps-region-store-x86_64.m now passes.
Both misc-ps-region-store-x86_64.m and misc-ps-region-store-i386.m contain a
test case that motivated this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
9787675acb4aabc9e8eea8350dbd5faaffe27f93 15-Jul-2009 Ted Kremenek <kremenek@apple.com> Introduced the notion of a "derived symbol" using the class SymbolDerived.
SymbolDerived allows us to model symbolic values that are related to other
symbols via a region hierarchy. For example, SymbolDerived can be used to model
individual values of a symbolic array.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75728 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
fb91c70e24e20f8704edf9bc5049ffbe7e234a38 15-Jul-2009 Ted Kremenek <kremenek@apple.com> Introduced the notion of a "derived symbol" using the class SymbolDerived.
SymbolDerived allows us to model symbolic values that are related to other
symbols via a region hierarchy. For example, SymbolDerived can be used to model
individual values of a symbolic array.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75728 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
7e92d3516490f5edfc60903e573342020d54ef4c 14-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove -ftraditional option, which gcc doesn't actually support. Make
using -traditional and -traditional-cpp with clang an error because
it's unsupported in clang and causes a significant change in the
semantics of the language.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75690 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
ceb5c5b7f67a30fae305d1d19b478b623e4fbced 14-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove -ftraditional option, which gcc doesn't actually support. Make
using -traditional and -traditional-cpp with clang an error because
it's unsupported in clang and causes a significant change in the
semantics of the language.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75690 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
79ae19a7c9421e17ba26ea9cbf5a7f4dcc015cde 14-Jul-2009 Steve Naroff <snaroff@apple.com> Introduce Type::isAnyPointerType() and convert all clients (suggested by Chris).

I don't love the name, however it simplifies the code and is a worthwhile change. If/when we come up with a better name, we can do a search/replace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
nalysis/PathSensitive/SVals.h
58f9f2c884af6b72d036b746a016d8031d31cb7a 14-Jul-2009 Steve Naroff <snaroff@apple.com> Introduce Type::isAnyPointerType() and convert all clients (suggested by Chris).

I don't love the name, however it simplifies the code and is a worthwhile change. If/when we come up with a better name, we can do a search/replace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
nalysis/PathSensitive/SVals.h
9294d19c99e38be44342f84051431c371ccd4983 14-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to build AST for ctor's initializer list according to
semantics of order of construction [class.init].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75649 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d01c915dda27bb0045687f0a08bbcab1dd40e652 14-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to build AST for ctor's initializer list according to
semantics of order of construction [class.init].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75649 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7558ec6134e0291f6aa01a31d737848423fe642a 14-Jul-2009 Anders Carlsson <andersca@mac.com> Rename RecordLayout.h to ASTRecordLayout.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTRecordLayout.h
ST/RecordLayout.h
3d598a5ab3c8aabce0a03a2f5dea65eee643e5ac 14-Jul-2009 Anders Carlsson <andersca@mac.com> Rename RecordLayout.h to ASTRecordLayout.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTRecordLayout.h
ST/RecordLayout.h
b79574e54f3e1b135b87511399ea63363654c2ad 14-Jul-2009 Steve Naroff <snaroff@apple.com> Add a "TypeSpecStartLoc" to FieldDecl. Patch contributed by Enea Zaffanella.

Note: One day, it might be useful to consider adding this info to DeclGroup (as the comments in FunctionDecl/VarDecl suggest). For now, I think this works fine. I considered moving this to ValueDecl (a common ancestor of FunctionDecl/VarDecl/FieldDecl), however this would add overhead to EnumConstantDecl (which would burn memory and isn't necessary).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75635 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ea218b8e8f9ba82d1c76bcb7e86d121a5f65ebed 14-Jul-2009 Steve Naroff <snaroff@apple.com> Add a "TypeSpecStartLoc" to FieldDecl. Patch contributed by Enea Zaffanella.

Note: One day, it might be useful to consider adding this info to DeclGroup (as the comments in FunctionDecl/VarDecl suggest). For now, I think this works fine. I considered moving this to ValueDecl (a common ancestor of FunctionDecl/VarDecl/FieldDecl), however this would add overhead to EnumConstantDecl (which would burn memory and isn't necessary).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75635 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2bcacb61cf94b71e5c87f29d517f8dc29fe3993e 14-Jul-2009 Alisdair Meredith <public@alisdairm.net> Basic support for C++0x unicode types. Support for literals will follow in an incremental patch

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/TargetInfo.h
rontend/PCHBitCodes.h
rontend/TypeXML.def
arse/DeclSpec.h
f5c209d23b20ada4a9b6235db50317239cbf6ae1 14-Jul-2009 Alisdair Meredith <public@alisdairm.net> Basic support for C++0x unicode types. Support for literals will follow in an incremental patch

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/TargetInfo.h
rontend/PCHBitCodes.h
rontend/TypeXML.def
arse/DeclSpec.h
1d2f3a31ce12054cf7ef8b20822c0c533cba783c 14-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce redecl_iterator, used for iterating over the redeclarations of a FunctionDecl or VarDecl.

It iterates over all the redeclarations, regardless of the starting point. For example:

1) int f();
2) int f();
3) int f();

if you have the (2) FunctionDecl and call redecls_begin/redecls_end to iterate, you'll get this sequence:
(2)
(1)
(3)

The motivation to introduce this was that, previously, if (3) was a function definition,
and you called getBody() at (2), it would not return it, since getBody() iterated over the previous declarations only,
so it would only check (2) and (1).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c37929c9e0dba89770dc5f0fbcfa0c9046da0b06 14-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce redecl_iterator, used for iterating over the redeclarations of a FunctionDecl or VarDecl.

It iterates over all the redeclarations, regardless of the starting point. For example:

1) int f();
2) int f();
3) int f();

if you have the (2) FunctionDecl and call redecls_begin/redecls_end to iterate, you'll get this sequence:
(2)
(1)
(3)

The motivation to introduce this was that, previously, if (3) was a function definition,
and you called getBody() at (2), it would not return it, since getBody() iterated over the previous declarations only,
so it would only check (2) and (1).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
349185b29adbc4d043a4be22853f59c611cf22db 14-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce FunctionDecl::getLatestDeclaration() and VarDecl::getLatestDeclaration().

For multiple redeclarations they return the last one.

Also, add some non const versions of methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
03d5e3d03117a56097cea98f53198fb20de1eb35 14-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce FunctionDecl::getLatestDeclaration() and VarDecl::getLatestDeclaration().

For multiple redeclarations they return the last one.

Also, add some non const versions of methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9f000a334de72476b5dd0cf4548b845f751fe469 14-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce FunctionDecl::getFirstDeclaration() and VarDecl::getFirstDeclaration().

For multiple redeclarations they return the first one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7bf792fdde4641d865eba4a068d862d5300bd1e4 14-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce FunctionDecl::getFirstDeclaration() and VarDecl::getFirstDeclaration().

For multiple redeclarations they return the first one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a06a9dab263393b51d684461338946c552e1e23c 14-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Read/write a CXXOperatorCallExpr from/to PCH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
rontend/PCHBitCodes.h
ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8 14-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Read/write a CXXOperatorCallExpr from/to PCH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
rontend/PCHBitCodes.h
eb92564b8e5ab9eaadb835b0bf6aee735aa4f370 14-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Pass the right brace SourceLocation from the Parser to the TagDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75591 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
07a5b282fbe719986df9ed05543081ea0ed94aa5 14-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Pass the right brace SourceLocation from the Parser to the TagDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75591 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b929dccf22b22a9e9dd09758a7d95227e8a19633 14-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add the SourceLocation for the right brace in TagDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f602c8b6ce1a269c0bf8b3f049e923f4ea5c18e2 14-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add the SourceLocation for the right brace in TagDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
92be7ce342ce6e07cd3a3ba3920193fa284cd279 14-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Instead of recovering from a wrong invalidation, this patch aims to
invalidate the region correctly. It uses the cast-to type to invalidate
the region when available. To avoid invalid cast-to type like 'void*' or 'id',
region store now only records non-generic casts of regions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75580 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
8203725f37fbb45ded343e4378247fee3389c0da 14-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Instead of recovering from a wrong invalidation, this patch aims to
invalidate the region correctly. It uses the cast-to type to invalidate
the region when available. To avoid invalid cast-to type like 'void*' or 'id',
region store now only records non-generic casts of regions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75580 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
42d8d0ec56ba6586e201d715611fa11299d99ad7 14-Jul-2009 Ted Kremenek <kremenek@apple.com> Tidy pretty-printing for SVals, using 'dump()' instead of 'printStdErr()', and implementing operator<< support for llvm::raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75560 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
6f9b3a4d7143362d3c2ac1f843d76971799f5b97 14-Jul-2009 Ted Kremenek <kremenek@apple.com> Tidy pretty-printing for SVals, using 'dump()' instead of 'printStdErr()', and implementing operator<< support for llvm::raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75560 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
faf9487df365a8494f67e5884b88abdf1c3c8ada 14-Jul-2009 Ted Kremenek <kremenek@apple.com> Change pretty-printing API for SymExprs and MemRegions to use a naming convention and style similar to other elements in Clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75548 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SymbolManager.h
8800ad4eaa1621f6d23c8264971063b9f8da6a2e 14-Jul-2009 Ted Kremenek <kremenek@apple.com> Change pretty-printing API for SymExprs and MemRegions to use a naming convention and style similar to other elements in Clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75548 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SymbolManager.h
898111463b64a26d55af56474ad8cca1fdb76268 13-Jul-2009 Steve Naroff <snaroff@apple.com> - Improve comment for Type::getPointeeType().
- Remove a couple redundant casts/returns.
- Fix 80 column violations for all getAsStringInternal() methods.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75485 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f8910df57799256c1897a8610dc52685729ae90e 13-Jul-2009 Steve Naroff <snaroff@apple.com> - Improve comment for Type::getPointeeType().
- Remove a couple redundant casts/returns.
- Fix 80 column violations for all getAsStringInternal() methods.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75485 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
280333958656d52ff846058f4aa996f119bba560 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75441 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/PCHReader.h
eb19485625c7529ffa644e10829533157a8e8d4f 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75441 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/PCHReader.h
198e8e46d0bfe535f044df35d1b87da86a148a84 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ST/TemplateName.h
ST/Type.h
3b4ea54acf01f72f6eb74d96689dda86d950228f 13-Jul-2009 Daniel Dunbar <daniel@zuster.org> Match declaration to definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ST/TemplateName.h
ST/Type.h
ec3e0d638fc7b8c38deeb6bb8795e45dd6e1c078 13-Jul-2009 Chris Lattner <sabre@nondot.org> fix typo in file headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75436 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/IndexProvider.h
ndex/TranslationUnit.h
56a906cb66ee5729ce2c291e3f310531b8ebabd1 13-Jul-2009 Chris Lattner <sabre@nondot.org> fix typo in file headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75436 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/IndexProvider.h
ndex/TranslationUnit.h
a27827a75d464ad4c4020ecd51b7d3a275865f97 13-Jul-2009 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75435 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Program.h
176e8d404f49952104a136635a4bbfe31a927a50 13-Jul-2009 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75435 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Program.h
dab77f1143e8bb77b9107a81fa311af5355f87c5 12-Jul-2009 Chris Lattner <sabre@nondot.org> add push/pop semantics for diagnostics. Patch by Louis Gerbarg!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticLexKinds.td
04ae2df026b275aae5dddfc0db5ca55ff4e62179 12-Jul-2009 Chris Lattner <sabre@nondot.org> add push/pop semantics for diagnostics. Patch by Louis Gerbarg!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticLexKinds.td
68acecb4d2a3aa824de5551c16d9bdcecd854188 11-Jul-2009 Anders Carlsson <andersca@mac.com> Implement more of C++0x 'auto'. A variable with an auto type specifier must have an initializer. Also, move some tests around to match the C++0x draft better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
6a75cd9c1d54625fca7b5477ab9545bcdbd85ea4 11-Jul-2009 Anders Carlsson <andersca@mac.com> Implement more of C++0x 'auto'. A variable with an auto type specifier must have an initializer. Also, move some tests around to match the C++0x draft better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
329ec22704eee011640ebf37c29343e82fb984c6 11-Jul-2009 Steve Naroff <snaroff@apple.com> This patch includes a conceptually simple, but very intrusive/pervasive change.

The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches.

This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic.

By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time.

Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
nalysis/PathSensitive/SVals.h
14108da7f7fc059772711e4ffee1322a27b152a7 11-Jul-2009 Steve Naroff <snaroff@apple.com> This patch includes a conceptually simple, but very intrusive/pervasive change.

The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches.

This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic.

By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time.

Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
nalysis/PathSensitive/SVals.h
c1ce61b59d6d0c462133d0d375679bf822866e14 10-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to build list of inherited virtual base classes
in their order of construction for each class and use it
to to check on propery order of base class construction
under -Wreorder option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
40c072f44ff081293f79909ecc518af23938108e 10-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to build list of inherited virtual base classes
in their order of construction for each class and use it
to to check on propery order of base class construction
under -Wreorder option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75270 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
42f394e67047624dcc15d22239f615885ad712ac 10-Jul-2009 Anders Carlsson <andersca@mac.com> Fix a problem that Eli noticed, and that Doug helped me fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
563a03b1338d31c2462def43253a722bc885d384 10-Jul-2009 Anders Carlsson <andersca@mac.com> Fix a problem that Eli noticed, and that Doug helped me fix.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
72d1f3992e22da89b2e0afa3ca09b539955c5e01 10-Jul-2009 Ted Kremenek <kremenek@apple.com> Rename potentially ambiguous member template 'getRegion' to 'getSubRegion' to hopefully resolve template lookup ambiguities on some compilers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75253 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
eeea45611d45238c34474c183cee96d47ae79e24 10-Jul-2009 Ted Kremenek <kremenek@apple.com> Rename potentially ambiguous member template 'getRegion' to 'getSubRegion' to hopefully resolve template lookup ambiguities on some compilers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75253 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
35ad6206c3fda6fa2ca126162b43970702759d4c 10-Jul-2009 Ted Kremenek <kremenek@apple.com> Switch BasicStoreManager to use the new CastRegion implementation by default,
and replace the 'clang-cc' option '-analyzer-store=basic-new-cast' with
'-analyzer-store=basic-old-cast'. We'll keep the old CastRegion implementation
around for a little while for regression testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75209 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
rontend/Analyses.def
c037eac3bda3c636c961aab6377beea3242e81e4 10-Jul-2009 Ted Kremenek <kremenek@apple.com> Switch BasicStoreManager to use the new CastRegion implementation by default,
and replace the 'clang-cc' option '-analyzer-store=basic-new-cast' with
'-analyzer-store=basic-old-cast'. We'll keep the old CastRegion implementation
around for a little while for regression testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75209 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
rontend/Analyses.def
4732543017ef10cfadaeffb3e677d6e09d326108 10-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> don't crash if class is using itself as its super class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fdee089b11e0bb57aa2c7291dd5e4201c2f906ff 10-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> don't crash if class is using itself as its super class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cca8d8d5d553dabed70e2d11dd18ccfd33bb2703 09-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Sema check on out of order object initialization of
class object's base and members under -Wreorder flag.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
eb96e1275206b888eee484aac8b1b693417c6521 09-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Sema check on out of order object initialization of
class object's base and members under -Wreorder flag.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75168 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
4e8d569581255e2749e578cf357dc58630ce4ebc 09-Jul-2009 Anders Carlsson <andersca@mac.com> Store the isAddressOfOperand in the UnresolvedDeclRefExpr, so that we can pass it when instantiating the expr. Fixes another member pointer bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
9b31df4acdeeb61bb084a03fc37bc5bd570a659e 09-Jul-2009 Anders Carlsson <andersca@mac.com> Store the isAddressOfOperand in the UnresolvedDeclRefExpr, so that we can pass it when instantiating the expr. Fixes another member pointer bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a142a05732cac5218bd4f1a53880abce9a66bbea 09-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Implement the simple form of overload resolution used when taking the
address of an overloaded function (which may involve both functions
and function templates).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75069 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
00aeb52314ec0b1902bb15aef9c62259296fbc29 09-Jul-2009 Douglas Gregor <dgregor@apple.com> Implement the simple form of overload resolution used when taking the
address of an overloaded function (which may involve both functions
and function templates).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75069 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49196be83bcd535ecfa9d7bb6bf8ffea450dd457 09-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/7034511> ValueManager::makeIntVal(uint64_t X, QualType T) should return a 'Loc' when 'T' is a pointer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75062 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
599788806ada4be1d635304104165500d6f9668d 09-Jul-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/7034511> ValueManager::makeIntVal(uint64_t X, QualType T) should return a 'Loc' when 'T' is a pointer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75062 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
6437147bf6c28b9b08130662c6380b9a654cbd28 08-Jul-2009 Anders Carlsson <andersca@mac.com> It's not allowed to form member pointers to members that have reference type. Add a test for this and the rest of [dcl.mptr]p3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f9e48bdea6e56404deb0776bf2d0eddedb77dce3 08-Jul-2009 Anders Carlsson <andersca@mac.com> It's not allowed to form member pointers to members that have reference type. Add a test for this and the rest of [dcl.mptr]p3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75054 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b1cebe7694eef21fb7b580e62f8089aa58d23098 08-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Bump the PCH version number

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75049 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
1bbeec7eca9030f2efa6c690d5edf7b533a87c1f 08-Jul-2009 Douglas Gregor <dgregor@apple.com> Bump the PCH version number

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75049 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
456cd0600204b9bfbf8927927c9612897a2d720f 08-Jul-2009 Chris Lattner <sabre@nondot.org> fix PR4513, a build problem with VC++, patch by James Abbatiello!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
cb3f20ded288518be8559d2057d5059fadcf3bb6 08-Jul-2009 Chris Lattner <sabre@nondot.org> fix PR4513, a build problem with VC++, patch by James Abbatiello!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75013 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
6e2641067adfb98bab5adceeccd380bb5be36c27 08-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a corner case with argument-dependent lookup and overloaded function sets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
daa439a6c47d3299157b94a496bf22389bbc77a3 08-Jul-2009 Douglas Gregor <dgregor@apple.com> Fix a corner case with argument-dependent lookup and overloaded function sets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74999 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
33b1a9542bf9dbe0e0fc6b9b7a0b404ac4a1777e 08-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Initialize the ConstantArraySizeAsWritten field of PrintingPolicy class.

It contained garbage since the constructor didn't initialize it and caused test/Sema/array-constraint.c to randomly fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
bbb3128b449b6c5e7822e8b781445e348a9117dc 08-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Initialize the ConstantArraySizeAsWritten field of PrintingPolicy class.

It contained garbage since the constructor didn't initialize it and caused test/Sema/array-constraint.c to randomly fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
614e8f099b8334e2307d26d45cb066f01c4fd71b 08-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Implemented memmove_collectable API for Next runtime
when struct variables with GC'able members are copied into.
Will provide a test case later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
082b02e8403d3ee9d2ded969fbe0e5d472f04cd8 08-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Implemented memmove_collectable API for Next runtime
when struct variables with GC'able members are copied into.
Will provide a test case later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d1c0b682af81784cb991a5479097e795b5868bc4 08-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> The canonical type of typeof or decltype with a dependent type is itself,
not Context.DependentTy. I'll let Anders check in the test case for this one...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dd0257c77719a13d4acd513df40b04300cbfc871 08-Jul-2009 Douglas Gregor <dgregor@apple.com> The canonical type of typeof or decltype with a dependent type is itself,
not Context.DependentTy. I'll let Anders check in the test case for this one...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
953d12aabb8cb25f0713a0913c837d2fdf8996b2 07-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement checking of exception spec compatibility for overriding virtual functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
23c7d061367dd2fc1631e867cffc3d6aae24e799 07-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement checking of exception spec compatibility for overriding virtual functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1b749a01660141c6af12b074f50556c2fed91ffe 07-Jul-2009 Anders Carlsson <andersca@mac.com> Some (most) type trait expressions require that the argument passed in is a complete type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3292d5ce510061ea50152f53b7ab462b622176f4 07-Jul-2009 Anders Carlsson <andersca@mac.com> Some (most) type trait expressions require that the argument passed in is a complete type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74937 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
151fac73d9d9dd2f14606c124f54abbce2e19144 07-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Make ASTContext explicitly keep track of the declaration for the C
FILE type, rather than using name lookup to find FILE within the
translation unit. Within precompiled headers, FILE is treated as yet
another "special type" (like __builtin_va_list).

This change should provide a performance improvement (not verified),
since the lookup into the translation unit declaration
forces the (otherwise unneeded) construction of a large hash table.
More importantly, with precompiled headers, the construction
of that table requires deserializing most of the top-level
declarations from the precompiled header, which are then unused.

Fixes PR 4509.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74911 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
c29f77b769bcc5b6dc85e72c8e3cc2e348e5cf25 07-Jul-2009 Douglas Gregor <dgregor@apple.com> Make ASTContext explicitly keep track of the declaration for the C
FILE type, rather than using name lookup to find FILE within the
translation unit. Within precompiled headers, FILE is treated as yet
another "special type" (like __builtin_va_list).

This change should provide a performance improvement (not verified),
since the lookup into the translation unit declaration
forces the (otherwise unneeded) construction of a large hash table.
More importantly, with precompiled headers, the construction
of that table requires deserializing most of the top-level
declarations from the precompiled header, which are then unused.

Fixes PR 4509.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74911 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
b29c9b2f9e7fd23d65bfdbafb8787579d04e2108 07-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> A few change per Doug's feedback.
- Fariborz



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0d3c26c76997688eaf7e51764a66815652e09642 07-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> A few change per Doug's feedback.
- Fariborz



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3ee12aed6dce6dab954485b4f6e6d391bab96588 07-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce the notion of "Relocatable" precompiled headers, which are built
with a particular system root directory and can be used with a different
system root directory when the headers it depends on have been installed.
Relocatable precompiled headers rewrite the file names of the headers used
when generating the PCH file into the corresponding file names of the
headers available when using the PCH file.

Addresses <rdar://problem/7001604>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/Options.def
rontend/ASTConsumers.h
rontend/PCHReader.h
rontend/PCHWriter.h
e650c8c3bca2f58cad8ffa8aab63126d26e890cd 07-Jul-2009 Douglas Gregor <dgregor@apple.com> Introduce the notion of "Relocatable" precompiled headers, which are built
with a particular system root directory and can be used with a different
system root directory when the headers it depends on have been installed.
Relocatable precompiled headers rewrite the file names of the headers used
when generating the PCH file into the corresponding file names of the
headers available when using the PCH file.

Addresses <rdar://problem/7001604>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
river/Options.def
rontend/ASTConsumers.h
rontend/PCHReader.h
rontend/PCHWriter.h
6da24e57c82d551117a0b8c178635301741f7338 07-Jul-2009 Ted Kremenek <kremenek@apple.com> Unbreak build by including header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
0307cd59e0a48adeb9b69e3270dfe3625e7e2954 07-Jul-2009 Ted Kremenek <kremenek@apple.com> Unbreak build by including header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
872094b08ac9aedfe6784dd4aeccb7a36979cc06 06-Jul-2009 Ted Kremenek <kremenek@apple.com> Make 'BasicStoreManager' + 'NewCastRegion' testable from the command line using '-analyzer-store=basic-new-cast'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74865 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
rontend/Analyses.def
e1cea75e70d76f55157749a7bcad319050492945 06-Jul-2009 Ted Kremenek <kremenek@apple.com> Make 'BasicStoreManager' + 'NewCastRegion' testable from the command line using '-analyzer-store=basic-new-cast'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74865 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
rontend/Analyses.def
d45d1129c9dbf71765d9d4e6a670a550f7bdce31 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Some changes to ASTLocation's methods

-Change hasStmt() to isStmt()
-Add isDecl()
-Add getSourceRange()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74862 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
755c6b42154e7c2225d973babf84eb2587576bcd 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Some changes to ASTLocation's methods

-Change hasStmt() to isStmt()
-Add isDecl()
-Add getSourceRange()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74862 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
aa5c4899b315cd8897b25220729d885a395430f3 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add some comments to the ASTLocation class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74861 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
8fb3333d45ab3b327766e26310581cacf43fb374 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add some comments to the ASTLocation class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74861 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/ASTLocation.h
98eec710d45954ac3c74ed8cedd85fd0dac4a0db 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move the 'ResolveLocationInAST' function from the Frontend library to the Index library.

Also, cut down its comments; more comments will be added to ASTLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74860 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
ndex/Utils.h
818e15b89facfe0b62c8c22c18fde383a17455eb 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the 'ResolveLocationInAST' function from the Frontend library to the Index library.

Also, cut down its comments; more comments will be added to ASTLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74860 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
ndex/Utils.h
75abd9c49cd26ed18bc99eafa34e3e733f92f3ca 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move ASTLocation and DeclReferenceMap from the AST library to the Index library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74859 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTLocation.h
ST/DeclReferenceMap.h
rontend/Utils.h
ndex/ASTLocation.h
ndex/DeclReferenceMap.h
ccbcb70ee96cb67ed6c8b4142d050f3a6764edd7 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move ASTLocation and DeclReferenceMap from the AST library to the Index library.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74859 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTLocation.h
ST/DeclReferenceMap.h
rontend/Utils.h
ndex/ASTLocation.h
ndex/DeclReferenceMap.h
2fcbc1e545a47bc3cd1da08944516f17a6e08c56 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Rename 'ASTNode' -> 'ASTLocation'.

ASTLocation is a much better name for its intended purpose which to represent a "point" into the AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTLocation.h
ST/ASTNode.h
ST/DeclReferenceMap.h
rontend/Utils.h
874012b1fb80dff2ec227c726a0c63d55e3db63f 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename 'ASTNode' -> 'ASTLocation'.

ASTLocation is a much better name for its intended purpose which to represent a "point" into the AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTLocation.h
ST/ASTNode.h
ST/DeclReferenceMap.h
rontend/Utils.h
026c5f8fb847f374c71ae6e49440381de48cd9d0 06-Jul-2009 Ted Kremenek <kremenek@apple.com> Move the new 'CastRegion' implementation from RegionStoreManager to StoreManager
(its superclass). This will allow us to experiment with using the new CastRegion
with BasicStoreManager, and gradually phase out the old implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
48ce7deb86ffb1e028ac9a8e7cddffc32843c26c 06-Jul-2009 Ted Kremenek <kremenek@apple.com> Move the new 'CastRegion' implementation from RegionStoreManager to StoreManager
(its superclass). This will allow us to experiment with using the new CastRegion
with BasicStoreManager, and gradually phase out the old implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
1e78281bbb8d614637a102e77c2f3288e30b9f8d 06-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Fix PR 4489, a crash in PCH loading that occurs when loading the name
of a top-level declaration loads another top-level declaration of the
same name whose type depends on the first declaration having been
completed. This commit breaks the circular dependency by delaying
loads of top-level declarations triggered by loading a name until we
are no longer recursively loading types or declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74847 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
d89275bc865e2b552836c7b33e636d4f86b8de6d 06-Jul-2009 Douglas Gregor <dgregor@apple.com> Fix PR 4489, a crash in PCH loading that occurs when loading the name
of a top-level declaration loads another top-level declaration of the
same name whose type depends on the first declaration having been
completed. This commit breaks the circular dependency by delaying
loads of top-level declarations triggered by loading a name until we
are no longer recursively loading types or declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74847 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
1d381135f0c9dcbac521112b3f6936caf871b91a 06-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of the Expr used to describe the size of an array type,
from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/PrettyPrinter.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
arse/DeclSpec.h
7e7eb3da052a6d80ddf2377cab0384c798f73f75 06-Jul-2009 Douglas Gregor <dgregor@apple.com> Keep track of the Expr used to describe the size of an array type,
from Enea Zaffanella!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/PrettyPrinter.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
arse/DeclSpec.h
3f2b378e88273310d46293a9799cb597c12e1c28 06-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Further cleanup of region invalidation code. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74816 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
313b6dab9efcce465b68da0fed7bf422b6e5c375 06-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Further cleanup of region invalidation code. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74816 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
41cbb47e2c6202547e26edf09a58c1accc99c296 06-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> AllocaRegion and SymbolicRegion are both boundable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74815 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
9852b5bf94d4934de63da6356c651c61e81f58d9 06-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> AllocaRegion and SymbolicRegion are both boundable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74815 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
760d5423f0984df6ae0930c71eafe96c678f5eb0 06-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Start to gradually move region invalidation code into store manager.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
43e2aafea1cdeca3a3fc849b41a92cc18e001ac0 06-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> Start to gradually move region invalidation code into store manager.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
e58db189f39804e2f774563439d34cfa822e823a 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the 'Index' library.

Its purpose is to provide the basic infrastructure for cross-translation-unit analysis like indexing, refactoring, etc.

Currently it is very "primitive" and with no type-names support. It can provide functionality like
"show me all references of this function from these translation units".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74802 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
ndex/EntityHandler.h
ndex/IndexProvider.h
ndex/Program.h
ndex/TranslationUnit.h
9eec4ed6ca0dcf098580da9146b97e0841556d12 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the 'Index' library.

Its purpose is to provide the basic infrastructure for cross-translation-unit analysis like indexing, refactoring, etc.

Currently it is very "primitive" and with no type-names support. It can provide functionality like
"show me all references of this function from these translation units".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74802 91177308-0d34-0410-b5e6-96231b3b80d8
ndex/Entity.h
ndex/EntityHandler.h
ndex/IndexProvider.h
ndex/Program.h
ndex/TranslationUnit.h
4054a66c33880360183bb6e48efe11dfbf2a0f52 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the DeclReferenceMap class inside the AST library.

DeclReferenceMap (similar to ParentMap) is a helper class for mapping Decls to the AST nodes that reference them.
A client will initialize it by passing an ASTContext to its constructor and later use it to iterate over
the references of a Decl.
References are mapped and retrieved using the primary declaration (Decl::getPrimaryDecl()) of a particular Decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclReferenceMap.h
2c2ba3e258961dd98cacffe3a2167bb6d958fd53 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the DeclReferenceMap class inside the AST library.

DeclReferenceMap (similar to ParentMap) is a helper class for mapping Decls to the AST nodes that reference them.
A client will initialize it by passing an ASTContext to its constructor and later use it to iterate over
the references of a Decl.
References are mapped and retrieved using the primary declaration (Decl::getPrimaryDecl()) of a particular Decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclReferenceMap.h
5ea54f629ae53a1be581920b98e90370e09d5fc4 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the virtual method Decl::getPrimaryDecl().

When a Decl subclass can have multiple re-declarations in the same declaration context (like FunctionDecl),
getPrimaryDecl() will return a particular Decl that all of them will point to as the "primary" declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
fc7e2a8fbb08f0f496ac6cea0721fe72db8ce240 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the virtual method Decl::getPrimaryDecl().

When a Decl subclass can have multiple re-declarations in the same declaration context (like FunctionDecl),
getPrimaryDecl() will return a particular Decl that all of them will point to as the "primary" declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
85837dbd7c835c29804518b269c9d329784ccc43 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Make use of ASTNode for return value of clang::ResolveLocationInAST() and in the index-test tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74798 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
49dd5851c463963a8a78f5222ea72cfaa6db1029 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make use of ASTNode for return value of clang::ResolveLocationInAST() and in the index-test tool.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74798 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
970cfe1c503f4e7d8dcf0581fb6ec7d0a94b8910 06-Jul-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ASTNode class into the AST library.

ASTNode is an immutable pair of a Decl and Stmt. If Stmt is not null, Decl should be its immediate parent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTNode.h
c0824634334ff0bb66cf8fb260101a5faaebf4b7 06-Jul-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ASTNode class into the AST library.

ASTNode is an immutable pair of a Decl and Stmt. If Stmt is not null, Decl should be its immediate parent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTNode.h
8761a5b9c2b84011a3d2184064783ef1baad59ac 04-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> CompoundLiteralRegion is boundable when it is not in the file scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
9a08fee80a34938b8c11c7166e009a89ced4c2b4 04-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> CompoundLiteralRegion is boundable when it is not in the file scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
5e1e0a089240eb47560dc0785e53e2dcf4ec82fa 04-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Catch function redeclarations with incompatible exception specifications.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74787 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4994d2d50ceacdc8908f750c55589c0a20942a0a 04-Jul-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Catch function redeclarations with incompatible exception specifications.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74787 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a95c0dfb9861da7f010b19e74194e24dcdb0fa4b 04-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> StringRegion is not boundable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0a51f1c6cec6032bcf64ce205bc4edfdc3cb3a2f 04-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> StringRegion is not boundable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
da3466c3298eb1906989f97fe8d5beed441a29d4 03-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> remove utility methods that are not very useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74762 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
8834af3f8e85c0a7e309e5be9b41e438f51b9b36 03-Jul-2009 Zhongxing Xu <xuzhongxing@gmail.com> remove utility methods that are not very useful.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74762 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
c84c3b04105e2850811e1e7aebf472f789f74de3 03-Jul-2009 Ted Kremenek <kremenek@apple.com> Replace guarded calls in RegionStoreManager to
ValueManager::getRegionValueSymbolVal() with unguarded calls to
ValueManager::getRegionValueSymbolValOrUnknown(). This changes centralizes the
decision of what values to symbolicate in SymbolManager rather than having it
scatter in RegionStoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
bb2b433ae14ca18e88a46032096ce5ec5c05c8e7 03-Jul-2009 Ted Kremenek <kremenek@apple.com> Replace guarded calls in RegionStoreManager to
ValueManager::getRegionValueSymbolVal() with unguarded calls to
ValueManager::getRegionValueSymbolValOrUnknown(). This changes centralizes the
decision of what values to symbolicate in SymbolManager rather than having it
scatter in RegionStoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
9cd0a3c6b68570a1c2788c5fec0ef4371fb48d81 02-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to allocate list of bases in CXXRecordDecl
using ASTContxt allocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5ffcd7b1ba8bfcb253f0a0bdf7c94c4d0270a4ab 02-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to allocate list of bases in CXXRecordDecl
using ASTContxt allocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8f1e373697573b405ee5a0033b2ffb05894c35fb 02-Jul-2009 Ted Kremenek <kremenek@apple.com> StoreManagers: Use 'hasGlobalsStorage()' and 'hasParametersStorage()' instead of
directly consulting if a VarDecl is an implicit or actual parameter, a global,
etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74716 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1508636e99faddf569a57fce82c0fb3aa2124396 02-Jul-2009 Ted Kremenek <kremenek@apple.com> StoreManagers: Use 'hasGlobalsStorage()' and 'hasParametersStorage()' instead of
directly consulting if a VarDecl is an implicit or actual parameter, a global,
etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74716 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
4f8ae75b96d8d89ee0469944830997f6725ebb04 02-Jul-2009 Ted Kremenek <kremenek@apple.com> Add a separate MemSpaceRegion for function/method arguments passed on the stack.
This will simplify the logic of StoreManagers that want to specially reason
about the values of parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74715 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
d05552a21377f493c882298c59e8829040b01d34 02-Jul-2009 Ted Kremenek <kremenek@apple.com> Add a separate MemSpaceRegion for function/method arguments passed on the stack.
This will simplify the logic of StoreManagers that want to specially reason
about the values of parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74715 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b80d8578f831724662eabc1afc2b20dccac58c1a 02-Jul-2009 Ted Kremenek <kremenek@apple.com> Remove commented methods. Add MemRegion::printStdErr().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74709 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
7f39d29cb69e7488f994870800d548008e50e1cb 02-Jul-2009 Ted Kremenek <kremenek@apple.com> Remove commented methods. Add MemRegion::printStdErr().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74709 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
a252b23fb4318b2bf84fa86bd9c55fd15a85b588 02-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Add support for retrieving the Doxygen comment associated with a given
declaration in the AST.

The new ASTContext::getCommentForDecl function searches for a comment
that is attached to the given declaration, and returns that comment,
which may be composed of several comment blocks.

Comments are always available in an AST. However, to avoid harming
performance, we don't actually parse the comments. Rather, we keep the
source ranges of all of the comments within a large, sorted vector,
then lazily extract comments via a binary search in that vector only
when needed (which never occurs in a "normal" compile).

Comments are written to a precompiled header/AST file as a blob of
source ranges. That blob is only lazily loaded when one requests a
comment for a declaration (this never occurs in a "normal" compile).

The indexer testbed now supports comment extraction. When the
-point-at location points to a declaration with a Doxygen-style
comment, the indexer testbed prints the associated comment
block(s). See test/Index/comments.c for an example.

Some notes:
- We don't actually attempt to parse the comment blocks themselves,
beyond identifying them as Doxygen comment blocks to associate them
with a declaration.
- We won't find comment blocks that aren't adjacent to the
declaration, because we start our search based on the location of
the declaration.
- We don't go through the necessary hops to find, for example,
whether some redeclaration of a declaration has comments when our
current declaration does not. Similarly, we don't attempt to
associate a \param Foo marker in a function body comment with the
parameter named Foo (although that is certainly possible).
- Verification of my "no performance impact" claims is still "to be
done".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74704 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ex/Preprocessor.h
arse/Action.h
arse/Parser.h
2e22253e03e175144aeb9d13350a12fd83f858be 02-Jul-2009 Douglas Gregor <dgregor@apple.com> Add support for retrieving the Doxygen comment associated with a given
declaration in the AST.

The new ASTContext::getCommentForDecl function searches for a comment
that is attached to the given declaration, and returns that comment,
which may be composed of several comment blocks.

Comments are always available in an AST. However, to avoid harming
performance, we don't actually parse the comments. Rather, we keep the
source ranges of all of the comments within a large, sorted vector,
then lazily extract comments via a binary search in that vector only
when needed (which never occurs in a "normal" compile).

Comments are written to a precompiled header/AST file as a blob of
source ranges. That blob is only lazily loaded when one requests a
comment for a declaration (this never occurs in a "normal" compile).

The indexer testbed now supports comment extraction. When the
-point-at location points to a declaration with a Doxygen-style
comment, the indexer testbed prints the associated comment
block(s). See test/Index/comments.c for an example.

Some notes:
- We don't actually attempt to parse the comment blocks themselves,
beyond identifying them as Doxygen comment blocks to associate them
with a declaration.
- We won't find comment blocks that aren't adjacent to the
declaration, because we start our search based on the location of
the declaration.
- We don't go through the necessary hops to find, for example,
whether some redeclaration of a declaration has comments when our
current declaration does not. Similarly, we don't attempt to
associate a \param Foo marker in a function body comment with the
parameter named Foo (although that is certainly possible).
- Verification of my "no performance impact" claims is still "to be
done".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74704 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ex/Preprocessor.h
arse/Action.h
arse/Parser.h
bb70eb307c83d870333b8d6567cc7df61b4dcbc1 02-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Use Destroy for member initializer list clean up.
Per Doug's comments. Doug please review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
73b85f3d7ccdff37bab7adafc6b06dfd03740058 02-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Use Destroy for member initializer list clean up.
Per Doug's comments. Doug please review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6602e71406e3dee6998a2687024bf63aaa641717 02-Jul-2009 Owen Anderson <resistor@mac.com> Update for changes in LLVM. Hopefully this is the last one for a while.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74657 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
8f1ca78009ca1bdb66903c51b9bbaa81f58ea72a 02-Jul-2009 Owen Anderson <resistor@mac.com> Update for changes in LLVM. Hopefully this is the last one for a while.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74657 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
4c8b2b33016f55eda96d69f638c93b3dc7e5a9f4 02-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of more information within the template instantiation stack, e.g.,
by distinguishing between substitution that occurs for template
argument deduction vs. explicitly-specifiad template arguments. This
is used both to improve diagnostics and to make sure we only provide
SFINAE in those cases where SFINAE should apply.

In addition, deal with the sticky issue where SFINAE only considers
substitution of template arguments into the *type* of a function
template; we need to issue hard errors beyond this point, as
test/SemaTemplate/operator-template.cpp illustrates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
cca9e9674a5e50a283185d8e9d8a5c3414eb008e 02-Jul-2009 Douglas Gregor <dgregor@apple.com> Keep track of more information within the template instantiation stack, e.g.,
by distinguishing between substitution that occurs for template
argument deduction vs. explicitly-specifiad template arguments. This
is used both to improve diagnostics and to make sure we only provide
SFINAE in those cases where SFINAE should apply.

In addition, deal with the sticky issue where SFINAE only considers
substitution of template arguments into the *type* of a function
template; we need to issue hard errors beyond this point, as
test/SemaTemplate/operator-template.cpp illustrates.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
900fe062fcfd74f60ae171a0eb247aaec1c00929 01-Jul-2009 Owen Anderson <resistor@mac.com> Hold the LLVMContext by reference instead of by pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74642 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
c93f49832d2dae19a24d644c8021388fc5b099ee 01-Jul-2009 Owen Anderson <resistor@mac.com> Hold the LLVMContext by reference instead of by pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74642 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
28b9c88a99fa93d03bd82455b498de9c77e50854 01-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Updated CXXConstructorDecl AST node for ctor-initilaizer list.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d45c36308e563e1fac1cd124d606f403f9a39a29 01-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Updated CXXConstructorDecl AST node for ctor-initilaizer list.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
26ad3cc5525b6b1f0b976d40c87e92f683e6aaa5 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Mark some Compilation members const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74636 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
df35d7f1916140bfed5ab0bad2d5e2bc62c667e5 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Mark some Compilation members const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74636 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
9fbdc88d76875026f396eda8715ad38c95f248e8 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move Compilation::Execute to Driver::ExecuteCompilation.
- The Compilation is just a helper class, it shouldn't have that amount of
logic in it.

- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74634 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
c88a88f6f7672b6bb831dce9da4acfa0c846975f 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move Compilation::Execute to Driver::ExecuteCompilation.
- The Compilation is just a helper class, it shouldn't have that amount of
logic in it.

- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74634 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
2b2b736550746280d96b8c49a0462c7b7b6c1408 01-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement template types in ctor-initializer list.
Also has fix for bugzilla-4469.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74631 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
961743326fd18776f897bf4461345dba680ef637 01-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement template types in ctor-initializer list.
Also has fix for bugzilla-4469.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74631 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c78c5f628d39cd289dbab82e119310116c2d6072 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Improve diagnostics for failed commands.
- Not all tools give good error messages, and sometimes the tool can fail w/o
any error (for example, when signalled).

- We suppress this message when the failing command is the compiler and it
failed normally (exit code == 1), under the assumption that it gave a good
diagnostic.

For example, for a linker failure we now get:
--
ddunbar@lordcrumb:tmp$ clang a.c b.c
ld: duplicate symbol _x in /var/folders/cl/clrOX6SaG+moCeRKEI4PtU+++TI/-Tmp-/cc-bXYITq.o and /var/folders/cl/clrOX6SaG+moCeRKEI4PtU+++TI/-Tmp-/cc-6uK4jD.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
--

For a compiler crash we get:
--
ddunbar@lordcrumb:tmp$ clang t.i
Assertion failed: (CGT.getTargetData().getTypeAllocSizeInBits(STy) == RL.getSize()), function layoutStructFields, file CodeGenTypes.cpp, line 573.
0 clang-cc 0x0000000100f1f1f1 PrintStackTrace(void*) + 38
... stack trace and virtual stack trace follow ...
clang: error: compiler command failed due to signal 6 (use -v to see invocation)
--

But for a regular compilation failure we get the usual:
--
ddunbar@lordcrumb:tmp$ clang c.c
c.c:1:6: error: invalid token after top level declarator
int x
^
1 diagnostic generated.
--

- No test case, not amenable to non-executable testing. :/

- <rdar://problem/6945613>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Action.h
river/Compilation.h
31c11ebdaab0acfa10e231730ae95e32c0e39e1f 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Improve diagnostics for failed commands.
- Not all tools give good error messages, and sometimes the tool can fail w/o
any error (for example, when signalled).

- We suppress this message when the failing command is the compiler and it
failed normally (exit code == 1), under the assumption that it gave a good
diagnostic.

For example, for a linker failure we now get:
--
ddunbar@lordcrumb:tmp$ clang a.c b.c
ld: duplicate symbol _x in /var/folders/cl/clrOX6SaG+moCeRKEI4PtU+++TI/-Tmp-/cc-bXYITq.o and /var/folders/cl/clrOX6SaG+moCeRKEI4PtU+++TI/-Tmp-/cc-6uK4jD.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
--

For a compiler crash we get:
--
ddunbar@lordcrumb:tmp$ clang t.i
Assertion failed: (CGT.getTargetData().getTypeAllocSizeInBits(STy) == RL.getSize()), function layoutStructFields, file CodeGenTypes.cpp, line 573.
0 clang-cc 0x0000000100f1f1f1 PrintStackTrace(void*) + 38
... stack trace and virtual stack trace follow ...
clang: error: compiler command failed due to signal 6 (use -v to see invocation)
--

But for a regular compilation failure we get the usual:
--
ddunbar@lordcrumb:tmp$ clang c.c
c.c:1:6: error: invalid token after top level declarator
int x
^
1 diagnostic generated.
--

- No test case, not amenable to non-executable testing. :/

- <rdar://problem/6945613>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74629 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Action.h
river/Compilation.h
0d34d4298cdd3eef01b933e199d2ba2191a90963 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Source argument for Commands to hold the Action which caused a
Command to be generated, to support more advanced diagnostics.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74627 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
cae087e164e94e4286c11bf694dd0ff88f295302 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Source argument for Commands to hold the Action which caused a
Command to be generated, to support more advanced diagnostics.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74627 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
ab960bac45b692b11867953f222e92bc9380ea4b 01-Jul-2009 Owen Anderson <resistor@mac.com> Update for LLVMContext+Module change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74615 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
42253cc3bc006661da1287aafef93d52d00dfed1 01-Jul-2009 Owen Anderson <resistor@mac.com> Update for LLVMContext+Module change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74615 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/ASTConsumers.h
937331fdd6b863ec5ed0725405fb5b1666d588a1 01-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Two fixes to make Clang build on Visual C++ (again), from Alisdair Meredith.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74606 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
a3844922f685620002412df0a88d22393e5c1241 01-Jul-2009 Douglas Gregor <dgregor@apple.com> Two fixes to make Clang build on Visual C++ (again), from Alisdair Meredith.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74606 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
5ca84bccd83982d3941d68dd88139ca43f6322a0 01-Jul-2009 Steve Naroff <snaroff@apple.com> Rework Sema::CheckConditionalOperands(). No functionality change.

This was necessary to simplify some other changes I'm making (wrt ObjC type cleanups).

The idea is to separate the constraint checks for block pointers, ObjC pointers, and C pointers (the previous code combined them into one clause).

Note: This routine will be further simplified when I integrate the ObjC type cleanups (forthcoming).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7154a77e7c1f23418342d3b72836ab504aa7821e 01-Jul-2009 Steve Naroff <snaroff@apple.com> Rework Sema::CheckConditionalOperands(). No functionality change.

This was necessary to simplify some other changes I'm making (wrt ObjC type cleanups).

The idea is to separate the constraint checks for block pointers, ObjC pointers, and C pointers (the previous code combined them into one clause).

Note: This routine will be further simplified when I integrate the ObjC type cleanups (forthcoming).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
38e3180fb0d08290be62eb24c84a27e5ccdc5110 01-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4192: fix the definition of int64_t on x86_64 Linux.

Note that I'm guessing that *BSD and Solaris do the same thing as Linux
here, but it's quite possible I'm wrong; if the following testcase
gives an error on x86-64 with gcc for any of those operating systems, please
tell me:

#include <stdint.h>

int64_t x; long x;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3c7b6e46c5f9bdbe0676c52d80df98b68b02be99 01-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4192: fix the definition of int64_t on x86_64 Linux.

Note that I'm guessing that *BSD and Solaris do the same thing as Linux
here, but it's quite possible I'm wrong; if the following testcase
gives an error on x86-64 with gcc for any of those operating systems, please
tell me:

#include <stdint.h>

int64_t x; long x;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74583 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c37d3069b7b0968fad902995dc368400d983fa90 01-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to support optional nested-name-specifier in in ctor-initializer
list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74571 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bcfad54a43e5570e09daddd976bd4545933e75b1 01-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to support optional nested-name-specifier in in ctor-initializer
list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74571 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2885775090f6b4b011ce8b1cb6045e3b2202e9a1 01-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> Preliminary parsing and ASTs for template-ids that refer to function
templates, such as make<int&>. These template-ids are only barely
functional for function calls; much more to come.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
edce4dd44732dfad69f28822dddcf2b8e92b4483 01-Jul-2009 Douglas Gregor <dgregor@apple.com> Preliminary parsing and ASTs for template-ids that refer to function
templates, such as make<int&>. These template-ids are only barely
functional for function calls; much more to come.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
c13953a7594505b86f57434d0a1a1db14e0c0a18 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> More diagnostics related to initialization of direct bases
in ctor-initializer list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9da7201adeab345fc7da72bcfcf30e11774fb8c4 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> More diagnostics related to initialization of direct bases
in ctor-initializer list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
08b72bdac1e14abad47abbfb390205b8938064ed 30-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> add utility method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74521 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
edb883cabf32ef39a3f2ce7a7437894e176a740b 30-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> add utility method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74521 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
a371090145a133221cfd1eeee9a499d15b9c0413 30-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> add utility methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74520 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
7859cc6f2f88ebdb09b5df6fac8c185301d6bf51 30-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> add utility methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74520 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
f350c6e27365226d2c84eded38805ed25c4a0c8a 30-Jun-2009 Chris Lattner <sabre@nondot.org> Implement PR4175, catching some questionable comparisons. Patch by
David Majnemer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
149f1386c60aa07de0f6a5d43ab524b22af68059 30-Jun-2009 Chris Lattner <sabre@nondot.org> Implement PR4175, catching some questionable comparisons. Patch by
David Majnemer!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ab6e38adbcdbdb4e7d211b4ff7a52d871ea0e994 30-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> De-ASTContext-ify DeclContext.

Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating".
Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74506 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
17945a0f64fe03ff6ec0c2146005a87636e3ac12 30-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> De-ASTContext-ify DeclContext.

Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating".
Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74506 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
89e4c0af9fd45f9107a599e6cf104a3d30c2e9ed 30-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce DeclContext::getParentASTContext().

It's not getASTContext() to avoid "getASTContext is ambiguous" compiler errors for subclasses of both Decl and DeclContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74505 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
048f30a483ca352ee7f235a5be181b9dcc5f9d9c 30-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce DeclContext::getParentASTContext().

It's not getASTContext() to avoid "getASTContext is ambiguous" compiler errors for subclasses of both Decl and DeclContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74505 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ccb9efea4c1a88ccf62ac49d60f98b754897695a 30-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from the getBody() methods of Decl and subclasses.

Timings showed no significant difference before and after the commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/Expr.h
6fb0aee4f9dc261bbec72e1283ad8dc0557a6d96 30-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from the getBody() methods of Decl and subclasses.

Timings showed no significant difference before and after the commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/Expr.h
9a6fb96f74f39d19180dc87f4232ad3617f3f2de 30-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from the printing related methods of Decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f1d60eaf3f70975ee262852af2d6aeabd140ed58 30-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from the printing related methods of Decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
fe5f9736723cbaae5423f98ebbd0f0f537b51de4 30-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from the attribute-related methods of Decl.
The implementations of these methods can Use Decl::getASTContext() to get the ASTContext.

This commit touches a lot of files since call sites for these methods are everywhere.
I used pre-tokenized "carbon.h" and "cocoa.h" headers to do some timings, and there was no real time difference between before the commit and after it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Expr.h
40b598eea1310ec9ed554d56ce3e25b34c585458 30-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove the ASTContext parameter from the attribute-related methods of Decl.
The implementations of these methods can Use Decl::getASTContext() to get the ASTContext.

This commit touches a lot of files since call sites for these methods are everywhere.
I used pre-tokenized "carbon.h" and "cocoa.h" headers to do some timings, and there was no real time difference between before the commit and after it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Expr.h
7099c789f054f1e7480f498d60aa94b0326c285f 30-Jun-2009 Chris Lattner <sabre@nondot.org> Key decisions about 'bool' vs '_Bool' to be based on a new flag in langoptions.

This is simple enough, but then I thought it would be nice to make PrintingPolicy
get a LangOptions so that various things can key off "bool" and "C++" independently.
This spiraled out of control. There are many fixme's, but I think things are slightly
better than they were before.

One thing that can be improved: CFG should probably have an ASTContext pointer in it,
which would simplify its clients.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/NestedNameSpecifier.h
ST/PrettyPrinter.h
ST/Stmt.h
ST/Type.h
asic/LangOptions.h
asic/TokenKinds.def
e4f2142d00fa5fdb580c4e2413da91882d955381 30-Jun-2009 Chris Lattner <sabre@nondot.org> Key decisions about 'bool' vs '_Bool' to be based on a new flag in langoptions.

This is simple enough, but then I thought it would be nice to make PrintingPolicy
get a LangOptions so that various things can key off "bool" and "C++" independently.
This spiraled out of control. There are many fixme's, but I think things are slightly
better than they were before.

One thing that can be improved: CFG should probably have an ASTContext pointer in it,
which would simplify its clients.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/NestedNameSpecifier.h
ST/PrettyPrinter.h
ST/Stmt.h
ST/Type.h
asic/LangOptions.h
asic/TokenKinds.def
4b61ba63888136f05791f8e47172927451c6a9f3 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Take care of Chris's comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74486 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
16dbdce02366c372fe934c0528148fc38906f21a 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Take care of Chris's comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74486 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9cfad75f2f0554fbcf43421b18fd0430fc77bfec 30-Jun-2009 Anders Carlsson <andersca@mac.com> Make an error message more clear.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74481 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d4655d3b966da02fe0588767160448594cddd61 30-Jun-2009 Anders Carlsson <andersca@mac.com> Make an error message more clear.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74481 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89f61bd06f28e7898456433248f569a1cd67d02c 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> A more detailed diagnosis of ill-formed ctor-initializer
list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74480 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
47deacfa43625c6cc1b2008a0396ccb3af725fde 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> A more detailed diagnosis of ill-formed ctor-initializer
list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74480 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
0040e0cb507668263a58fc3647a3ec3d41c921a3 30-Jun-2009 Anders Carlsson <andersca@mac.com> Improvements to decltype. We now don't crash anymore when the expr is an overloaded function decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
af017e682918f7a1a95ff08d9ab7ae3426436ca3 30-Jun-2009 Anders Carlsson <andersca@mac.com> Improvements to decltype. We now don't crash anymore when the expr is an overloaded function decl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
696780627b917bb683cfcc196e370fc6ed620b12 30-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Improve code generation for function template specializations:
- Track implicit instantiations vs. the not-yet-supported explicit
specializations
- Give implicit instantiations of function templates (and member
functions of class templates) linkonce_odr linkage.
- Improve name mangling for function template specializations,
including the template arguments of the instantiation and the return
type of the function.

Note that our name-mangling is improved, but not correct: we still
don't mangle substitutions, although the manglings we produce can be
demangled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
1fd2dd145d9bcdf0b8d60a88e1795b6ae83656f5 30-Jun-2009 Douglas Gregor <dgregor@apple.com> Improve code generation for function template specializations:
- Track implicit instantiations vs. the not-yet-supported explicit
specializations
- Give implicit instantiations of function templates (and member
functions of class templates) linkonce_odr linkage.
- Improve name mangling for function template specializations,
including the template arguments of the instantiation and the return
type of the function.

Note that our name-mangling is improved, but not correct: we still
don't mangle substitutions, although the manglings we produce can be
demangled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74466 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
4e0aba8010d63c1d6bcd9770088864b9c0cc0751 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose multiple initialzation of data-member/base
in the ctor-initializer list. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
7881a0565893f1da6faafbd86377f5b50e4376a5 30-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose multiple initialzation of data-member/base
in the ctor-initializer list. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
27b6d2b2671814fd94f2f70f58feb68cefe609d1 29-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of function template specializations, to eliminate
redundant, implicit instantiations of function templates and provide a
place where we can hang function template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74454 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
127102b5196ffe04bdb70fd553fe62c265ab10a9 29-Jun-2009 Douglas Gregor <dgregor@apple.com> Keep track of function template specializations, to eliminate
redundant, implicit instantiations of function templates and provide a
place where we can hang function template specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74454 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
64c77a1c70299f698a657361a247f12a503782fb 29-Jun-2009 Daniel Dunbar <daniel@zuster.org> OpenBSD support.
- Patch by Jonathan Gray!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74453 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
f7b8eec37c8c8012fa525c71fb29a58c9f29beef 29-Jun-2009 Daniel Dunbar <daniel@zuster.org> OpenBSD support.
- Patch by Jonathan Gray!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74453 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
2a6dca1f553de927e0872e010f6935b6e8a10fa1 29-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> -Keep a reference to the ASTContext inside the TranslationUnitDecl.
-Introduce Decl::getASTContext() which returns the reference from the TranslationUnitDecl that it is contained in.

The general idea is that Decls can point to their own ASTContext so that it is no longer required to "manually" keep track and make sure that you pass the correct ASTContext to Decls' methods, e.g. methods like Decl::getAttrs should eventually not require a ASTContext parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
3708b3df2e86998dca4c006939014ea1174da834 29-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Keep a reference to the ASTContext inside the TranslationUnitDecl.
-Introduce Decl::getASTContext() which returns the reference from the TranslationUnitDecl that it is contained in.

The general idea is that Decls can point to their own ASTContext so that it is no longer required to "manually" keep track and make sure that you pass the correct ASTContext to Decls' methods, e.g. methods like Decl::getAttrs should eventually not require a ASTContext parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ff1bf1a70cb5d6f8428727aa26994b6572347717 29-Jun-2009 Chris Lattner <sabre@nondot.org> Fix the FloatingLiteral API to take the isexact flag by value instead of
by pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
001d64dd2947c1ce06e3eac257a9a21c65ae4ff3 29-Jun-2009 Chris Lattner <sabre@nondot.org> Fix the FloatingLiteral API to take the isexact flag by value instead of
by pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2ed1a54888348f8056fd20fec3dd3bbd050c6a36 29-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Move FunctionDecl::TemplateSpecializationInfo out into its own class,
FunctionTemplateSpecializationInfo, in DeclTemplate.h. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74431 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
16e8be2ac532358d4e413fdfa2643b1876edda78 29-Jun-2009 Douglas Gregor <dgregor@apple.com> Move FunctionDecl::TemplateSpecializationInfo out into its own class,
FunctionTemplateSpecializationInfo, in DeclTemplate.h. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74431 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
979f8f0ed481821f2b2bf9e196d4c0024803d5b7 29-Jun-2009 Steve Naroff <snaroff@apple.com> Remove ASTContext::getObjCQualifiedIdType().
Convert clients to use ASTContext::getObjCObjectPointerType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74424 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
683087ffcf21d2a22cd2d0424b7f119168b47a8e 29-Jun-2009 Steve Naroff <snaroff@apple.com> Remove ASTContext::getObjCQualifiedIdType().
Convert clients to use ASTContext::getObjCObjectPointerType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74424 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
193586077386138c8d1c0e89c5f25a2319f32046 29-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> The default answer for isBoundable() should be false.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74418 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
f0f0605c87739c906861f73d4287798a4969b1e0 29-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> The default answer for isBoundable() should be false.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74418 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
39e99a4bd7d690178f494899078d0723522d5247 29-Jun-2009 Bill Wendling <isanbard@gmail.com> Make the StackProtector bitfield use enums instead of obscure numbers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74414 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
4ebe3e4c811a376c423a544f5e76ee2e96533324 29-Jun-2009 Bill Wendling <isanbard@gmail.com> Make the StackProtector bitfield use enums instead of obscure numbers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74414 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e1d4f5d6840e99b8345dd755ec4a335ff4539fcf 28-Jun-2009 Bill Wendling <isanbard@gmail.com> Add stack protector support to clang. This generates the 'ssp' and 'sspreq'
function attributes. There are predefined macros that are defined when stack
protectors are used: __SSP__=1 with -fstack-protector and __SSP_ALL__=2 with
-fstack-protector-all.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74405 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/ArgList.h
river/Options.def
45483f7a1b3e57b4603b141bee80596b2d4dd443 28-Jun-2009 Bill Wendling <isanbard@gmail.com> Add stack protector support to clang. This generates the 'ssp' and 'sspreq'
function attributes. There are predefined macros that are defined when stack
protectors are used: __SSP__=1 with -fstack-protector and __SSP_ALL__=2 with
-fstack-protector-all.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74405 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/ArgList.h
river/Options.def
993a060816aa82ca90fc6ccab23000cd2803a9f2 27-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Improve support for overloaded operator templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
364e021e8cbbeebd4d2544053268a008cf9ee5a9 27-Jun-2009 Douglas Gregor <dgregor@apple.com> Improve support for overloaded operator templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e8c36f2e5582270b336bdf73fd217bd1682b92ac 27-Jun-2009 Anders Carlsson <andersca@mac.com> Make it possible for using decls to point to operators. Fixes PR4441.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74362 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0c6139d0c2497c4e8780340e0dc097de041f248e 27-Jun-2009 Anders Carlsson <andersca@mac.com> Make it possible for using decls to point to operators. Fixes PR4441.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74362 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b674e078950e9a774ed640ee50ee22a7e467e0dd 27-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove the last 'GetXXX' methods from GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74361 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
4f596c2263e2e3be3000e10017cc0351eb8bb399 27-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove the last 'GetXXX' methods from GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74361 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
368cc6cb678d50a643f60905c645e52ac846da2f 27-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to mark destructors when they are used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8d2b35630d4afc474b766eeab1f1bef469cf633a 27-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to mark destructors when they are used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
953555049465feac39bd1be20efb8a560f2acf28 27-Jun-2009 Anders Carlsson <andersca@mac.com> More auto work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
baf45d31f18e6d5b3d2a33695c2af6e6cbc4ee29 27-Jun-2009 Anders Carlsson <andersca@mac.com> More auto work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ad538e5150e7248e49066e917db2620bd8af8825 26-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Template argument deduction is no longer responsible for checking
non-dependent parameter types. Instead, class template partial
specializations perform a final check of all of the instantiated
arguments. This model is cleaner, and works better for function
templates where the "final check" occurs during overload resolution.

Also, cope with cv-qualifiers when the parameter type was originally a
reference type, so that the deduced argument can be more qualified
than the transformed argument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
f670c8cfa58b4c224eb8fb566130dc47844dd3de 26-Jun-2009 Douglas Gregor <dgregor@apple.com> Template argument deduction is no longer responsible for checking
non-dependent parameter types. Instead, class template partial
specializations perform a final check of all of the instantiated
arguments. This model is cleaner, and works better for function
templates where the "final check" occurs during overload resolution.

Also, cope with cv-qualifiers when the parameter type was originally a
reference type, so that the deduced argument can be more qualified
than the transformed argument.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
f679ea8b9a9786591e2a25ac11a382c4175d19e8 26-Jun-2009 Anders Carlsson <andersca@mac.com> Can't have arrays of auto.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e7cf07d8df83e083505c7105c50b2797493008a6 26-Jun-2009 Anders Carlsson <andersca@mac.com> Can't have arrays of auto.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9bd48664107071827487fbefaf5d94db5fcb7c9b 26-Jun-2009 Anders Carlsson <andersca@mac.com> An auto variable can't appear in its own initializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2bb224dee15d07bc9843acd4f3ded8eb0f835ed 26-Jun-2009 Anders Carlsson <andersca@mac.com> An auto variable can't appear in its own initializer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4a8498cc0f251e839912285112a014a5d1248648 26-Jun-2009 Anders Carlsson <andersca@mac.com> Implement enough of the 'auto' keyword so we can claim to support N2546.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
arse/DeclSpec.h
e89d15944dd3be750a09805ad21222d2fa9321fa 26-Jun-2009 Anders Carlsson <andersca@mac.com> Implement enough of the 'auto' keyword so we can claim to support N2546.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
arse/DeclSpec.h
607021675efc13cdaa93bbe22fa4526307d48cd3 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 support: attributes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
6f3d838867538638b9bbf412028e8537ae12f3e5 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 support: attributes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74280 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
df5ab84157d78afb51148bb8e6aa7c1ee309c58a 26-Jun-2009 Anders Carlsson <andersca@mac.com> Add NamedDecl::getUnderlyingDecl that can see through UsingDecl and ObjCCompatibleAliasDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74279 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e136e0e1b74760d7ec3ede38e0e739d5c52a3c0a 26-Jun-2009 Anders Carlsson <andersca@mac.com> Add NamedDecl::getUnderlyingDecl that can see through UsingDecl and ObjCCompatibleAliasDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74279 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5847da50f7f3595bda61ec44776eadfcaa4da736 26-Jun-2009 Anders Carlsson <andersca@mac.com> See through UsingDecls in more places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
58badb7a655d021fc67bb7ed0af95d6ea0c63eb1 26-Jun-2009 Anders Carlsson <andersca@mac.com> See through UsingDecls in more places.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5768cbc281deeaaa1428858c6818de679522abb1 26-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix build break.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74267 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
1730ce496e8f8d6a50b2af7afa5d65016e3b8384 26-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix build break.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74267 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
8eabc06e142a9f95b958bd6eed1aba9264a0378b 26-Jun-2009 Chris Lattner <sabre@nondot.org> fix PR4452, a crash on invalid. The error recovery is still terrible in this case
but at least we don't crash :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74264 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c8e27cc402043ec86c1698c09e4ee9e415b16207 26-Jun-2009 Chris Lattner <sabre@nondot.org> fix PR4452, a crash on invalid. The error recovery is still terrible in this case
but at least we don't crash :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74264 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bd42e02d833f1876b2bc67b47f7c2ea82c6e476e 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 support: explicit casts to ext-vector types


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
58d29a41271d96509f464716f79b0ab2e815b6b1 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 support: explicit casts to ext-vector types


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9c8a5396f99d5f069e12c18172f867e13c9b03d7 26-Jun-2009 Ted Kremenek <kremenek@apple.com> Add missing header file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SValuator.h
e74eaef9b550c002e59dfc57c0dd640a5f129e8e 26-Jun-2009 Ted Kremenek <kremenek@apple.com> Add missing header file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SValuator.h
6f5e054b35aed3e4d22d4bc29bc74e5003dd2038 26-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Implicit instantiation for function template specializations.

For a FunctionDecl that has been instantiated due to template argument
deduction, we now store the primary template from which it was
instantiated and the deduced template arguments. From this
information, we can instantiate the body of the function template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
1637be727f2a0434c1ed7aa385ea1c18328b0ccd 26-Jun-2009 Douglas Gregor <dgregor@apple.com> Implicit instantiation for function template specializations.

For a FunctionDecl that has been instantiated due to template argument
deduction, we now store the primary template from which it was
instantiated and the deduced template arguments. From this
information, we can instantiate the body of the function template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
d1c53ffd5f0af6258181e026c0ef6c202990495c 26-Jun-2009 Ted Kremenek <kremenek@apple.com> Introduce a new concept to the static analyzer: SValuator.

GRTransferFuncs had the conflated role of both constructing SVals (symbolic
expressions) as well as handling checker-specific logic. Now SValuator has the
role of constructing SVals from expressions and GRTransferFuncs just handles
checker-specific logic. The motivation is by separating these two concepts we
will be able to much more easily create richer constraint-generating logic
without coupling it to the main checker transfer function logic.

We now have one implementation of SValuator: SimpleSValuator.

SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
(which is removed in this patch). This includes the logic for EvalBinOp,
EvalCast, etc. Because SValuator has a narrower role than the old
GRTransferFuncs, the interfaces are much simpler, and so is the implementation
of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
SimpleSValuator.

As a consequence of removing GRSimpleVals, there is no longer a
'-checker-simple' option. The '-checker-cfref' did everything that option did
but also ran the retain/release checker. Of course a user may not always wish to
run the retain/release checker, nor do we wish core analysis logic buried in the
checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
to separate out these pieces into the core analysis engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74229 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
rontend/Analyses.def
6c07bdba93b095b66e2c8c82dd5ed458fa8285ea 26-Jun-2009 Ted Kremenek <kremenek@apple.com> Introduce a new concept to the static analyzer: SValuator.

GRTransferFuncs had the conflated role of both constructing SVals (symbolic
expressions) as well as handling checker-specific logic. Now SValuator has the
role of constructing SVals from expressions and GRTransferFuncs just handles
checker-specific logic. The motivation is by separating these two concepts we
will be able to much more easily create richer constraint-generating logic
without coupling it to the main checker transfer function logic.

We now have one implementation of SValuator: SimpleSValuator.

SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
(which is removed in this patch). This includes the logic for EvalBinOp,
EvalCast, etc. Because SValuator has a narrower role than the old
GRTransferFuncs, the interfaces are much simpler, and so is the implementation
of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
SimpleSValuator.

As a consequence of removing GRSimpleVals, there is no longer a
'-checker-simple' option. The '-checker-cfref' did everything that option did
but also ran the retain/release checker. Of course a user may not always wish to
run the retain/release checker, nor do we wish core analysis logic buried in the
checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
to separate out these pieces into the core analysis engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74229 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
rontend/Analyses.def
2a310fe1518af351c8f64a1dc828c3f21e881129 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 Support: support "bool, true, false" tokens when compiling for OpenCL


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
72b60e35600f5789056f73eca35713a1b83b6594 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 Support: support "bool, true, false" tokens when compiling for OpenCL


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
31f83514430c650800e656aa67555f0960e65f44 26-Jun-2009 Nate Begeman <natebegeman@mac.com> PCH support for OpenCL language options


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
69cfb9be9bd3feab96e844bf0edf1b7546c48a02 26-Jun-2009 Nate Begeman <natebegeman@mac.com> PCH support for OpenCL language options


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
006f78ad4b68561a20068d4993fda8e6ae94142c 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 patch 2/N: Language options & file extension


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74217 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
4e3629e676c7d86d988df29dfeeaa3a8c9f0cf29 26-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 patch 2/N: Language options & file extension


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74217 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
b60eb759cc2de7125e3554b7f48b2452ca807d82 26-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Improved semantic analysis and AST respresentation for function
templates.

For example, this now type-checks (but does not instantiate the body
of deref<int>):

template<typename T> T& deref(T* t) { return *t; }

void test(int *ip) {
int &ir = deref(ip);
}

Specific changes/additions:
* Template argument deduction from a call to a function template.
* Instantiation of a function template specializations (just the
declarations) from the template arguments deduced from a call.
* FunctionTemplateDecls are stored directly in declaration contexts
and found via name lookup (all forms), rather than finding the
FunctionDecl and then realizing it is a template. This is
responsible for most of the churn, since some of the core
declaration matching and lookup code assumes that all functions are
FunctionDecls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
e53060fa78ad7e98352049f72787bdb7543e2a48 26-Jun-2009 Douglas Gregor <dgregor@apple.com> Improved semantic analysis and AST respresentation for function
templates.

For example, this now type-checks (but does not instantiate the body
of deref<int>):

template<typename T> T& deref(T* t) { return *t; }

void test(int *ip) {
int &ir = deref(ip);
}

Specific changes/additions:
* Template argument deduction from a call to a function template.
* Instantiation of a function template specializations (just the
declarations) from the template arguments deduced from a call.
* FunctionTemplateDecls are stored directly in declaration contexts
and found via name lookup (all forms), rather than finding the
FunctionDecl and then realizing it is a template. This is
responsible for most of the churn, since some of the core
declaration matching and lookup code assumes that all functions are
FunctionDecls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
d67364cad8b6e5b06f54ebeb8d5932eca79a4d84 25-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to diagnose and Mark use of implicit default assignment operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74205 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c75bc2d1f6f637098abc5db4caf0551f9437471e 25-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to diagnose and Mark use of implicit default assignment operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74205 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2ed6f7a96d7cc444f4a7f15775164b3eccc3c34 25-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 Support, patch 1/N: upper case swizzle operator and hex element index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
131f4658249b2a7d2d7e30fe07e84c484f79ef99 25-Jun-2009 Nate Begeman <natebegeman@mac.com> OpenCL 1.0 Support, patch 1/N: upper case swizzle operator and hex element index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
40bf2835dac05cd3701487bf0b6ba0440befecb4 25-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the ResolveLocationInAST function which takes an ASTContext and a SourceLocation and it resolves it into a <Decl*, Stmt*> pair.

Decl* is the declaration associated with this source location and Stmt* is the statement/expression that the location points to.
If the location does not point to a statement node, Stmt* is null.

ResolveLocationInAST (along with converting a file:line:column triplet to a SourceLocation) will be useful for an IDE client and for clang's test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74197 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
53d4c14a989523afc6aa8fff275ec3ab26eb6c18 25-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the ResolveLocationInAST function which takes an ASTContext and a SourceLocation and it resolves it into a <Decl*, Stmt*> pair.

Decl* is the declaration associated with this source location and Stmt* is the statement/expression that the location points to.
If the location does not point to a statement node, Stmt* is null.

ResolveLocationInAST (along with converting a file:line:column triplet to a SourceLocation) will be useful for an IDE client and for clang's test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74197 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
dd04ed620d6e07d6fec4f1ba244f8e0615296870 25-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove uses of std::ostream from libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74136 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
53ba0b636194dbeaa65a6f85316c9397a0c5298b 25-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove uses of std::ostream from libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74136 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
b470a3017a49ea9d3c7dd05e61acb7c811990ffb 25-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::GetSValAsScalarOrLoc()/GetSVal().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74128 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
233e913eec6c178ab58d901a212318bae95dbebd 25-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::GetSValAsScalarOrLoc()/GetSVal().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74128 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
93ab533a2e9522a2e9a7695cb7446812fc9e70a6 24-Jun-2009 Anders Carlsson <andersca@mac.com> Add a DecltypeType type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
395b475a4474f1c7574d927ad142ca0c7997cbca 24-Jun-2009 Anders Carlsson <andersca@mac.com> Add a DecltypeType type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
eed418bc4a3a68aa20dfa8c76f5c04bfa3d32936 24-Jun-2009 Anders Carlsson <andersca@mac.com> Parse the C++0x decltype specifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74086 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
6fd634f4ac59f5923cffadadb99d19f23c18707a 24-Jun-2009 Anders Carlsson <andersca@mac.com> Parse the C++0x decltype specifier.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74086 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
19d1065e4ff54f822017982570d56fbddcc1a46f 24-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that the template parameter lists get from the parser down to ActOnFunctionDeclarator for function template definitions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74040 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
52591bf224b2c43e2b00e265bb8599a620081925 24-Jun-2009 Douglas Gregor <dgregor@apple.com> Make sure that the template parameter lists get from the parser down to ActOnFunctionDeclarator for function template definitions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74040 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
6fb069ce903558b7eb06b556f57a35e43c8cfeef 24-Jun-2009 Anders Carlsson <andersca@mac.com> Support for [class.local]p4.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74030 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e98da2e7af16056a53db327b520d4b53b4be5e7a 24-Jun-2009 Anders Carlsson <andersca@mac.com> Support for [class.local]p4.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74030 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4571d8171bac6b734fbfab217db433a1605d6b61 24-Jun-2009 Anders Carlsson <andersca@mac.com> [class.local] p1 and p3. Also, add back the xcodeproj file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
e41590d2504d73453d58f22e9176088990555cc1 24-Jun-2009 Anders Carlsson <andersca@mac.com> [class.local] p1 and p3. Also, add back the xcodeproj file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
2ae1d770afc17f52a4434b492cf6ea685a724092 24-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Start propagating template parameter lists to the right places to
handle function templates. There's no actual code for function
templates yet, but at least we complain about typedef templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74021 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
e542c862bdf9a9bcb4f468be8fa6561372430611 24-Jun-2009 Douglas Gregor <dgregor@apple.com> Start propagating template parameter lists to the right places to
handle function templates. There's no actual code for function
templates yet, but at least we complain about typedef templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74021 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
a9e9e0089d7fd4e5dc737a870b519a411a81fbdd 24-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce SourceManager::ísBeforeInTranslationUnit() which can compare 2 source locations and determine which one comes before the other, relative to the translation unit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2aa03d588bd2d3c73deb662880c2244bf2e384b9 24-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::ísBeforeInTranslationUnit() which can compare 2 source locations and determine which one comes before the other, relative to the translation unit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
eab61813924dfc3e35bff6a173da3c4d3a6e3bba 24-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move the command line source location parsing from clang-cc.cpp into "include/Frontend/CommandLineSourceLoc.h".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74012 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
34d25d85d6abead0fa6337080449609a2a4f4404 24-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the command line source location parsing from clang-cc.cpp into "include/Frontend/CommandLineSourceLoc.h".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74012 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CommandLineSourceLoc.h
657b7f098932544581c4a68fe4075f5a9278e210 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Fix build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74009 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
d696aa50200fda369b9031b80d1570688fc9b0be 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Fix build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74009 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
f6f0a87015833aef219ad443409de8198a340212 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::getRegion/getSelfRegion().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74006 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
25e751a6c9ceb13f313c36facff93be30a057d97 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::getRegion/getSelfRegion().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74006 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
49b6a8ef1c1d430b8212527352c974ffcd1e29a6 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::BindLoc() and GRStateManager::Unbind().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73996 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
76500d072e97b5256c496304b40deb035ca1e375 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::BindLoc() and GRStateManager::Unbind().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73996 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
1a01dca37e195528cbce2d682a4b88812cc0b8fc 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::BindDecl() and GRStateManager::BindDeclWithInit().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73995 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
f3b097523614608537f3cc235585a426a0dd6117 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateManager::BindDecl() and GRStateManager::BindDeclWithInit().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73995 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
7e5d292be8a287cd7aa99b78c357568e481eb416 23-Jun-2009 Ted Kremenek <kremenek@apple.com> - Add MemRegion::getMemorySpace()
- Change implementation of MemRegion::hasStackStorage()/hasHeapStorage() to use
'getMemorySpace()'. This avoids a double traversal up the region hierarchy
and is simpler.
- Add MemRegion::hasHeapOrStackStorage() as a slightly more efficient
alternative to 'hasStackStorage() || hasHeapStorage()'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73977 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
bb7c96f290453104ec35ca17111a5165f68a4697 23-Jun-2009 Ted Kremenek <kremenek@apple.com> - Add MemRegion::getMemorySpace()
- Change implementation of MemRegion::hasStackStorage()/hasHeapStorage() to use
'getMemorySpace()'. This avoids a double traversal up the region hierarchy
and is simpler.
- Add MemRegion::hasHeapOrStackStorage() as a slightly more efficient
alternative to 'hasStackStorage() || hasHeapStorage()'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73977 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
dd2ec499d7f26e556478b1725be6b80e088bc417 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Move 'hasStackStorage()' and 'hasHeapStorage()' from MemRegionManager to MemRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73973 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
ea20cd74793d257679267032419a9ff7fc89dc05 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Move 'hasStackStorage()' and 'hasHeapStorage()' from MemRegionManager to MemRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73973 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
8b6b9201dd657917e6c4c33eb182049f12736bd4 23-Jun-2009 Ted Kremenek <kremenek@apple.com> API cleanup: move more methods from GRStateManager to GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73968 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
dbc2afc5fbafcffff06da0b875ce62f364cf11e0 23-Jun-2009 Ted Kremenek <kremenek@apple.com> API cleanup: move more methods from GRStateManager to GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73968 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
e32c7650a056ee59db4cbd3cba4a25dcaf966cf8 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move all factory methods from SVal to ValueManager. API cleanup!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73954 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
d91ee27950ef5c321db1ac2aa5becb75ffe7cb14 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Move all factory methods from SVal to ValueManager. API cleanup!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73954 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
a3a5a282fb70a82e18273b7182e0bd17b7d74e66 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Split ValueManager method definitions into its own source file.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
2ace5cd1dc3340a4a12a3e0d3df51f094cbfde97 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Split ValueManager method definitions into its own source file.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73952 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
3c2828d465a11dc15787a66feac39995682e6cc1 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> ValueManager::makeNonLoc -> ValueManager::makeIntVal
Clean up code with ValueManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73951 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
3038c5a44fbe7e3260a538f7dd1ace7fa13c90ae 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> ValueManager::makeNonLoc -> ValueManager::makeIntVal
Clean up code with ValueManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73951 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
8a385165f5da3f31edb7715ef09d7c6198041409 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Instead of setting the default value of the array region, bind the rest of the
array elements to 0 explicitly. Create 0 values with the element type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73946 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
087d6c20876ced37d544552b43cf33332687f074 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Instead of setting the default value of the array region, bind the rest of the
array elements to 0 explicitly. Create 0 values with the element type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73946 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
54cd81244f01040fc696f2c0f30af78610265cad 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> MemRegionManager: Migrate logic for getCodeTextRegion() over to using
trait-based MemRegion creation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73941 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0dea5241bca707789d706ed1fda3a29a8fedc4c0 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> MemRegionManager: Migrate logic for getCodeTextRegion() over to using
trait-based MemRegion creation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73941 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
04b97b8277fee81a2825448cd725405dd58bcde9 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove duplicated methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73940 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
dd198f04897df87c52fef66398035cbf67fdc33d 23-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove duplicated methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73940 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b0fc999fb07646e67aab2a6bb3bb4ab0c95be384 23-Jun-2009 Anders Carlsson <andersca@mac.com> Check in a new template argument list builder that should work better for variadic templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73937 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
fb25052736439d72a557cddd41dfb927bcb3d3e5 23-Jun-2009 Anders Carlsson <andersca@mac.com> Check in a new template argument list builder that should work better for variadic templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73937 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
4b5874bb063c92f63cda8a65866849ca5dfb9680 23-Jun-2009 Chris Lattner <sabre@nondot.org> switch Warnings.cpp to use the diagnostics machinery to print diagnostics, not *fprintf*!
Among other things, this makes the warning about unknown warning options mappable.
For example:

$ clang t.c -Werror -Wfoo
error: unknown warning option '-Wfoo' [-Wunknown-warning-option]

For another thing, they are properly color coded now too :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73936 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
8ea841b1152308ae11c23a7836dead36e47d96e3 23-Jun-2009 Chris Lattner <sabre@nondot.org> switch Warnings.cpp to use the diagnostics machinery to print diagnostics, not *fprintf*!
Among other things, this makes the warning about unknown warning options mappable.
For example:

$ clang t.c -Werror -Wfoo
error: unknown warning option '-Wfoo' [-Wunknown-warning-option]

For another thing, they are properly color coded now too :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73936 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
d8f4cefc3f1661f5bf714cf651e55edae2238479 23-Jun-2009 Ted Kremenek <kremenek@apple.com> MemRegions:
- Embed a reference to MemRegionManager objects in MemSpaceRegion objects
- Use this embedded reference for MemRegion objects to access ASTContext objects without external help
- Use this access to ASTContext to simplify 'isBoundable' (no ASTContext& argument required)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73935 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
a43484afda4c4fb4b23a53a2dc91d985d39dc2c4 23-Jun-2009 Ted Kremenek <kremenek@apple.com> MemRegions:
- Embed a reference to MemRegionManager objects in MemSpaceRegion objects
- Use this embedded reference for MemRegion objects to access ASTContext objects without external help
- Use this access to ASTContext to simplify 'isBoundable' (no ASTContext& argument required)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73935 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
1fd0e02a1e6207928c143bbec92f0b5472029276 23-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove operator '<=' overload for SourceLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
6cd4d8795b8058d289d92c0698c0012cd313fa5c 23-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove operator '<=' overload for SourceLocation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
0dba8f2175f6b47f40547b6dacaf980a52c9d870 23-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Don't use operator overload '<' for SourceLocation, it has not semantic meaning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73932 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cb5f8f59322c352f51714c3de5d8047e70895165 23-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't use operator overload '<' for SourceLocation, it has not semantic meaning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73932 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3680b4533bf8609f001d0342aafa1807f17dff77 23-Jun-2009 Ted Kremenek <kremenek@apple.com> MemRegionManager: Migrate logic for getAllocaRegion() over to using trait-based MemRegion creation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73927 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
7ae7ad9951f032d0a33b64c964f7cdcb9cc6f59b 23-Jun-2009 Ted Kremenek <kremenek@apple.com> MemRegionManager: Migrate logic for getAllocaRegion() over to using trait-based MemRegion creation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73927 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
599778ef5106277527d60a7cc9c3d8f0756a40c7 23-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> patch to mark use of implicit copy constructors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
485f087407849a8989053122f52b8c07d1191b45 23-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> patch to mark use of implicit copy constructors.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
31839f0296c1553f64ee82f3fd703c0da96b53c6 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Migrate factory methods for FieldRegion and ObjCIVarRegion creation to use the
new generalized region-construction code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73921 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
6304b08daee27b25ae2e2bdb8bffd67dfad74b3c 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Migrate factory methods for FieldRegion and ObjCIVarRegion creation to use the
new generalized region-construction code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73921 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1b85d8e3865c3c6aa6ab07ae452da84dc35864a6 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Refactor some of the logic in MemRegionManager for constructing regions using
member template functions and traits. The idea is to allow MemRegionManager to
construct subclasses of MemRegion that aren't declared in MemRegion.h (e.g.,
checker-specific regions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73917 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
250101353b711a409b075f1bc11070dddec7100b 23-Jun-2009 Ted Kremenek <kremenek@apple.com> Refactor some of the logic in MemRegionManager for constructing regions using
member template functions and traits. The idea is to allow MemRegionManager to
construct subclasses of MemRegion that aren't declared in MemRegion.h (e.g.,
checker-specific regions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73917 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
e17a4d69e605b17289c0713a905326dc232f565c 23-Jun-2009 Chris Lattner <sabre@nondot.org> add a warning group for unavailable decls that mirrors the one for
deprecated decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2f96a0679a8d9c05fd3634340421f2d360701059 23-Jun-2009 Chris Lattner <sabre@nondot.org> add a warning group for unavailable decls that mirrors the one for
deprecated decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a8b2fbf69432805ecb555d89a6e98aa50da9766a 22-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Rework the way we track which declarations are "used" during
compilation, and (hopefully) introduce RAII objects for changing the
"potentially evaluated" state at all of the necessary places within
Sema and Parser. Other changes:

- Set the unevaluated/potentially-evaluated context appropriately
during template instantiation.
- We now recognize three different states while parsing or
instantiating expressions: unevaluated, potentially evaluated, and
potentially potentially evaluated (for C++'s typeid).
- When we're in a potentially potentially-evaluated context, queue
up MarkDeclarationReferenced calls in a stack. For C++ typeid
expressions that are potentially evaluated, we will play back
these MarkDeclarationReferenced calls when we exit the
corresponding potentially potentially-evaluated context.
- Non-type template arguments are now parsed as constant
expressions, so they are not potentially-evaluated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73899 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
ac7610dad6653bad02dd42de198ca358b6fb1f1d 22-Jun-2009 Douglas Gregor <dgregor@apple.com> Rework the way we track which declarations are "used" during
compilation, and (hopefully) introduce RAII objects for changing the
"potentially evaluated" state at all of the necessary places within
Sema and Parser. Other changes:

- Set the unevaluated/potentially-evaluated context appropriately
during template instantiation.
- We now recognize three different states while parsing or
instantiating expressions: unevaluated, potentially evaluated, and
potentially potentially evaluated (for C++'s typeid).
- When we're in a potentially potentially-evaluated context, queue
up MarkDeclarationReferenced calls in a stack. For C++ typeid
expressions that are potentially evaluated, we will play back
these MarkDeclarationReferenced calls when we exit the
corresponding potentially potentially-evaluated context.
- Non-type template arguments are now parsed as constant
expressions, so they are not potentially-evaluated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73899 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
8915a3dcd08b890239dc943d38892183f570da20 22-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Remove ImplicitMustBeDefined, use universal 'Used' flag
instead. Do the implicit default ctor checking in MarkDeclarationReferenced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b7f4cc09ead099c1306d06db53e258d648d0f652 22-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Remove ImplicitMustBeDefined, use universal 'Used' flag
instead. Do the implicit default ctor checking in MarkDeclarationReferenced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
25822a01aed8142e2c3c60045cf92b6beb53fabf 22-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Addressing Doug's suggestions:

-Added comment for FunctionDecl::EndRangeLoc
-Removed a redundant check from FunctionDecl::setBody

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1a5364e0fa0482d8d477d6f136d52e503bbe13f4 22-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Addressing Doug's suggestions:

-Added comment for FunctionDecl::EndRangeLoc
-Removed a redundant check from FunctionDecl::setBody

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4010f8e48263991a109e5f4670d962faf5b13147 22-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed text of a diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c1005ac71f48ac8637ff1193a2ad9d6eb67fcf3d 22-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed text of a diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
77e15a5489d3ae286101e253c99d25581c5d73be 21-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed Protocol as TheProtocol so people can use clang header for
building obj-c++ clients. "Protocol" is a class name in Cocoa.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
262f9cf85294a1a0713420abc79d40f64aef7240 21-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed Protocol as TheProtocol so people can use clang header for
building obj-c++ clients. "Protocol" is a class name in Cocoa.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
1644360a5795ace4ff2cc15db4b1ff5669690b17 20-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Made improvements in c++'s object model patch on Doug's review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3da83eb7bcfa6bd476ab804ecb6cf755b39a6f92 20-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Made improvements in c++'s object model patch on Doug's review.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73833 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b2b5a7a5844d19ff1d33b19e5ebb47ef494c5964 20-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add the license part to the new source files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73825 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
4b562cf889bc59e1914dd2c5d9fbd7e7bfa1ad77 20-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add the license part to the new source files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73825 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
af0d4d517b43b7dd7dde06d27c5055b49f5fe0f5 20-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce SourceManager::getLocation() to get a source location out of a "file:line:column" triplet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73823 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
10b46d2f0b976676d10681d73fe061b5ae409b36 20-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce SourceManager::getLocation() to get a source location out of a "file:line:column" triplet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73823 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
545473e26c6df9a7d683436aba6f778f3637853c 20-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce Decl::getSourceRange() which, like Stmt::getSourceRange(), represents the range that the declaration covers.

Add initial support for NamespaceDecl, VarDecl, and FunctionDecl:
-NamespaceDecl range is from name to '}'
-VarDecl is from name to possible init expression
-FunctionDecl is from name to last parameter name or to end of its function body.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
55d608cbadf1e9c05064f9287c057d50b7df65b4 20-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce Decl::getSourceRange() which, like Stmt::getSourceRange(), represents the range that the declaration covers.

Add initial support for NamespaceDecl, VarDecl, and FunctionDecl:
-NamespaceDecl range is from name to '}'
-VarDecl is from name to possible init expression
-FunctionDecl is from name to last parameter name or to end of its function body.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
f82550bab5b24a51bea992fc85b8e08308f9b301 20-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Add operator '<=' for comparing SourceLocations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
06c27ee259dc8dbd20a3c4a7e7dec8de2844f895 20-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add operator '<=' for comparing SourceLocations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
dbfe01e9e1119e2e691101e914fbf8b577a0cd7d 20-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce the ASTUnit class.

ASTUnit is a helper class to allow easy loading of an ASTContext from a PCH file. No users for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73819 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
0853a02c3b04d96a3c432b883e403175c954cd81 20-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce the ASTUnit class.

ASTUnit is a helper class to allow easy loading of an ASTContext from a PCH file. No users for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73819 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTUnit.h
683a1144296b0d866dea5b8bee2c2948ad0b6312 20-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Parsing and AST support for using declarations, from John Thompson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73812 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
9cfbe48a7a20a217fdb2920b29b67ae7941cb116 20-Jun-2009 Douglas Gregor <dgregor@apple.com> Parsing and AST support for using declarations, from John Thompson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73812 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
981892622a7fbb6d0e7eb7759ed7e8039e46bef9 20-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of when declarations are "used" according to C and
C++. This logic is required to trigger implicit instantiation of
function templates and member functions of class templates, which will
be implemented separately.

This commit includes support for -Wunused-parameter, printing warnings
for named parameters that are not used within a function/Objective-C
method/block. Fixes <rdar://problem/6505209>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
e0762c92110dfdcdd207db461a4ea17afd168f1e 20-Jun-2009 Douglas Gregor <dgregor@apple.com> Keep track of when declarations are "used" according to C and
C++. This logic is required to trigger implicit instantiation of
function templates and member functions of class templates, which will
be implemented separately.

This commit includes support for -Wunused-parameter, printing warnings
for named parameters that are not used within a function/Objective-C
method/block. Fixes <rdar://problem/6505209>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
89942a084af119f82b4e99adde48afef1561f8ce 20-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Use QualType to represent block's implicit return type as
to not lose its 'const/volatile' qualifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7d5c74ecbbd8719436c071f38657bc8e97ee4a24 20-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Use QualType to represent block's implicit return type as
to not lose its 'const/volatile' qualifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3603e0c11af0d958225d8db2f25ed2683d652436 19-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for implementation of C++'s object model. This is
work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
f8dcb866d344aa9355595e14c429852830b63095 19-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Patch for implementation of C++'s object model. This is
work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73782 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
4ea6a18dba1e0cee19c35039d73f5c96800e26f8 19-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove more GetSVal/GetLValue methods in GRExprEngine/GRState, instead
preferring to use their replacements in GRState. This further unifies the code
paths for such logic and leads to some code reduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73771 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
3ff12591494a3cb3d3a24427975df58714ac3b2f 19-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove more GetSVal/GetLValue methods in GRExprEngine/GRState, instead
preferring to use their replacements in GRState. This further unifies the code
paths for such logic and leads to some code reduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73771 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
d4f3f3ddf479a0d5cc571bbae730ff85704ab458 19-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> A further step of r73690: associate the cast-to type with the created symbol,
because the type of the symbol is used to create the default range. We need the
sign to be consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73756 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
45257c37a4e9a8f915661e0f964aec375909eb4c 19-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> A further step of r73690: associate the cast-to type with the created symbol,
because the type of the symbol is used to create the default range. We need the
sign to be consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73756 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
e3f4bda53544f2a5a8fe31ab7c86bed1e4e66b01 19-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Make changes to PCHReader to allow reading a PCH file without having a pre-initialized Preprocessor.

-Introduce 'PCHReaderListener' which is an abstract interface for getting various information from the PCHReader.
-If PCHReader is constructed without a Preprocessor, it can still load the file and invoke the callbacks of PCHReaderListener.
-If PCHReader is constructed with an initialized Preprocessor, PCHValidator is used as a PCHReaderListener to validate the contents of the PCH file against the given Preprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73741 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
11e51106329c550d008fad2c657c053d81611ea8 19-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make changes to PCHReader to allow reading a PCH file without having a pre-initialized Preprocessor.

-Introduce 'PCHReaderListener' which is an abstract interface for getting various information from the PCHReader.
-If PCHReader is constructed without a Preprocessor, it can still load the file and invoke the callbacks of PCHReaderListener.
-If PCHReader is constructed with an initialized Preprocessor, PCHValidator is used as a PCHReaderListener to validate the contents of the PCH file against the given Preprocessor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73741 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
c0cccca3b053c9e86800f7f990ec609e4546bcb2 19-Jun-2009 Ted Kremenek <kremenek@apple.com> Move clients over from using GRStateManager::BindXXX and friends to
GRState->bindXXX and friends (and constify some arguments along the way).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73740 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
23ec48cd3369c8d7d1ab3c3f2226cfcffd2cd3d3 19-Jun-2009 Ted Kremenek <kremenek@apple.com> Move clients over from using GRStateManager::BindXXX and friends to
GRState->bindXXX and friends (and constify some arguments along the way).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73740 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
70970bf6c7757c2e326971ffe98888498180a9ef 19-Jun-2009 Ted Kremenek <kremenek@apple.com> libAnalysis:
- Remove the 'isFeasible' flag from all uses of 'Assume'.
- Remove the 'Assume' methods from GRStateManager. Now the only way to
create a new GRState with an assumption is to use the new 'assume' methods
in GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
a591bc04d21fa62ebffcb2c7814d738ca8f5e2f9 19-Jun-2009 Ted Kremenek <kremenek@apple.com> libAnalysis:
- Remove the 'isFeasible' flag from all uses of 'Assume'.
- Remove the 'Assume' methods from GRStateManager. Now the only way to
create a new GRState with an assumption is to use the new 'assume' methods
in GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
68a7a6db3693e6df54a2198f3ee4e3f87e7f9ac0 18-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Some cleanups suggested by Chris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f6ddb737cb882ffbf0b75a9abd50b930cc2b9068 18-Jun-2009 Douglas Gregor <dgregor@apple.com> Some cleanups suggested by Chris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
98da6aed9fbc7fc82dd581c7bb647412f7864299 18-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Move the static DeclAttrs map into ASTContext. Fixes <rdar://problem/6983177>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73702 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
68584ed35ad819a1668e3f527ba7f5dd4ae6a333 18-Jun-2009 Douglas Gregor <dgregor@apple.com> Move the static DeclAttrs map into ASTContext. Fixes <rdar://problem/6983177>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73702 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
e539995508a92a4e3a97c6ba22a17a1e7ce4158e 18-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> When casting region, if we do not create an element region, record the cast-to
type.

When retrieving the region value, if we are going to create a symbol value, use
the cast-to type if possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73690 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
88c675f001e046b7264e2a2d4174dacf3781ce5f 18-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> When casting region, if we do not create an element region, record the cast-to
type.

When retrieving the region value, if we are going to create a symbol value, use
the cast-to type if possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73690 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
32163dd204fda0daa4dca79e58e3d17659bf07b4 18-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> More GRStateRef removal fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73674 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngineBuilders.h
4d5d994a069d6f7513cc025266afcfa73b020405 18-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> More GRStateRef removal fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73674 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngineBuilders.h
34d6450ab829780307bb5be0d0f4b0077ff517ea 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73670 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
47fed90f77a3644b2224d9c34e9bae74d8625332 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove GRStateRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73670 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
18a636d2c9aa63129038e71643a8e6b2ede74038 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove more dependencies on GRStateRef. As a consequence, we can now
pretty-print a GRState object anywhere it is referenced (instead of
needing a GRStateRef of a GRStateManager handy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73669 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
b65be70779bdaf75e91731bfd89362bf4118ae31 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove more dependencies on GRStateRef. As a consequence, we can now
pretty-print a GRState object anywhere it is referenced (instead of
needing a GRStateRef of a GRStateManager handy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73669 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
d2d7e18f66887ecf47774feb3e2844692d5f4b52 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove another dependency on GRStateRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73667 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
3a7720368937e69c3d1ddab353667f256827717f 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove another dependency on GRStateRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73667 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
6837059a1bcf1dc4da5667e69c6203e4110def34 18-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Implement correct name lookup inside an initializer of a C++ class static data member.

Fixes "test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp" test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73652 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0ffd9ffb633ca4886c7db4dd12dc36bdad3d797c 18-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement correct name lookup inside an initializer of a C++ class static data member.

Fixes "test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp" test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73652 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
38bc2b568f9a179119f196f7bcebd87b37c6355e 18-Jun-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move CXXMethodDecl::OutOfLineDefinition into Decl::OutOfLine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
f5cecfbdcd20be224861f9e67c5973a9a2b61512 18-Jun-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move CXXMethodDecl::OutOfLineDefinition into Decl::OutOfLine.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
c75c1a882cad91f2edc6a926eb8cd725abad2262 18-Jun-2009 Steve Naroff <snaroff@apple.com> First step toward fixing <rdar://problem/6613046> refactor clang objc type representation.

Add a type (ObjCObjectPointerType) and remove a type (ObjCQualifiedIdType).

This large/tedious patch is just a first step. Next step is to remove ObjCQualifiedInterfaceType. After that, I will remove the magic TypedefType for 'id' (installed by Sema). This work will enable various simplifications throughout clang (when dealing with ObjC types).

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
rontend/TypeXML.def
d1b3c2dd5bc1f3103bee6137957aa7c5f8f2f0bc 18-Jun-2009 Steve Naroff <snaroff@apple.com> First step toward fixing <rdar://problem/6613046> refactor clang objc type representation.

Add a type (ObjCObjectPointerType) and remove a type (ObjCQualifiedIdType).

This large/tedious patch is just a first step. Next step is to remove ObjCQualifiedInterfaceType. After that, I will remove the magic TypedefType for 'id' (installed by Sema). This work will enable various simplifications throughout clang (when dealing with ObjC types).

No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
rontend/TypeXML.def
2a15c5930802f70e4a6114eda9f9891179af19be 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove more uses of GRStateRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73648 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
c87813824896a7124d2dd1c08e4661bbe119abf5 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Remove more uses of GRStateRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73648 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
49f8fa612dc057fd645f1f15b65ee92acf541e21 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Class 'Environment' no longer should subclass llvm::FoldingSetNode.
Environment hasn't been uniqued in a FoldingSet for some time, so this
was just wasting a pointer in GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73645 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
fdf6a56339b3df94d46a49c4977e0a21e8922cf3 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Class 'Environment' no longer should subclass llvm::FoldingSetNode.
Environment hasn't been uniqued in a FoldingSet for some time, so this
was just wasting a pointer in GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73645 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
5c9b454401ecc8ccee2a6d7e59e35992a7ec7008 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Start moving in the direction of removing GRStateRef. Now each
GRState object has a direct reference to its GRStateManager, making
the functionality of GRStateRef redunandant. This will lead to some
nice API cleanup and code shrinking across libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73644 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
67f28534c090650ffa123afa84ff4a96f56de14e 18-Jun-2009 Ted Kremenek <kremenek@apple.com> Start moving in the direction of removing GRStateRef. Now each
GRState object has a direct reference to its GRStateManager, making
the functionality of GRStateRef redunandant. This will lead to some
nice API cleanup and code shrinking across libAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73644 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
2a2e0405001f22e9026cb0dec219146996d1e7b6 17-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Support dependent extended vector types and template instantiation
thereof. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
9cdda0cf8528e3d595be9bfa002f0450074beb4d 17-Jun-2009 Douglas Gregor <dgregor@apple.com> Support dependent extended vector types and template instantiation
thereof. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
7739d8407b317ad76645a3d06419ca508c5090e7 17-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Added missing @endcode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
54481f194b6ac5c49f9220ca8d4f9f38d4d53c86 17-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Added missing @endcode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
b6d226f16c36fa694fda3b3f21cfbd102dc124c1 17-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose the use of attributes on namespace aliases, from Anis Ahmad

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
6a588dd230c14a364d222d6057bbcf11afbd9ffd 17-Jun-2009 Douglas Gregor <dgregor@apple.com> Diagnose the use of attributes on namespace aliases, from Anis Ahmad

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
5a95923ba25c50c96348bb7d2e45ca121c76736f 17-Jun-2009 Anders Carlsson <andersca@mac.com> Remove all non-const getters from TemplateArgumentList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73589 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
6f10d48b7da44da324247ddbf54e2ddda8e22dd3 17-Jun-2009 Anders Carlsson <andersca@mac.com> Remove all non-const getters from TemplateArgumentList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73589 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ebd94c2e6773213ae1ac9e9b482e80e9487592f4 17-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Place -Wreadonly-setter-attrs under -Wmost option group.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1fe5ffd005953bc1208267127b00d6be71a44ca6 17-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Place -Wreadonly-setter-attrs under -Wmost option group.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
329aa991e15f0092bc0685f9d57748a9450db18c 17-Jun-2009 Daniel Dunbar <daniel@zuster.org> Fake support for -print-multi-*
- I think we will eventually need to support this for realz, and some build
processes seem to depend on these options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73581 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/ToolChain.h
12cfe036d809173a25af0104844d4bb66a92252b 17-Jun-2009 Daniel Dunbar <daniel@zuster.org> Fake support for -print-multi-*
- I think we will eventually need to support this for realz, and some build
processes seem to depend on these options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73581 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/ToolChain.h
b45c92068b9d6fb460074dcdcb3930f3b66f0229 17-Jun-2009 Ted Kremenek <kremenek@apple.com> Add utility method GRStateRef::makeWithStore().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73576 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
cb7835f4f9b681c548f256b62b0810289d4856cd 17-Jun-2009 Ted Kremenek <kremenek@apple.com> Add utility method GRStateRef::makeWithStore().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73576 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
b4232810cdd0bcbfee961c56355f290b872df089 17-Jun-2009 Ted Kremenek <kremenek@apple.com> RegionStoreManager:
- Add "sections" to RegionStoreManager.cpp to delineate functionality.
- Add new function "CreateFieldsOnlyRegionStoreManager" that uses the new
RegionStoreFeatures class to use a reduced set of features from
RegionStoreManager (in this case, only field-sensitivity). This isn't
completely hooked up yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73572 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
9af46f59242cfaec74fa491a66724970478263eb 17-Jun-2009 Ted Kremenek <kremenek@apple.com> RegionStoreManager:
- Add "sections" to RegionStoreManager.cpp to delineate functionality.
- Add new function "CreateFieldsOnlyRegionStoreManager" that uses the new
RegionStoreFeatures class to use a reduced set of features from
RegionStoreManager (in this case, only field-sensitivity). This isn't
completely hooked up yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73572 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
62733928a9d16dfa37120a20587a3b824959d603 17-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Don't warn about -Winvalid-pch or -Wno-invalid-pch. Since we don't
search for PCH files that correspond to header inclusions, this option
does not make sense. Fixes <rdar://problem/6970322>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73563 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
97596b9e7cddfd8e931edc6b3685fe64693d2173 17-Jun-2009 Douglas Gregor <dgregor@apple.com> Don't warn about -Winvalid-pch or -Wno-invalid-pch. Since we don't
search for PCH files that correspond to header inclusions, this option
does not make sense. Fixes <rdar://problem/6970322>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73563 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
67f6cd73ff2c5b608227927123cfb1cfc6fe7338 16-Jun-2009 Chris Lattner <sabre@nondot.org> simplify .td file


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
530a417110e2fd9e1cc7f7c4f8d84461abe0b606 16-Jun-2009 Chris Lattner <sabre@nondot.org> simplify .td file


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
888a11db2c97c17a01fc490487e94ba18f8cf8ef 16-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Add -Wundeclared-selector to -Wmost options group.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
aa1234a537a032bf1082be4a4ed4688230cc2353 16-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Add -Wundeclared-selector to -Wmost options group.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c4bdfcd19df88bd75cc31bdca20a359711f4ae8f 16-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Implements -Wundeclared-selector for ObjC.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7ff22ded2221f442b1f8ff78172938d04ec8c926 16-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Implements -Wundeclared-selector for ObjC.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b323a09520aeefc657a5be52d45dd286380b789 16-Jun-2009 Chris Lattner <sabre@nondot.org> my refactoring of builtins changed target-specific builtins to only be
registered when PCH wasn't being used. We should always install (in BuiltinInfo)
information about target-specific builtins, but we shouldn't register any builtin
identifier infos. This fixes the build of apps that use PCH and target specific
builtins together.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
030e8fe5aabe6a50ed7da3182df8cbce446bfeab 16-Jun-2009 Chris Lattner <sabre@nondot.org> my refactoring of builtins changed target-specific builtins to only be
registered when PCH wasn't being used. We should always install (in BuiltinInfo)
information about target-specific builtins, but we shouldn't register any builtin
identifier infos. This fixes the build of apps that use PCH and target specific
builtins together.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Builtins.h
fe483ee196b58d11e91586e8ec59b9944a985d93 16-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Use canonical type for building ElementRegion. Otherwise ElementRegions cannot
be unique.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73482 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
143b2fc6fd3945c250b333383749010c2c8e3a4c 16-Jun-2009 Zhongxing Xu <xuzhongxing@gmail.com> Use canonical type for building ElementRegion. Otherwise ElementRegions cannot
be unique.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73482 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
37bb2bd63d6a2dfeb4b8f2e07205e501e96e49e1 16-Jun-2009 Anders Carlsson <andersca@mac.com> Handle temporaries in default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f54741e6465692d3bdbae974ac3beeeab92e4a95 16-Jun-2009 Anders Carlsson <andersca@mac.com> Handle temporaries in default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4e3d355931542dc1a40c35c108f7e0b72876584c 16-Jun-2009 Anders Carlsson <andersca@mac.com> Keep track of whether a type parameter type is a parameter pack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
76e4ce42a30cee4dc40ce7c6014874fbc4f9baa7 16-Jun-2009 Anders Carlsson <andersca@mac.com> Keep track of whether a type parameter type is a parameter pack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
02dc3edc7f0eb2b8c86eb31011781faa0839ec3f 16-Jun-2009 Chris Lattner <sabre@nondot.org> accept and ignore -Wdiv-by-zero


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73446 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
187c22b79320cfec9c024c2f2f4b2aa367662f83 16-Jun-2009 Chris Lattner <sabre@nondot.org> accept and ignore -Wdiv-by-zero


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73446 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
84802eb7168db69179f7fa73aa45bfee0be66104 15-Jun-2009 Anders Carlsson <andersca@mac.com> Include <limits>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
3f3ce82674b44a58a2af7d90feb55acd906dd762 15-Jun-2009 Anders Carlsson <andersca@mac.com> Include <limits>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
86e20d021b955f83db4494ef577f045560b97864 15-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> More XML output support, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
rontend/DeclContextXML.def
rontend/DeclXML.def
rontend/DocumentXML.def
rontend/DocumentXML.h
rontend/StmtXML.def
rontend/TypeXML.def
038f75abf5abd1e35736dd5c751ba20df1158aaa 15-Jun-2009 Douglas Gregor <dgregor@apple.com> More XML output support, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73402 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeVisitor.h
rontend/DeclContextXML.def
rontend/DeclXML.def
rontend/DocumentXML.def
rontend/DocumentXML.h
rontend/StmtXML.def
rontend/TypeXML.def
023cbac100a3d7efe76337de307fee5b181d07e4 15-Jun-2009 Anders Carlsson <andersca@mac.com> More parameter pack work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
3b36b66a00b7d5bab71b486a54694f0ae397bddb 15-Jun-2009 Anders Carlsson <andersca@mac.com> More parameter pack work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
584b50610476aa300c4b648d860c8938cc7f23cb 15-Jun-2009 Anders Carlsson <andersca@mac.com> Add a new 'Pack' argument kind to TemplateArgument. This is not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
d01b1da213aeb71fd40ff7fb78a194613cc1ece7 15-Jun-2009 Anders Carlsson <andersca@mac.com> Add a new 'Pack' argument kind to TemplateArgument. This is not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
95d6c95238d03080803549be81139f03a098016e 14-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Update LLVM.

Implement support for C++ Substitution Failure Is Not An Error
(SFINAE), which says that errors that occur during template argument
deduction do *not* produce diagnostics and do not necessarily make a
program ill-formed. Instead, template argument deduction silently
fails. This is currently implemented for template argument deduction
during matching of class template partial specializations, although
the mechanism will also apply to template argument deduction for
function templates. The scheme is simple:

- If we are in a template argument deduction context, any diagnostic
that is considered a SFINAE error (or warning) will be
suppressed. The error will be propagated up the call stack via the
normal means.
- By default, all warnings and errors are SFINAE errors. Add the
NoSFINAE class to a diagnostic in the .td file to make it a hard
error (e.g., for access-control violations).

Note that, to make this fully work, every place in Sema that emits an
error *and then immediately recovers* will need to check
Sema::isSFINAEContext() to determine whether it must immediately
return an error rather than recovering.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticSemaKinds.td
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
5e9f35c7cb61aea46f56d46c77cbcf47c0cf28ba 14-Jun-2009 Douglas Gregor <dgregor@apple.com> Update LLVM.

Implement support for C++ Substitution Failure Is Not An Error
(SFINAE), which says that errors that occur during template argument
deduction do *not* produce diagnostics and do not necessarily make a
program ill-formed. Instead, template argument deduction silently
fails. This is currently implemented for template argument deduction
during matching of class template partial specializations, although
the mechanism will also apply to template argument deduction for
function templates. The scheme is simple:

- If we are in a template argument deduction context, any diagnostic
that is considered a SFINAE error (or warning) will be
suppressed. The error will be propagated up the call stack via the
normal means.
- By default, all warnings and errors are SFINAE errors. Add the
NoSFINAE class to a diagnostic in the .td file to make it a hard
error (e.g., for access-control violations).

Note that, to make this fully work, every place in Sema that emits an
error *and then immediately recovers* will need to check
Sema::isSFINAEContext() to determine whether it must immediately
return an error rather than recovering.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
asic/Diagnostic.td
asic/DiagnosticSemaKinds.td
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
c46fcddc0bb2256110a710801f34a560453e3549 14-Jun-2009 Chris Lattner <sabre@nondot.org> Sink the BuiltinInfo object from ASTContext into the
preprocessor and initialize it early in clang-cc. This
ensures that __has_builtin works in all modes, not just
when ASTContext is around.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.h
ex/Preprocessor.h
1b63e4f732dbc73d90abf886b4d21f8e3a165f6d 14-Jun-2009 Chris Lattner <sabre@nondot.org> Sink the BuiltinInfo object from ASTContext into the
preprocessor and initialize it early in clang-cc. This
ensures that __has_builtin works in all modes, not just
when ASTContext is around.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Builtins.h
ex/Preprocessor.h
99ca9d64d362891c197bfda097e4994c41a67690 14-Jun-2009 Chris Lattner <sabre@nondot.org> move the various builtins stuff from libast to libbasic. This
fixes a layering violation in lib/Basic/Targets.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
ST/Builtins.h
ST/PPCBuiltins.def
ST/TargetBuiltins.h
ST/X86Builtins.def
asic/Builtins.def
asic/Builtins.h
asic/BuiltinsPPC.def
asic/BuiltinsX86.def
asic/TargetBuiltins.h
6b15cdc1312f8fc45c86ee75e2a85106700e97f6 14-Jun-2009 Chris Lattner <sabre@nondot.org> move the various builtins stuff from libast to libbasic. This
fixes a layering violation in lib/Basic/Targets.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
ST/Builtins.h
ST/PPCBuiltins.def
ST/TargetBuiltins.h
ST/X86Builtins.def
asic/Builtins.def
asic/Builtins.h
asic/BuiltinsPPC.def
asic/BuiltinsX86.def
asic/TargetBuiltins.h
950921c2eb50de386231062f91c88ff8adbd53b9 14-Jun-2009 Chris Lattner <sabre@nondot.org> prune #includes, Builtins.h/cpp no longer depends on libast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73317 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
f6c2a2a3ff0533334d15c96c24b22b57e13d4dd9 14-Jun-2009 Chris Lattner <sabre@nondot.org> prune #includes, Builtins.h/cpp no longer depends on libast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73317 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
260ad501d479ae610259272ad5ce13910b0cc0ac 14-Jun-2009 Chris Lattner <sabre@nondot.org> move GetBuiltinType from Builtin::Context to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.h
86df27bbdbb98c39ec2184695c0561209f91bedd 14-Jun-2009 Chris Lattner <sabre@nondot.org> move GetBuiltinType from Builtin::Context to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.h
cb9057e888b28ff7f12a3bf52d1293bbca193acf 14-Jun-2009 Chris Lattner <sabre@nondot.org> improve localizability by not passing english phrases into
diagnostics in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
6869d8ea1bb7d191b5b290f5a55ee74f2174829a 14-Jun-2009 Chris Lattner <sabre@nondot.org> improve localizability by not passing english phrases into
diagnostics in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
449eb1c6720c470df8fb12437e282aea14db4ff2 14-Jun-2009 Chris Lattner <sabre@nondot.org> add a handy predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73310 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0d456588acac0713a7c33063922d35a8cc8c658e 14-Jun-2009 Chris Lattner <sabre@nondot.org> add a handy predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73310 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
81cb862d85f9e46753a01d12cf46e0604ee184b5 13-Jun-2009 Chris Lattner <sabre@nondot.org> declare an 'operator delete' to match operator new, this avoids many many
warnings when building with VC++, patch by AlisdairM!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
9509108b3dde280dca1999b5c054f5b789581e68 13-Jun-2009 Chris Lattner <sabre@nondot.org> declare an 'operator delete' to match operator new, this avoids many many
warnings when building with VC++, patch by AlisdairM!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
13fac3fcba7f8ad212cefb9a2a784c72a6cb3c74 13-Jun-2009 Anders Carlsson <andersca@mac.com> Have CheckClassTemplatePartialSpecializationArgs take a TemplateArgumentListBuilder. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
6360be748e494d35784834d39b2c2bc6cd187d0c 13-Jun-2009 Anders Carlsson <andersca@mac.com> Have CheckClassTemplatePartialSpecializationArgs take a TemplateArgumentListBuilder. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
7803aad2474c04bf356acf005a9d544248b5f739 13-Jun-2009 Chris Lattner <sabre@nondot.org> implement and document a new __has_feature and __has_builtin magic
builtin preprocessor macro. This appears to work with two caveats:
1) builtins are registered in -E mode, and 2) target-specific builtins
are unconditionally registered even if they aren't supported by the
target (e.g. SSE4 builtin when only SSE1 is enabled).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
148772a841cae6f32db16d890e788b92a763bb3f 13-Jun-2009 Chris Lattner <sabre@nondot.org> implement and document a new __has_feature and __has_builtin magic
builtin preprocessor macro. This appears to work with two caveats:
1) builtins are registered in -E mode, and 2) target-specific builtins
are unconditionally registered even if they aren't supported by the
target (e.g. SSE4 builtin when only SSE1 is enabled).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
4ffb581f6eb74e56c74dd3566c68ee53da004b20 13-Jun-2009 Anders Carlsson <andersca@mac.com> More work on type parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
0ceffb51b28b09db67404058c642dcb1f877f6e8 13-Jun-2009 Anders Carlsson <andersca@mac.com> More work on type parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
f90c2134cb342a33f4b112806052269fe847d5b2 13-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> When some template parameters of a class template partial
specialization cannot be deduced, produce a warning noting that the
affected class template partial specialization will never be used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
031a5880e19d06624551aed9d74594356f4f9db1 13-Jun-2009 Douglas Gregor <dgregor@apple.com> When some template parameters of a class template partial
specialization cannot be deduced, produce a warning noting that the
affected class template partial specialization will never be used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c2018a7038b1bc6f2b8866472e4508d45f4139e1 13-Jun-2009 Anders Carlsson <andersca@mac.com> Improvements to TemplateArgumentListBuilder to make it work better with parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclTemplate.h
67e332009c6e349dc34700f539747afcff990336 13-Jun-2009 Anders Carlsson <andersca@mac.com> Improvements to TemplateArgumentListBuilder to make it work better with parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclTemplate.h
b19295070a3ed69e36a57086ff9bb997a06f6aee 13-Jun-2009 Anders Carlsson <andersca@mac.com> A parameter pack must always come last in a class template.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49d2557addafd2f43b6d2ff54cf77b4f250d1544 13-Jun-2009 Anders Carlsson <andersca@mac.com> A parameter pack must always come last in a class template.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73269 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
647d1ab319e47965daf56196b051725cf59c193b 13-Jun-2009 Anders Carlsson <andersca@mac.com> Address more comments from Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73267 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
ce5635a1008b3aedaecb1a3b29bb77e1b71080d1 13-Jun-2009 Anders Carlsson <andersca@mac.com> Address more comments from Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73267 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
0485d88ad80aec19d42e079659f2ccf7a636b791 13-Jun-2009 Chris Lattner <sabre@nondot.org> add the location of the ')' in a do/while statement to DoStmt.
This fixes a source range problem reported by Olaf Krzikalla.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
989135901c750af61ef012b6b0a0368be415bc46 13-Jun-2009 Chris Lattner <sabre@nondot.org> add the location of the ')' in a do/while statement to DoStmt.
This fixes a source range problem reported by Olaf Krzikalla.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
a2333785cb39c5dc9e80b8d79d1ddc8ba65bbe42 13-Jun-2009 Anders Carlsson <andersca@mac.com> Parameter packs can't have default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73262 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9c4c5c8e174e203da5f841f187bd290a76b34710 13-Jun-2009 Anders Carlsson <andersca@mac.com> Parameter packs can't have default arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73262 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eebbf9aa9b9bd0f9e61f5e622dbf36a60836161b 13-Jun-2009 Anders Carlsson <andersca@mac.com> Keep track of whether a type parameter is actually a type parameter pack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
6d845ae1baf77691bca080e0762a1d45ee017f70 13-Jun-2009 Anders Carlsson <andersca@mac.com> Keep track of whether a type parameter is actually a type parameter pack.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
4faa4269490ed6448711e3e0ae8792e6823ae354 13-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Finish implementing checking of class template partial specializations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
16df850bb73e8e2a3dece830b59785ff167428bc 13-Jun-2009 Douglas Gregor <dgregor@apple.com> Finish implementing checking of class template partial specializations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
424764408d9ba3a0b6a3f2b71650ab841bedeb67 13-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose C++ [temp.class.spec]p9b3, where a class template partial
specialization's arguments are identical to the implicit template
arguments of the primary template. Typically, this is meant to be a
declaration/definition of the primary template, so we give that
advice.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6aa75cfbdd473cb8fb2a2261abf7e9d3c8389bca 13-Jun-2009 Douglas Gregor <dgregor@apple.com> Diagnose C++ [temp.class.spec]p9b3, where a class template partial
specialization's arguments are identical to the implicit template
arguments of the primary template. Typically, this is meant to be a
declaration/definition of the primary template, so we give that
advice.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
76e7995d72d3966590e97e8897629c0b5b967536 12-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose the incorrect use of non-type template arguments for class
template partial specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73254 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e94866ffc12d33d30b351f30aac4aa3828bc05d7 12-Jun-2009 Douglas Gregor <dgregor@apple.com> Diagnose the incorrect use of non-type template arguments for class
template partial specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73254 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9c85fa039d98db5210fce90c6128938b93bfeff6 12-Jun-2009 Anders Carlsson <andersca@mac.com> Parse support for C++0x type parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73247 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
941df7dac2c733bad57342a01ca4c8dac956ef63 12-Jun-2009 Anders Carlsson <andersca@mac.com> Parse support for C++0x type parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73247 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
fbcc9e972aa713321e69b184e01c62976101b4ad 12-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Verify that the template parameters of a class template partial
specialization do not have default arguments
(C++ [temp.class.spec]p10).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73245 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ba1ecb564c05c2b749193e8deef1df3b69ea3f54 12-Jun-2009 Douglas Gregor <dgregor@apple.com> Verify that the template parameters of a class template partial
specialization do not have default arguments
(C++ [temp.class.spec]p10).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73245 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
623e2e07723aeb17b86146036f0ddec2a70fb93a 12-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Improve template argument deduction to keep track of why template
argument deduction failed. For example, given

template<typename T> struct is_same<T, T> { ... };

template argument deduction will fail for is_same<int, float>, and now
reports enough information

Right now, we don't do anything with this extra information, but it
can be used for informative diagnostics that say, e.g., "template
argument deduction failed because T was deduced to 'int' in one
context and 'float' in another".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
f67875d5addf36b951ad37fb04509ab2b572c88a 12-Jun-2009 Douglas Gregor <dgregor@apple.com> Improve template argument deduction to keep track of why template
argument deduction failed. For example, given

template<typename T> struct is_same<T, T> { ... };

template argument deduction will fail for is_same<int, float>, and now
reports enough information

Right now, we don't do anything with this extra information, but it
can be used for informative diagnostics that say, e.g., "template
argument deduction failed because T was deduced to 'int' in one
context and 'float' in another".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
a116e6e7d544e9e9680fc917709147ea71069877 12-Jun-2009 Anders Carlsson <andersca@mac.com> It's an error to use a function declared in a class definition as a default argument before the function has been declared.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
5e300d1a8e37f24e71f8cf204b982f20f85cf91a 12-Jun-2009 Anders Carlsson <andersca@mac.com> It's an error to use a function declared in a class definition as a default argument before the function has been declared.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
c5e01af856aca7fbacdf4835edd32a054a6328b2 11-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Template argument deduction for member pointers.

Also, introduced some of the framework for performing instantiation as
part of template argument deduction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
637a4097f61b09d6ccf619298d9d121fafa044e4 11-Jun-2009 Douglas Gregor <dgregor@apple.com> Template argument deduction for member pointers.

Also, introduced some of the framework for performing instantiation as
part of template argument deduction.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73175 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a39e830d4f32b349943d6f3441e7a8c3407ef606 10-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Handle member pointer types with dependent class types (e.g., int
T::*) and implement template instantiation for member pointer types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
949bf69136e07fb7968d84bc21d9272ff343ffdb 10-Jun-2009 Douglas Gregor <dgregor@apple.com> Handle member pointer types with dependent class types (e.g., int
T::*) and implement template instantiation for member pointer types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
891d82f6cec99543735d2b4cd6354352862532be 09-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add more parser support for Microsoft extensions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73101 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
290eeb0ec2b6b91f3621e05ef541deb257fbea73 09-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add more parser support for Microsoft extensions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73101 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3575e26e2b42bbd30d1d4a46ec193b104e408f0a 08-Jun-2009 Daniel Dunbar <daniel@zuster.org> PR4016: Forward -fno-show-source-location to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73082 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
75eb1d64784946a37fc0b27596e2d92b6cf7033b 08-Jun-2009 Daniel Dunbar <daniel@zuster.org> PR4016: Forward -fno-show-source-location to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73082 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
cd2318453814adf1b1e57c7d85e72be39d6549d0 08-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add real parsing for __declspec. It doesn't make much of a difference
at the moment because we ignore the result.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73056 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
arse/Parser.h
a23b4856476320435e1ae59f71f19fc30b1c9992 08-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add real parsing for __declspec. It doesn't make much of a difference
at the moment because we ignore the result.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73056 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
arse/Parser.h
6b6ca949df5444625f4b527ae2da1d3cb8fc03fe 08-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Misc minor fixes for clang for the Windows target.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
abc4e32603bd9d3e392e23762cc366e45d772685 08-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Misc minor fixes for clang for the Windows target.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
b6eed6e84d81efeeda9e405fd6ec440b81510b14 08-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Delete method which is now trivial.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
26784c1dd1f3e395f024fd594646790421b3bbf3 08-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Delete method which is now trivial.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d2aaf78da4bd31653cf6d0cd378d1f520fd3069d 08-Jun-2009 Chris Lattner <sabre@nondot.org> teach clang that -Wunused turns on all unused warnings, even though most
of these are not implemented yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
f3a16608711f6b08f54b6e17395155df6b6568a1 08-Jun-2009 Chris Lattner <sabre@nondot.org> teach clang that -Wunused turns on all unused warnings, even though most
of these are not implemented yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73042 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
0ebbcba04c95cd6fc8033a862ddaebdc98875c26 07-Jun-2009 Anders Carlsson <andersca@mac.com> Instantiation support for more Obj-C expressions, string literals, @selector and @protocol expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73036 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
02d95baf23cbb29ea4ca58b3e8f54f92f845b900 07-Jun-2009 Anders Carlsson <andersca@mac.com> Instantiation support for more Obj-C expressions, string literals, @selector and @protocol expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73036 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
7e2e967f7df16c8f9b3cf75ff243765dc7d8ad3a 07-Jun-2009 Anders Carlsson <andersca@mac.com> Template instantiation support for Obj-C @encode expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
fc0f021b492cf28ee7b3a6bd4445ae569e6f15de 07-Jun-2009 Anders Carlsson <andersca@mac.com> Template instantiation support for Obj-C @encode expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
79488fc6abfbe7dba27b9bd924048904840d3cc0 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Remove a few more vector builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73022 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
8fff25719eb9363ac197ac4b375699a9afe9d36d 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Remove a few more vector builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73022 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
8faaf944d56cb82000a7378eae1fc4d466f35207 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Now that LLVM CodeGen can handle the generic variations a bit better,
get rid of a few more clang vector builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
e0ae8bdadc4fef56db7f0e3336d0379a89eb462f 07-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Now that LLVM CodeGen can handle the generic variations a bit better,
get rid of a few more clang vector builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
cac5494abf318f05bbf2355df0f7eff0ff999341 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of a bunch of dead builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
a311be7ddb3f6d732fce2ea09c8ffbeabaa94984 06-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Get rid of a bunch of dead builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
d2e57d9154d55251a4e94439dcdc96ab74f882ae 06-Jun-2009 Anders Carlsson <andersca@mac.com> Make ParmVarDecl::getDefaultArg() more robust, it now asserts that the argument is not unparsed. Add a new hasDefaultArg() and use it in places where getDefaultArg() was called when the argument was unparsed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ae0b4e7be78cf0dc2a6a333e865c2be9265774f9 06-Jun-2009 Anders Carlsson <andersca@mac.com> Make ParmVarDecl::getDefaultArg() more robust, it now asserts that the argument is not unparsed. Add a new hasDefaultArg() and use it in places where getDefaultArg() was called when the argument was unparsed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
62c2cca67194cb05e2c66a6637cb21e433726f1c 06-Jun-2009 Devang Patel <dpatel@apple.com> Set function Attribute::NoImplicitFloat appropriately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72961 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
acebb397fa5d63835a0de9cee144987057ec1333 06-Jun-2009 Devang Patel <dpatel@apple.com> Set function Attribute::NoImplicitFloat appropriately.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72961 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
074cf971ecca9fb93427f5e2b044858570bdd9ba 05-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Use of DeclContext for objc's ivars. No functionality
change. More to follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
496b5a894c5ec5425de53909f5aac3fb4771a2ec 05-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Use of DeclContext for objc's ivars. No functionality
change. More to follow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
8f75fbcdd758570d095dde0ecbe1c42facacbac6 05-Jun-2009 Anders Carlsson <andersca@mac.com> Improvements to CXXExprWithTemporaries in preparation for fixing a bug with default arguments that have temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
99ba36de0d5b34624e74e77bffa73929617976cb 05-Jun-2009 Anders Carlsson <andersca@mac.com> Improvements to CXXExprWithTemporaries in preparation for fixing a bug with default arguments that have temporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
17e7b22caa9f6688c9ba2622ed02dfe7efda5644 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR3443: Add stpcpy builtin (plus a few other related builtins). Yes,
we're still missing a mechanism to disable these in strict mode, but
that's not a new issue.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
c292b22a64682050b2b16fced68dd3784f3e4fb9 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR3443: Add stpcpy builtin (plus a few other related builtins). Yes,
we're still missing a mechanism to disable these in strict mode, but
that's not a new issue.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
c395f022aa8dd748f3c82a1cbdddddbf41de0949 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add driver support for -fsigned-char/-funsigned-char.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72930 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
5a77973d9bc2c9cdbdb7860dcf3ac795abe258ec 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add driver support for -fsigned-char/-funsigned-char.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72930 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d9389beef9a889d95ea8417cc44db22e30ad9523 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Move CharIsSigned from TargetInfo to LangOptions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
asic/TargetInfo.h
15b91764d08e886391c865c4a444d7b51141c284 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Move CharIsSigned from TargetInfo to LangOptions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
asic/TargetInfo.h
f28d669407012f5e9914a7297d014ca2f423a472 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add a couple of FreeBSD-specific command-line options.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72927 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
145c6090752187228340edc9a2bec8f6b74841cf 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add a couple of FreeBSD-specific command-line options.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72927 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
590b5683fd7f7f5dbcaf5efd2178e5bc5bf2efed 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Address review comments for #pragma weak.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72926 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
dec7c76981a4624b6f40f2bf2375b174d1e90039 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Address review comments for #pragma weak.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72926 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
558a3a34d4a317592ea7ec74dafb7e15debe64ad 05-Jun-2009 Anders Carlsson <andersca@mac.com> Make TemplateArgumentListBuilder take an ASTContext (because we're probably going to need it later). Move push_back to the .cpp file. If the passed in template argument is a type, assert that it's canonical.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9ba41645892da0000fe8a7832b80208f44dafeda 05-Jun-2009 Anders Carlsson <andersca@mac.com> Make TemplateArgumentListBuilder take an ASTContext (because we're probably going to need it later). Move push_back to the .cpp file. If the passed in template argument is a type, assert that it's canonical.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
0233eb600f22b2023000778205f3ae1dfa3f5292 05-Jun-2009 Anders Carlsson <andersca@mac.com> Make the TemplateArgumentList take a TemplateArgumentListBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72917 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
e9c904b082ac3299831704a69066b86ab0f78bec 05-Jun-2009 Anders Carlsson <andersca@mac.com> Make the TemplateArgumentList take a TemplateArgumentListBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72917 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
6e9d02f2456d21fb4e377d781d3d81dffe5fb30c 05-Jun-2009 Anders Carlsson <andersca@mac.com> Change the specialization decls to take a TemplateArgumentListBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
91fdf6f576b91f023c3bebb0d3786aab555cb3c5 05-Jun-2009 Anders Carlsson <andersca@mac.com> Change the specialization decls to take a TemplateArgumentListBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
a35faf97e36ffb4974f3f5f3ee6182fbbd9172c7 05-Jun-2009 Anders Carlsson <andersca@mac.com> Add a helper class for building template argument lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72915 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
1c5976e5e933c0d74f7e04e8f907a93f5edbfec1 05-Jun-2009 Anders Carlsson <andersca@mac.com> Add a helper class for building template argument lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72915 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
9758c0b0cc4683cd03e008f2a1469ee9b4c52076 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Start of a Sema implementation for #pragma weak. This isn't really the
right approach, but I'm still not sure what the best way to go about this is.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c49f19b6d39c5de71755a4be7c41f835c3e132f8 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Start of a Sema implementation for #pragma weak. This isn't really the
right approach, but I'm still not sure what the best way to go about this is.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ab9f71a3121ae99e85e09a34a8a35824d0ba0694 05-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Several improvements to template argument deduction:
- Once we have deduced template arguments for a class template partial
specialization, we use exactly those template arguments for instantiating
the definition of the class template partial specialization.
- Added template argument deduction for non-type template parameters.
- Added template argument deduction for dependently-sized array types.

With these changes, we can now implement, e.g., the remove_reference
type trait. Also, Daniel's Ackermann template metaprogram now compiles
properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
199d99192fbcca9f043596c40ead4afab4999dba 05-Jun-2009 Douglas Gregor <dgregor@apple.com> Several improvements to template argument deduction:
- Once we have deduced template arguments for a class template partial
specialization, we use exactly those template arguments for instantiating
the definition of the class template partial specialization.
- Added template argument deduction for non-type template parameters.
- Added template argument deduction for dependently-sized array types.

With these changes, we can now implement, e.g., the remove_reference
type trait. Also, Daniel's Ackermann template metaprogram now compiles
properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
7e8364db0fc9083f8e95d21ed1070aece054a37d 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add parser support for #pragma weak.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
9991479ad5dde617168cc1e4b18425cdbbfd9fa9 05-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add parser support for #pragma weak.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72907 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
a3707f1acc6077cd574ff75fed8bfb772f72dd52 05-Jun-2009 Devang Patel <dpatel@apple.com> Set function attribute llvm::Attribute::NoRedZone appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72902 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
24095dad88dd9d48aa16afa6416417073af251b5 05-Jun-2009 Devang Patel <dpatel@apple.com> Set function attribute llvm::Attribute::NoRedZone appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72902 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
69d7d6fc461240866c4c6882a44123cc69cb5f7f 04-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Clean up builtin lists, add a few new builtins. (I re-sorted the
string.h builtins to be in the same order as the list in the C99
standard.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
0b308ad34ffb29e508b681b155696f8f999532bb 04-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Clean up builtin lists, add a few new builtins. (I re-sorted the
string.h builtins to be in the same order as the list in the C99
standard.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
cca1e501443ff060a8a30949de27c281e3dd115e 04-Jun-2009 Edwin Török <edwintorok@gmail.com> forward -fno-color-diagnostics to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72856 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
a46c71abb1dc2f9758ad1abe3378534fe138e802 04-Jun-2009 Torok Edwin <edwintorok@gmail.com> forward -fno-color-diagnostics to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72856 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
eff3712dc7206a3819b1f01a27d4834ae13977f3 04-Jun-2009 Edwin Török <edwintorok@gmail.com> Add ANSI color support for clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72855 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
603fca728136f0e5d258a84e7bd4a0e1e9bd0803 04-Jun-2009 Torok Edwin <edwintorok@gmail.com> Add ANSI color support for clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72855 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
b290be02fc9148b81c17b27df39d34b7cb8ab674 04-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Cleanup/Refactoring of ivar collection. No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8e6ac1d80055fa37b9b84029c7e751624ba7f84c 04-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> Cleanup/Refactoring of ivar collection. No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bf23a8a69def861809aaa2e0adb35be3920cacea 04-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> When performing template argument deduction, ensure that multiple
deductions of the same template parameter are equivalent. This allows
us to implement the is_same type trait (!).

Also, move template argument deduction into its own file and update a
few build systems with this change (grrrr).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72819 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
0b9247f129401b4849682b2e2bcdea8fc977068a 04-Jun-2009 Douglas Gregor <dgregor@apple.com> When performing template argument deduction, ensure that multiple
deductions of the same template parameter are equivalent. This allows
us to implement the is_same type trait (!).

Also, move template argument deduction into its own file and update a
few build systems with this change (grrrr).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72819 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
32690c128823c16dfd655c4e5cb3409b7e4c2588 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4308: Fix support for -m32/-m64 on Linux.

I'll look into cleaning this up a bit as a followup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72794 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
4e2567d6b1d9d046ca98aa3ab6a6b06ea5ea398b 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4308: Fix support for -m32/-m64 on Linux.

I'll look into cleaning this up a bit as a followup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72794 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
a67ac1e5d9f51606b13c5ce7f0052cd33b8fd056 03-Jun-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -mllvm; this just forwards options to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72780 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
e5280286573d4fe1220cdd66e147b572a05536a8 03-Jun-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -mllvm; this just forwards options to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72780 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
ae671cfac12c6f9b25dc0204f60fa0984e789d30 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanup for implicit int warnings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72770 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fcff57751247d534159e0b51177cad5cc3e18ae7 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanup for implicit int warnings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72770 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
09e747eb70fc16be89d0164a184c86d32d7449cc 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Fix up a bunch of warnings to use ExtWarn so they interact with
-pedantic-errors correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72769 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ecdb389dd38d4ae5012417464a42873ce280ba59 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Fix up a bunch of warnings to use ExtWarn so they interact with
-pedantic-errors correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72769 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a1485482fd58ac038352cfde57d5114636e0854b 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add support for -Wempty-body.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
262856434289fcd159e95721ac6eed810bc9f79a 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add support for -Wempty-body.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
1afe09b9b5ba10f250b0ba734a992518f8f9bdfb 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4290: Handle vfprintf in a way that doesn't give any diagnostics for
valid declarations and doesn't give an error for autoconf-style invalid
redeclarations. This isn't quite ideal, but I don't see any other way
easy way to handle it. (The only thing I can think of that's reasonably
general is adding a new builtin type FILETy which is only compatible
with a type equivalent to FILE, and that seems like overkill.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
c4db24a96d062b2d3fb1f46c28a75ed728b00030 03-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4290: Handle vfprintf in a way that doesn't give any diagnostics for
valid declarations and doesn't give an error for autoconf-style invalid
redeclarations. This isn't quite ideal, but I don't see any other way
easy way to handle it. (The only thing I can think of that's reasonably
general is adding a new builtin type FILETy which is only compatible
with a type equivalent to FILE, and that seems like overkill.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
d27b66b72540a65f89a15328b7112f79242439a2 03-Jun-2009 Daniel Dunbar <daniel@zuster.org> Add clang-cc support for -disable-llvm-optzns.
- Avoids running any LLVM optimizations, even at -O2, etc., while still keeping
any language changes these optimizations imply.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72742 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
877db3852e29c5b5a2dc25b3fe4a3b78619aa904 03-Jun-2009 Daniel Dunbar <daniel@zuster.org> Add clang-cc support for -disable-llvm-optzns.
- Avoids running any LLVM optimizations, even at -O2, etc., while still keeping
any language changes these optimizations imply.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72742 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
97d7a93bcfda52995a5f94ebd6dcbea570c54685 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Missing file for __builtin_unwind_init support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72728 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
05b65ef3fbcc4b82e9a6527d92efc5f9fbdfa916 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Missing file for __builtin_unwind_init support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72728 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
6a3cb5fc4e59f0e8e2e69891a4f29e9babe0499d 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add builtin declarations for the variants of sin and cos.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
0efa68487696d3cd8ae2f8207e4bfb5995d44951 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add builtin declarations for the variants of sin and cos.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
44ce6156bff4236d7f276b172199a17ccedfe932 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add --shared option.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72716 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
ddd1fb674eb54711d2504fe6c7fb9e3d10acff6a 02-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Add --shared option.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72716 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
0ceca87a412419986679c121168150d1956fd9bd 01-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> A corner case of objc2 gc's write-barrier generation
for the Next runtime.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
102e390bcb5a1fb1a8fdbc8505e6dfd905374bbd 01-Jun-2009 Fariborz Jahanian <fjahanian@apple.com> A corner case of objc2 gc's write-barrier generation
for the Next runtime.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ac5e9f9de0959d5b1d390dc9bdad2d6f3d77c5cb 01-Jun-2009 Anders Carlsson <andersca@mac.com> Fix a bug in hasEmptyExceptionSpec. (Thanks Sebastian for noticing).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a12823f6c0ec9e0e644a9d0ee153e973f49c63fc 01-Jun-2009 Anders Carlsson <andersca@mac.com> Fix a bug in hasEmptyExceptionSpec. (Thanks Sebastian for noticing).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
54c024ed0e052b08cf9cdbb2670744c4c4351cd5 01-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4283: Don't truncate multibyte character constants in the
preprocessor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72686 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
2a1c363f38e59a5044fc349aa7e538a50954c244 01-Jun-2009 Eli Friedman <eli.friedman@gmail.com> PR4283: Don't truncate multibyte character constants in the
preprocessor.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72686 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
11269048f03d91e991150c429dc874ae3999acb0 31-May-2009 Anders Carlsson <andersca@mac.com> Improve irgen of 'new' further.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72677 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d3fd6bad1249d3f34d71b73e2333fab0db51cce4 31-May-2009 Anders Carlsson <andersca@mac.com> Improve irgen of 'new' further.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72677 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
449e7c1de1694b79e5539bda8827edc66efffd5e 31-May-2009 Chris Lattner <sabre@nondot.org> Downgrade an error about "return in a no-return function" from being
an error to being a warning that defaults to error. If you want this to
be a warning, you have to explicitly pass -Winvalid-noreturn to clang to
map it back to a warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8662587fa75d3fb04f873e265841c9314c7f5523 31-May-2009 Chris Lattner <sabre@nondot.org> Downgrade an error about "return in a no-return function" from being
an error to being a warning that defaults to error. If you want this to
be a warning, you have to explicitly pass -Winvalid-noreturn to clang to
map it back to a warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9fbe9bfcc4bbc42f45936d4dc1dd2e60bb4e12bc 31-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Disallow exception specs on typedefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
3cc9726a493d90bd8faf094986a59352fd3461cb 31-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Disallow exception specs on typedefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
58944acac481a17adc174389c1124892cbdfd979 31-May-2009 Douglas Gregor <doug.gregor@gmail.com> Initial infrastructure for class template partial specialization. Here
we have the basics of declaring and storing class template partial
specializations, matching class template partial specializations at
instantiation time via (limited) template argument deduction, and
using the class template partial specialization's pattern for
instantiation.

This patch is enough to make a simple is_pointer type trait work, but
not much else.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72662 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
c8ab2563ac8f7dcc4fdc518b5cc7015ecbb2f003 31-May-2009 Douglas Gregor <dgregor@apple.com> Initial infrastructure for class template partial specialization. Here
we have the basics of declaring and storing class template partial
specializations, matching class template partial specializations at
instantiation time via (limited) template argument deduction, and
using the class template partial specialization's pattern for
instantiation.

This patch is enough to make a simple is_pointer type trait work, but
not much else.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72662 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.td
9da59ae5fe60ad4b75251a8ca75c660826a24d23 31-May-2009 Anders Carlsson <andersca@mac.com> Add more getters to the new AST nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f0721fe438d7e40c168e5d664970e7830bc138fb 31-May-2009 Anders Carlsson <andersca@mac.com> Add more getters to the new AST nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
cb8e0c060390e2a97c736aab525eb1127b7d0176 31-May-2009 Anders Carlsson <andersca@mac.com> Clean up the newly added C++ AST nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
88eaf075c56672761b72cc50957db4a35bf24ebd 31-May-2009 Anders Carlsson <andersca@mac.com> Clean up the newly added C++ AST nodes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
1d768747ea6bfb2024a247821769c39362484d93 30-May-2009 Anders Carlsson <andersca@mac.com> ActOnReturnStmt should also take a FullExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72641 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a0ab25d2808fe77ffff54f25a015893791dfd4b6 30-May-2009 Anders Carlsson <andersca@mac.com> ActOnReturnStmt should also take a FullExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72641 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f9f05b833a9778ec1405b6c8c79ae9a2e2de65b0 30-May-2009 Anders Carlsson <andersca@mac.com> AddInitializerToDecl needs to take a full expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72640 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f5dcd3885865c931fdbd16f36237af70743d53c6 30-May-2009 Anders Carlsson <andersca@mac.com> AddInitializerToDecl needs to take a full expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72640 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
5b839c8c9a2867a96fda009b1bcbadbf99034047 30-May-2009 Anders Carlsson <andersca@mac.com> Get rid of CXXTempVarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
1c02101999a576790b433ac4b5195e7ac4197347 30-May-2009 Anders Carlsson <andersca@mac.com> Get rid of CXXTempVarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72637 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
5552c80bf4f02f764bb9d8708bbc686845bf9bb4 30-May-2009 Anders Carlsson <andersca@mac.com> Stop using CXXTempVarDecl and use CXXTemporary instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ff6b3d64c9f07155f1414411b8451d7bf8937c62 30-May-2009 Anders Carlsson <andersca@mac.com> Stop using CXXTempVarDecl and use CXXTemporary instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
7b7b25588fbcda3306d9725d863daed4f54699c2 30-May-2009 Anders Carlsson <andersca@mac.com> Remove VarDecl from CXXConstructExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
8e587a15da6d3457a418239d5eb4146fcbd209f3 30-May-2009 Anders Carlsson <andersca@mac.com> Remove VarDecl from CXXConstructExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72633 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
432ba3cd4f8c581555d10660de2f276c6ce58ce3 30-May-2009 Anders Carlsson <andersca@mac.com> Small fixes to CXXTemporary and CXXBindTemporaryExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
b859f35459ae3e1188d1e1b86df08d649695fd86 30-May-2009 Anders Carlsson <andersca@mac.com> Small fixes to CXXTemporary and CXXBindTemporaryExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
873176e53a2e499bfea5568f3a31556d38130b21 30-May-2009 Anders Carlsson <andersca@mac.com> Add a CXXBindTemporaryExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
fceb0a8adba9d25db99a4d73e9655c2831a96ecd 30-May-2009 Anders Carlsson <andersca@mac.com> Add a CXXBindTemporaryExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
29f365d254741434c8e9fa9855e4ae8f8985554a 30-May-2009 Anders Carlsson <andersca@mac.com> Add a CXXTemporary class. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72626 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
c1ce477119fed070299668aab24084b17ff5f14b 30-May-2009 Anders Carlsson <andersca@mac.com> Add a CXXTemporary class. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72626 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
8d8ddcab753252ea999c37c2b585399bb8a7dfed 30-May-2009 Douglas Gregor <doug.gregor@gmail.com> Pretty printing and improved representation for namespace alias declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6c9c94053132e5ca0655124b70f1c386a332e71d 30-May-2009 Douglas Gregor <dgregor@apple.com> Pretty printing and improved representation for namespace alias declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
1d27d691cda32d632aea9b83f6a57d4caf6ba60b 30-May-2009 Douglas Gregor <doug.gregor@gmail.com> Printing for using directives, e.g.,

using namespace std::debug;

Extended UsingDirectiveDecl to store the nested-name-specifier that
precedes the nominated namespace.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
8419fa3af97208eb00f0cd6c62354ce4ff986677 30-May-2009 Douglas Gregor <dgregor@apple.com> Printing for using directives, e.g.,

using namespace std::debug;

Extended UsingDirectiveDecl to store the nested-name-specifier that
precedes the nominated namespace.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
4bdae72abaf70019a9acddcb106d56fd33e813b9 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a Stmt::printPretty overload which takes an ASTContext; start
transitioning callers over to pass one in.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
48d14a222276fad5279e994d1a062f36ae6fcbce 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Add a Stmt::printPretty overload which takes an ASTContext; start
transitioning callers over to pass one in.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d73364a1cba83527465133c5575dec4ac8ece3c4 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Expose an API to print a group of decls (like "int a,b;").
Make StmtPrinter use DeclPrinter to print all declarations. Merge
declarations in the limited case of an unnamed TagDecl followed by one
or more declarations using that TagDecl directly. Change
SuppressTypeSpecifiers to the more general SuppressSpecifiers, and
use it to suppress stuff like "typedef" and "extern". Replace
OwnedTag with SuppressTag, since it's more convenient to print
declarations from DeclPrinter at the moment.
improvements to declaration printing. Fix pretty-printing for K&R
function definitions and __builtin_va_arg.

We're now to the point where the pretty-printing output for non-trivial
programs can actually be piped back into clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72608 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/PrettyPrinter.h
42f42c0dd5cf71fbfc6fa282d03079a902f6e342 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Expose an API to print a group of decls (like "int a,b;").
Make StmtPrinter use DeclPrinter to print all declarations. Merge
declarations in the limited case of an unnamed TagDecl followed by one
or more declarations using that TagDecl directly. Change
SuppressTypeSpecifiers to the more general SuppressSpecifiers, and
use it to suppress stuff like "typedef" and "extern". Replace
OwnedTag with SuppressTag, since it's more convenient to print
declarations from DeclPrinter at the moment.
improvements to declaration printing. Fix pretty-printing for K&R
function definitions and __builtin_va_arg.

We're now to the point where the pretty-printing output for non-trivial
programs can actually be piped back into clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72608 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/PrettyPrinter.h
84bca951282f362c439cc7993fcb4d145384e416 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Add support for PrintingPolicy::SuppressTypeSpecifiers to type printing.
(I have a work-in-progress patch which uses this.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
22b61e937dcd8ba2e14764c367f975a392ec7da0 30-May-2009 Eli Friedman <eli.friedman@gmail.com> Add support for PrintingPolicy::SuppressTypeSpecifiers to type printing.
(I have a work-in-progress patch which uses this.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
996677cffa764e70e85f289a2edd88aa48b57c2d 30-May-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor and clean up the AST printer, so that it uses a DeclVisitor,
walks through DeclContexts properly, and prints more of the
information available in the AST. The functionality is still available
via -ast-print, -ast-dump, etc., and also via the new member functions
Decl::dump() and Decl::print().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/PrettyPrinter.h
rontend/ASTConsumers.h
4fe0c8e9c76b96e7aff21696a40dacc09d0237bc 30-May-2009 Douglas Gregor <dgregor@apple.com> Refactor and clean up the AST printer, so that it uses a DeclVisitor,
walks through DeclContexts properly, and prints more of the
information available in the AST. The functionality is still available
via -ast-print, -ast-dump, etc., and also via the new member functions
Decl::dump() and Decl::print().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/PrettyPrinter.h
rontend/ASTConsumers.h
d3f6b1658df4f89167a2a6848c3a80c198d67844 29-May-2009 Anders Carlsson <andersca@mac.com> Add code for emitting C++ destructors. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7267c1693abe7875b0c57268be05005ae013c6c9 29-May-2009 Anders Carlsson <andersca@mac.com> Add code for emitting C++ destructors. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
3bf3bbcb3cf79cc5bc065a011f5ae195667d3a29 29-May-2009 Douglas Gregor <doug.gregor@gmail.com> Create a new PrintingPolicy class, which we pass down through the AST
printing logic to help customize the output. For now, we use this
rather than a special flag to suppress the "struct" when printing
"struct X" and to print the Boolean type as "bool" in C++ but "_Bool"
in C.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/NestedNameSpecifier.h
ST/PrettyPrinter.h
ST/Stmt.h
ST/TemplateName.h
ST/Type.h
d249e1d1f1498b81314459ceda19d6ff25c278ad 29-May-2009 Douglas Gregor <dgregor@apple.com> Create a new PrintingPolicy class, which we pass down through the AST
printing logic to help customize the output. For now, we use this
rather than a special flag to suppress the "struct" when printing
"struct X" and to print the Boolean type as "bool" in C++ but "_Bool"
in C.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/NestedNameSpecifier.h
ST/PrettyPrinter.h
ST/Stmt.h
ST/TemplateName.h
ST/Type.h
aaacda9e0df28383bf78db72e2a5831cbdd23a08 29-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Reject incomplete types in exception specs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
arse/Parser.h
ef65f06e8e440aec541442cfd73a8a836e9bc842 29-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Reject incomplete types in exception specs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/DeclSpec.h
arse/Parser.h
dfc009f08085c2daa8f74214c966a74950db5d26 29-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Disallow exception specifications on multi-level indirections.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6a7330c20cabf1cf1cd46f5dfc183ec3a72add66 29-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Disallow exception specifications on multi-level indirections.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4d57af2198b8cfe9505c43266383419c1303ecfd 29-May-2009 Eli Friedman <eli.friedman@gmail.com> If a declarator group declares a type, make sure to add that declaration
to the DeclGroup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72559 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c1dc653b08226c1d8e1732f9d8b03b82869900bc 29-May-2009 Eli Friedman <eli.friedman@gmail.com> If a declarator group declares a type, make sure to add that declaration
to the DeclGroup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72559 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
71f06033638805d6179308b7d574241500d5056f 29-May-2009 Douglas Gregor <doug.gregor@gmail.com> When we parse a tag specifier, keep track of whether that tag
specifier resulted in the creation of a new TagDecl node, which
happens either when the tag specifier was a definition or when the tag
specifier was the first declaration of that tag type. This information
has several uses, the first of which is implemented in this commit:

1) In C++, one is not allowed to define tag types within a type
specifier (e.g., static_cast<struct S { int x; } *>(0) is
ill-formed) or within the result or parameter types of a
function. We now diagnose this.

2) We can extend DeclGroups to contain information about any tags
that are declared/defined within the declaration specifiers of a
variable, e.g.,

struct Point { int x, y, z; } p;

This will help improve AST printing and template instantiation,
among other things.

3) For C99, we can keep track of whether a tag type is defined
within the type of a parameter, to properly cope with cases like,
e.g.,

int bar(struct T2 { int x; } y) {
struct T2 z;
}

We can also do similar things wherever there is a type specifier,
e.g., to keep track of where the definition of S occurs in this
legal C99 code:

(struct S { int x, y; } *)0





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/DeclSpec.h
402abb55fc2e0cdda5fb1ac90009b1f5f6774906 29-May-2009 Douglas Gregor <dgregor@apple.com> When we parse a tag specifier, keep track of whether that tag
specifier resulted in the creation of a new TagDecl node, which
happens either when the tag specifier was a definition or when the tag
specifier was the first declaration of that tag type. This information
has several uses, the first of which is implemented in this commit:

1) In C++, one is not allowed to define tag types within a type
specifier (e.g., static_cast<struct S { int x; } *>(0) is
ill-formed) or within the result or parameter types of a
function. We now diagnose this.

2) We can extend DeclGroups to contain information about any tags
that are declared/defined within the declaration specifiers of a
variable, e.g.,

struct Point { int x, y, z; } p;

This will help improve AST printing and template instantiation,
among other things.

3) For C99, we can keep track of whether a tag type is defined
within the type of a parameter, to properly cope with cases like,
e.g.,

int bar(struct T2 { int x; } y) {
struct T2 z;
}

We can also do similar things wherever there is a type specifier,
e.g., to keep track of where the definition of S occurs in this
legal C99 code:

(struct S { int x, y; } *)0





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/DeclSpec.h
1a6b88e99f3c83f9404cccef65fb38230799a747 28-May-2009 Douglas Gregor <doug.gregor@gmail.com> Introduced DeclContext::isDependentContext, which determines whether a
given DeclContext is dependent on type parameters. Use this to
properly determine whether a TagDecl is dependent; previously, we were
missing the case where the TagDecl is a local class of a member
function of a class template (phew!).

Also, make sure that, when we instantiate declarations within a member
function of a class template (or a function template, eventually),
that we add those declarations to the "instantiated locals" map so
that they can be found when instantiating declaration references.

Unfortunately, I was not able to write a useful test for this change,
although the assert() that fires when uncommenting the FIXME'd line in
test/SemaTemplate/instantiate-declref.cpp tells the "experienced user"
that we're now doing the right thing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
bc221637f5ed3538b8495dd13b831c11e821c712 28-May-2009 Douglas Gregor <dgregor@apple.com> Introduced DeclContext::isDependentContext, which determines whether a
given DeclContext is dependent on type parameters. Use this to
properly determine whether a TagDecl is dependent; previously, we were
missing the case where the TagDecl is a local class of a member
function of a class template (phew!).

Also, make sure that, when we instantiate declarations within a member
function of a class template (or a function template, eventually),
that we add those declarations to the "instantiated locals" map so
that they can be found when instantiating declaration references.

Unfortunately, I was not able to write a useful test for this change,
although the assert() that fires when uncommenting the FIXME'd line in
test/SemaTemplate/instantiate-declref.cpp tells the "experienced user"
that we're now doing the right thing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
a376cbd55366711bb9dd98b730b3d0f8c80fb2ba 28-May-2009 Douglas Gregor <doug.gregor@gmail.com> Reimplement much of the way that we track nested classes in the
parser. Rather than placing all of the delayed member function
declarations and inline definitions into a single bucket corresponding
to the top-level class, we instead mirror the nesting structure of the
nested classes and place the delayed member functions into their
appropriate place. Then, when we actually parse the delayed member
function declarations, set up the scope stack the same way as it was
when we originally saw the declaration, so that we can find, e.g.,
template parameters that are in scope.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72502 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
6569d68745c8213709740337d2be52b031384f58 28-May-2009 Douglas Gregor <dgregor@apple.com> Reimplement much of the way that we track nested classes in the
parser. Rather than placing all of the delayed member function
declarations and inline definitions into a single bucket corresponding
to the top-level class, we instead mirror the nesting structure of the
nested classes and place the delayed member functions into their
appropriate place. Then, when we actually parse the delayed member
function declarations, set up the scope stack the same way as it was
when we originally saw the declaration, so that we can find, e.g.,
template parameters that are in scope.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72502 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
2118b9e0dc68c262cd61cb23917de368a01eaacb 28-May-2009 Eli Friedman <eli.friedman@gmail.com> restrict is not a keyword in gnu89 mode. Change TokenKinds.def to
reflect that.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
2073fd555f714e9632d70e9c5a88d140930aeadb 28-May-2009 Eli Friedman <eli.friedman@gmail.com> restrict is not a keyword in gnu89 mode. Change TokenKinds.def to
reflect that.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
2767d88f088ce07f489e6a64592950f9c0a91ebd 28-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Reintroduce the home for exception specs, and make Sema fill it. However, keep the spec out of the canonical type this time. Net effect is currently nothing, because the spec isn't checked anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
465226e23a3008bd68973513dda1f9e3cd27dbdd 28-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Reintroduce the home for exception specs, and make Sema fill it. However, keep the spec out of the canonical type this time. Net effect is currently nothing, because the spec isn't checked anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c4cce788eda845e01907c60e31f7d73ffbed4521 27-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add a big test case for I-C-Es in C++, and a fix to make it work. The fix might not be the right way to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72490 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
1590d9c0fec4c710c2962e4bb71f76979b5163d3 27-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add a big test case for I-C-Es in C++, and a fix to make it work. The fix might not be the right way to do it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72490 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
8d71743661227dd7a938d217ae28c55f2b7c1abf 27-May-2009 Douglas Gregor <doug.gregor@gmail.com> Enumeration declarations that were instantiated from an enumeration
within a template now have a link back to the enumeration from which
they were instantiated. This means that we can now find the
instantiation of an anonymous enumeration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8dbc3c64965f99e48830885835b7d2fc26ec3cf5 27-May-2009 Douglas Gregor <dgregor@apple.com> Enumeration declarations that were instantiated from an enumeration
within a template now have a link back to the enumeration from which
they were instantiated. This means that we can now find the
instantiation of an anonymous enumeration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f3345920d34981ccd9e5f496d61252edbf02360e 27-May-2009 Fariborz Jahanian <fjahanian@apple.com> Initialize ObjCSenderDispatch in LangOptions.
Patch by Benjamin Kramer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
355bf958ad2d988d046e16b9bb66647ad01c91fe 27-May-2009 Fariborz Jahanian <fjahanian@apple.com> Initialize ObjCSenderDispatch in LangOptions.
Patch by Benjamin Kramer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
83418529244038b34ae9990b4cf6ac0a92f8c741 27-May-2009 Steve Naroff <snaroff@apple.com> Convert ObjC qualified type clients over to using iterators.

This allows me to remove some API that I don't want to carry over to ObjCObjectPointerType.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
446ee4eb4fc4c705a59365252df7a5c253daafa1 27-May-2009 Steve Naroff <snaroff@apple.com> Convert ObjC qualified type clients over to using iterators.

This allows me to remove some API that I don't want to carry over to ObjCObjectPointerType.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4833ff0f4a21577e2b4d2c870adab24e5199ef7a 26-May-2009 Douglas Gregor <doug.gregor@gmail.com> When evaluating a VarDecl as a constant or determining whether it is
an integral constant expression, maintain a cache of the value and the
is-an-ICE flag within the VarDecl itself. This eliminates
exponential-time behavior of the Fibonacci template metaprogram.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72428 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
78d1583d0b36b7d6d8d10234cdc19ab94adf765a 26-May-2009 Douglas Gregor <dgregor@apple.com> When evaluating a VarDecl as a constant or determining whether it is
an integral constant expression, maintain a cache of the value and the
is-an-ICE flag within the VarDecl itself. This eliminates
exponential-time behavior of the Fibonacci template metaprogram.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72428 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8cac4352ef388e935be9735fc3b1d75acf8e7d11 26-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4140: Add the start of a Linux toolchain (basically, just
barely enough to get the given usage of -print-file-name working).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72412 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
6b3454a219cee5ef36c4668961f93a5c32deab61 26-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4140: Add the start of a Linux toolchain (basically, just
barely enough to get the given usage of -print-file-name working).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72412 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
6607090cc24009592efb9bb0be861d7f5230cdc5 26-May-2009 Anders Carlsson <andersca@mac.com> Add a new CallExpr::getCallReturnType and use it in Expr::isLvalueInternal. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6dde78f744382a5627a04f984a97049e0c4b5e73 26-May-2009 Anders Carlsson <andersca@mac.com> Add a new CallExpr::getCallReturnType and use it in Expr::isLvalueInternal. No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0a4b3e5e61988bbd23a418f8c5d7aa3bda174ba0 26-May-2009 Anders Carlsson <andersca@mac.com> Remove a bunch of unused constructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/StmtObjC.h
e9263729b701cb02201907c6942cada72d5eefbf 26-May-2009 Anders Carlsson <andersca@mac.com> Remove a bunch of unused constructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/StmtObjC.h
74a53bcdbebce31e1a3ae48ebf3bf9b2db68eb9d 25-May-2009 Chris Lattner <sabre@nondot.org> reword a warning for clarity


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f76ae12b90f9a911fccc3612c2d4ba79b5a8b55 25-May-2009 Chris Lattner <sabre@nondot.org> reword a warning for clarity


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eb5a9f936f93852404fdd137dce77ab390a07dca 25-May-2009 Chris Lattner <sabre@nondot.org> default -Wnonnull to on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b68eb342c33cd7b490a89c41ce67e60b2d6058c 25-May-2009 Chris Lattner <sabre@nondot.org> default -Wnonnull to on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c2ae485f3694bd93f0df232955bdbdd51d4e7026 25-May-2009 Chris Lattner <sabre@nondot.org> move some format group options around in the file. Move NonNull group into
DiagnosticGroups.td, and add it as part of -Wformat (which gets it into -Wall).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72389 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
abbe2d7324152bb7dc6a6535507e936225f9dff4 25-May-2009 Chris Lattner <sabre@nondot.org> move some format group options around in the file. Move NonNull group into
DiagnosticGroups.td, and add it as part of -Wformat (which gets it into -Wall).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72389 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
4cb1cce4045851f6ebfbb6cb7262dee9b313698c 23-May-2009 Ted Kremenek <kremenek@apple.com> Use 'Exprs.data()' instead of 'Exprs.empty() ? NULL : ...'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
15dffd863b4d8f6f7b04b5c80566ea3531a14f41 23-May-2009 Ted Kremenek <kremenek@apple.com> Use 'Exprs.data()' instead of 'Exprs.empty() ? NULL : ...'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8b6324149527bd141346c88b87560775c1514e7b 23-May-2009 Douglas Gregor <doug.gregor@gmail.com> Fix the parent classes in TypeNodes.def, from Olaf Krzikalla

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeNodes.def
02fd8ddba96a529c5868162a13f7bb2c5e36d522 23-May-2009 Douglas Gregor <dgregor@apple.com> Fix the parent classes in TypeNodes.def, from Olaf Krzikalla

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeNodes.def
dcd7a7af67970771e691c49805c7e55e5721f5ba 23-May-2009 Ted Kremenek <kremenek@apple.com> Modify begin()/end() for AsmStmt iterators to handle the case when Exprs.empty()
is true. Because of recent changes to llvm::SmallVector, using these iterators
when Exprs was empty would cause an assertion failure.

This fixes: PR 4245.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d59a5bd0ab7821a643c540df8c84c70fef76a1c2 23-May-2009 Ted Kremenek <kremenek@apple.com> Modify begin()/end() for AsmStmt iterators to handle the case when Exprs.empty()
is true. Because of recent changes to llvm::SmallVector, using these iterators
when Exprs was empty would cause an assertion failure.

This fixes: PR 4245.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4862e875890b1e27ac474f6ee193753fdb72a776 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> Cannot type cast @selector expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b5ff6bfaf4bff6c70042600ad4070518440cec4a 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> Cannot type cast @selector expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72284 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
93b8b0f10bd443028da8d3af67874de578737171 22-May-2009 Douglas Gregor <doug.gregor@gmail.com> Representation of and template instantiation for member
expressions. This change introduces another AST node,
CXXUnresolvedMemberExpr, that captures member references (x->m, x.m)
when the base of the expression (the "x") is type-dependent, and we
therefore cannot resolve the member reference yet.

Note that our parsing of member references for C++ is still quite
poor, e.g., we don't handle x->Base::m or x->operator int.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
1c0ca59416999129d0439c2661d137ef38e86209 22-May-2009 Douglas Gregor <dgregor@apple.com> Representation of and template instantiation for member
expressions. This change introduces another AST node,
CXXUnresolvedMemberExpr, that captures member references (x->m, x.m)
when the base of the expression (the "x") is type-dependent, and we
therefore cannot resolve the member reference yet.

Note that our parsing of member references for C++ is still quite
poor, e.g., we don't handle x->Base::m or x->operator int.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72281 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
fefd5e89c5144fec7fdaff9c2c50f3237879261d 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> This patch adds support for sender-aware dispatch in Objective-C for the GNU runtime, when
compiled with -fobjc-sender-dependent-dispatch. This is used in AOP, COP, implementing object
planes, and a few other things.
Patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
34e65770ad6142b033d6cec4f476ed20fb248bf3 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> This patch adds support for sender-aware dispatch in Objective-C for the GNU runtime, when
compiled with -fobjc-sender-dependent-dispatch. This is used in AOP, COP, implementing object
planes, and a few other things.
Patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
d1cf46726227e8e32829109ff2aa3a8e00d7d5eb 22-May-2009 Daniel Dunbar <daniel@zuster.org> Don't warn about -funit-at-a-time, and reject -fno-unit-at-a-time.
- We could just warn about -fno-unit-at-a-time, but in practice people using it
probably aren't going to get what they want out of clang.

Also, use "clang" specified error for unsupported things instead of driver
unsupported error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.def
e027a4b2399e9b0acfe0f77220c66bbe369067ee 22-May-2009 Daniel Dunbar <daniel@zuster.org> Don't warn about -funit-at-a-time, and reject -fno-unit-at-a-time.
- We could just warn about -fno-unit-at-a-time, but in practice people using it
probably aren't going to get what they want out of clang.

Also, use "clang" specified error for unsupported things instead of driver
unsupported error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/Options.def
c0672e4add6bd89aee2bb032b4f91bd1aff100e2 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> (Next runtime only) check to see if class implements forwardInvocation method
and objects of this class are derived from 'NSProxy'.
Under such conditions, which means that every method possible is
implemented in the class, we should not issue "Method definition not found"
warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cd1876207f5564beba74e4b2524b664bdba0ba9f 22-May-2009 Fariborz Jahanian <fjahanian@apple.com> (Next runtime only) check to see if class implements forwardInvocation method
and objects of this class are derived from 'NSProxy'.
Under such conditions, which means that every method possible is
implemented in the class, we should not issue "Method definition not found"
warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72267 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
785299bacb3e98a508bb24e23bb0f2466d094586 22-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Handle correctly a very ugly part of the C++ syntax. We cannot disambiguate between a parenthesized type-id and
a paren expression without considering the context past the parentheses.

Behold:
(T())x; - type-id
(T())*x; - type-id
(T())/x; - expression
(T()); - expression

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72260 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f58f45e6d76792df8c643ce1c6d364dce5db4826 22-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Handle correctly a very ugly part of the C++ syntax. We cannot disambiguate between a parenthesized type-id and
a paren expression without considering the context past the parentheses.

Behold:
(T())x; - type-id
(T())*x; - type-id
(T())/x; - expression
(T()); - expression

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72260 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
70c9582bc0b6975dfb3f27cef53499195e82b463 22-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Factor the compound literal parsing out from ParseParenExpression and into a new ParseCompoundLiteralExpression.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72259 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d974a7b72eb84cdc735b189bcea56fd37e13ebf6 22-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Factor the compound literal parsing out from ParseParenExpression and into a new ParseCompoundLiteralExpression.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72259 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
32d6d1016a868a9c4eb0a64992c1b65b8a4bf23b 22-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Modification to ParseParenExpression.
Now it parses the cast expression unless 'stopIfCastExpr' is true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72258 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0350ca519405051e8d45d12ee7d09569a6a9c4c9 22-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Modification to ParseParenExpression.
Now it parses the cast expression unless 'stopIfCastExpr' is true.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72258 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d61a2f7617c1afb4b041a679f0d6790c5285a705 22-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove ParseSimpleParenExpression.
Embed its functionality into it's only user, ParseCXXCasts.
CXXCasts now get the "actual" expression directly, they no longer always receive a ParenExpr. This is better since the
parentheses are always part of the C++ casts syntax.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72257 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
21e7ad24099965acfa801e4abdd91e3d94106428 22-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove ParseSimpleParenExpression.
Embed its functionality into it's only user, ParseCXXCasts.
CXXCasts now get the "actual" expression directly, they no longer always receive a ParenExpr. This is better since the
parentheses are always part of the C++ casts syntax.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72257 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4c90fb27d4353b6971fefdd5cd008f91d9bf3e69 22-May-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Refactor the common code of 'ParseTypeofSpecifier' and 'ParseSizeofAlignofExpression' into a new
'ParseExprAfterTypeofSizeofAlignof' method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72256 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5ab0640efb436a721d408c853b771932d1a6ffce 22-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactor the common code of 'ParseTypeofSpecifier' and 'ParseSizeofAlignofExpression' into a new
'ParseExprAfterTypeofSizeofAlignof' method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72256 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
08303652626519a0d29a48a483803f0dd3f2383d 22-May-2009 Daniel Dunbar <daniel@zuster.org> (llvm up) Use llvm::Triple for storing target triples.
- This commit has some messy stuff in it to extend string lifetimes, but that
will go away once we switch to using the enum'd Triple interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72243 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
river/ToolChain.h
cb8ab23f7c800b041aeb6fc38c341d1aa0da86bf 22-May-2009 Daniel Dunbar <daniel@zuster.org> (llvm up) Use llvm::Triple for storing target triples.
- This commit has some messy stuff in it to extend string lifetimes, but that
will go away once we switch to using the enum'd Triple interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72243 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
river/ToolChain.h
f8d02dae5a4f12c8fd07ade677e111d8df089c68 22-May-2009 Daniel Dunbar <daniel@zuster.org> Add --analyzer-no-default-checks and --analyzer-output options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72238 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d8fc0f2e7751cf31cec5c2f3cc6a0b447e9debb3 22-May-2009 Daniel Dunbar <daniel@zuster.org> Add --analyzer-no-default-checks and --analyzer-output options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72238 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
3a7a06edafb1c7474a7b41ee760101e433639273 22-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for C99 designated initializers, because we
can. Also, delay semantic analysis of initialization for
value-dependent as well as type-dependent expressions, since we can't
always properly type-check a value-dependent expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72233 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9ea62768fca25d829d80199cf4f8cf0f4dd39251 22-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for C99 designated initializers, because we
can. Also, delay semantic analysis of initialization for
value-dependent as well as type-dependent expressions, since we can't
always properly type-check a value-dependent expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72233 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8987c0341afa395e09d29ae5439d2d814ca87121 21-May-2009 Douglas Gregor <doug.gregor@gmail.com> AST XML dump, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72224 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/DocumentXML.h
ee75c05c1a0218369cac26ab1c847d9a04e4db88 21-May-2009 Douglas Gregor <dgregor@apple.com> AST XML dump, from Olaf Krzikalla!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72224 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
rontend/DocumentXML.h
5440d2f8d6fd39f16510de5086a707df4e3664ab 21-May-2009 Fariborz Jahanian <fjahanian@apple.com> Check on null arguments in the presense of nonnull attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e898f8a94947c6074d76ff83943b47d5bbdf210d 21-May-2009 Fariborz Jahanian <fjahanian@apple.com> Check on null arguments in the presense of nonnull attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72219 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c378232fae7e00cd6cd43af493c219e769fc316a 21-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for C++ throw expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
42e5b50f4dc897f252e0d476063a7f9846d96624 21-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for C++ throw expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
de3011ccf5cc0b45f26024445b4facf8afcae942 21-May-2009 Douglas Gregor <doug.gregor@gmail.com> Merge the ASTVector and ASTOwningVector templates, since they offered
redundant functionality. The result (ASTOwningVector) lives in
clang/Parse/Ownership.h and is used by both the parser and semantic
analysis. No intended functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72214 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
45db71d295cfda888a6187d950bba695ce21a287 21-May-2009 Douglas Gregor <dgregor@apple.com> Merge the ASTVector and ASTOwningVector templates, since they offered
redundant functionality. The result (ASTOwningVector) lives in
clang/Parse/Ownership.h and is used by both the parser and semantic
analysis. No intended functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72214 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
9e6bef4fb5efb19c7286fa24d8aedab9c3d625fc 21-May-2009 Jay Foad <jay.foad@gmail.com> Use v.data() instead of &v[0] when SmallVector v might be empty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
beaaccd8e2a8748f77b66e2b330fb9136937e14c 21-May-2009 Jay Foad <jay.foad@gmail.com> Use v.data() instead of &v[0] when SmallVector v might be empty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
1f280197fe37c7e05c6bdb4d6c320ec7925c6d02 21-May-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new kind of RAII class, ASTOwningVector, which is an
llvm::SmallVector that owns all of the AST nodes inside of it. This
RAII class is used to ensure proper destruction of AST nodes when
template instantiation fails.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72186 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
d7e2705961bacb9df5d9119403c01c9b04aff97f 21-May-2009 Douglas Gregor <dgregor@apple.com> Introduce a new kind of RAII class, ASTOwningVector, which is an
llvm::SmallVector that owns all of the AST nodes inside of it. This
RAII class is used to ensure proper destruction of AST nodes when
template instantiation fails.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72186 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
66c3cf00b06119ec4141d1e54d5e7cd7b03a2e6f 20-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for the various kinds of AST nodes that occur
due to C++ type construction of the form T(a1, a2, ..., aN).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72183 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d94546a0a1deef7286c13e49b9584621ae81cc9a 20-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for the various kinds of AST nodes that occur
due to C++ type construction of the form T(a1, a2, ..., aN).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72183 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f27b765e5a5e06ff637e0ef35fdc1bfead9040a4 20-May-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new expression type, CXXUnresolvedConstructExpr, to
describe the construction of a value of a given type using function
syntax, e.g.,

T(a1, a2, ..., aN)

when the type or any of its arguments are type-dependent. In this
case, we don't know what kind of type-construction this will be: it
might construct a temporary of type 'T' (which might be a class or
non-class type) or might perform a conversion to type 'T'. Also,
implement printing of and template instantiation for this new
expression type. Due to the change in Sema::ActOnCXXTypeConstructExpr,
our existing tests cover template instantiation of this new expression
node.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
d81e6ca6e378c3996a139066a5c4b7fc1869630c 20-May-2009 Douglas Gregor <dgregor@apple.com> Introduce a new expression type, CXXUnresolvedConstructExpr, to
describe the construction of a value of a given type using function
syntax, e.g.,

T(a1, a2, ..., aN)

when the type or any of its arguments are type-dependent. In this
case, we don't know what kind of type-construction this will be: it
might construct a temporary of type 'T' (which might be a class or
non-class type) or might perform a conversion to type 'T'. Also,
implement printing of and template instantiation for this new
expression type. Due to the change in Sema::ActOnCXXTypeConstructExpr,
our existing tests cover template instantiation of this new expression
node.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
306d7251d0fe8749f2a6a8cb67546830be520f0c 20-May-2009 Fariborz Jahanian <fjahanian@apple.com> implementation of format_arg for ObjC methods/functions.
Still more to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
5b160927672440076aa53c31d84149f70fd8d40e 20-May-2009 Fariborz Jahanian <fjahanian@apple.com> implementation of format_arg for ObjC methods/functions.
Still more to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
c890e3373b77bd2bd0c5394e313b8a2932897a97 20-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> * API change: we need to pass GRState to GRExprEngine::EvalBinOp() because
RegionStore needs to know the type of alloca region.
* RegionStoreManager::EvalBinOp() now converts the alloca region to its first
element region, as what is done to symbolic region.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72164 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/Store.h
262fd03ee934bebfbbfaabc14744427dd2e7a231 20-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> * API change: we need to pass GRState to GRExprEngine::EvalBinOp() because
RegionStore needs to know the type of alloca region.
* RegionStoreManager::EvalBinOp() now converts the alloca region to its first
element region, as what is done to symbolic region.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72164 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/Store.h
110536d7d0a3f15ce50fb93800718d9311a42cf7 20-May-2009 Anders Carlsson <andersca@mac.com> Create a temporary if the lvalue is a bitfield. Reported by Eli.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
38d068e8f13a119b89a3b8b0f79f35cab1ffd09a 20-May-2009 Anders Carlsson <andersca@mac.com> Create a temporary if the lvalue is a bitfield. Reported by Eli.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e621150f8912706269f94b652d974107176f7ab3 20-May-2009 Douglas Gregor <doug.gregor@gmail.com> Ban the use of __builtin_types_compatible_p in C++; g++ doesn't support it,
and it isn't clear exactly what it's supposed to mean. Thanks Eli!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72142 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c12a9c5e552825c2b7d2e4352a9f70e061ebb367 20-May-2009 Douglas Gregor <dgregor@apple.com> Ban the use of __builtin_types_compatible_p in C++; g++ doesn't support it,
and it isn't clear exactly what it's supposed to mean. Thanks Eli!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72142 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d870a2c80634f4ae6373c2ddefddac04577724cf 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove finished FIXME.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72137 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
d1f22e1f73b67116393720739d3ab8116ae301bc 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove finished FIXME.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72137 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/AnalysisConsumer.h
7efefa5a73ae01e3abb862d530bc8d59f11dbb87 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Move AnalysisConsumer.h and Analyses.def from tools/clang-cc to
include/clang/Frontend, and move AnalysisConsumer.cpp from
tools/clang-cc to lib/Frontend.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72135 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/AnalysisConsumer.h
0ec78fa2c92b714de41cc87cfa79e4877ab5479e 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Move AnalysisConsumer.h and Analyses.def from tools/clang-cc to
include/clang/Frontend, and move AnalysisConsumer.cpp from
tools/clang-cc to lib/Frontend.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72135 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Analyses.def
rontend/AnalysisConsumer.h
b4245188f28d3942f42380a803755acabe4f3aec 19-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for __builtin_types_compatible_p.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dc241b42c7588f99027b035a09b71557a6db219e 19-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for __builtin_types_compatible_p.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e0513a3d92d53cd06fe37b48a31b5b86d63b8ed6 19-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for cast expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a3a7b8eea87c90a5a257f685749222b212ddaf36 19-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for cast expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
536f73dd0285c8830454234935df46c8a715e07d 19-May-2009 Fariborz Jahanian <fjahanian@apple.com> Patch finishes off application of printf attribute on blocks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d66f22d9f8423579322a6dd16587ed52b0a58834 19-May-2009 Fariborz Jahanian <fjahanian@apple.com> Patch finishes off application of printf attribute on blocks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7e1d637529268aecf06e0a5f270265b213cf1218 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Move clang-cc.h to lib/Frontend/Utils.h, and move the associated .cpp
files to lib/Frontend.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72099 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
b09f6e15c59b89d5820db8ef40598eb1d1323c1f 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Move clang-cc.h to lib/Frontend/Utils.h, and move the associated .cpp
files to lib/Frontend.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72099 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/Utils.h
532291e93b3e9b52ae9be59e34031cac29c7afb0 19-May-2009 Anders Carlsson <andersca@mac.com> Add comment about FullExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72098 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b4685713856cab28aeeb4afd640a8bbfb662a8b8 19-May-2009 Anders Carlsson <andersca@mac.com> Add comment about FullExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72098 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e1f8c0ab26edd816d905e766aefd7023ea4878cf 19-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for call expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4a2487aeacf9f35ce553318c2eb39c20ec23845e 19-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for call expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d98d887e5b8d58db5bf26444466d487f210ce25f 19-May-2009 Daniel Dunbar <daniel@zuster.org> Remove -fprintf-source-range-info from the Driver (this was renamed)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72061 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
f4e2486145b426e84175c8e34b0f200d74daa98b 19-May-2009 Daniel Dunbar <daniel@zuster.org> Remove -fprintf-source-range-info from the Driver (this was renamed)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72061 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
22a4efdff773597c4dc620f7fa2e5b720c8840af 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Move ASTConsumers.h to include/clang/Frontend, and move the associated
.cpp files to lib/Frontend. (As proposed on cfe-dev.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72060 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
39d7c4d2d980651c4263b67cf0ab61dec34cd76b 19-May-2009 Eli Friedman <eli.friedman@gmail.com> Move ASTConsumers.h to include/clang/Frontend, and move the associated
.cpp files to lib/Frontend. (As proposed on cfe-dev.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72060 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/ASTConsumers.h
4a95134918f5492e363a44868e3473299e0562ce 19-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for imaginary literals, because they were next in Expr.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72058 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d8ac436c8c10c52c937ba323db582259ceb06197 19-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for imaginary literals, because they were next in Expr.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72058 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
57420b4ca8a98a4c81b7a55338ad0b6a8d993b4e 18-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for C++ try/catch statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
d308e6201afd3a8a198c52ba034d35ed19d4bafe 18-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for C++ try/catch statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
2c82f46840555ba0ced3abaa22d526b6a2c5a2d7 18-May-2009 Anders Carlsson <andersca@mac.com> Remove an unused builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
409bf46742e2f38b2f4cec53c86b109bed42840d 18-May-2009 Anders Carlsson <andersca@mac.com> Remove an unused builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
d657fd86fc1c4de8e7ca9f2670796f3713c1c1be 18-May-2009 Anders Carlsson <andersca@mac.com> Add 'cmp' SSE builtins and get rid of a bunch of other builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72032 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
79dcf5f96ad75259867d19bbf69512f320032fce 18-May-2009 Anders Carlsson <andersca@mac.com> Add 'cmp' SSE builtins and get rid of a bunch of other builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72032 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
728451428126809d3fd1d3c60e937d61c58fd4c7 18-May-2009 Douglas Gregor <doug.gregor@gmail.com> Simplify struct/class tag mismatch warning, per Sebastian's suggestion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
52b2fe2d70d83f73ee59e9ad3d0ba8ac154acfda 18-May-2009 Douglas Gregor <dgregor@apple.com> Simplify struct/class tag mismatch warning, per Sebastian's suggestion

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b12249d254535d4b156c9dc5bfa9f0b9a0ccc548 18-May-2009 Douglas Gregor <doug.gregor@gmail.com> When instantiating the definition of a member function of a class
template, introduce that member function into the template
instantiation stack. Also, add diagnostics showing the member function
within the instantiation stack and clean up the qualified-name
printing so that we get something like:

note: in instantiation of member function 'Switch1<int, 2, 2>::f'
requested here

in the template instantiation backtrace.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f3e7ce4bd9837cdab6a096235922865f95467d3d 18-May-2009 Douglas Gregor <dgregor@apple.com> When instantiating the definition of a member function of a class
template, introduce that member function into the template
instantiation stack. Also, add diagnostics showing the member function
within the instantiation stack and clean up the qualified-name
printing so that we get something like:

note: in instantiation of member function 'Switch1<int, 2, 2>::f'
requested here

in the template instantiation backtrace.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fbc3ed48e5f4447e32e66effaf4eff546854b52a 18-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR2386: distinguish between insertion and replacements in the
delta tree.

The issue is roughly a conflict in ReplaceText between two kinds of
uses. One, it should be possible to replace a replacement: for example, the
ObjC rewriter calls ReplaceStmt for an expression, then replaces the resulting
expression with another expression. Two, it should be possible to
replace text that already has text inserted before it: for example, the
HTML rewriter inserts a bunch of tags at the beginning of the line, then
tries to escape the first character on the line. This patch
distinguishes the two cases by storing the deltas separately;
essentially, replacements and insertions no longer interfere with
each other.

Another possibility would be to add some sort of flag to ReplaceText, but
this seems a bit more intuitive and flexible.

There are a few downsides to the current solution: one is that there isn't
any way to remove/replace an insertion without touching additional
surrounding text; if such an operation turns out to be useful, an
additional method or flag can be added. Another is that an insertion
and replacing a string of length zero are distinct operations; I'm not
sure how to resolve this, or whether it will be confusing in practice.

This is relatively sensitive code, so please test and tell me if
anything breaks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72000 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
a0978c24829dfd552d38fc3bae2b86e18bb90d49 18-May-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR2386: distinguish between insertion and replacements in the
delta tree.

The issue is roughly a conflict in ReplaceText between two kinds of
uses. One, it should be possible to replace a replacement: for example, the
ObjC rewriter calls ReplaceStmt for an expression, then replaces the resulting
expression with another expression. Two, it should be possible to
replace text that already has text inserted before it: for example, the
HTML rewriter inserts a bunch of tags at the beginning of the line, then
tries to escape the first character on the line. This patch
distinguishes the two cases by storing the deltas separately;
essentially, replacements and insertions no longer interfere with
each other.

Another possibility would be to add some sort of flag to ReplaceText, but
this seems a bit more intuitive and flexible.

There are a few downsides to the current solution: one is that there isn't
any way to remove/replace an insertion without touching additional
surrounding text; if such an operation turns out to be useful, an
additional method or flag can be added. Another is that an insertion
and replacing a string of length zero are distinct operations; I'm not
sure how to resolve this, or whether it will be confusing in practice.

This is relatively sensitive code, so please test and tell me if
anything breaks.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72000 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
e5a86c263336f1aee07b3fd1f17b06c4d494a6b4 18-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove tabs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71997 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
a3306f0b9f988677bf12c3403dd0c0336cb5c246 18-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove tabs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71997 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
e934dca8a88f890a67e926c94903fe3dd46bbd54 18-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused parameter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71996 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
f086e3bef1d98d3fb6c17c8d6b62f3eedd9eb78c 18-May-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused parameter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71996 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
3ee2dae8b70bb32bd5d7caa71b1d498a650735b0 17-May-2009 Anders Carlsson <andersca@mac.com> Make ActOnWhileStmt take a FullExprArg for the condition expr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71990 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7f537c18c7029e73f0bd555be3782c066e7e2c1e 17-May-2009 Anders Carlsson <andersca@mac.com> Make ActOnWhileStmt take a FullExprArg for the condition expr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71990 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
18ca477e291542fcb9e1beb50cacf32e67498f13 17-May-2009 Anders Carlsson <andersca@mac.com> Make ActOnExprStmt take a FullExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71989 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6b1d283fe879fb11d7ce7a69feecf66e77b0eaf3 17-May-2009 Anders Carlsson <andersca@mac.com> Make ActOnExprStmt take a FullExprArg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71989 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
934d176d525bf4236770f8c474e32586f1cc78de 17-May-2009 Anders Carlsson <andersca@mac.com> Fix DISABLE_SMART_POINTERS build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71984 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
df3b2089692dae0ef00b79e9240b2ccf9b36ff94 17-May-2009 Anders Carlsson <andersca@mac.com> Fix DISABLE_SMART_POINTERS build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71984 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e4d378906a83376e6167b0428f6c082d1b4a894b 17-May-2009 Anders Carlsson <andersca@mac.com> Add the FullExprArg wrapper and use it for if statement conditions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
a99fad8ff134273fe85f2970c7d89133d1218900 17-May-2009 Anders Carlsson <andersca@mac.com> Add the FullExprArg wrapper and use it for if statement conditions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
7624471afa349dd73419a4ff5643a0e7c6664344 17-May-2009 Anders Carlsson <andersca@mac.com> Add setters/getters to CXXMethodDecl so it can keep track of which virtual member functions it overrides (if any)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
05eb24474218d70366b4d7d6b5b19dda2473a163 17-May-2009 Anders Carlsson <andersca@mac.com> Add setters/getters to CXXMethodDecl so it can keep track of which virtual member functions it overrides (if any)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
f80e261d943ecbef3036c769e492dcda0012c67d 16-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement instantiation of a few boring, simple expressions. I don't think these are testable yet, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
8b0b475b3464b0f70b91ba7d679d23c424677d5e 16-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement instantiation of a few boring, simple expressions. I don't think these are testable yet, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
5055ab95ebb0cc1271b1bb37f766eac0b479613b 16-May-2009 Eli Friedman <eli.friedman@gmail.com> Missing change for r71941 (PR2044).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c55666fb05f2e9c628911291ac12f8d006468d70 16-May-2009 Eli Friedman <eli.friedman@gmail.com> Missing change for r71941 (PR2044).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
155750e17d2489f702f22bc0250cef953b1d2913 16-May-2009 Mike Stump <mrs@apple.com> Implement a FIXME, we now pass in the locations of the braces for enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71930 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c6e35aae23bc3cea7daf5ee075fa695c01c0f66f 16-May-2009 Mike Stump <mrs@apple.com> Implement a FIXME, we now pass in the locations of the braces for enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71930 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
83df82a4b8272c846b2b24350784793b57f8f561 16-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for IndirectGotoStmt. Now my life is complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71917 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5f1b9e689fa5c101512aef99225f2afea1673449 16-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for IndirectGotoStmt. Now my life is complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71917 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
34712db615418b178dff09ba45112bc44c4e1993 16-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for switch statements


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
dbb26db1d426fb6caaaf1b4fa47b46d1947c12c9 16-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for switch statements


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
72d3c669ed7257bf3c169dabc2316d04c416a959 16-May-2009 Anders Carlsson <andersca@mac.com> Basic support for member exprs where the base expr type is dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ffce2df6ae280d354d51371282a579df1eb86876 16-May-2009 Anders Carlsson <andersca@mac.com> Basic support for member exprs where the base expr type is dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
777cc7a08e55e0b027ee4c7dd9caa6481b23b034 16-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for break and continue statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
861ce3178c70cfb0fa50baf685e1ad363538eaa9 16-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for break and continue statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
821a2a4a652b423d422fa3ea44f8d24165c38f59 16-May-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce the EXPR macro into StmtNodes.def, so that we can
distinguish between expression and statement nodes. No functionality
change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71902 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
20ecb9eec281184cfb2c7110b2f6d86fa446761f 16-May-2009 Douglas Gregor <dgregor@apple.com> Introduce the EXPR macro into StmtNodes.def, so that we can
distinguish between expression and statement nodes. No functionality
change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71902 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
1401330b1c620dd8e14af4e2c1b1589cf68dc2c3 16-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for "for" loops

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5831c6a1efc47e6a19d82fe3dd25b5b8fef6979d 16-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for "for" loops

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ef482764777252110a1095e7f5b7a300ccb26d4e 15-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for do-while statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9f3ca2a7747bd47f14d7693f333103fac29a24d2 15-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for do-while statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
cbe3be67e42644ed596a4cc4444ea0cae48b39e6 15-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for WhileStmt and CXXConditionDeclExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71896 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
4a2e2041edc63db687677325e113b39b9d123c40 15-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for WhileStmt and CXXConditionDeclExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71896 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
6dac16d54fef437e5f8adceb0ab5d89fa6029d96 15-May-2009 Fariborz Jahanian <fjahanian@apple.com> improved on diagnosing misplacement of sentinel attributes.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3bba33d6f58844d4924ab1e221dc2ff44c521624 15-May-2009 Fariborz Jahanian <fjahanian@apple.com> improved on diagnosing misplacement of sentinel attributes.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c10357dff31d7acfd4be986958629d05f91993d9 15-May-2009 Fariborz Jahanian <fjahanian@apple.com> This patch finishes off the sentinel attribute handling for
blocks and function pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71888 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
daf0415583e33d5d279197c65e9227c1ed92474b 15-May-2009 Fariborz Jahanian <fjahanian@apple.com> This patch finishes off the sentinel attribute handling for
blocks and function pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71888 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
12aed0be9db50a396a9163bea1ee466a8e2c2b5e 15-May-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that the type associated with a class template is dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
aafc0ccfcf860d921a86423c6c9a738301987abf 15-May-2009 Douglas Gregor <dgregor@apple.com> Make sure that the type associated with a class template is dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
30033494eab58aefa22eb275c00ef458b8e6a538 15-May-2009 Douglas Gregor <doug.gregor@gmail.com> Template instantiation for "if" statements. Also:

- Skip semantic analysis of the "if" condition if it is type-dependent.
- Added the location of the "else" keyword into IfStmt, so that we can
provide it for type-checking after template instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d06f6ca61062f85926eb9d409eb3d4f8afcf93c7 15-May-2009 Douglas Gregor <dgregor@apple.com> Template instantiation for "if" statements. Also:

- Skip semantic analysis of the "if" condition if it is type-dependent.
- Added the location of the "else" keyword into IfStmt, so that we can
provide it for type-checking after template instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
328b9dfb017589eae55f21859ac3e0b373dcef1d 15-May-2009 Anders Carlsson <andersca@mac.com> Add NullStmt::Clone and use it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d19cd90b266181c4a8d186adfa20ccebe73336cc 15-May-2009 Anders Carlsson <andersca@mac.com> Add NullStmt::Clone and use it

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f98556020bc7f248ac17c9804e4e5af1a636f514 15-May-2009 Anders Carlsson <andersca@mac.com> Check that the function being overridden is virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
77b7f1d4fb782c9152f91b76f9f8b1d1af21bd35 15-May-2009 Anders Carlsson <andersca@mac.com> Check that the function being overridden is virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
d9d6d50992923eeb0c0ac0a2ec2d227867d35787 14-May-2009 Anders Carlsson <andersca@mac.com> Improvements to the FunctionDecl getters/setters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a75e8534f2b7c2480c48f31f301bd00b241c5499 14-May-2009 Anders Carlsson <andersca@mac.com> Improvements to the FunctionDecl getters/setters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
260059cab5bab4960880bc9155b32618201d7994 14-May-2009 Douglas Gregor <doug.gregor@gmail.com> Link FunctionDecls instantiated from the member functions of a class
template to the FunctionDecls from which they were instantiated. This
is a necessary first step to support instantiation of the definitions
of such functions, but by itself does essentially nothing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
1eee0e753fb390b04848846e837714ec774b7bfd 14-May-2009 Douglas Gregor <dgregor@apple.com> Link FunctionDecls instantiated from the member functions of a class
template to the FunctionDecls from which they were instantiated. This
is a necessary first step to support instantiation of the definitions
of such functions, but by itself does essentially nothing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
aad078bd35fb22678e4a0c42d1fd4653c18dc3ab 14-May-2009 Anders Carlsson <andersca@mac.com> Fix a speling error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
67a1eadcf7c20cd5534645468eca458902e31add 14-May-2009 Anders Carlsson <andersca@mac.com> Fix a speling error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71791 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
157c4264aef499b146c6258bcba34b2ea88a29a3 14-May-2009 Fariborz Jahanian <fjahanian@apple.com> Adds recognition of sentinel attribute on block declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2f7c39246a968b921a6d95c7f8037fb3429e9501 14-May-2009 Fariborz Jahanian <fjahanian@apple.com> Adds recognition of sentinel attribute on block declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ee7177b01a43b5cbd7591a411729eff304a82ddc 14-May-2009 Anders Carlsson <andersca@mac.com> Better diagnostics for covariance when checking overriding return types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c3a68b25cdd687d4beb59f083fcb22afe173286f 14-May-2009 Anders Carlsson <andersca@mac.com> Better diagnostics for covariance when checking overriding return types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
09f2e3fab4800bc6ba7579e180778b8e9c452795 14-May-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose missing sentinel argument on a funciton call
with sentinel attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71778 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
236673e8fbd391cc7827efcaa64320344900d348 14-May-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose missing sentinel argument on a funciton call
with sentinel attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71778 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
625185c386e0117a1e2b19117e23f07235a006e8 14-May-2009 Douglas Gregor <doug.gregor@gmail.com> In C++, warn when something previously declared as a "struct" is later
declared as a "class", or vice-versa. This warning is under the
control of -Wmismatched-tags, which is off by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
501c5ce63c2ff54c103fbab8c1c45234d5a82a57 14-May-2009 Douglas Gregor <dgregor@apple.com> In C++, warn when something previously declared as a "struct" is later
declared as a "class", or vice-versa. This warning is under the
control of -Wmismatched-tags, which is off by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71773 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
85f0a464a4c4ab57c148ac372cf07e8beb32d274 14-May-2009 Douglas Gregor <doug.gregor@gmail.com> Add forward declaration of Token. Thanks to Martin Doucha for pointing this out

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71772 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
7633ab80454147ab4892b8de5fd16582a1f221e8 14-May-2009 Douglas Gregor <dgregor@apple.com> Add forward declaration of Token. Thanks to Martin Doucha for pointing this out

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71772 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
e80e29c17b537cadb1d9d6d306508a10379f1f79 14-May-2009 Anders Carlsson <andersca@mac.com> Add return type checking for overriding virtual functions. We currently don't check covariance but that's next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d7ba27dc562e1837703fa8696531c1f21a5fdb36 14-May-2009 Anders Carlsson <andersca@mac.com> Add return type checking for overriding virtual functions. We currently don't check covariance but that's next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
96b6df95c32cc11fdc3bae59e01d7ecb594f66e0 14-May-2009 Douglas Gregor <doug.gregor@gmail.com> Implement explicit instantiations of member classes of class templates, e.g.,

template<typename T>
struct X {
struct Inner;
};

template struct X<int>::Inner;

This change is larger than it looks because it also fixes some
a problem with nested-name-specifiers and tags. We weren't requiring
the DeclContext associated with the scope specifier of a tag to be
complete. Therefore, when looking for something like "struct
X<int>::Inner", we weren't instantiating X<int>.

This, naturally, uncovered a problem with member pointers, where we
were requiring the left-hand side of a member pointer access
expression (e.g., x->*) to be a complete type. However, this is wrong:
the semantics of this expression does not require a complete type (EDG
agrees).

Stuart vouched for me. Blame him.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
3f5b61c394f4f205bcb4d316eb2a7a0a68b8af86 14-May-2009 Douglas Gregor <dgregor@apple.com> Implement explicit instantiations of member classes of class templates, e.g.,

template<typename T>
struct X {
struct Inner;
};

template struct X<int>::Inner;

This change is larger than it looks because it also fixes some
a problem with nested-name-specifiers and tags. We weren't requiring
the DeclContext associated with the scope specifier of a tag to be
complete. Therefore, when looking for something like "struct
X<int>::Inner", we weren't instantiating X<int>.

This, naturally, uncovered a problem with member pointers, where we
were requiring the left-hand side of a member pointer access
expression (e.g., x->*) to be a complete type. However, this is wrong:
the semantics of this expression does not require a complete type (EDG
agrees).

Stuart vouched for me. Blame him.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
79d29e764fd8f8fefda3cdf61dc959d56a0c1fa1 14-May-2009 Fariborz Jahanian <fjahanian@apple.com> Look for and diagnose missing sentinel argument on message
dispatch arguments which have sentinel attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71737 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
88f1ba0f0439e31ab57ffc088aa91137cadee585 14-May-2009 Fariborz Jahanian <fjahanian@apple.com> Look for and diagnose missing sentinel argument on message
dispatch arguments which have sentinel attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71737 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4330d8d82e4de280c6dca4f202b8cc53db26960f 13-May-2009 Ted Kremenek <kremenek@apple.com> Add some basic type checking for attributes ns_returns_retained and
cf_returns_retained. Currently this attribute can now be applied to any
Objective-C method or C function that returns a pointer or Objective-C object
type.

Modify the tablegen definition of diagnostic 'warn_attribute_wrong_decl_type' to
expect that the diagnostics infrastructure will add quotes around the attribute
name when appropriate. Alonq with this change, I modified the places where this
warning is issued to passed the attribute's IdentifierInfo* instead of having a
hard-coded C constant string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5dc53c9c2328b5bea5422005b04960c18afd83ad 13-May-2009 Ted Kremenek <kremenek@apple.com> Add some basic type checking for attributes ns_returns_retained and
cf_returns_retained. Currently this attribute can now be applied to any
Objective-C method or C function that returns a pointer or Objective-C object
type.

Modify the tablegen definition of diagnostic 'warn_attribute_wrong_decl_type' to
expect that the diagnostics infrastructure will add quotes around the attribute
name when appropriate. Alonq with this change, I modified the places where this
warning is issued to passed the attribute's IdentifierInfo* instead of having a
hard-coded C constant string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71718 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f23101418d1c1844893aa52420f5ba19742aaf9f 13-May-2009 Anders Carlsson <andersca@mac.com> Disable access control by default. It can be enabled with the -faccess-control option. When we have better support for it, we can enable it by default again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
a33d9b4ebf732a5da6d56fd7319ff6c020789b1c 13-May-2009 Anders Carlsson <andersca@mac.com> Disable access control by default. It can be enabled with the -faccess-control option. When we have better support for it, we can enable it by default again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/LangOptions.h
29cf6d6cb367ca10d0c4c4c7f3f6c140aa3647b4 13-May-2009 Ted Kremenek <kremenek@apple.com> Add PostStmt::getStmtAs(). This unbreaks the build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71701 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
6bad354120ce0d35901e86ca63e5534b7b9ed092 13-May-2009 Ted Kremenek <kremenek@apple.com> Add PostStmt::getStmtAs(). This unbreaks the build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71701 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
fd8c6340db0e3c9ccb04ca764a41d378ace65e11 13-May-2009 Ted Kremenek <kremenek@apple.com> Add ExplodedNode utility methods 'getLocationAs()' and 'getFirstPred()'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71699 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
52c3196a89a26cebcf069dd140c3396b743b8e33 13-May-2009 Ted Kremenek <kremenek@apple.com> Add ExplodedNode utility methods 'getLocationAs()' and 'getFirstPred()'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71699 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
162736b1d5e8bbb6aa8a2321a61aa5ce5e9eaf31 13-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Emit an unsupported error on -iframework.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71698 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
95a0da7b263777e6f97e5a08b6eb893681a234ba 13-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Emit an unsupported error on -iframework.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71698 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9017791815e42a07864bccf7b1517f445e491400 13-May-2009 Douglas Gregor <doug.gregor@gmail.com> Improve the semantic checking for explicit instantiations of
templates. In particular:
- An explicit instantiation can follow an implicit instantiation (we
were improperly diagnosing this as an error, previously).
- In C++0x, an explicit instantiation that follows an explicit
specialization of the same template specialization is ignored. In
C++98, we just emit an extension warning.
- In C++0x, an explicit instantiation must be in a namespace
enclosing the original template. C++98 has no such requirement.

Also, fixed a longstanding FIXME regarding the integral type that is
used for the size of a constant array type when it is being instantiated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ff66803b43f2ea9206637dceb793e9505f3b9c48 13-May-2009 Douglas Gregor <dgregor@apple.com> Improve the semantic checking for explicit instantiations of
templates. In particular:
- An explicit instantiation can follow an implicit instantiation (we
were improperly diagnosing this as an error, previously).
- In C++0x, an explicit instantiation that follows an explicit
specialization of the same template specialization is ignored. In
C++98, we just emit an extension warning.
- In C++0x, an explicit instantiation must be in a namespace
enclosing the original template. C++98 has no such requirement.

Also, fixed a longstanding FIXME regarding the integral type that is
used for the size of a constant array type when it is being instantiated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
180f341a528dd5608704b40de48620720e6a9dc7 13-May-2009 Fariborz Jahanian <fjahanian@apple.com> Some early declarations to support sentinel attribute on
message dispatches (and function calls later). No change in
functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
5b53005fb9ef24b8bdfe995f29b4662de468128a 13-May-2009 Fariborz Jahanian <fjahanian@apple.com> Some early declarations to support sentinel attribute on
message dispatches (and function calls later). No change in
functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71683 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
57278230bfb1f257ee245aa0d158bd1a692bcdd6 13-May-2009 Chris Lattner <sabre@nondot.org> reject use of the GNU _Decimal32 extension with a diagnostic, not an abort.
rdar://6880104


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8f12f65fad7bfbbdbd4234efe0d484f68c3924b6 13-May-2009 Chris Lattner <sabre@nondot.org> reject use of the GNU _Decimal32 extension with a diagnostic, not an abort.
rdar://6880104


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
077fed531835769c12eed0ccfe8d14b92b5336ae 13-May-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6881069, a crash on a form of vector_size that we
don't support. While it would be nice to support this eventually,
this form is not common at all (just seen in gcc testsuite) and
it might be better to model vector_size as a type attribute anyway.
For now just emit a nice error on it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71633 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2db15bdd945163eacfa4623fd2e32a536ed2dd3b 13-May-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6881069, a crash on a form of vector_size that we
don't support. While it would be nice to support this eventually,
this form is not common at all (just seen in gcc testsuite) and
it might be better to model vector_size as a type attribute anyway.
For now just emit a nice error on it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71633 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
62c71461220583adbd80e7458c0fe40be85cabed 13-May-2009 Fariborz Jahanian <fjahanian@apple.com> Changed wording of warning when attribute is on
method definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71615 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
09d04e5097034d8dfb9fcfceb457f6924cdd2417 13-May-2009 Fariborz Jahanian <fjahanian@apple.com> Changed wording of warning when attribute is on
method definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71615 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fd79ac64fa4467e575ffd1960c168f33d3b875cf 13-May-2009 Douglas Gregor <doug.gregor@gmail.com> Semantic analysis for explicit instantiation of class templates. We
still aren't instantiating the definitions of class template members,
and core issues 275 and 259 will both affect the checking that we do
for explicit instantiations (but are not yet implemented).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
93dfdb1299ef740df854f4a745dc87e5e43f0c30 13-May-2009 Douglas Gregor <dgregor@apple.com> Semantic analysis for explicit instantiation of class templates. We
still aren't instantiating the definitions of class template members,
and core issues 275 and 259 will both affect the checking that we do
for explicit instantiations (but are not yet implemented).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71613 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a9db0faf0eab240dc1808ffe597fa88af3b4bdea 13-May-2009 Douglas Gregor <doug.gregor@gmail.com> Implement parsing for explicit instantiations of class templates, e.g.,

template class X<int>;

This also cleans up the propagation of template information through
declaration parsing, which is used to improve some diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
4d9a16f36d3b768672d50e6d02000f982ae448d7 13-May-2009 Douglas Gregor <dgregor@apple.com> Implement parsing for explicit instantiations of class templates, e.g.,

template class X<int>;

This also cleans up the propagation of template information through
declaration parsing, which is used to improve some diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
edf8844f2e68617892c6883fedd343efd987df68 12-May-2009 Chris Lattner <sabre@nondot.org> improve the diagnostic for uses of the GCC "global variable in a register" extension.
This implements rdar://6880449 - improve diagnostic for usage of "global register variable" GCC extension



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d4b19d52416c3a04a1740ab5e766d9537c8ea00e 12-May-2009 Chris Lattner <sabre@nondot.org> improve the diagnostic for uses of the GCC "global variable in a register" extension.
This implements rdar://6880449 - improve diagnostic for usage of "global register variable" GCC extension



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71599 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7640620cae7dd446679061857d940033b45655c1 12-May-2009 Douglas Gregor <doug.gregor@gmail.com> Parser::ParseDeclarationOrFunctionDefinition no longer needs to accept
template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71598 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
709131972f67190edd310ef72bd5e8c9a7764823 12-May-2009 Douglas Gregor <dgregor@apple.com> Parser::ParseDeclarationOrFunctionDefinition no longer needs to accept
template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71598 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
060f70719c14c3dc6bd30c96b96fad5d7e336643 12-May-2009 Fariborz Jahanian <fjahanian@apple.com> Method attributes may only be specified on method
declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71597 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5d36ac2cc91125134fd8e1f0a0f1c2f888fb0566 12-May-2009 Fariborz Jahanian <fjahanian@apple.com> Method attributes may only be specified on method
declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71597 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e3298aa09c6d9f183e193d844db4b164c47b8d7b 12-May-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor the parsing of declarations so that template declarations can
parse just a single declaration and provide a reasonable diagnostic
when the "only one declarator per template declaration" rule is
violated. This eliminates some ugly, ugly hackery where we used to
require thatn the layout of a DeclGroup of a single element be the
same as the layout of a single declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
1426e534b4fca6a05b1120d634aae46be79ca17c 12-May-2009 Douglas Gregor <dgregor@apple.com> Refactor the parsing of declarations so that template declarations can
parse just a single declaration and provide a reasonable diagnostic
when the "only one declarator per template declaration" rule is
violated. This eliminates some ugly, ugly hackery where we used to
require thatn the layout of a DeclGroup of a single element be the
same as the layout of a single declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Parser.h
453d36ac79eef281dd247fb7c1713385a47c8d0d 12-May-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnostic wording fix, from Anders Johnsen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2df0716635965580ac3f63a1799332e6c02d86d9 12-May-2009 Douglas Gregor <dgregor@apple.com> Diagnostic wording fix, from Anders Johnsen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
02ebfa86912fe41b011d5898881704f2e842cb91 12-May-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement ivar synthesis of properties declared in protocols
only and used in class imllementations (objc2 Nonfragile ABI specific).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9820074dd47d37681085e964cd3392ac0b3e67b9 12-May-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to implement ivar synthesis of properties declared in protocols
only and used in class imllementations (objc2 Nonfragile ABI specific).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71571 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
35edd9a98e42fce32d60fbc02e829666850ca34b 12-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add logic for invalidating array region to CFRefCount.cpp. When invalidating
array region, set its default value to conjured symbol. When retrieving its
element, create new region value symbol for the element.

Also fix some 80 columns violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71548 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
264e93799c891c03d60cf0b09a032b0a9935d3b5 12-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add logic for invalidating array region to CFRefCount.cpp. When invalidating
array region, set its default value to conjured symbol. When retrieving its
element, create new region value symbol for the element.

Also fix some 80 columns violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71548 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
eccf0d1b36ba01b1465076bad8ed54d859ffa0e3 12-May-2009 Douglas Gregor <doug.gregor@gmail.com> Make precompiled headers work with -E. When we're only preprocessing
(with -E), we turn the PCH include into an implicit include of the
file from which the PCH file was generated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71534 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
b64c19365deab788753d29c9bc881253c3f16f37 12-May-2009 Douglas Gregor <dgregor@apple.com> Make precompiled headers work with -E. When we're only preprocessing
(with -E), we turn the PCH include into an implicit include of the
file from which the PCH file was generated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71534 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
f9e7d3d4e672391f649336eb425129dccc9a2fed 12-May-2009 Douglas Gregor <doug.gregor@gmail.com> Encapsulate template arguments lists in a new class,
TemplateArgumentList. This avoids the need to pass around
pointer/length pairs of template arguments lists, and will eventually
make it easier to introduce member templates and variadic templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
7e06390f8a60440d6fc5f0e633acdc2edd8ee924 12-May-2009 Douglas Gregor <dgregor@apple.com> Encapsulate template arguments lists in a new class,
TemplateArgumentList. This avoids the need to pass around
pointer/length pairs of template arguments lists, and will eventually
make it easier to introduce member templates and variadic templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71517 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
873c389ee6c2480bcfca3c85adf6d2ac0b9a1f7d 12-May-2009 Ted Kremenek <kremenek@apple.com> BugReport::getEndPath() - Only add a Stmt's range to the constructed PathDiagnosticEventPiece if the BugReport contained no explicit ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71516 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
3ef538dd1bb1001fa1a1d50594d13f480a8dfa21 12-May-2009 Ted Kremenek <kremenek@apple.com> BugReport::getEndPath() - Only add a Stmt's range to the constructed PathDiagnosticEventPiece if the BugReport contained no explicit ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71516 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
b56d8b3cf44cf14cd17b8e2a6f5cb97015f85551 12-May-2009 Anders Carlsson <andersca@mac.com> Friend declarations are only valid inside class definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71489 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0033836b3c4bb578ef999813de4f5f1a24862d18 12-May-2009 Anders Carlsson <andersca@mac.com> Friend declarations are only valid inside class definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71489 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ef3fa4fd96ca26bd41e0b05e5145de474e594926 12-May-2009 Anders Carlsson <andersca@mac.com> Add an ActOnFriendDecl and call it for friend class decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71482 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
66e9977ddd6b197317d149213b76a9af0d3df4de 12-May-2009 Anders Carlsson <andersca@mac.com> Add an ActOnFriendDecl and call it for friend class decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71482 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
3eb207002be2bdffddc850aafd21a0a5710ca1c7 11-May-2009 Douglas Gregor <doug.gregor@gmail.com> Implement the notions of the "current instantiation" and "unknown
specialization" within a C++ template, and permit name lookup into the
current instantiation. For example, given:

template<typename T, typename U>
struct X {
typedef T type;

X* x1; // current instantiation
X<T, U> *x2; // current instantiation
X<U, T> *x3; // not current instantiation
::X<type, U> *x4; // current instantiation
X<typename X<type, U>::type, U>: *x5; // current instantiation
};



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
42af25f865a82022a04bedeb483ac251c4412e29 11-May-2009 Douglas Gregor <dgregor@apple.com> Implement the notions of the "current instantiation" and "unknown
specialization" within a C++ template, and permit name lookup into the
current instantiation. For example, given:

template<typename T, typename U>
struct X {
typedef T type;

X* x1; // current instantiation
X<T, U> *x2; // current instantiation
X<U, T> *x3; // not current instantiation
::X<type, U> *x4; // current instantiation
X<typename X<type, U>::type, U>: *x5; // current instantiation
};



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
4dadcec817a4dbe4f829973c31df00d776aea82a 11-May-2009 Ted Kremenek <kremenek@apple.com> Add ParentMap:getParentIgnoreParens().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
b1b9f680f5fc65230de877baccae50820a969a94 11-May-2009 Ted Kremenek <kremenek@apple.com> Add ParentMap:getParentIgnoreParens().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
9054f9878dbe2b1b8384c951ad07759d9de9dc8c 11-May-2009 Douglas Gregor <doug.gregor@gmail.com> Implement the semantics of the injected-class-name within a class
template. The injected-class-name is either a type or a template,
depending on whether a '<' follows it. As a type, the
injected-class-name's template argument list contains its template
parameters in declaration order.

As part of this, add logic for canonicalizing declarations, and be
sure to canonicalize declarations used in template names and template
arguments.

A TagType is dependent if the declaration it references is dependent.

I'm not happy about the rather complicated protocol needed to use
ASTContext::getTemplateSpecializationType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71408 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
7da97d0f31e1ec16998d3de2cfd2e88fe3736673 11-May-2009 Douglas Gregor <dgregor@apple.com> Implement the semantics of the injected-class-name within a class
template. The injected-class-name is either a type or a template,
depending on whether a '<' follows it. As a type, the
injected-class-name's template argument list contains its template
parameters in declaration order.

As part of this, add logic for canonicalizing declarations, and be
sure to canonicalize declarations used in template names and template
arguments.

A TagType is dependent if the declaration it references is dependent.

I'm not happy about the rather complicated protocol needed to use
ASTContext::getTemplateSpecializationType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71408 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
5d0ead717d57405b4a3b34a55b77579ea8b2774e 10-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement C++0x nullptr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71405 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/StmtNodes.def
ST/Type.h
rontend/PCHBitCodes.h
arse/Action.h
6e8ed16ffef02b82995a90bdcf10ffff7d63839a 10-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement C++0x nullptr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71405 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/StmtNodes.def
ST/Type.h
rontend/PCHBitCodes.h
arse/Action.h
9381004c77f7b7870095f643a9d01474b493e7dd 09-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename:
SymbolRegionRValue => SymbolRegionValue
SymExpr::RegionRValue => SymExpr::RegionValueKind


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71322 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
d9b6ad609ef0b90527e848ba69dc2e492771be4f 09-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Rename:
SymbolRegionRValue => SymbolRegionValue
SymExpr::RegionRValue => SymExpr::RegionValueKind


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71322 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
2036270d5517b051840f4d0900c2f3676cb6e1c0 09-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> As discussed with Ted, rename TypedRegion::getObjectType() to
TypedRegion::getValueType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71321 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
a82d8aa5b3b3d24998b4d98b9f45a43cc84cac6f 09-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> As discussed with Ted, rename TypedRegion::getObjectType() to
TypedRegion::getValueType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71321 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
13ddd1af28133402e076d9d446f4f21152fe92fa 09-May-2009 Ted Kremenek <kremenek@apple.com> Add back Parse/Sema support for attributes cf_returns_retained and
ns_returns_retained, but do not include the other ownership attributes
we previously had.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
b71368d28532908ae1c2dc23f91761781205b3d0 09-May-2009 Ted Kremenek <kremenek@apple.com> Add back Parse/Sema support for attributes cf_returns_retained and
ns_returns_retained, but do not include the other ownership attributes
we previously had.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
b00edf0d4dea0b10695eb6c0a11f856ab015fb74 09-May-2009 Ted Kremenek <kremenek@apple.com> Fix lurking bug in one of the versions of
GRStmtNodeBuilder::generateNode() where the HasGeneratedNode flag
wouldn't properly be set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
c1c739bd4b7b2d6d8eca62579e2b18ac0261be08 09-May-2009 Ted Kremenek <kremenek@apple.com> Fix lurking bug in one of the versions of
GRStmtNodeBuilder::generateNode() where the HasGeneratedNode flag
wouldn't properly be set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
b02c85274d78775b8998c03f12f1b6d4199cfbfb 09-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> rename: MemRegion:
RValueType => ObjectType
LValueType => LocationType

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71304 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
ff6978263439e21d795b0602fabcb38488ef8441 09-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> rename: MemRegion:
RValueType => ObjectType
LValueType => LocationType

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71304 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
f366d51179f775531c88c7040f00cecc58cdffd0 09-May-2009 Fariborz Jahanian <fjahanian@apple.com> We want to diagnose sending message to a forward class
and we also want to tell which message is actually
being sent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9f8f026fc1cd1aa2942a2850a037398415128f8a 09-May-2009 Fariborz Jahanian <fjahanian@apple.com> We want to diagnose sending message to a forward class
and we also want to tell which message is actually
being sent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71296 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
18274116b9806df96b85f32d059f13919d918151 09-May-2009 Ted Kremenek <kremenek@apple.com> Make BlockEntrace program points taggable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71280 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/ProgramPoint.h
ab422d17dce198f2af9851340ea7384771a2a8c5 09-May-2009 Ted Kremenek <kremenek@apple.com> Make BlockEntrace program points taggable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71280 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/ProgramPoint.h
1f21fd022a8d03e4b88a7414ee54bd8969212fca 09-May-2009 Ted Kremenek <kremenek@apple.com> Fix typo in method name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71279 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
cbc8c791fd1ab18330161e5d73b831a82422b201 09-May-2009 Ted Kremenek <kremenek@apple.com> Fix typo in method name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71279 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
243f60435b67ae3a20d0e93998f8a2939c8192fe 09-May-2009 Fariborz Jahanian <fjahanian@apple.com> Warn if forward class is used as a receiver.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71278 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89bc314c6ddf3b851ccf68bc34d3f1b5927a10f6 09-May-2009 Fariborz Jahanian <fjahanian@apple.com> Warn if forward class is used as a receiver.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71278 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a996bb05da29e060822af6f3fc675903811e7dd3 08-May-2009 Fariborz Jahanian <fjahanian@apple.com> More type checking for properties, accessors and
use of dot-syntax expression. This is to match gcc's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71243 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4c2743f0afe601b0e8ea7bd9b3cd0fb09083a181 08-May-2009 Fariborz Jahanian <fjahanian@apple.com> More type checking for properties, accessors and
use of dot-syntax expression. This is to match gcc's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71243 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f084b0ae1f63ac979e9472bf1e320e27b813e4f4 08-May-2009 Ted Kremenek <kremenek@apple.com> Remove experimental ownership attributes from Clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
008fc73ac971e5d30c8710e37e1f5f8a843052f1 08-May-2009 Ted Kremenek <kremenek@apple.com> Remove experimental ownership attributes from Clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
822adfe2333425ef0c6233d82ca99154eee6f168 08-May-2009 Chris Lattner <sabre@nondot.org> reimplement __sync_* builtins to be variadic and to follow the same
semantic rules that gcc and icc use. This implements the variadic
and concrete versions as builtins and has sema do the
disambiguation. There are probably a bunch of details to finish up
but this seems like a large monotonic step forward :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticSemaKinds.td
5caa370ea6f70bd3e7e4a9cc3b69ac1a849c8534 08-May-2009 Chris Lattner <sabre@nondot.org> reimplement __sync_* builtins to be variadic and to follow the same
semantic rules that gcc and icc use. This implements the variadic
and concrete versions as builtins and has sema do the
disambiguation. There are probably a bunch of details to finish up
but this seems like a large monotonic step forward :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticSemaKinds.td
d94f546b4b88bb7d3b8ff3d1665de2ec2629270d 08-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Revert r71079.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a15f7ac7729b74d1d8bef0c009b803a4bbef20d3 08-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Revert r71079.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2f567c6af5628f719abc6aa9518aa18b62e560bb 08-May-2009 Mike Stump <mrs@apple.com> Add a warning for a missing copy attribute on a property that is a
block pointer. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71190 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
046efd92714dce712ad47bedfbdbb64e6eb35eec 08-May-2009 Mike Stump <mrs@apple.com> Add a warning for a missing copy attribute on a property that is a
block pointer. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71190 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b5dc2946050484c5cd067bb4453fcfd4ab95b403 07-May-2009 Daniel Dunbar <daniel@zuster.org> Remove -fobjc-tight-layout, seems to work!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
913af35741b55fe854bc26c9dddc312cd991e24d 07-May-2009 Daniel Dunbar <daniel@zuster.org> Remove -fobjc-tight-layout, seems to work!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
9245cf263f395161cc12a3c5664f6d0895967b2a 07-May-2009 Ted Kremenek <kremenek@apple.com> More attribute renaming:
- Rename 'ns_returns_owned' -> 'ns_returns_retained'.
- Rename 'cf_returns_owned' -> 'cf_returns_retained'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71182 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
7704a33fb398a4352a18bd3fcb18218d3dc5cc60 07-May-2009 Ted Kremenek <kremenek@apple.com> More attribute renaming:
- Rename 'ns_returns_owned' -> 'ns_returns_retained'.
- Rename 'cf_returns_owned' -> 'cf_returns_retained'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71182 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
facdba6bf02217aa4a586e7757613ae0851ab1a7 07-May-2009 Anders Carlsson <andersca@mac.com> add isFriendSpecified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71174 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
908116859ed8c166c1c0712992e504edd0c5a6e1 07-May-2009 Anders Carlsson <andersca@mac.com> add isFriendSpecified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71174 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
0441f118afa1d2445bc66f881bcad31b7dc3272a 07-May-2009 Ted Kremenek <kremenek@apple.com> analyzer: Add ProgramPoint 'PostLValue' just to distinguish (for
analysis introspection) when we computed an lvalue. This shouldn't
effect the current analysis results in any way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71169 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
7090d5465de7ca620da16211cf886edf1edc1f1f 07-May-2009 Ted Kremenek <kremenek@apple.com> analyzer: Add ProgramPoint 'PostLValue' just to distinguish (for
analysis introspection) when we computed an lvalue. This shouldn't
effect the current analysis results in any way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71169 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
b88ba4173268f00ef39cfa6c6804d43ef510646d 07-May-2009 Douglas Gregor <doug.gregor@gmail.com> Start canonicalizing template names. This is not yet complete, but it
improves type identity with dependent types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
25a3ef7cc5fd55dc8cc67c6e6770c8595657e082 07-May-2009 Douglas Gregor <dgregor@apple.com> Start canonicalizing template names. This is not yet complete, but it
improves type identity with dependent types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e97a8545b03a4c1ca89774aca20185d70f9ed03b 07-May-2009 Mike Stump <mrs@apple.com> Improve semantic checking for blocks. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71145 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dd3e1664b5a0996115ef141ad2396168b3a1d288 07-May-2009 Mike Stump <mrs@apple.com> Improve semantic checking for blocks. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71145 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e6d852aefdb05fb2f100b5028048f6ca3ef27a63 07-May-2009 Ted Kremenek <kremenek@apple.com> Add preliminary support for enhancing null-pointer dereference diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71135 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
dd986cc9989f665370cef0917ba8ba3b4871e3e6 07-May-2009 Ted Kremenek <kremenek@apple.com> Add preliminary support for enhancing null-pointer dereference diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71135 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
1aaad9c304a4eae98d935872673cd757eb541ae9 07-May-2009 Ted Kremenek <kremenek@apple.com> Bug fix: Not all ConstraintManagers always return a null state when setting
isFeasible to false. This is something we may wish to do further validation on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71134 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
46a54eb500aa1f841308ad78ef356d28b1bbb0cc 07-May-2009 Ted Kremenek <kremenek@apple.com> Bug fix: Not all ConstraintManagers always return a null state when setting
isFeasible to false. This is something we may wish to do further validation on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71134 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
ba9a371cb3438f165ff6191c42732f699968eea2 07-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Back out r70506 (exception spec in AST) again. We won't have exception specs until we've had a lot more discussion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71125 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
bfa2fcba545fb270f31205d616846c2bfaf4e47e 07-May-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Back out r70506 (exception spec in AST) again. We won't have exception specs until we've had a lot more discussion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71125 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c3bc6c8cd7f70810fd7343307071c1e88b17b0d9 06-May-2009 Ted Kremenek <kremenek@apple.com> Refactor BugReporter interface to have a new 'BugReporterContext' and
'BugReporterVisitor'. This simplifies callbacks from BugReporter to BugReports
(via VisitNode). It also lays the foundation for arbitrary visitor "call backs"
that can be registered to a BugReporterContext as a PathDiagnostic is
constructed. These call backs can help operate as separate "experts" that can
work on constructed pieces of a PathDiagnostic for which they possess special
knowledge.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71121 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
8966bc1c8ce271c09936c0eaf6c841aef4a0af1b 06-May-2009 Ted Kremenek <kremenek@apple.com> Refactor BugReporter interface to have a new 'BugReporterContext' and
'BugReporterVisitor'. This simplifies callbacks from BugReporter to BugReports
(via VisitNode). It also lays the foundation for arbitrary visitor "call backs"
that can be registered to a BugReporterContext as a PathDiagnostic is
constructed. These call backs can help operate as separate "experts" that can
work on constructed pieces of a PathDiagnostic for which they possess special
knowledge.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71121 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
0838f96643db1611a52e015733f94b19b8a5d52d 06-May-2009 Daniel Dunbar <daniel@zuster.org> More x86 target feature support.
- Apologies for the extremely gross code duplication, I want to get
this working and then decide how to get this information out of the
back end.

- This replaces -m[no-]sse4[12] by -m[no-]sse4, it appears gcc
doesn't distinguish them?

- -msse, etc. now properly disable/enable related features.

- Don't always define __SSE3__...

- The main missing functionality bit here is that we don't initialize
the features based on the CPU for all -march options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71117 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
river/Options.def
17ca3638e852ba81f389e9f896ed0420b52ae606 06-May-2009 Daniel Dunbar <daniel@zuster.org> More x86 target feature support.
- Apologies for the extremely gross code duplication, I want to get
this working and then decide how to get this information out of the
back end.

- This replaces -m[no-]sse4[12] by -m[no-]sse4, it appears gcc
doesn't distinguish them?

- -msse, etc. now properly disable/enable related features.

- Don't always define __SSE3__...

- The main missing functionality bit here is that we don't initialize
the features based on the CPU for all -march options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71117 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
river/Options.def
a6e5bbebae136f9e5c031d89654d9d8160e9cefa 06-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> add getTargetInfo() method to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
33c37b9b87453c835cd0e32a4a65db329da20356 06-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> add getTargetInfo() method to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
94f63377e9040fad7a5614afec6ccdc26a45abf9 06-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> The super region of ElementRegion no longer needs to be TypedRegion. In the
future we would create ElementRegion directly on top of typeless regions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71075 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
4c44e243e36aaaab3fee24ba1190ca65d33bf2ca 06-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> The super region of ElementRegion no longer needs to be TypedRegion. In the
future we would create ElementRegion directly on top of typeless regions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71075 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
6c2ad5a7e4992be094d881130b1892cff9841006 06-May-2009 Anders Carlsson <andersca@mac.com> Add parsing of friend specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71067 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
f47f7a1c4082b42b21f1c7dc211ff90f4b38258a 06-May-2009 Anders Carlsson <andersca@mac.com> Add parsing of friend specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71067 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
0c0b436adcd305637545448d4fb383edf8185966 06-May-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate extra vertical space in Clang diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71066 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
2cc2b9ca22d21cd855f06f545b8720f6a7a965b4 06-May-2009 Douglas Gregor <dgregor@apple.com> Eliminate extra vertical space in Clang diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71066 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
07181d709860d06026afa3b4ee5b6a65b48c9005 06-May-2009 Daniel Dunbar <daniel@zuster.org> Improve handling of (X86) target features.
- This is a WIP...

- This adds -march= handling to the driver, and fixes the defaulting
of -mcpu on Darwin (which was using the wrong test).

Instead of handling -m{sse, ...} in the driver, pass them to clang-cc as
-target-feature [+-]name

In clang-cc, communicate with the (clang) target to discover the legal
features of a target, and the features which are enabled based on
-mcpu. This is currently hardcoded just enough to not be a feature
regression, we need to get this information from the backend's
TableGen information somehow.

This is used to construct the full list of features which are being
used, which is in turn used to initialize the predefines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
river/Options.def
868bd0aa9281929ef50d2e9a8c82a036906f53f5 06-May-2009 Daniel Dunbar <daniel@zuster.org> Improve handling of (X86) target features.
- This is a WIP...

- This adds -march= handling to the driver, and fixes the defaulting
of -mcpu on Darwin (which was using the wrong test).

Instead of handling -m{sse, ...} in the driver, pass them to clang-cc as
-target-feature [+-]name

In clang-cc, communicate with the (clang) target to discover the legal
features of a target, and the features which are enabled based on
-mcpu. This is currently hardcoded just enough to not be a feature
regression, we need to get this information from the backend's
TableGen information somehow.

This is used to construct the full list of features which are being
used, which is in turn used to initialize the predefines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71061 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
river/Options.def
7953f245d3c7d22957fe3a1f2d8fd916491af1b2 06-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make StoreManager::CastRegion() virtual and implement a new CastRegion() for
RegionStore.

This CastRegion() performs casts according to the kind of the region being
cast instead of the type that is cast to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71058 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
889805931bdffe5eaf770bb9f926f738ccd18c0f 06-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make StoreManager::CastRegion() virtual and implement a new CastRegion() for
RegionStore.

This CastRegion() performs casts according to the kind of the region being
cast instead of the type that is cast to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71058 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
6e3de3d0ca8b90214d1d8de2252516ff1a99c310 06-May-2009 Daniel Dunbar <daniel@zuster.org> Add --analyze-auto.
- Currently just an alias for --analyze, eventually we want to refit
--analyze so that it is less automatic (i.e., does not force plist
output and does not hard code the list of checks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71056 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Options.def
63be57a832b2dab70592d1d9b37a5cd9a627356e 06-May-2009 Daniel Dunbar <daniel@zuster.org> Add --analyze-auto.
- Currently just an alias for --analyze, eventually we want to refit
--analyze so that it is less automatic (i.e., does not force plist
output and does not hard code the list of checks).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71056 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Options.def
03d242e18e54faad6da12eab590ddd5e261d077a 05-May-2009 Ted Kremenek <kremenek@apple.com> Implement attribute 'ns_autorelease'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
69aa08072decc20094bd1f75f4f9842e9bd357ad 05-May-2009 Ted Kremenek <kremenek@apple.com> Implement attribute 'ns_autorelease'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
0c535276de28f633182ef1f29834426e7f485d6b 05-May-2009 Fariborz Jahanian <fjahanian@apple.com> Issue a warning in odd case of instance method used
in a 'Class' receiver which is not a root instance
method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
041f2fd6237c7ce72864e42c66c6b12b52f35f9c 05-May-2009 Fariborz Jahanian <fjahanian@apple.com> Issue a warning in odd case of instance method used
in a 'Class' receiver which is not a root instance
method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
60da2715e386e1f87513fc8596a0e267ca8e977b 05-May-2009 Chris Lattner <sabre@nondot.org> remove some incorrect and unimplemented atomic builtins (e.g.
__sync_umin_and_fetch), add some missing atomic builtins (e.g.
__sync_fetch_and_nand) and reorder the list to match the GCC
documentation. The builtins still need work and codegen
implementation, more patches coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
b0ed3029d96e31dfa71a61ac5aa8d04710e0fb12 05-May-2009 Chris Lattner <sabre@nondot.org> remove some incorrect and unimplemented atomic builtins (e.g.
__sync_umin_and_fetch), add some missing atomic builtins (e.g.
__sync_fetch_and_nand) and reorder the list to match the GCC
documentation. The builtins still need work and codegen
implementation, more patches coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
fed3c098f6345dfd908c0c27583db7140996ad8b 05-May-2009 Ted Kremenek <kremenek@apple.com> Implement attribute 'cf_returns_owned' (mirrors 'ns_returns_owned').


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70952 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
e351aa10dab6eb8b9b502166c7035dc7b0e723e0 05-May-2009 Ted Kremenek <kremenek@apple.com> Implement attribute 'cf_returns_owned' (mirrors 'ns_returns_owned').


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70952 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
bf3b1f068f5d5ccd9fcd287acbe245b575e257e7 05-May-2009 Ted Kremenek <kremenek@apple.com> Rename ownership attributes:
ns_ownership_returns -> ns_returns_owned
ns_ownership_retain -> ns_retains
ns_ownership_release -> ns_releases
cf_ownership_retain -> cf_retains
cf_ownership_release -> cf_releases


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70949 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
d331dd7fa43f547197efcd757e4a7b477c29fd6e 05-May-2009 Ted Kremenek <kremenek@apple.com> Rename ownership attributes:
ns_ownership_returns -> ns_returns_owned
ns_ownership_retain -> ns_retains
ns_ownership_release -> ns_releases
cf_ownership_retain -> cf_retains
cf_ownership_release -> cf_releases


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70949 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
b63a77eea1644d4747c16bab240945069d977a9b 05-May-2009 Ted Kremenek <kremenek@apple.com> Rename attribute 'ns_ownership_returns' to 'ns_returns_ownership'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70941 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
6a08469ebe3e15262733841a9c29e2e563d78ba5 05-May-2009 Ted Kremenek <kremenek@apple.com> Rename attribute 'ns_ownership_returns' to 'ns_returns_ownership'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70941 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
a8d6fd978099620a754b62c590c39ca0dc0068a7 05-May-2009 Ted Kremenek <kremenek@apple.com> Remove experimental attribute 'ns_ownership_make_collectable.'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
d99b345a1ae77c746ef025e6a050908d69e2c543 05-May-2009 Ted Kremenek <kremenek@apple.com> Remove experimental attribute 'ns_ownership_make_collectable.'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
2c5710cb5f812255a8fc3bd8338139f5e72bf259 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add ASTRecordLayout::getFieldCount accessor, change NextOffset field to 64-bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
c2e57bfc7f784e8f2d6026ec6b03259c1109f120 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add ASTRecordLayout::getFieldCount accessor, change NextOffset field to 64-bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
514acdd174654fa8bc5bd20fb4582cb6057d2010 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add ASTRecordLayout::getNextOffset accessor, and some doxygen comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
f773737e35b5a7c35ea75d5092249b7ba260cec3 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add ASTRecordLayout::getNextOffset accessor, and some doxygen comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
eadf90ee4332b964f026c9f6dc74d803eb7cdbd9 04-May-2009 Daniel Dunbar <daniel@zuster.org> Initialize NextOffset correctly, otherwise tight layout fails for
empty classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
bc6ea8125afbab8635f5c319229d1ba8aa2e25e2 04-May-2009 Daniel Dunbar <daniel@zuster.org> Initialize NextOffset correctly, otherwise tight layout fails for
empty classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
028e811124293fa0c0f670ce16d102bbf76cf1c9 04-May-2009 Ted Kremenek <kremenek@apple.com> Rename attributes 'objc_ownership...' to 'ns_ownership...'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
75494ffb4ed3964fa22fb9ab15fddecedbc9fe10 04-May-2009 Ted Kremenek <kremenek@apple.com> Rename attributes 'objc_ownership...' to 'ns_ownership...'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
03d27943db8899157cd8aa4fcfb56abcba229435 04-May-2009 Ted Kremenek <kremenek@apple.com> Rename attributes:
'objc_ownership_cfretain' -> 'cf_ownership_retain'
'objc_ownership_cfrelease' -> 'cf_ownership_release'

Motivation: Core Foundation objects can be used in isolation from Objective-C,
and this forces users to reason about the separate semantics of CF objects. More
Sema support pending.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
31c215e62031b14e85c2f695c261817c044b465b 04-May-2009 Ted Kremenek <kremenek@apple.com> Rename attributes:
'objc_ownership_cfretain' -> 'cf_ownership_retain'
'objc_ownership_cfrelease' -> 'cf_ownership_release'

Motivation: Core Foundation objects can be used in isolation from Objective-C,
and this forces users to reason about the separate semantics of CF objects. More
Sema support pending.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
61ccd5c7d016fa7f39c74444a2326ddffcebfac3 04-May-2009 Ted Kremenek <kremenek@apple.com> Remove support for ObjCMethodDecl attributes that appear between the
return type and the selector. This is inconsistent with C functions
(where such attributes would be placed on the return type, not the the
FunctionDecl), and is inconsistent with what people are use to seeing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70878 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1c6a3cc88177c67498fccdf14cfdf09959214e41 04-May-2009 Ted Kremenek <kremenek@apple.com> Remove support for ObjCMethodDecl attributes that appear between the
return type and the selector. This is inconsistent with C functions
(where such attributes would be placed on the return type, not the the
FunctionDecl), and is inconsistent with what people are use to seeing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70878 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d8ccb2b48c5fb43ef106f307bc08f836ac91a3c2 04-May-2009 Ted Kremenek <kremenek@apple.com> Rename 'makeZeroIndex' to 'makeZeroArrayIndex'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70865 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
cd9392ff7336a2cd5547305ba83a65e63b4f6ff8 04-May-2009 Ted Kremenek <kremenek@apple.com> Rename 'makeZeroIndex' to 'makeZeroArrayIndex'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70865 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
398d8f8b1fe6453a5e6e3c50cd5e2fba3b54d360 04-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> array indexes are unsigned integers of the same width as pointer.
no-outofbounds.c still fails. Previously it passed because the array index
is mistakenly a loc::ConcreteInt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70844 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
b5b848e046e1899a3ebab4ca3822ae97eef36b1e 04-May-2009 Zhongxing Xu <xuzhongxing@gmail.com> array indexes are unsigned integers of the same width as pointer.
no-outofbounds.c still fails. Previously it passed because the array index
is mistakenly a loc::ConcreteInt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70844 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueManager.h
af81ece1812e05d74973d3fff1293995b937a49d 04-May-2009 Ted Kremenek <kremenek@apple.com> Per conversations with Zhongxing, add an 'element type' to
ElementRegion. I also removed 'ElementRegion::getArrayRegion',
although we may need to add this back.

This breaks a few test cases with RegionStore:
- 'array-struct.c' triggers an infinite recursion in RegionStoreManager. Need to investigate.
- misc-ps.m triggers a failure with RegionStoreManager as we now get the diagnostic:
'Line 159: Uninitialized or undefined return value returned to caller.'

There were a bunch of places that needed to be edit
RegionStoreManager, and we may not be passing all the correct 'element
types' down from GRExprEngine.

Zhongxing: When you get a chance, could you review this? I could have
easily screwed up something basic in RegionStoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70830 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
f936f4568700d799e7d92eecef67b0e2b822ae7e 04-May-2009 Ted Kremenek <kremenek@apple.com> Per conversations with Zhongxing, add an 'element type' to
ElementRegion. I also removed 'ElementRegion::getArrayRegion',
although we may need to add this back.

This breaks a few test cases with RegionStore:
- 'array-struct.c' triggers an infinite recursion in RegionStoreManager. Need to investigate.
- misc-ps.m triggers a failure with RegionStoreManager as we now get the diagnostic:
'Line 159: Uninitialized or undefined return value returned to caller.'

There were a bunch of places that needed to be edit
RegionStoreManager, and we may not be passing all the correct 'element
types' down from GRExprEngine.

Zhongxing: When you get a chance, could you review this? I could have
easily screwed up something basic in RegionStoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70830 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
30eed0fc54c3ac046a7cf9e41aaf75c2a177640b 04-May-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for comparing pointers with <, >, <=, >=, ==, and !=
in C++, taking into account conversions to the "composite pointer
type" so that we can compare, e.g., a pointer to a derived class to a
pointer to a base class.

Also, upgrade the "comparing distinct pointer types" from a warning to
an error for C++, since this is clearly an error. Turns out that we
hadn't gone through and audited this code for C++, ever.

Fixes <rdar://problem/6816420>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70829 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0c6db9417dceeb082296c4e097be5de3ee1c5eb7 04-May-2009 Douglas Gregor <dgregor@apple.com> Implement support for comparing pointers with <, >, <=, >=, ==, and !=
in C++, taking into account conversions to the "composite pointer
type" so that we can compare, e.g., a pointer to a derived class to a
pointer to a base class.

Also, upgrade the "comparing distinct pointer types" from a warning to
an error for C++, since this is clearly an error. Turns out that we
hadn't gone through and audited this code for C++, ever.

Fixes <rdar://problem/6816420>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70829 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5523e86616bc17c9092af47012c9df4b962788a7 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add -fobjc-tight-layout.
- This implements gcc style Objective-C interface layout (I
think). Currently it is always off, there is no functionality
change unless this is passed.

For the curious, the deal is that gcc lays out the fields of a
subclass as if they were part of the superclass. That is, the
subclass fields immediately follow the super class fields instead
of being padded to the alignment of the superclass structure.

- Currently gcc uses the tight layout in 32-bit and 64-bit modes, and
llvm-gcc uses it in 32-bit only, for reasons which aren't clear
yet. We probably want to switch to matching gcc, once this makes it
through testing... my hope is that we can also fix llvm-gcc in
order to maintain compatibility between the compilers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
asic/LangOptions.h
river/Options.def
d6884a0b90091a063478ec7fa31f6d76c94e4917 04-May-2009 Daniel Dunbar <daniel@zuster.org> Add -fobjc-tight-layout.
- This implements gcc style Objective-C interface layout (I
think). Currently it is always off, there is no functionality
change unless this is passed.

For the curious, the deal is that gcc lays out the fields of a
subclass as if they were part of the superclass. That is, the
subclass fields immediately follow the super class fields instead
of being padded to the alignment of the superclass structure.

- Currently gcc uses the tight layout in 32-bit and 64-bit modes, and
llvm-gcc uses it in 32-bit only, for reasons which aren't clear
yet. We probably want to switch to matching gcc, once this makes it
through testing... my hope is that we can also fix llvm-gcc in
order to maintain compatibility between the compilers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
asic/LangOptions.h
river/Options.def
e7e4dacd5a6e929e982867a02109ddaf608535cd 04-May-2009 Eli Friedman <eli.friedman@gmail.com> PR2524: downgrade taking address of expression of type 'void' to an
extension warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
53202857c60214d80950a975e6e52aebf30bd16a 04-May-2009 Eli Friedman <eli.friedman@gmail.com> PR2524: downgrade taking address of expression of type 'void' to an
extension warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
d42baac9eb44438034448f1edbaa7bef081b3ad3 03-May-2009 Eli Friedman <eli.friedman@gmail.com> PR4134: Implement __builtin_extract_return_addr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
3b660efb9f9fa3e87096f4a96a2093cd17c43c2e 03-May-2009 Eli Friedman <eli.friedman@gmail.com> PR4134: Implement __builtin_extract_return_addr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
6ff4f4b4636e13a68f7087f26b83c2c4ba816430 03-May-2009 Daniel Dunbar <daniel@zuster.org> Remove ASTContext::addRecordToClass.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
ee1ec39f54a759a1c0858b608e02d70e0d7f54bc 03-May-2009 Daniel Dunbar <daniel@zuster.org> Remove ASTContext::addRecordToClass.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
1fbaef1ce5cf60ffe766da428c1e25d546f8c252 03-May-2009 Daniel Dunbar <daniel@zuster.org> Split out getASTObjCImplementationLayout
- The difference from getASTObjCInterfaceLayout is that the computes
the layout including synthesized ivars.

- No functionality change, they currently both compute the same thing
-- whether that includes synthesized ivars or not depends on when
they get called!!!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70690 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b2dbbb99e12806eaaf53b7ccabc32f42b5719443 03-May-2009 Daniel Dunbar <daniel@zuster.org> Split out getASTObjCImplementationLayout
- The difference from getASTObjCInterfaceLayout is that the computes
the layout including synthesized ivars.

- No functionality change, they currently both compute the same thing
-- whether that includes synthesized ivars or not depends on when
they get called!!!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70690 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d7162fcabb2b668260cb28858cfb9f2b50f4dd36 03-May-2009 Daniel Dunbar <daniel@zuster.org> PR4063, with feeling: Chain PP callbacks by default.
- This is somewhat cleaner and also fixes PR4063 for real, I had the
order wrong so we were just creating an empty dependency file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70687 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/Preprocessor.h
e5393fb93eb879d9ebbef102ae9311fa77e023cc 03-May-2009 Daniel Dunbar <daniel@zuster.org> PR4063, with feeling: Chain PP callbacks by default.
- This is somewhat cleaner and also fixes PR4063 for real, I had the
order wrong so we were just creating an empty dependency file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70687 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ex/Preprocessor.h
42853ed3f8a56e79c2363379348c47e09522048f 03-May-2009 Chris Lattner <sabre@nondot.org> add a flag to output asm constraints so that we efficiently know
if there is an input constraint that is tied to it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
fa780fc4a4983003633c9b560387266101839923 03-May-2009 Chris Lattner <sabre@nondot.org> add a flag to output asm constraints so that we efficiently know
if there is an input constraint that is tied to it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c82f9948dd69d09ff05c01e1689212c03e0d08ab 03-May-2009 Eli Friedman <eli.friedman@gmail.com> Add diagnostic for r70658.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3c77f728d287f38894a9b07ad210d68dda538568 03-May-2009 Eli Friedman <eli.friedman@gmail.com> Add diagnostic for r70658.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6277e4095e523d8a20d1eff82df66191ecd37487 03-May-2009 Eli Friedman <eli.friedman@gmail.com> Add Sema support for __builtin_setjmp/__builtin_longjmp. The primary
reason for adding these is to error out in CodeGen when trying to generate
them instead of silently emitting a call to a non-existent function.

(Note that it is not valid to lower these to setjmp/longjmp; in addition
to that lowering being different from the intent, setjmp and longjmp
require a larger buffer.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
d875fed28578835de89cd407e9db4be788596d7c 03-May-2009 Eli Friedman <eli.friedman@gmail.com> Add Sema support for __builtin_setjmp/__builtin_longjmp. The primary
reason for adding these is to error out in CodeGen when trying to generate
them instead of silently emitting a call to a non-existent function.

(Note that it is not valid to lower these to setjmp/longjmp; in addition
to that lowering being different from the intent, setjmp and longjmp
require a larger buffer.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70658 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
20a4fd85d1239db1be2bedf6861375c2d443b23a 03-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Treat -m32 and -m64 as "driver-only" arguments.
- In particular, don't forward them to gcc; these participate in the
selection of the tool chain, which should know how to talk to gcc
and be fixed if it doesn't.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70648 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
08617b1b475e5ae9c61c9b3536cf712283647284 03-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Treat -m32 and -m64 as "driver-only" arguments.
- In particular, don't forward them to gcc; these participate in the
selection of the tool chain, which should know how to talk to gcc
and be fixed if it doesn't.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70648 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
f7d893fe3bf25a7c7d2b6ab27371fc1a9b6540b7 02-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Generate an error when trying to pass an LLVM bc input to a
non-Darwin linker (sorry Gold + LTO-plugin users).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
a8304f67291b0182fb64f3afc621615288dd1d31 02-May-2009 Daniel Dunbar <daniel@zuster.org> Driver: Generate an error when trying to pass an LLVM bc input to a
non-Darwin linker (sorry Gold + LTO-plugin users).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
46363f5fc56d60238e4ad73b83e3b987f9041ea7 02-May-2009 Daniel Dunbar <daniel@zuster.org> DragonFly ToolChain definition for driver.
- Patch by Alex Hornung!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70635 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
river/Options.def
11e1b40d759a643086f590f6ffbd9d68360bad46 02-May-2009 Daniel Dunbar <daniel@zuster.org> DragonFly ToolChain definition for driver.
- Patch by Alex Hornung!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70635 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
river/Options.def
bbceaea1fd99e0790688e27880f18667e5842d46 02-May-2009 Anders Carlsson <andersca@mac.com> Downgrade the invalid offsetof error to a warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f9b8bc662a84bb89a2d98530592f5d8fb6bee761 02-May-2009 Anders Carlsson <andersca@mac.com> Downgrade the invalid offsetof error to a warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70634 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
531434b0b3e12757c57f776e42083b269bc72b3b 02-May-2009 Douglas Gregor <doug.gregor@gmail.com> When determining whether an expression refers to a bit-field, look
into the left-hand side of an assignment expression. This completes
most of PR3500; the only remaining part is to deal with the
GCC-specific implementation-defined behavior for "unsigned long" (and
other) bit-fields.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
33bbbc5ec8269bc2cde5b84f970fa49319a30267 02-May-2009 Douglas Gregor <dgregor@apple.com> When determining whether an expression refers to a bit-field, look
into the left-hand side of an assignment expression. This completes
most of PR3500; the only remaining part is to deal with the
GCC-specific implementation-defined behavior for "unsigned long" (and
other) bit-fields.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8813477d35efbfe22f9bb0436ec948e72913fb45 02-May-2009 Chris Lattner <sabre@nondot.org> explicitly know that the alignment of Type* is 3 bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
bfadf55ba5b736b13cc3e0fbc2b184569bc9f304 02-May-2009 Chris Lattner <sabre@nondot.org> explicitly know that the alignment of Type* is 3 bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
21f220e79450ee703952b1bd95c8c075dfd7dffa 02-May-2009 Mike Stump <mrs@apple.com> Add Sema checking for __block on vm declarations. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70601 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c975bb04da88323fded43e71ff1839e8640fe878 02-May-2009 Mike Stump <mrs@apple.com> Add Sema checking for __block on vm declarations. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70601 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f2ab4fbb4ad8b1c6c2ad21a865c2605a86d4ff2a 02-May-2009 Douglas Gregor <doug.gregor@gmail.com> When printing a source line as part of a diagnostic, the source line
might be wider than we're supposed to print. In this case, we try to
select the "important" subregion of the source line, which contains
everything that we want to show (e.g., with underlining and the caret
itself) and tries to also contain some of the context.

From the fantastically long line in the test case, we get an error
message that slices down to this:

message-length.c:18:120: warning: comparison of distinct pointer types
('int *' and 'float *')
a_func_to_call(ip == FloatPointer, ip[ALongIndexName],
~~ ^ ~~~~~~~~~~~~

There are a bunch of gee-it-sounds-good heuristics in here, which seem
to do well on the various simple tests I've thrown at it. However,
we're going to need to look at a bunch more diagnostics to tweak these
heuristics.

This is the second part of <rdar://problem/6711348>. Almost there!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70597 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
47f717788082cdc38b899faf18acc8d1cda1b9c5 02-May-2009 Douglas Gregor <dgregor@apple.com> When printing a source line as part of a diagnostic, the source line
might be wider than we're supposed to print. In this case, we try to
select the "important" subregion of the source line, which contains
everything that we want to show (e.g., with underlining and the caret
itself) and tries to also contain some of the context.

From the fantastically long line in the test case, we get an error
message that slices down to this:

message-length.c:18:120: warning: comparison of distinct pointer types
('int *' and 'float *')
a_func_to_call(ip == FloatPointer, ip[ALongIndexName],
~~ ^ ~~~~~~~~~~~~

There are a bunch of gee-it-sounds-good heuristics in here, which seem
to do well on the various simple tests I've thrown at it. However,
we're going to need to look at a bunch more diagnostics to tweak these
heuristics.

This is the second part of <rdar://problem/6711348>. Almost there!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70597 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
356946ee30f0a12becabe19e956eb3f4d3933c96 02-May-2009 Anders Carlsson <andersca@mac.com> It's an error to call offsetof on a non-POD type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
6d7f149b0bff12e8f74c372e50b6e9a9ea980425 02-May-2009 Anders Carlsson <andersca@mac.com> It's an error to call offsetof on a non-POD type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d79b70158ad775b9a6e642347b61f51b3ee57fe1 02-May-2009 Anders Carlsson <andersca@mac.com> Get rid of CXXDestroyExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70586 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
55674acc0331f96bf9e2074e9853c9a1fa96857b 02-May-2009 Anders Carlsson <andersca@mac.com> Get rid of CXXDestroyExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70586 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
2199ed357ac48a98487dc395d12d3eeb8d9f634d 02-May-2009 Ted Kremenek <kremenek@apple.com> Add a new BFS GRWorkList and make it the default worklist model for
GRCoreEngine. This tends to result in shorter paths for pathological cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRWorkList.h
8ff59e832591eaa5f3be9885857e71bbcb3da77c 02-May-2009 Ted Kremenek <kremenek@apple.com> Add a new BFS GRWorkList and make it the default worklist model for
GRCoreEngine. This tends to result in shorter paths for pathological cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRWorkList.h
9f4aef73b4f98d9ca8650575a5934f89c4fe44ec 02-May-2009 Anders Carlsson <andersca@mac.com> Rename CXXExprWithCleanup to CXXExprWithTemporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
2d44e8a41de8a33c0f04ac198714f71dc841bab0 02-May-2009 Anders Carlsson <andersca@mac.com> Rename CXXExprWithCleanup to CXXExprWithTemporaries.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
a4eb3e7ad4c72d6783145f023a2cdea9b9421a18 01-May-2009 Douglas Gregor <doug.gregor@gmail.com> Implement -fmessage-length=N, which word-wraps diagnostics to N columns.

Also, put a line of whitespace between the diagnostic and the source
code/caret line when the start of the actual source code text lines up
(or nearly lines up) with the most recent line of the diagnostic. For
example, here it's okay for the last line of the diagnostic to be
(vertically) next to the source line, because there is horizontal
whitespace to separate them:

decl-expr-ambiguity.cpp:12:16: error: function-style cast to a builtin
type can only take one argument
typeof(int)(a,5)<<a;

However, here is a case where we need the vertical separation (since
there is no horizontal separation):

message-length.c:10:46: warning: incompatible pointer types initializing 'void
(int, float, char, float)', expected 'int (*)(int, float, short,
float)'

int (*fp1)(int, float, short, float) = f;

This is part one of <rdar://problem/6711348>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70578 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
rontend/TextDiagnosticPrinter.h
fffd93f38340d4d2ca7ee78a8c91c890b2ff3fa0 01-May-2009 Douglas Gregor <dgregor@apple.com> Implement -fmessage-length=N, which word-wraps diagnostics to N columns.

Also, put a line of whitespace between the diagnostic and the source
code/caret line when the start of the actual source code text lines up
(or nearly lines up) with the most recent line of the diagnostic. For
example, here it's okay for the last line of the diagnostic to be
(vertically) next to the source line, because there is horizontal
whitespace to separate them:

decl-expr-ambiguity.cpp:12:16: error: function-style cast to a builtin
type can only take one argument
typeof(int)(a,5)<<a;

However, here is a case where we need the vertical separation (since
there is no horizontal separation):

message-length.c:10:46: warning: incompatible pointer types initializing 'void
(int, float, char, float)', expected 'int (*)(int, float, short,
float)'

int (*fp1)(int, float, short, float) = f;

This is part one of <rdar://problem/6711348>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70578 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
rontend/TextDiagnosticPrinter.h
7265ef3835d81d9bf18beb2c4c2b896733459995 01-May-2009 Eli Friedman <eli.friedman@gmail.com> Add support for -Wno-format-zero-length.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e917aa31d3e042e135abce4b6b183eb27f58b79a 01-May-2009 Eli Friedman <eli.friedman@gmail.com> Add support for -Wno-format-zero-length.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70570 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
970e56cbb567add16945688cff5404fb2c30aea9 01-May-2009 Eli Friedman <eli.friedman@gmail.com> PR4013 and PR4105: pointer-like types can only be cast to/from integers
and other pointer-like types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
41826bb59d2ef5e8c8a4a0cd2b06a7a011b67b4d 01-May-2009 Eli Friedman <eli.friedman@gmail.com> PR4013 and PR4105: pointer-like types can only be cast to/from integers
and other pointer-like types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70531 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c181f5a19dd78208c6632dfd59f92a7b7ea7e9b9 30-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Use of super class ivar to synthesize property is back to being error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70514 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2f2c16047a0165cbfbdba84c74bd4fb814d7c3e 30-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Use of super class ivar to synthesize property is back to being error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70514 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
74942cde3da623741b60c2524fc44ef0cb35724b 30-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Make a home for exception specs in the AST. Now Sema can hook them up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70506 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
7b9a2ee5a4393001bdec7dec841eb7c811da492c 30-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Make a home for exception specs in the AST. Now Sema can hook them up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70506 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
6f05fb06f19a9a11cd3c9c440b3309d8e3efdd5b 30-Apr-2009 Ted Kremenek <kremenek@apple.com> Allow attributes 'objc_ownership_retain' and 'objc_ownership_release' to be
applied to ObjCMethodDecls, not just parameters. This allows one to specific
side-effects on the receiver of a message expression. No checker support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
72c9dcd9dbc1ee65d7863d1ea04c2cc928007cc9 30-Apr-2009 Ted Kremenek <kremenek@apple.com> Allow attributes 'objc_ownership_retain' and 'objc_ownership_release' to be
applied to ObjCMethodDecls, not just parameters. This allows one to specific
side-effects on the receiver of a message expression. No checker support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70505 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b0e6da5e1448a5feac5a9f79e1e3a35b68807c7 30-Apr-2009 Ted Kremenek <kremenek@apple.com> Hook up Sema support for attributes on Objective-C method declarations that
appear between the return type and the selector. This is a separate code path
from regular attribute processing, as we only want to (a) accept only a specific
set of attributes in this place and (b) want to distinguish to clients the
context in which an attribute was added to an ObjCMethodDecl.

Currently, the attribute 'objc_ownership_returns' is the only attribute that
uses this new feature. Shortly I will add a warning for 'objc_ownership_returns'
to be placed at the end of a method declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70504 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b27d1174673d457e2ee7906c14a92bba35242cea 30-Apr-2009 Ted Kremenek <kremenek@apple.com> Hook up Sema support for attributes on Objective-C method declarations that
appear between the return type and the selector. This is a separate code path
from regular attribute processing, as we only want to (a) accept only a specific
set of attributes in this place and (b) want to distinguish to clients the
context in which an attribute was added to an ObjCMethodDecl.

Currently, the attribute 'objc_ownership_returns' is the only attribute that
uses this new feature. Shortly I will add a warning for 'objc_ownership_returns'
to be placed at the end of a method declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70504 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bb7e290fba3de10a6231359d0202427af9978581 30-Apr-2009 Steve Naroff <snaroff@apple.com> Name the "return-type" DiagGroup and reference it in a few places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
940ab971c580ca03da2e68ec92b9c0f7acfe6988 30-Apr-2009 Steve Naroff <snaroff@apple.com> Name the "return-type" DiagGroup and reference it in a few places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70500 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3cd4584d333ed18e5009c6e1ed55a0714f074574 30-Apr-2009 Steve Naroff <snaroff@apple.com> Warn about invalid return statements by default.

This fixes <rdar://problem/6839489> 10A345: Clang does not warm about mismatched returns (void return from a bool function)

Will implement -Wreturn-type, -Wno-return-type in another commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2c0ccd045514ae4dc951fb45b7c29216ba109bf7 30-Apr-2009 Steve Naroff <snaroff@apple.com> Warn about invalid return statements by default.

This fixes <rdar://problem/6839489> 10A345: Clang does not warm about mismatched returns (void return from a bool function)

Will implement -Wreturn-type, -Wno-return-type in another commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
441a56966b66468c53659e192303d59464044667 30-Apr-2009 Chris Lattner <sabre@nondot.org> accept and ignore two new warning specifiers. -Wno-discard-qual seems easy
to hook up if someone was interested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
09c43d1e4dc7e0d2e80f2158bd1a03f7c793eb4f 30-Apr-2009 Chris Lattner <sabre@nondot.org> accept and ignore two new warning specifiers. -Wno-discard-qual seems easy
to hook up if someone was interested.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
6cc7e415d42291bf01e0295d9d6344e106613c48 30-Apr-2009 Chris Lattner <sabre@nondot.org> initial support for __[u]int128_t, which should be basically
compatible with VC++ and GCC. The codegen/mangling angle hasn't
been fully ironed out yet. Note that we accept int128_t even in
32-bit mode, unlike gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
rontend/PCHBitCodes.h
2df9ced9fd1e8c7d7b38443db07e0e811de22571 30-Apr-2009 Chris Lattner <sabre@nondot.org> initial support for __[u]int128_t, which should be basically
compatible with VC++ and GCC. The codegen/mangling angle hasn't
been fully ironed out yet. Note that we accept int128_t even in
32-bit mode, unlike gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
rontend/PCHBitCodes.h
64bce08a34d6925f0c4fe4c9c42cbe0e6f6bcd0a 30-Apr-2009 Mike Stump <mrs@apple.com> Sema checking for incorrect placement of __block. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ea000bf621552252e41fc870346e7048646709dc 30-Apr-2009 Mike Stump <mrs@apple.com> Sema checking for incorrect placement of __block. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70452 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ec9294532291dcd5d5ab9248c79bb420d05e7066 30-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make DISABLE_SMART_POINTERS work, again

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70443 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
e06600c5cf184775d2161a4f7b5557a0d13c8653 30-Apr-2009 Douglas Gregor <dgregor@apple.com> Make DISABLE_SMART_POINTERS work, again

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70443 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
745bc3af4f61d7ee1df002b9cb71ab3412cfa4f3 30-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Change to warning when property uses an ivar in super class
in an @synthesize diective, as it breaks few projects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9cd6f0f58570a98a6d6acee8803c73986c6846b4 30-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Change to warning when property uses an ivar in super class
in an @synthesize diective, as it breaks few projects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
144b06c28e50e3bdec286c4fc74c3edf5553f88e 30-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Implement semantic analysis for transparent unions. This is largely
based on a patch from Anders Johnsen. CodeGen support is incomplete,
in that we do not properly coerce to the first field's type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
0c74e8a4e8865ec9ebb8efc0af247a3c077236c4 30-Apr-2009 Douglas Gregor <dgregor@apple.com> Implement semantic analysis for transparent unions. This is largely
based on a patch from Anders Johnsen. CodeGen support is incomplete,
in that we do not properly coerce to the first field's type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
b8d8c4b797ae9dbc67c5af93b81aab696d4edfff 29-Apr-2009 Ted Kremenek <kremenek@apple.com> BugReporter/PathDiagnostics:
- Add an (optional) short description for BugReports for clients that want
to distinguish between long and short descriptions for bugs
- Make the bug report for VLA less obscene for Plist diagnostics by using
the short description


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70415 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
d49967f8764135ae65658e354b6d38e3637c9de3 29-Apr-2009 Ted Kremenek <kremenek@apple.com> BugReporter/PathDiagnostics:
- Add an (optional) short description for BugReports for clients that want
to distinguish between long and short descriptions for bugs
- Make the bug report for VLA less obscene for Plist diagnostics by using
the short description


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70415 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
115a0725f647accbecf08ccc0c920320c6531edb 29-Apr-2009 Mike Stump <mrs@apple.com> Sema and CodeGen support for attributes on blocks. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
19c30c00e5e01e4608a43c7deb504f343f09e46d 29-Apr-2009 Mike Stump <mrs@apple.com> Sema and CodeGen support for attributes on blocks. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0543e8465bd59e7f43f8626165e4b5840bd79fe6 29-Apr-2009 Chris Lattner <sabre@nondot.org> accept and ignore two new warning options. PR410[45]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
8901139cb6fb9af7fe36157500d44df405a0bc0b 29-Apr-2009 Chris Lattner <sabre@nondot.org> accept and ignore two new warning options. PR410[45]


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70392 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
1653e238707eef9cbcc85109af0fa66aeb6593a8 29-Apr-2009 Eli Friedman <eli.friedman@gmail.com> PR4103: improve source location information for members of the current
class. This isn't perfect, but it's a big improvement over not having
any location information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
72527137c521ad9330ecb81ccd841159719dc8cd 29-Apr-2009 Eli Friedman <eli.friedman@gmail.com> PR4103: improve source location information for members of the current
class. This isn't perfect, but it's a big improvement over not having
any location information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
35f3a5b8d2e4314171e6e3fff96847e765cbceb1 29-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Have the parser communicate the exception specification to the action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70389 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
7dc813462dd9fd3f6f4296f896a12de14264fef8 29-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Have the parser communicate the exception specification to the action.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70389 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
8ba7cc776433a5d7f3f83ae63ac2a1a04cfdb972 29-Apr-2009 Chris Lattner <sabre@nondot.org> implement -Wformat-security properly, which is enabled by default.
This enables one specific class of non-literal format warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70368 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
655f141f4d4c92eeebcc880211313e84c0a8b2f2 29-Apr-2009 Chris Lattner <sabre@nondot.org> implement -Wformat-security properly, which is enabled by default.
This enables one specific class of non-literal format warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70368 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
f970c3984907ceae1c90a84db9e17f1eb1987e53 29-Apr-2009 Chris Lattner <sabre@nondot.org> add a bunch of individual warnings to -Wformat (which is
on by default).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8746414a93c2d7f73c1ae50a8d005de7ee0743d6 29-Apr-2009 Chris Lattner <sabre@nondot.org> add a bunch of individual warnings to -Wformat (which is
on by default).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e588be9e0053c38508a1eec59b37ce257ad227f7 29-Apr-2009 Chris Lattner <sabre@nondot.org> Wire up -Wformat=2 and -Wformat-extra-args


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
5f6cfd22f6b59590859acda48a7d55bca9578298 29-Apr-2009 Chris Lattner <sabre@nondot.org> Wire up -Wformat=2 and -Wformat-extra-args


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70364 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
3ce13a7ee9a1b2339fb0cc1bd8c444111d82532d 29-Apr-2009 Chris Lattner <sabre@nondot.org> -Wformat should depend on format-extra-args so that -Wformat implies
the extra argument warnings, and -Wformat -Wno-format-extra-args
turns on -Wformat but not the extra-args warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
02c2e1fef53183a37cb9128863edbf620688abc3 29-Apr-2009 Chris Lattner <sabre@nondot.org> -Wformat should depend on format-extra-args so that -Wformat implies
the extra argument warnings, and -Wformat -Wno-format-extra-args
turns on -Wformat but not the extra-args warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
ea9c2eb0f4b2fdb85d1a9d735e76a2afe6b66e53 29-Apr-2009 Chris Lattner <sabre@nondot.org> tweak warning options to be more like gcc:

1. All all variants of -Wformat*, make them imply -Wformat. GCC warns
if you use -Wformatfoo without -Wformat. We just make one imply the
other.
2. Make -Wformat-nonliteral default to off, like gcc. It is an incredible
nuisance.
3. Accept but currently ignore -Wformat-extra-args.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
be8434a0cc0355f652d59553f8aaa3c88bfe3c94 29-Apr-2009 Chris Lattner <sabre@nondot.org> tweak warning options to be more like gcc:

1. All all variants of -Wformat*, make them imply -Wformat. GCC warns
if you use -Wformatfoo without -Wformat. We just make one imply the
other.
2. Make -Wformat-nonliteral default to off, like gcc. It is an incredible
nuisance.
3. Accept but currently ignore -Wformat-extra-args.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
e81596c5342ef612bc6fe8306c72be3cd3c1f9b4 29-Apr-2009 Mike Stump <mrs@apple.com> Implement sema checking for noreturn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70353 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f7c41dab1a8de29b0991e853b8822bb0d1ddc01c 29-Apr-2009 Mike Stump <mrs@apple.com> Implement sema checking for noreturn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70353 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ff8648dfaac35f96f8b59bf84ac2cd60cbe9d995 29-Apr-2009 Ted Kremenek <kremenek@apple.com> Implement ownership attribute 'objc_ownership_make_collectable'. This allows one
to add 'CFMakeCollectable' semantics to a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
bf20dbdec6ab7d02e96fac937ad57b2b95c0675c 29-Apr-2009 Ted Kremenek <kremenek@apple.com> Implement ownership attribute 'objc_ownership_make_collectable'. This allows one
to add 'CFMakeCollectable' semantics to a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
7b6d46902216ac0c5a845d7262c9278def70ec7d 29-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -Wendif-labels, PR4101


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70335 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
0292d99c51ea4dc8737cb7fc5909ade011d374b3 29-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -Wendif-labels, PR4101


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70335 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
9ea9b16b3a393848e22a5618e6ce5e09335ec2ec 29-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make all PCH-incompatibility warnings into errors, and abort
compilation if the user requested a PCH file but no such PCH file
exists.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
1ab86ac92282a92ab847e2ea36c124152c52911d 29-Apr-2009 Douglas Gregor <dgregor@apple.com> Make all PCH-incompatibility warnings into errors, and abort
compilation if the user requested a PCH file but no such PCH file
exists.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70332 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
eae710dbfdd50a4e38a16abab06cebaec36f733a 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make the PCH reader use the diagnostics system for its complaints.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
a02b147b66ff9f1a22bac4ec7fd1b0d54a40e5bf 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Make the PCH reader use the diagnostics system for its complaints.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
78d2a5c808f1c8c1d0f58caec233773d176f5126 28-Apr-2009 Chris Lattner <sabre@nondot.org> Implement -Wfour-char-constants, which is an extension, not an extwarn,
and apparently not part of -Wall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
e3ad881e4e9620e941dabd4e78dacdb028b85682 28-Apr-2009 Chris Lattner <sabre@nondot.org> Implement -Wfour-char-constants, which is an extension, not an extwarn,
and apparently not part of -Wall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70329 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
f061b6ef315877a8b87256134708256d1d86e9a4 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a typo noticed by Gabor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
13c8aa7a6c3605dd3c9588977b4809bb5128e6e0 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Fix a typo noticed by Gabor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70323 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
1c6d8cc2aa707c53740b36f68e6905ec27d998d1 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Replace a lame fprintf with a slightly-less lame diagnostic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
af1795be18cbb522a8b45ca3664457f281ce348d 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Replace a lame fprintf with a slightly-less lame diagnostic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70322 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
9113781d8b352804637adcee35f508728db3000e 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Implement checking for macro definitions that occur on the command
line when using a PCH that were not provided when building the PCH
file. If those names were used as identifiers somewhere in the PCH
file, reject the PCH file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70321 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
92b059ea944adaa3e00bb53d63a09868a4752547 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Implement checking for macro definitions that occur on the command
line when using a PCH that were not provided when building the PCH
file. If those names were used as identifiers somewhere in the PCH
file, reject the PCH file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70321 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
32de63123fdd5d3a0bb1a552d8830eafb6150d4c 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Allow some differences between the predefines buffer used to build a
PCH file and the predefines buffer used when including the PCH
file. We (explicitly) detect conflicting macro definitions (rejecting
the PCH file) and about missing macro definitions (they'll be
automatically pulled from the PCH file anyway).

We're missing some checking to make sure that new macro definitions
won't have any impact on the PCH file itself (e.g., #define'ing an
identifier that the PCH file used).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
e721f95069d42b899c20c1caabdc6184dd42b820 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Allow some differences between the predefines buffer used to build a
PCH file and the predefines buffer used when including the PCH
file. We (explicitly) detect conflicting macro definitions (rejecting
the PCH file) and about missing macro definitions (they'll be
automatically pulled from the PCH file anyway).

We're missing some checking to make sure that new macro definitions
won't have any impact on the PCH file itself (e.g., #define'ing an
identifier that the PCH file used).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
19ab088b6a11bba6a8f4f2ff5167b040aed3f48c 28-Apr-2009 Chris Lattner <sabre@nondot.org> implement -Wmultichar


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
b77f41e66f736e9e67a9d39c47c747804b22c6b9 28-Apr-2009 Chris Lattner <sabre@nondot.org> implement -Wmultichar


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
3ad0ab6248ba0a250846e02a8e1cb7848b0afb29 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Fix additional issues pointed out in PR4088.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
8a31774e1e18ff08a5ce0486bdf1c7a51be7a1e8 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Fix additional issues pointed out in PR4088.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
67e1144edd7fde23b60c1b9359ac6160b50b837f 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Improve compatibility with GCC regarding inline semantics in GNU89
mode and in the presence of __gnu_inline__ attributes. This should fix
both PR3989 and PR4069.

As part of this, we now keep track of all of the attributes attached
to each declaration even after we've performed declaration
merging. This fixes PR3264.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70292 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
ST/Decl.h
9f9bf258f8ebae30bfb70feb9d797d6eb67b0460 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Improve compatibility with GCC regarding inline semantics in GNU89
mode and in the presence of __gnu_inline__ attributes. This should fix
both PR3989 and PR4069.

As part of this, we now keep track of all of the attributes attached
to each declaration even after we've performed declaration
merging. This fixes PR3264.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70292 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
ST/Decl.h
26583b607ad9493cb75d245e9979063505a30430 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused LangOptions NoExtensions and Boolean.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
c71133f0cf820f0708b9dd141563b910530498c1 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused LangOptions NoExtensions and Boolean.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e695d8c916919c401f324e02d1c1b3675ddf9f2c 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Simplify the scheme used for keywords, and change the classification
scheme to be more useful.

The new scheme introduces a set of categories that should be more
readable, and also reflects what we want to consider as an extension
more accurately. Specifically, it makes the "what is a keyword"
determination accurately reflect whether the keyword is a GNU or
Microsoft extension.

I also introduced separate flags for keyword aliases; this is useful
because the classification of the aliases is mostly unrelated to the
classification of the original keyword.

This patch treats anything that's in the implementation
namespace (prefixed with "__", or "_X" where "X" is any upper-case
letter) as a keyword without marking it as an extension. This is
consistent with the standards in that an implementation is allowed to define
arbitrary extensions in the implementation namespace without violating
the standard. This gets rid of all the nasty "extension used" warnings
for stuff like __attribute__ in -pedantic mode. We still warn for
extensions outside of the the implementation namespace, like typeof.
If someone wants to implement -Wextensions or something like that, we
could add additional information to the keyword table.

This also removes processing for the unused "Boolean" language option;
such an extension isn't supported on any other C implementation, so I
don't see any point to adding it.

The changes to test/CodeGen/inline.c are required because previously, we
weren't actually disabling the "inline" keyword in -std=c89 mode.

I'll remove Boolean and NoExtensions from LangOptions in a follow-up
commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
eb32fde032a250091134db56a3aeaea6b09f6594 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Simplify the scheme used for keywords, and change the classification
scheme to be more useful.

The new scheme introduces a set of categories that should be more
readable, and also reflects what we want to consider as an extension
more accurately. Specifically, it makes the "what is a keyword"
determination accurately reflect whether the keyword is a GNU or
Microsoft extension.

I also introduced separate flags for keyword aliases; this is useful
because the classification of the aliases is mostly unrelated to the
classification of the original keyword.

This patch treats anything that's in the implementation
namespace (prefixed with "__", or "_X" where "X" is any upper-case
letter) as a keyword without marking it as an extension. This is
consistent with the standards in that an implementation is allowed to define
arbitrary extensions in the implementation namespace without violating
the standard. This gets rid of all the nasty "extension used" warnings
for stuff like __attribute__ in -pedantic mode. We still warn for
extensions outside of the the implementation namespace, like typeof.
If someone wants to implement -Wextensions or something like that, we
could add additional information to the keyword table.

This also removes processing for the unused "Boolean" language option;
such an extension isn't supported on any other C implementation, so I
don't see any point to adding it.

The changes to test/CodeGen/inline.c are required because previously, we
weren't actually disabling the "inline" keyword in -std=c89 mode.

I'll remove Boolean and NoExtensions from LangOptions in a follow-up
commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
458287df784699a4d283ae4479f5d3988f46317c 28-Apr-2009 Mike Stump <mrs@apple.com> Don't allow blocks to be declared as returning an array. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4eeab84b6527feba5c63b819a74417677c9977a0 28-Apr-2009 Mike Stump <mrs@apple.com> Don't allow blocks to be declared as returning an array. Radar 6441502


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ca7cdcfd86e00775a907db955f78b6ff5e496a7d 28-Apr-2009 Ted Kremenek <kremenek@apple.com> CFG:
- Add 'LoopTarget' pointer field to CFGBlock. This records if the block is used
as the 'loop back' path back to the head of a loop.
- For ForStmt, encode the loop back target as the increment code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70274 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
3575f84e459033d6427b84b4b795b22c85c4d27d 28-Apr-2009 Ted Kremenek <kremenek@apple.com> CFG:
- Add 'LoopTarget' pointer field to CFGBlock. This records if the block is used
as the 'loop back' path back to the head of a loop.
- For ForStmt, encode the loop back target as the increment code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70274 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
cdf5974cf74ba53f296cc1f51954d4a53cf1dc8d 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> A couple more small changes which are probably required for Cygwin
builds to work (PR4088).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
b0156ea412df1c2eb12d620054a404da71784cf5 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> A couple more small changes which are probably required for Cygwin
builds to work (PR4088).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
28bfa2ad282b02a1ecd1166892b5edf411dc5534 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Attempt to fix reported build error on Cygwin, PR4088.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70268 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
4e14823581407a5c7aa78c42b7af387a6c2322a0 28-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Attempt to fix reported build error on Cygwin, PR4088.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70268 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
b706474bce78d4c9349eca8699401495f3425fe9 28-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add a header containing the Clang version; make the driver use this
Clang version value rather than hard-coding "1.0".

Add PCH and Clang version information into the PCH file. Reject PCH
files with the wrong version information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/Version.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
ab41e63821dc60ad144d0684df8d79a9eef86b75 28-Apr-2009 Douglas Gregor <dgregor@apple.com> Add a header containing the Clang version; make the driver use this
Clang version value rather than hard-coding "1.0".

Add PCH and Clang version information into the PCH file. Reject PCH
files with the wrong version information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
asic/Version.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
270d29a011a26eb1470fe0124007cbc9e173692c 27-Apr-2009 Chris Lattner <sabre@nondot.org> Teach PCH that ASTContext is optional. Move -parse-noop and -Eonly (so far)
processing to after PCH is loaded. -Eonly and -parse-noop are close to working
with PCH now but are not quite there yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70257 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
d1d64a027554b635d644957ef071ec04ea1f7063 27-Apr-2009 Chris Lattner <sabre@nondot.org> Teach PCH that ASTContext is optional. Move -parse-noop and -Eonly (so far)
processing to after PCH is loaded. -Eonly and -parse-noop are close to working
with PCH now but are not quite there yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70257 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
3b1ef31607fd4abed5555c5e4a04b31337518015 27-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Track down return statements in the handlers of a function-try-block of constructors. Meh ...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
13e8854b186265a601545ca88f8f495fb3fb5654 27-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Track down return statements in the handlers of a function-try-block of constructors. Meh ...

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
578851959507ebbfcbfc14a795f0ec9bda8a4462 27-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Be more careful in our teardown of the PCHReader after deciding to
ignore a PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2bf1eb09f06a9792fa94dff0703f2aa2c4bace2a 27-Apr-2009 Douglas Gregor <dgregor@apple.com> Be more careful in our teardown of the PCHReader after deciding to
ignore a PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9949a5e6e5218e31c460b1d48009c6c0c163659a 27-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Improve validation of C++ exception handling: diagnose throwing incomplete types and jumps into protected try-catch scopes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70242 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
972041f45bdf8df7ea447221292d7827466ba94b 27-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Improve validation of C++ exception handling: diagnose throwing incomplete types and jumps into protected try-catch scopes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70242 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b36b20d3f53ca48e995a8810dfcc0c6f205699ea 27-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add Sema::ExtVectorDecls and Sema::ObjCCategoryImpls to the PCH file. Since these vectors are very, very rarely used and, when used in headers, and even when used are relatively small, we load them eagerly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70240 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
b81c17092039f39be60e9656a37cffbdf2e2c783 27-Apr-2009 Douglas Gregor <dgregor@apple.com> Add Sema::ExtVectorDecls and Sema::ObjCCategoryImpls to the PCH file. Since these vectors are very, very rarely used and, when used in headers, and even when used are relatively small, we load them eagerly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70240 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
203169f80fe7bb3fbc52921019983206230afc01 27-Apr-2009 Ted Kremenek <kremenek@apple.com> Add two new checker-specific attributes: 'objc_ownership_release' and
'objc_ownership_cfrelease'. These are the 'release' equivalents of
'objc_ownership_retain' and 'objc_ownership_cfretain' respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
c6a59e4bf225c7f8152faca72897321f0f6cabd1 27-Apr-2009 Ted Kremenek <kremenek@apple.com> Add two new checker-specific attributes: 'objc_ownership_release' and
'objc_ownership_cfrelease'. These are the 'release' equivalents of
'objc_ownership_retain' and 'objc_ownership_cfretain' respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
93307da4b35dc38cdde60a3cffdb326a3f78fffd 27-Apr-2009 Chris Lattner <sabre@nondot.org> shrink SOURCE_LOCATION_OFFSETS to use 4-byte entries instead of 8-byte
entries, shaving 100K off the PCH file for cocoa.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70228 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
090d9b53e32bb30d9e74de895bb59b409bd49e00 27-Apr-2009 Chris Lattner <sabre@nondot.org> shrink SOURCE_LOCATION_OFFSETS to use 4-byte entries instead of 8-byte
entries, shaving 100K off the PCH file for cocoa.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70228 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
6cc5d1953169b8efbb5a86fff4d2b18de3b77579 27-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Implement caching of stat() calls for precompiled headers, which is
essentially the same thing we do with pretokenized headers. stat()
caching improves performance of the Cocoa-prefixed "Hello, World" by
45%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
4fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57 27-Apr-2009 Douglas Gregor <dgregor@apple.com> Implement caching of stat() calls for precompiled headers, which is
essentially the same thing we do with pretokenized headers. stat()
caching improves performance of the Cocoa-prefixed "Hello, World" by
45%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
15830ed32a2bdfd4d16bdedd4f155d013a5f6720 27-Apr-2009 Ted Kremenek <kremenek@apple.com> Add new checker-specific attribute 'objc_ownership_cfretain'. This is the same
as 'objc_ownership_cfretain' except that the method acts like a CFRetain instead
of a [... retain] (important in GC modes). Checker support is wired up, but
currently only for Objective-C message expressions (not function calls).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
4064de959853503d9b87065adac1b277fff8af20 27-Apr-2009 Ted Kremenek <kremenek@apple.com> Add new checker-specific attribute 'objc_ownership_cfretain'. This is the same
as 'objc_ownership_cfretain' except that the method acts like a CFRetain instead
of a [... retain] (important in GC modes). Checker support is wired up, but
currently only for Objective-C message expressions (not function calls).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
ea332f372ec042d2de10c6939972199210d8b08b 27-Apr-2009 Chris Lattner <sabre@nondot.org> encode the type and decl offsets with 32-bits for entry instead
of 64 bits. This cuts 400KB off the PCH file for cocoa (7.1 ->
6.7MB):

Before:

Record Histogram:
Count # Bits % Abv Record Kind
1 14296 SOURCE_LOCATION_PRELOADS
1 1699598 100.00 SOURCE_LOCATION_OFFSETS
1 1870766 100.00 METHOD_POOL
1 212988 100.00 SELECTOR_OFFSETS
1 88 STATISTICS
1 106 SPECIAL_TYPES
1 18033788 100.00 IDENTIFIER_TABLE
1 1806428 100.00 IDENTIFIER_OFFSET
1 170 100.00 TARGET_TRIPLE
1 268 LANGUAGE_OPTIONS
1 5168252 100.00 DECL_OFFSET
1 952700 100.00 TYPE_OFFSET

After:

Record Histogram:
Count # Bits % Abv Record Kind
1 14296 SOURCE_LOCATION_PRELOADS
1 1699598 100.00 SOURCE_LOCATION_OFFSETS
1 1870766 100.00 METHOD_POOL
1 212988 100.00 SELECTOR_OFFSETS
1 88 STATISTICS
1 106 SPECIAL_TYPES
1 18033788 100.00 IDENTIFIER_TABLE
1 1806428 100.00 IDENTIFIER_OFFSET
1 170 100.00 TARGET_TRIPLE
1 268 LANGUAGE_OPTIONS
1 2584156 100.00 DECL_OFFSET
1 476380 100.00 TYPE_OFFSET



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70216 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
c732f5a4ae13a75b5dfa8f640a50f94db2d3092c 27-Apr-2009 Chris Lattner <sabre@nondot.org> encode the type and decl offsets with 32-bits for entry instead
of 64 bits. This cuts 400KB off the PCH file for cocoa (7.1 ->
6.7MB):

Before:

Record Histogram:
Count # Bits % Abv Record Kind
1 14296 SOURCE_LOCATION_PRELOADS
1 1699598 100.00 SOURCE_LOCATION_OFFSETS
1 1870766 100.00 METHOD_POOL
1 212988 100.00 SELECTOR_OFFSETS
1 88 STATISTICS
1 106 SPECIAL_TYPES
1 18033788 100.00 IDENTIFIER_TABLE
1 1806428 100.00 IDENTIFIER_OFFSET
1 170 100.00 TARGET_TRIPLE
1 268 LANGUAGE_OPTIONS
1 5168252 100.00 DECL_OFFSET
1 952700 100.00 TYPE_OFFSET

After:

Record Histogram:
Count # Bits % Abv Record Kind
1 14296 SOURCE_LOCATION_PRELOADS
1 1699598 100.00 SOURCE_LOCATION_OFFSETS
1 1870766 100.00 METHOD_POOL
1 212988 100.00 SELECTOR_OFFSETS
1 88 STATISTICS
1 106 SPECIAL_TYPES
1 18033788 100.00 IDENTIFIER_TABLE
1 1806428 100.00 IDENTIFIER_OFFSET
1 170 100.00 TARGET_TRIPLE
1 268 LANGUAGE_OPTIONS
1 2584156 100.00 DECL_OFFSET
1 476380 100.00 TYPE_OFFSET



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70216 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
cd4da47cb7b56df43204438af87a838b91bc3e4f 27-Apr-2009 Chris Lattner <sabre@nondot.org> add an abbreviation for common PARM_VAR_DECL. All but 9 of the
parm var decls in leopard cocoa.h end up using this abbreviation,
which shrinks the bitcode file by about 50K: 7217736->7167120.

Before:
Block ID #12 (DECLS_BLOCK):
Num Instances: 1
Total Size: 2.23595e+07b/2.79494e+06B/698736W
% of file: 38.7233
Num SubBlocks: 0
Num Abbrevs: 0
Num Records: 139387
% Abbrev Recs: 0

After:
Block ID #12 (DECLS_BLOCK):
Num Instances: 1
Total Size: 2.02405e+07b/2.53006e+06B/632516W
% of file: 35.301
Num SubBlocks: 0
Num Abbrevs: 1
Num Records: 139387
% Abbrev Recs: 19.2902



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHWriter.h
ea5ce4705df0743093925585d8edc80e0d8fe3ff 27-Apr-2009 Chris Lattner <sabre@nondot.org> add an abbreviation for common PARM_VAR_DECL. All but 9 of the
parm var decls in leopard cocoa.h end up using this abbreviation,
which shrinks the bitcode file by about 50K: 7217736->7167120.

Before:
Block ID #12 (DECLS_BLOCK):
Num Instances: 1
Total Size: 2.23595e+07b/2.79494e+06B/698736W
% of file: 38.7233
Num SubBlocks: 0
Num Abbrevs: 0
Num Records: 139387
% Abbrev Recs: 0

After:
Block ID #12 (DECLS_BLOCK):
Num Instances: 1
Total Size: 2.02405e+07b/2.53006e+06B/632516W
% of file: 35.301
Num SubBlocks: 0
Num Abbrevs: 1
Num Records: 139387
% Abbrev Recs: 19.2902



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHWriter.h
32e231c5db47643c2d0b131ce193289613b3f361 27-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Load most of the source manager's information lazily from the PCH
file. In particular, only eagerly load source location entries for
files and for the predefines buffer. Other buffers and
macro-instantiation source location entries are loaded lazily.

With the Cocoa-prefixed "Hello, World", we only load 815/26555 source
location entities. This halves the amount of user time we spend in
this "Hello, World" program with -fsyntax-only (down to .007s).

This optimization is part 1 of 2 for the source manager. This
eliminates most of the user time in loading a PCH file. We still spend
too much time initialize File structures (especially in the calls to
stat), so we need to either make the loading of source location
entries for files lazy or import the stat cache from the PTH
implementation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70196 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
7f94b0b0c6791013d2f72ced9b4bedd3b23673a6 27-Apr-2009 Douglas Gregor <dgregor@apple.com> Load most of the source manager's information lazily from the PCH
file. In particular, only eagerly load source location entries for
files and for the predefines buffer. Other buffers and
macro-instantiation source location entries are loaded lazily.

With the Cocoa-prefixed "Hello, World", we only load 815/26555 source
location entities. This halves the amount of user time we spend in
this "Hello, World" program with -fsyntax-only (down to .007s).

This optimization is part 1 of 2 for the source manager. This
eliminates most of the user time in loading a PCH file. We still spend
too much time initialize File structures (especially in the calls to
stat), so we need to either make the loading of source location
entries for files lazy or import the stat cache from the PTH
implementation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70196 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
0526d1a8f431f3adeda122ca7940e9827e19f369 27-Apr-2009 Chris Lattner <sabre@nondot.org> unclone SavedStreamPosition


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70192 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
02602be3ccc3b29da5b91d2502c3419404992409 27-Apr-2009 Chris Lattner <sabre@nondot.org> unclone SavedStreamPosition


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70192 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
3ef219654679759209eb61e7ac047f2ff1038e27 27-Apr-2009 Chris Lattner <sabre@nondot.org> read all decls (and attributes and stmts/exprs referenced by the decl)
from the DeclsCursor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70190 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
da93061f56d5820725b01a140879d047554e7d32 27-Apr-2009 Chris Lattner <sabre@nondot.org> read all decls (and attributes and stmts/exprs referenced by the decl)
from the DeclsCursor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70190 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
77055f6ac2f8f9975ce75657b6719eca7500fc17 27-Apr-2009 Chris Lattner <sabre@nondot.org> rename GetStmt -> GetDeclStmt to make it clear that the stmt read
is part of a decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExternalASTSource.h
rontend/PCHReader.h
887e2b375fc5e00084ec7bf3dd050c2ca399a6d2 27-Apr-2009 Chris Lattner <sabre@nondot.org> rename GetStmt -> GetDeclStmt to make it clear that the stmt read
is part of a decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70189 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExternalASTSource.h
rontend/PCHReader.h
3282c39104c4c3618151e31715f0253668ad7034 27-Apr-2009 Chris Lattner <sabre@nondot.org> change the interface to ReadStmt to force clients to pass a cursor in to read from.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70188 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
52e97d1afc98cf4cf0a6cb8f43769dfd8acbab20 27-Apr-2009 Chris Lattner <sabre@nondot.org> change the interface to ReadStmt to force clients to pass a cursor in to read from.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70188 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
283c061970f55172d62ef6505b12789397de8217 27-Apr-2009 Chris Lattner <sabre@nondot.org> split decl reading out to its own PCHReaderDecl.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70187 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
698f925dedd956cf7c2d7f77ba6192eb04b31e60 27-Apr-2009 Chris Lattner <sabre@nondot.org> split decl reading out to its own PCHReaderDecl.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70187 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
095479470190b1e987673f2164206c9987041dbf 27-Apr-2009 Chris Lattner <sabre@nondot.org> split stmt/expr deserialization out to PCHReaderStmt.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70186 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
4c6f952b70abd69e52fa567393c60295edb8a1a5 27-Apr-2009 Chris Lattner <sabre@nondot.org> split stmt/expr deserialization out to PCHReaderStmt.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70186 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
4b89fff51d907afc08ab306f0b1a62b89213773f 27-Apr-2009 Chris Lattner <sabre@nondot.org> rdar://6827200 - [sema] reject statically allocated arrays of interface types

Upgrade "array of interface" warning to an error. In addition to being a
terrible idea, this crashes codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c7c11b1ba6a110f2416889cc3576fe33277b2a33 27-Apr-2009 Chris Lattner <sabre@nondot.org> rdar://6827200 - [sema] reject statically allocated arrays of interface types

Upgrade "array of interface" warning to an error. In addition to being a
terrible idea, this crashes codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fdb164f9803ba8b0c8fb1a8c25069841c951183e 27-Apr-2009 Chris Lattner <sabre@nondot.org> Change our silencing of C typedef redefinition handling to what we had
before r69391: typedef redefinition is an error by default, but if
*either* the old or new definition are from a system header, we silence
it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d0359af5113c1936ff3f699c7d700adff59351f2 27-Apr-2009 Chris Lattner <sabre@nondot.org> Change our silencing of C typedef redefinition handling to what we had
before r69391: typedef redefinition is an error by default, but if
*either* the old or new definition are from a system header, we silence
it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4fc71ebb2461b40b9ccddd3ae4bec5148f491be3 27-Apr-2009 Chris Lattner <sabre@nondot.org> Set up DeclsCursor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70173 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
6367f6d06308ef29c28d2c1604ded45625caeec9 27-Apr-2009 Chris Lattner <sabre@nondot.org> Set up DeclsCursor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70173 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
8e520d2f8fea4250a6e725494cb7ed683fc5b667 27-Apr-2009 Chris Lattner <sabre@nondot.org> fix a comment by starting stmts/exprs after types and decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70171 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
5947ca29a619725b8a9ea2e58a6c9df9e7db139b 27-Apr-2009 Chris Lattner <sabre@nondot.org> fix a comment by starting stmts/exprs after types and decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70171 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ffe8f20706a5cde7fe914a454ab02815f26a082e 27-Apr-2009 Chris Lattner <sabre@nondot.org> make -Wtypedef-redefinition an extwarn instead of defaulting
to error, doing this breaks too many programs (e.g. Adium).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70170 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
04ad9b278c27319e873e9f6ccf991f68f5fcc8a3 27-Apr-2009 Chris Lattner <sabre@nondot.org> make -Wtypedef-redefinition an extwarn instead of defaulting
to error, doing this breaks too many programs (e.g. Adium).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70170 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
920673ad289a21844df0394223f94c89731f3f30 27-Apr-2009 Chris Lattner <sabre@nondot.org> make llvm-bcanalyzer dump out PCH files symbolically. We should probably
eventually get an option to turn this off, but it is nice for looking at
statistics. For example, the types block now prints:

Block ID #11 (TYPES_BLOCK_ID):
Num Instances: 1
Total Size: 895100b/111888B/27971.9W
% of file: 1.55801
Num SubBlocks: 0
Num Abbrevs: 0
Num Records: 14899
% Abbrev Recs: 0

Code Histogram:
5478 TYPE_FUNCTION_PROTO
2683 TYPE_TYPEDEF
2460 TYPE_POINTER
2047 TYPE_ENUM
1553 TYPE_RECORD
283 TYPE_CONSTANT_ARRAY
274 TYPE_OBJC_INTERFACE
76 TYPE_INCOMPLETE_ARRAY
10 TYPE_VECTOR
9 TYPE_OBJC_QUALIFIED_ID
5 TYPE_FUNCTION_NO_PROTO
5 TYPE_EXT_QUAL
3 TYPE_TYPEOF_EXPR



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70166 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
b145b1e9de866e79fb386e4a074dc0b41853acf3 27-Apr-2009 Chris Lattner <sabre@nondot.org> make llvm-bcanalyzer dump out PCH files symbolically. We should probably
eventually get an option to turn this off, but it is nice for looking at
statistics. For example, the types block now prints:

Block ID #11 (TYPES_BLOCK_ID):
Num Instances: 1
Total Size: 895100b/111888B/27971.9W
% of file: 1.55801
Num SubBlocks: 0
Num Abbrevs: 0
Num Records: 14899
% Abbrev Recs: 0

Code Histogram:
5478 TYPE_FUNCTION_PROTO
2683 TYPE_TYPEDEF
2460 TYPE_POINTER
2047 TYPE_ENUM
1553 TYPE_RECORD
283 TYPE_CONSTANT_ARRAY
274 TYPE_OBJC_INTERFACE
76 TYPE_INCOMPLETE_ARRAY
10 TYPE_VECTOR
9 TYPE_OBJC_QUALIFIED_ID
5 TYPE_FUNCTION_NO_PROTO
5 TYPE_EXT_QUAL
3 TYPE_TYPEOF_EXPR



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70166 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
ce066715485bcbaef75127726123466f334ae488 27-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Some fixes for PCH (de-)serialization of Objective-C AST nodes:
- Deal with the Receiver/ClassInfo shared storage in ObjCMessageExpr
- Implement PCH support for ImplicitParamDecl
- Fix the handling of the body of an ObjCMethodDecl
- Several cast -> cast_or_null fixes
- Make Selector::getIdentifierInfoForSlot work for 1-argument, NULL
selectors.
- Make Selector::getAsString() work with NULL selectors.
- Fix the names of VisitObjCAtCatchStmt and VisitObjCAtFinallyStmt
in the PCH reader and writer; these were never getting called.

At this point, all of the pch-test tests pass for C and Objective-C.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
asic/IdentifierTable.h
rontend/PCHBitCodes.h
405bad07391494d2eb025f8222c256c66b56e5f8 27-Apr-2009 Douglas Gregor <dgregor@apple.com> Some fixes for PCH (de-)serialization of Objective-C AST nodes:
- Deal with the Receiver/ClassInfo shared storage in ObjCMessageExpr
- Implement PCH support for ImplicitParamDecl
- Fix the handling of the body of an ObjCMethodDecl
- Several cast -> cast_or_null fixes
- Make Selector::getIdentifierInfoForSlot work for 1-argument, NULL
selectors.
- Make Selector::getAsString() work with NULL selectors.
- Fix the names of VisitObjCAtCatchStmt and VisitObjCAtFinallyStmt
in the PCH reader and writer; these were never getting called.

At this point, all of the pch-test tests pass for C and Objective-C.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70163 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
asic/IdentifierTable.h
rontend/PCHBitCodes.h
4203db84bf725b48a335c8008a60892b6b22953b 26-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Add a bit more handling for declarations like "int a[*]".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70162 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f91f5c8a66ffd812f61819836529f8ad437f7e2b 26-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Add a bit more handling for declarations like "int a[*]".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70162 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
587788acb2b8676ab19fa2d3ce36201b5ecd68b1 26-Apr-2009 Chris Lattner <sabre@nondot.org> Adjust to LLVM API changes that went into r70157.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70158 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
b9fa917e90d5d70d2d84c8cb7e7470b3828f957d 26-Apr-2009 Chris Lattner <sabre@nondot.org> Adjust to LLVM API changes that went into r70157.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70158 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
bc9ef257b887506228e86a7f4c933aecc8f554a9 26-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement function-try-blocks. However, there's a very subtle bug that I can't track down.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
asic/DiagnosticParseKinds.td
arse/Parser.h
d3a413d3b8eb39bcee5944bc545d9997c1abe492 26-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement function-try-blocks. However, there's a very subtle bug that I can't track down.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
asic/DiagnosticParseKinds.td
arse/Parser.h
5255e7ae5cde3039284ca49a4c03f7bd4869894f 26-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Remove getIntegerConstantExprValue in favor of using EvaluateAsInt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9a901bb63990574ff0bcc12ff851d7a71cff8ddb 26-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Remove getIntegerConstantExprValue in favor of using EvaluateAsInt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
79762bd703e2b04ae7b723e036ccc73760f4b1b4 26-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH read/write support for ObjC statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtObjC.h
rontend/PCHBitCodes.h
1eb5540760dc79502e32d4fe9c28217476ea14b9 26-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH read/write support for ObjC statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtObjC.h
rontend/PCHBitCodes.h
11970f9a95dbd1a5829148449a59e8c17c74dfc8 26-Apr-2009 Chris Lattner <sabre@nondot.org> implement PR4077: [Linux kernel] inscrutable error on inline asm input/output constraint mismatch
Before we emitted:

$ clang t.c -S -m64
llvm: error: Unsupported asm: input constraint with a matching output constraint of incompatible type!

Now we produce:
$ clang t.c -S -m64
t.c:5:40: error: unsupported inline asm: input with type 'unsigned long' matching output with type 'int'
asm volatile("foo " : "=a" (a) :"0" (b));
~~~ ~^~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70142 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
49ac88166d36f8c436780694f2ce955acde87c6a 26-Apr-2009 Chris Lattner <sabre@nondot.org> implement PR4077: [Linux kernel] inscrutable error on inline asm input/output constraint mismatch
Before we emitted:

$ clang t.c -S -m64
llvm: error: Unsupported asm: input constraint with a matching output constraint of incompatible type!

Now we produce:
$ clang t.c -S -m64
t.c:5:40: error: unsupported inline asm: input with type 'unsigned long' matching output with type 'int'
asm volatile("foo " : "=a" (a) :"0" (b));
~~~ ~^~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70142 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9eb395f7173bcde053cafd7b575f12f973f583b5 26-Apr-2009 Chris Lattner <sabre@nondot.org> in a tied operand, don't copy over the name or constraint string, just the flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70137 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
d68876176a0d2c19e3864e7d38f6036c4f72f0a3 26-Apr-2009 Chris Lattner <sabre@nondot.org> in a tied operand, don't copy over the name or constraint string, just the flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70137 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0cd323da459fbce4e19d1bbf2923afe80bb39e44 26-Apr-2009 Chris Lattner <sabre@nondot.org> pull operands names "[foo]" into ConstraintInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70136 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
2819fa85651526d59ade4fdc9da2cadd7b132973 26-Apr-2009 Chris Lattner <sabre@nondot.org> pull operands names "[foo]" into ConstraintInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70136 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9f8e50205526b02ae170d4e0f0b10bf0b3e66f87 26-Apr-2009 Chris Lattner <sabre@nondot.org> pull the constraint string into the ConstraintInfo struct
instead of passing it around in addition to it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
432c86969eced2ce658b3f3f2aa7407c8864f21b 26-Apr-2009 Chris Lattner <sabre@nondot.org> pull the constraint string into the ConstraintInfo struct
instead of passing it around in addition to it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c6fd00a463f00f05093394a3a5b28b3b43ef88ac 26-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Update StmtNodes.def with the new base class of CXXTemporaryObjectExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
e38be7c18249b03159fb052b785d0cf500eda693 26-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Update StmtNodes.def with the new base class of CXXTemporaryObjectExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
2c763c8688ce2be52f71245988a5f6f6ec3d879a 26-Apr-2009 Edwin Török <edwintorok@gmail.com> Add missing include. This fixes the build with gcc 4.3.3.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70115 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
5414fbac5f1749c0e85a8c4eeb5dfece59c3e30a 26-Apr-2009 Torok Edwin <edwintorok@gmail.com> Add missing include. This fixes the build with gcc 4.3.3.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70115 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c49cc1a57583d78783137ff7914526617d032af7 26-Apr-2009 Chris Lattner <sabre@nondot.org> change TargetInfo::ConstraintInfo to be a struct that contains
the enum along with some other data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70114 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
44def070435a2b5d67f0534f7a3a85a7389d60f2 26-Apr-2009 Chris Lattner <sabre@nondot.org> change TargetInfo::ConstraintInfo to be a struct that contains
the enum along with some other data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70114 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e43f09701f8318d58bbfb83b4f729f4ee71a550b 26-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> When writing a PCH file, write multiple type and declaration blocks as
necessary and iterate until all types and declarations have been
written. This reduces the Cocoa.h PCH file size by about 4% (since we
don't write types we don't need), and fixes problems where writing a
declaration generates a new type.

This doesn't seem to have any impact on performance either way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70109 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
366809a4e9340b3458b471e2294a75a9f09ea304 26-Apr-2009 Douglas Gregor <dgregor@apple.com> When writing a PCH file, write multiple type and declaration blocks as
necessary and iterate until all types and declarations have been
written. This reduces the Cocoa.h PCH file size by about 4% (since we
don't write types we don't need), and fixes problems where writing a
declaration generates a new type.

This doesn't seem to have any impact on performance either way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70109 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
8116b4b7d01741680a098d6dd17e47c1c9ac6713 26-Apr-2009 Chris Lattner <sabre@nondot.org> Split C++ statements out to their own file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70107 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
43c98041f7746f8d9445bdea873d86eca966b2b8 26-Apr-2009 Chris Lattner <sabre@nondot.org> Split C++ statements out to their own file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70107 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtCXX.h
4a9e927b03ecc65ca47cc4e1cd7b8d5c1fae1cf9 26-Apr-2009 Chris Lattner <sabre@nondot.org> split ObjC and C++ Statements out into their own headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtObjC.h
ST/StmtVisitor.h
nalysis/PathSensitive/GRExprEngine.h
16f0049415ec596504891259e2a83e19871c0d52 26-Apr-2009 Chris Lattner <sabre@nondot.org> split ObjC and C++ Statements out into their own headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtObjC.h
ST/StmtVisitor.h
nalysis/PathSensitive/GRExprEngine.h
0dbf5ce733d057ce23c805c4cbd9c97be8033770 26-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -std-default= option.
- This can be used to supply a default value for -std=; the idea is
that this can be used in conjunction with CCC_ADD_ARGS or
QA_OVERRIDE_GCC3_OPTIONS to change the default without having to
modify the build system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70102 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
a3ff202ee4fb21728e930d5d029ba4925129912c 26-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -std-default= option.
- This can be used to supply a default value for -std=; the idea is
that this can be used in conjunction with CCC_ADD_ARGS or
QA_OVERRIDE_GCC3_OPTIONS to change the default without having to
modify the build system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70102 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2e6c74cbe908e8055014845a2ff33cf2798fac60 26-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add option for AddAllArgsTranslated to control whether output argument
should be joined or separate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70101 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
4df9a664b7a0bfbd065253349cc5ead88b50b9a2 26-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add option for AddAllArgsTranslated to control whether output argument
should be joined or separate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70101 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
c0478bf9526f9b16badd70a153f86409ca8fd024 26-Apr-2009 Chris Lattner <sabre@nondot.org> implement PCH support for the rest of ExprObjC.h, including
the missing bits of ObjCMessageExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70100 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
0389e6bd0159bfdd08f7c50a37543b6e3adf0c33 26-Apr-2009 Chris Lattner <sabre@nondot.org> implement PCH support for the rest of ExprObjC.h, including
the missing bits of ObjCMessageExpr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70100 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
f6e1fb2133ca91ae39c2a7534387fc906df92405 26-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Don't read all of the records in the PCH file's preprocessor block,
most of which are ignored. Instead, move the __COUNTER__ value out to
a PCH-level record (since it is handled eagerly) and move the header
file information into the SourceManager block (which is also,
currently, loaded eagerly).

This results in another 17% performance improvement in the
Cocoa-prefixed "Hello, World" with PCH.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70097 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
2eafc1b56347f772729e082e6bac824b0ef1b585 26-Apr-2009 Douglas Gregor <dgregor@apple.com> Don't read all of the records in the PCH file's preprocessor block,
most of which are ignored. Instead, move the __COUNTER__ value out to
a PCH-level record (since it is handled eagerly) and move the header
file information into the SourceManager block (which is also,
currently, loaded eagerly).

This results in another 17% performance improvement in the
Cocoa-prefixed "Hello, World" with PCH.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70097 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
d461407636aaec91dcc76dcab2600b04857aa742 26-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4074: allow subscripting non-lvalue arrays in C90 mode.

I wasn't originally going to use this approach, but cases like
test/Sema/expr-comma.c make things difficult.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7c32f8e9be486f8f8ec2e75eba36903f7cb1b73a 26-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR4074: allow subscripting non-lvalue arrays in C90 mode.

I wasn't originally going to use this approach, but cases like
test/Sema/expr-comma.c make things difficult.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70096 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eccb51d39a22a7cd1b4c61fedf43416a42990542 26-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Lazily load the controlling macros for all of the headers known in the
PCH file. In the Cocoa-prefixed "Hello, World" benchmark, this takes
us from reading 503 identifiers down to 37 and from 470 macros down to
4. It also results in an 8% performance improvement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
ex/HeaderSearch.h
8c5a760b82e73ed90b560090772db97e2ae27b09 26-Apr-2009 Douglas Gregor <dgregor@apple.com> Lazily load the controlling macros for all of the headers known in the
PCH file. In the Cocoa-prefixed "Hello, World" benchmark, this takes
us from reading 503 identifiers down to 37 and from 470 macros down to
4. It also results in an 8% performance improvement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
ex/HeaderSearch.h
7264d2112313ab9b0268f137d5afa3ad01c03ea6 26-Apr-2009 Chris Lattner <sabre@nondot.org> minor diagnostics improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70092 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
338395d31eecbf99bc1b15ef5631d1359bb96083 26-Apr-2009 Chris Lattner <sabre@nondot.org> minor diagnostics improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70092 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eec8ae2c3665db2d293850a695e5a3b3cb57a50a 25-Apr-2009 Chris Lattner <sabre@nondot.org> fix PR4073 by making designated initializer checking code use
VerifyIntegerConstantExpression instead of isIntegerConstantExpr.
This makes it ext-warn but tolerate things that fold to a constant
but that are not valid i-c-e's.

There must be a bug in the i-c-e computation though, because it
doesn't catch this case even with pedantic.

This also switches the later code to use EvaluateAsInt which is
simpler and handles everything that evaluate does.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3bf6893b77c30cb774100e0fa7ae029331675ec1 25-Apr-2009 Chris Lattner <sabre@nondot.org> fix PR4073 by making designated initializer checking code use
VerifyIntegerConstantExpression instead of isIntegerConstantExpr.
This makes it ext-warn but tolerate things that fold to a constant
but that are not valid i-c-e's.

There must be a bug in the i-c-e computation though, because it
doesn't catch this case even with pedantic.

This also switches the later code to use EvaluateAsInt which is
simpler and handles everything that evaluate does.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4bb24884988d2b074aa2e12fd47bea5e348ce716 25-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Revert my changes that try to avoid creating StringMap entries for
identifiers. They don't yet work, but will inhibit future
optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
5f8e3302242cf94de2f8e46d10167f57fcf747c3 25-Apr-2009 Douglas Gregor <dgregor@apple.com> Revert my changes that try to avoid creating StringMap entries for
identifiers. They don't yet work, but will inhibit future
optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
9966411847ba573e826c4df17c0d46507b6a5c10 25-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Start implementing the PTH IdentifierInfo-saving trick in PCH,
allocating IdentifierInfos with a pointer into the string data stored
in the PCH file rather than having an entry in the identifier table's
string map. However, we don't actually get these savings at the
moment, because we go through the IdentifierTable when loading
identifiers from the on-disk hash table.

This commit is for record-keeping purposes only. I'll be reverting
this change (and the PCH layout tweak that preceded it) because it
appears that implementing this optimization will collide with another,
future optimization to reduce the size of the on-disk hash table for
identifiers. That optimization is likely to provide more benefit (with
less voodoo).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70070 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
5da8161bdff1c81ab93b55ddd0fd45dc2123ef85 25-Apr-2009 Douglas Gregor <dgregor@apple.com> Start implementing the PTH IdentifierInfo-saving trick in PCH,
allocating IdentifierInfos with a pointer into the string data stored
in the PCH file rather than having an entry in the identifier table's
string map. However, we don't actually get these savings at the
moment, because we go through the IdentifierTable when loading
identifiers from the on-disk hash table.

This commit is for record-keeping purposes only. I'll be reverting
this change (and the PCH layout tweak that preceded it) because it
appears that implementing this optimization will collide with another,
future optimization to reduce the size of the on-disk hash table for
identifiers. That optimization is likely to provide more benefit (with
less voodoo).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70070 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
de44c9f1baf170c98ccc534c653d3f1ff24b0426 25-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Write the identifier offsets array into the PCH file as a blob, so
that the PCH reader does not have to decode the VBR encoding at PCH
load time.

Also, reduce the size of the identifier offsets from 64 bits down to
32 bits. The identifier table itself isn't going to grow to more than
4GB :)

Overall, this results in a 13% speedup in the Cocoa-prefixed "Hello,
World" benchmark.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70063 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
2b3a5a83ea30bde7fa8f9d8e9a0cb12623759bfb 25-Apr-2009 Douglas Gregor <dgregor@apple.com> Write the identifier offsets array into the PCH file as a blob, so
that the PCH reader does not have to decode the VBR encoding at PCH
load time.

Also, reduce the size of the identifier offsets from 64 bits down to
32 bits. The identifier table itself isn't going to grow to more than
4GB :)

Overall, this results in a 13% speedup in the Cocoa-prefixed "Hello,
World" benchmark.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70063 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
354abb45be477445dede57ec6993ed2d1e1139e7 25-Apr-2009 Chris Lattner <sabre@nondot.org> improve a diagnostic to make more sense.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
740782a78386ad3c64c670ba9b1619545bbb4901 25-Apr-2009 Chris Lattner <sabre@nondot.org> improve a diagnostic to make more sense.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70062 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c305c34650968a494de752a9e2bd454f9708929d 25-Apr-2009 Chris Lattner <sabre@nondot.org> accept an ignore the no_instrument_function attribute. Since we don't
support -pg, we never instrument :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70061 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
5e204486a7dd1e5f7e14e941a2c7e707a8ad1a3b 25-Apr-2009 Chris Lattner <sabre@nondot.org> accept an ignore the no_instrument_function attribute. Since we don't
support -pg, we never instrument :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70061 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
24a224c9dd91b2a8c673f170f343b7884a5c68de 25-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Write the declaration and type offset arrays into the bitstream as
blobs, so that we don't need to do any work to get these arrays into
memory at PCH load time.

This gives another 19% performance improvement to the Cocoa-prefixed
"Hello, World!".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70059 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
8f5dc7fe4d42cea78fa92d1638f753cf65b54cb5 25-Apr-2009 Douglas Gregor <dgregor@apple.com> Write the declaration and type offset arrays into the bitstream as
blobs, so that we don't need to do any work to get these arrays into
memory at PCH load time.

This gives another 19% performance improvement to the Cocoa-prefixed
"Hello, World!".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70059 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
2d71183cd5b0a6bd39cab83e42ab182b0ab445d6 25-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Load the selector table lazily from the PCH file.

This results in a 10% speedup on the Cocoa-prefixed "Hello, World!",
all of which is (not surprisingly) user time. There was a tiny
reduction in the size of the PCH file for Cocoa.h, because certain
selectors aren't being written twice.

I'm using two new tricks here that I'd like to replicate elsewhere:
(1) The selectors not used in the global method pool are packed into
the blob after the global method pool's on-disk hash table and
stored as keys, so that all selectors are in the same blob.
(2) We record the offsets of each selector key when we write it into
the global method pool (or after it, in the same blob). The offset
table is written as a blob, so that we don't need to pack/unpack a
SmallVector with its contents.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70055 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
83941df2745d69c05acee3174c7a265c206f70d9 25-Apr-2009 Douglas Gregor <dgregor@apple.com> Load the selector table lazily from the PCH file.

This results in a 10% speedup on the Cocoa-prefixed "Hello, World!",
all of which is (not surprisingly) user time. There was a tiny
reduction in the size of the PCH file for Cocoa.h, because certain
selectors aren't being written twice.

I'm using two new tricks here that I'd like to replicate elsewhere:
(1) The selectors not used in the global method pool are packed into
the blob after the global method pool's on-disk hash table and
stored as keys, so that all selectors are in the same blob.
(2) We record the offsets of each selector key when we write it into
the global method pool (or after it, in the same blob). The offset
table is written as a blob, so that we don't need to pack/unpack a
SmallVector with its contents.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70055 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
fb3e40219796596ee5d29f90929ff05c4df4f77e 25-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH support for ObjCMessageExpr (needed to build Mail).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
c4f0bbdb166fbc31ab2cf0f6ff573fde9fa307b3 25-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH support for ObjCMessageExpr (needed to build Mail).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
34c61337c548fc848d250993d7cf6851a2b38f3f 25-Apr-2009 Chris Lattner <sabre@nondot.org> This is a pretty big cleanup for how invalid decl/type are handle.
This gets rid of a bunch of random InvalidDecl bools in sema, changing
us to use the following approach:

1. When analyzing a declspec or declarator, if an error is found, we
set a bit in Declarator saying that it is invalid.
2. Once the Decl is created by sema, we immediately set the isInvalid
bit on it from what is in the declarator. From this point on, sema
consistently looks at and sets the bit on the decl.

This gives a very clear separation of concerns and simplifies a bunch
of code. In addition to this, this patch makes these changes:

1. it renames DeclSpec::getInvalidType() -> isInvalidType().
2. various "merge" functions no longer return bools: they just set the
invalid bit on the dest decl if invalid.
3. The ActOnTypedefDeclarator/ActOnFunctionDeclarator/ActOnVariableDeclarator
methods now set invalid on the decl returned instead of returning an
invalid bit byref.
4. In SemaType, refering to a typedef that was invalid now propagates the
bit into the resultant type. Stuff declared with the invalid typedef
will now be marked invalid.
5. Various methods like CheckVariableDeclaration now return void and set the
invalid bit on the decl they check.


There are a few minor changes to tests with this, but the only major bad
result is test/SemaCXX/constructor-recovery.cpp. I'll take a look at this
next.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70020 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
eaaebc7cf10dc1a2016183a262ad3256bc468759 25-Apr-2009 Chris Lattner <sabre@nondot.org> This is a pretty big cleanup for how invalid decl/type are handle.
This gets rid of a bunch of random InvalidDecl bools in sema, changing
us to use the following approach:

1. When analyzing a declspec or declarator, if an error is found, we
set a bit in Declarator saying that it is invalid.
2. Once the Decl is created by sema, we immediately set the isInvalid
bit on it from what is in the declarator. From this point on, sema
consistently looks at and sets the bit on the decl.

This gives a very clear separation of concerns and simplifies a bunch
of code. In addition to this, this patch makes these changes:

1. it renames DeclSpec::getInvalidType() -> isInvalidType().
2. various "merge" functions no longer return bools: they just set the
invalid bit on the dest decl if invalid.
3. The ActOnTypedefDeclarator/ActOnFunctionDeclarator/ActOnVariableDeclarator
methods now set invalid on the decl returned instead of returning an
invalid bit byref.
4. In SemaType, refering to a typedef that was invalid now propagates the
bit into the resultant type. Stuff declared with the invalid typedef
will now be marked invalid.
5. Various methods like CheckVariableDeclaration now return void and set the
invalid bit on the decl they check.


There are a few minor changes to tests with this, but the only major bad
result is test/SemaCXX/constructor-recovery.cpp. I'll take a look at this
next.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70020 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
d21120294f4fef96d2954897e1af6eaf6b2f34e7 25-Apr-2009 Chris Lattner <sabre@nondot.org> rename getNumParmVarDeclsFromType back to getNumParams(),
remove a special case that was apparently for typeof() and
generalize the code in SemaDecl that handles typedefs to
handle any sugar type (including typedef, typeof, etc).
Improve comment to make it more clear what is going on.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1ad9b28e3217c2349a04f3d3bf14f9c73a99afa7 25-Apr-2009 Chris Lattner <sabre@nondot.org> rename getNumParmVarDeclsFromType back to getNumParams(),
remove a special case that was apparently for typeof() and
generalize the code in SemaDecl that handles typedefs to
handle any sugar type (including typedef, typeof, etc).
Improve comment to make it more clear what is going on.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9d957cbf5b5488063e8279493a1367ef5ccff361 25-Apr-2009 Chris Lattner <sabre@nondot.org> add a new helper function to FunctionDecl instead of it being
static in Decl.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
11ddb7dc22bb398a6727318729680630bfcefaae 25-Apr-2009 Chris Lattner <sabre@nondot.org> add a new helper function to FunctionDecl instead of it being
static in Decl.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f93cfeefb4604d8d5a6c657111659a95a5538d0b 25-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that the consumer sees all interested decls. This fixes Preview

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70007 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
c62a2fe1957626bc4b29402b2d0a3694dfaa3280 25-Apr-2009 Douglas Gregor <dgregor@apple.com> Make sure that the consumer sees all interested decls. This fixes Preview

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70007 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
b98860c39ac5162b4b628962bdc08dd3571cdc3a 25-Apr-2009 Ted Kremenek <kremenek@apple.com> Add new checker-specific attribute 'objc_ownership_retain'. This isn't hooked up
to the checker yet, but essentially it allows a user to specify that an
Objective-C method or C function increments the reference count of a passed
object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
de9a81b92e9098daa8ca19df138e4807b4d8afe8 25-Apr-2009 Ted Kremenek <kremenek@apple.com> Add new checker-specific attribute 'objc_ownership_retain'. This isn't hooked up
to the checker yet, but essentially it allows a user to specify that an
Objective-C method or C function increments the reference count of a passed
object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
184f92d5e05df4089f17f49bfbcfe9f6405d4593 25-Apr-2009 Chris Lattner <sabre@nondot.org> reject explicit pointer arithmetic on interface pointers in 64-bit objc ABI


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b5f1562d7b57a3dbe27a39b45995f59862973820 25-Apr-2009 Chris Lattner <sabre@nondot.org> reject explicit pointer arithmetic on interface pointers in 64-bit objc ABI


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
aa6e3187858164dac3c4d950b07d5b7b63f2e3bd 25-Apr-2009 Ted Kremenek <kremenek@apple.com> Add new checker-specific attribute 'objc_ownership_returns'. This isn't hooked
up to the checker yet, but essentially it allows a user to specify that an
Objective-C method or C function returns an owned an Objective-C object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
0fc169e864aef7fc9a782e60b222a360f406704a 25-Apr-2009 Ted Kremenek <kremenek@apple.com> Add new checker-specific attribute 'objc_ownership_returns'. This isn't hooked
up to the checker yet, but essentially it allows a user to specify that an
Objective-C method or C function returns an owned an Objective-C object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
b5d9c47705901b475fd3e095f0779a336940f908 25-Apr-2009 Anders Carlsson <andersca@mac.com> Add CXXExprWithCleanup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70000 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
02bbfa33590dfe3107e801fb526b7ab0bdfd00ee 25-Apr-2009 Anders Carlsson <andersca@mac.com> Add CXXExprWithCleanup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70000 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
c3221aae610fea665bf76ddee6ea3fc260c3fd6d 24-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for the global method pool (= instance and factory method
pools, combined). The methods in the global method pool are lazily
loaded from an on-disk hash table when Sema looks into its version of
the hash tables.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/OnDiskHashTable.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ema/ExternalSemaSource.h
f0aaf7a59729a4ae0146e3464ee987745be95829 24-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for the global method pool (= instance and factory method
pools, combined). The methods in the global method pool are lazily
loaded from an on-disk hash table when Sema looks into its version of
the hash tables.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/OnDiskHashTable.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ema/ExternalSemaSource.h
cda68f24c5d807d6e7d3cc6bf267bbd56d1b8861 24-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH support for #import.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69987 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ex/HeaderSearch.h
83d63c78810556d26b62ac4cbae2eda6cdd2570c 24-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH support for #import.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69987 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ex/HeaderSearch.h
e1c08f72b214fb638cd4566cb572decaae4d204c 24-Apr-2009 Anders Carlsson <andersca@mac.com> Make CXXTemporaryObjectExpr inherit from CXXConstructExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69981 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
524fa13fd81e88533c7a1d4b1232c0de2c97dc7c 24-Apr-2009 Anders Carlsson <andersca@mac.com> Make CXXTemporaryObjectExpr inherit from CXXConstructExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69981 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
af443ed8faff337a131a2dbf527717f3fb2aaaa7 24-Apr-2009 Anders Carlsson <andersca@mac.com> Add an ASTContext parameter to CXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69959 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
09c4abb1057f0eb53a9c2b5c2f22b1472362156e 24-Apr-2009 Anders Carlsson <andersca@mac.com> Add an ASTContext parameter to CXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69959 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ebbd7cd73877cc313f40e652958602ae290f6d78 24-Apr-2009 Anders Carlsson <andersca@mac.com> Add a VarDecl parameter to the CXXTemporaryObjectExpr constructor. It's unused for now, so no functionality change yet. Also, create CXXTempVarDecls to pass to the CXXTemporaryObjectExpr ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
26de54983e7977fad615c94012f2f67d0d1cf404 24-Apr-2009 Anders Carlsson <andersca@mac.com> Add a VarDecl parameter to the CXXTemporaryObjectExpr constructor. It's unused for now, so no functionality change yet. Also, create CXXTempVarDecls to pass to the CXXTemporaryObjectExpr ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
9cda7a2a8ab3c05739f3a28d5815f9f34a3e3477 24-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that ObjCCompatibleAlias and ObjCImplementation decls are considered NamedDecls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
76b329177a0bdf05641f74705692a59733090c53 24-Apr-2009 Douglas Gregor <dgregor@apple.com> Make sure that ObjCCompatibleAlias and ObjCImplementation decls are considered NamedDecls

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
94c73aa16e151fec942ad3aa8605544b3ad86694 24-Apr-2009 Anders Carlsson <andersca@mac.com> Make the CXXConstructExpr public and add a StmtClass to it. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
bd6734e5f6432ce0cc07171c490ffaa094796198 24-Apr-2009 Anders Carlsson <andersca@mac.com> Make the CXXConstructExpr public and add a StmtClass to it. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
e684ff2a2d6b66da7fe90e19434659d87f2997e7 24-Apr-2009 Anders Carlsson <andersca@mac.com> Move the CXXConstructExpr before the CXXTemporaryObjectExpr so that the temporary object expr can inherit from the construct expr. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
15ef2b5820f9daccc44b9e847163b705b6f5863b 24-Apr-2009 Anders Carlsson <andersca@mac.com> Move the CXXConstructExpr before the CXXTemporaryObjectExpr so that the temporary object expr can inherit from the construct expr. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
95933c17fa9f631b86cb17745a1642817378f5ad 24-Apr-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6821047 - clang crashes on subscript of interface in 64-bit mode

Several changes here:
1. We change Type::isIncompleteType to realize that forward declared
interfaces are incomplete. This eliminate special case code for this
from the sizeof path, and starts us rejecting P[4] when P is a pointer
to an incomplete interface.
2. Explicitly reject P[4] when P points to an interface in non-fragile ABI
mode.
3. Switch the sizeof(interface) diagnostic back to an error instead of a
warning in non-fragile abi mode.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1efaa9594a81709a17658fd80ae7e783e1026407 24-Apr-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6821047 - clang crashes on subscript of interface in 64-bit mode

Several changes here:
1. We change Type::isIncompleteType to realize that forward declared
interfaces are incomplete. This eliminate special case code for this
from the sizeof path, and starts us rejecting P[4] when P is a pointer
to an incomplete interface.
2. Explicitly reject P[4] when P points to an interface in non-fragile ABI
mode.
3. Switch the sizeof(interface) diagnostic back to an error instead of a
warning in non-fragile abi mode.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
afd5eb3af38dafa1ca646d8a12946d6b74e02404 24-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate Sema::ObjCImplementations, relying instead on name lookup. What's good for uniformity is good for PCH (or is it the other way around?).

As part of this, make ObjCImplDecl inherit from NamedDecl (since
ObjCImplementationDecls now need to have names so that they can be
found). This brings ObjCImplDecl very, very close to
ObjCContainerDecl; we may be able to merge them soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
8fc463adf0116fdcbff86e9cca11955aad1649fe 24-Apr-2009 Douglas Gregor <dgregor@apple.com> Eliminate Sema::ObjCImplementations, relying instead on name lookup. What's good for uniformity is good for PCH (or is it the other way around?).

As part of this, make ObjCImplDecl inherit from NamedDecl (since
ObjCImplementationDecls now need to have names so that they can be
found). This brings ObjCImplDecl very, very close to
ObjCContainerDecl; we may be able to merge them soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
bb21d4b846f28e38fd204faca328dccd74eb4fa5 24-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for all of the predefined Objective-C types, such as id,
SEL, Class, Protocol, CFConstantString, and
__objcFastEnumerationState. With this, we can now run the Objective-C
methods and properties PCH tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69932 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
319ac896a0fef7365d5589b8021db7e41207fe42 24-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for all of the predefined Objective-C types, such as id,
SEL, Class, Protocol, CFConstantString, and
__objcFastEnumerationState. With this, we can now run the Objective-C
methods and properties PCH tests.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69932 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
rontend/PCHBitCodes.h
acd3a331998f02a511e4602e36cbdb097ef53486 23-Apr-2009 Chris Lattner <sabre@nondot.org> accept and ignore -Wconversion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
e9de8eb2f279a3191d898aa9720d1b5bc70853de 23-Apr-2009 Chris Lattner <sabre@nondot.org> accept and ignore -Wconversion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
9b6348dcc3aaa88b9b04dd51acb0d4c0bb35cf9b 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Fix handling of C99 "extern inline" semantics when dealing with
multiple declarations of the function. Should fix PR3989 and
<rdar://problem/6818429>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b3efa98e320590e8be9d62818e89e599303e65b4 23-Apr-2009 Douglas Gregor <dgregor@apple.com> Fix handling of C99 "extern inline" semantics when dealing with
multiple declarations of the function. Should fix PR3989 and
<rdar://problem/6818429>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
57a03e18ce2c296fcf400c578728dc9ddb999804 23-Apr-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6819438 - -Wmissing-noreturn not recognised by clang,
by accepting and ignoring it for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
08f537f475901f766de003c25ad1c32b3a13cfc1 23-Apr-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6819438 - -Wmissing-noreturn not recognised by clang,
by accepting and ignoring it for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
9e84d784a1500c536defc79dd1977b519d3d3a46 23-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH read/write support for Objective-C Selectors.

Note: This support is non-lazy. Once we get "Cocoa.h" humming, we can optimize this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69884 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
90cd1bb1baac2a0221f3642de0cbea3244b116e5 23-Apr-2009 Steve Naroff <snaroff@apple.com> Add PCH read/write support for Objective-C Selectors.

Note: This support is non-lazy. Once we get "Cocoa.h" humming, we can optimize this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69884 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ab3d373c38a05fcc0d74ee7fcacdf48d3ea2ceab 23-Apr-2009 Chris Lattner <sabre@nondot.org> fix a problem producing debug info with global blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4863db4266d066617a1e5ad7c0f3f28c7995c61b 23-Apr-2009 Chris Lattner <sabre@nondot.org> fix a problem producing debug info with global blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c86c2c8330edd6ea862c94dde080125881d25fb5 23-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add implicit definition of objc_msgSend.
- As with malloc and friends, this is important where the return type
on a 64-bit platform would otherwise end up discarding the upper
32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69874 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
9396dcf9699541f54bc3990c0dfbaa929464f5df 23-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add implicit definition of objc_msgSend.
- As with malloc and friends, this is important where the return type
on a 64-bit platform would otherwise end up discarding the upper
32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69874 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
f6279ae5cf4070f1ff869efd99de24f86f1c4c30 23-Apr-2009 Chris Lattner <sabre@nondot.org> the logic for computing __func__ and friends is really broken:
the type assigned by sema (and is visible with sizeof(__func__) for
example) has nothing to do with what codegen ends up producing.
We should eventually add a method on PredefinedExpr to handle this.
In the meantime, just set up some framework and add some fixme's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b5437d238752dc297e42410e98d38d5250fe0463 23-Apr-2009 Chris Lattner <sabre@nondot.org> the logic for computing __func__ and friends is really broken:
the type assigned by sema (and is visible with sizeof(__func__) for
example) has nothing to do with what codegen ends up producing.
We should eventually add a method on PredefinedExpr to handle this.
In the meantime, just set up some framework and add some fixme's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69872 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
991a315cd571cc1594aabb2c7d04ef67d40c1fd6 23-Apr-2009 Chris Lattner <sabre@nondot.org> Silence warnings about common forms of -Wstrict-aliasing etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69861 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
2432cd3ada3e511b44bea1438c4ba5ca0bce35ef 23-Apr-2009 Chris Lattner <sabre@nondot.org> Silence warnings about common forms of -Wstrict-aliasing etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69861 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
37a54fd84c8eee22873f71728a07377185fa1799 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH (de-)serialization of the protocols in an ObjCInterfaceDecl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
291be393aa33759e6e34b6429c5ffa206ba50115 23-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH (de-)serialization of the protocols in an ObjCInterfaceDecl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3f2c50557dc32075200f8fcb01dcfebfafa1a3ec 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for ObjCPropertyImplDecl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8818c4fb69cb2a4eec94b217a90f94f9e075296e 23-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for ObjCPropertyImplDecl

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
087dbf396b59df6b944ef48f1fe55d5c15b8deb2 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> The ivars in an ObjCImplementationDecl are now stored in the
DeclContext rather than in a separate list. This makes PCH
(de-)serialization trivial, so that ivars can be loaded lazily.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8f36aba016c2d236a90f9ecf0a66904209202202 23-Apr-2009 Douglas Gregor <dgregor@apple.com> The ivars in an ObjCImplementationDecl are now stored in the
DeclContext rather than in a separate list. This makes PCH
(de-)serialization trivial, so that ivars can be loaded lazily.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
58e7ce47236aad981c16afe395717dc1cd487fe5 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for ObjCCategoryImplDecl (which can't be tested now).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
10b0e1fa3aabd8877dbbc0df1f2414e04afd5fdd 23-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for ObjCCategoryImplDecl (which can't be tested now).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
bd336c56bd4b95167487c8a74a385650c01f417c 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH (de-)serialization for ObjCImplDecl. This can't be tested yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2c2d43c557beca1b4ba4bd743f33978aecb46a97 23-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH (de-)serialization for ObjCImplDecl. This can't be tested yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dbbab8c1204c94cf6bd6b232641547eddadde817 23-Apr-2009 Anders Carlsson <andersca@mac.com> Add a CXXConstructExpr that represents an implicit call to a C++ constructor. I think CXXTemporaryObjectExpr is going to become a subclass of CXXConstructExpr, since CXXTemporaryObjectExpr represents a syntactic temporary, for example T()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
e349bea668622ef31bd51a229960a73d69940709 23-Apr-2009 Anders Carlsson <andersca@mac.com> Add a CXXConstructExpr that represents an implicit call to a C++ constructor. I think CXXTemporaryObjectExpr is going to become a subclass of CXXConstructExpr, since CXXTemporaryObjectExpr represents a syntactic temporary, for example T()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
cd19b57e8c03a742954680830bc440b8b0e08965 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate the three SmallVectors in ObjCImplDecl (for instance
methods, class methods, and property implementations) and instead
place all of these entities into the DeclContext.

This eliminates more linear walks when looking for class or instance
methods and should make PCH (de-)serialization of ObjCDecls trivial
(and lazy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
653f1b1bf293a9bd96fd4dd6372e779cc7af1597 23-Apr-2009 Douglas Gregor <dgregor@apple.com> Eliminate the three SmallVectors in ObjCImplDecl (for instance
methods, class methods, and property implementations) and instead
place all of these entities into the DeclContext.

This eliminates more linear walks when looking for class or instance
methods and should make PCH (de-)serialization of ObjCDecls trivial
(and lazy).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3839f1c3e2fa6dd5a0482a7d948037c4d03ef4de 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for Objective-C property declarations (UNTESTED!)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69843 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
70e5a14c6076d63833c62d1d6d628c26309897c1 23-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for Objective-C property declarations (UNTESTED!)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69843 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
af136d9f428db2566b8b0a4eabf5d3efa785884c 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add PCH statistics for the number/percent of lexical/visible declcontexts read

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69835 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
2512308525ff328aa992da0b5ee14a488d2ea93a 23-Apr-2009 Douglas Gregor <dgregor@apple.com> Add PCH statistics for the number/percent of lexical/visible declcontexts read

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69835 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
rontend/PCHWriter.h
070be452f47b7b9275b2a58521776f3c54753ea4 23-Apr-2009 Ted Kremenek <kremenek@apple.com> Add PathDiagnosticRange to PathDiagnostics. These simply wrap SourceRange and
indicate whether or not the range represents an absolute range or should be
extended by lexing to the end of the token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69834 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
4c5fcd946971756bd644fe76511f292e10225981 23-Apr-2009 Ted Kremenek <kremenek@apple.com> Add PathDiagnosticRange to PathDiagnostics. These simply wrap SourceRange and
indicate whether or not the range represents an absolute range or should be
extended by lexing to the end of the token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69834 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
062d9488c9023deaad365aa3e866648958d9e199 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Support locally-declared external declarations in PCH files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69833 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
14c22f20c077cecd68581952a0c227f8c180be03 23-Apr-2009 Douglas Gregor <dgregor@apple.com> Support locally-declared external declarations in PCH files

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69833 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
77b2cd556f47fcfd22ed1748565a2a71d441df21 23-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Support tentative definitions in precompiled headers. This isn't likely
to happen (ever), but at least we'll do the right thing when it does.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69829 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
4c0e86b392c5fb0cb771551fc877edb6979be69c 23-Apr-2009 Douglas Gregor <dgregor@apple.com> Support tentative definitions in precompiled headers. This isn't likely
to happen (ever), but at least we'll do the right thing when it does.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69829 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
608ff6223083952584ba0ada6d70070bbc2f045f 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Remove the serialization code that predates precompiled
headers. Future approaches to (de-)serializing ASTs will be based on
the PCH infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclGroup.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
ST/Type.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/SourceLocation.h
asic/SourceManager.h
370187c8a3e96517c943329f2511737a04b85450 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Remove the serialization code that predates precompiled
headers. Future approaches to (de-)serializing ASTs will be based on
the PCH infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclGroup.h
ST/DeclTemplate.h
ST/DeclarationName.h
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
ST/Stmt.h
ST/Type.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/SourceLocation.h
asic/SourceManager.h
2554cf263da9a23af8664d438de44c02dbb76422 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate some FIXMEs in the PCH reader that were either already fixed or aren't actually things to fix

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69827 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
6cfc1a8b7582b8433b61222502effb018c534393 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Eliminate some FIXMEs in the PCH reader that were either already fixed or aren't actually things to fix

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69827 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
405b6430b88da6b23b37ec9de82c905b9e919314 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Minimize the number and kind of "external definitions" that the PCH
file needs to store. CodeGen needs to see these definitions (via
HandleTopLevelDecl), otherwise it won't be able to generate code for
them.

This patch notifies the consumer (e.g., CodeGen) about function
definitions and variable definitions when the corresponding
declarations are deserialized. Hence, we don't eagerly deserialize the
declarations for every variable or function that has a definition in
the PCH file. This gives another 5% speedup for the Carbon-prefixed
"Hello, World!", and brings our PCH statistics down to something far
more reasonable:

*** PCH Statistics:
13/20693 types read (0.062823%)
17/59230 declarations read (0.028702%)
54/44914 identifiers read (0.120230%)
0/32954 statements read (0.000000%)
5/6187 macros read (0.080815%)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69820 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
0af2ca4b6ddc788658069a0994941268ce250fc7 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Minimize the number and kind of "external definitions" that the PCH
file needs to store. CodeGen needs to see these definitions (via
HandleTopLevelDecl), otherwise it won't be able to generate code for
them.

This patch notifies the consumer (e.g., CodeGen) about function
definitions and variable definitions when the corresponding
declarations are deserialized. Hence, we don't eagerly deserialize the
declarations for every variable or function that has a definition in
the PCH file. This gives another 5% speedup for the Carbon-prefixed
"Hello, World!", and brings our PCH statistics down to something far
more reasonable:

*** PCH Statistics:
13/20693 types read (0.062823%)
17/59230 declarations read (0.028702%)
54/44914 identifiers read (0.120230%)
0/32954 statements read (0.000000%)
5/6187 macros read (0.080815%)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69820 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
da38c6ca35b4fb57a2638f0fa2bdf9226fa51ce9 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Lazy loading of builtins for precompiled headers.

PCH files now contain complete information about builtins, including
any declarations that have been synthesized as part of building the
PCH file. When using a PCH file, we do not initialize builtins at all;
when needed, they'll be found in the PCH file.

This optimization translations into a 9% speedup for "Hello, World!"
with Carbon.h as a prefix header and roughly a 5% speedup for 403.gcc
with its prefix header. We're also reading less of the PCH file for
"Hello, World!":

*** PCH Statistics:
286/20693 types read (1.382110%)
1630/59230 declarations read (2.751984%)
764/44914 identifiers read (1.701029%)
1/32954 statements read (0.003035%)
5/6187 macros read (0.080815%)

down from

*** PCH Statistics:
411/20693 types read (1.986179%)
2553/59230 declarations read (4.310316%)
1093/44646 identifiers read (2.448148%)
1/32954 statements read (0.003035%)
21/6187 macros read (0.339421%)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69815 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.h
rontend/PCHWriter.h
2deaea37a637dd01221d0cced343702a39d8132c 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Lazy loading of builtins for precompiled headers.

PCH files now contain complete information about builtins, including
any declarations that have been synthesized as part of building the
PCH file. When using a PCH file, we do not initialize builtins at all;
when needed, they'll be found in the PCH file.

This optimization translations into a 9% speedup for "Hello, World!"
with Carbon.h as a prefix header and roughly a 5% speedup for 403.gcc
with its prefix header. We're also reading less of the PCH file for
"Hello, World!":

*** PCH Statistics:
286/20693 types read (1.382110%)
1630/59230 declarations read (2.751984%)
764/44914 identifiers read (1.701029%)
1/32954 statements read (0.003035%)
5/6187 macros read (0.080815%)

down from

*** PCH Statistics:
411/20693 types read (1.986179%)
2553/59230 declarations read (4.310316%)
1093/44646 identifiers read (2.448148%)
1/32954 statements read (0.003035%)
21/6187 macros read (0.339421%)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69815 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.h
rontend/PCHWriter.h
fb65bfb53f9f9a9f00f129d0fb98f2b4c62a2318 22-Apr-2009 Daniel Dunbar <daniel@zuster.org> Remove lookupFieldDeclFromIvar from ObjCIvarDecl interface.
- This is only used by CGObjCRuntime now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a24357887dc2e6971fb84286be4484953565dc4d 22-Apr-2009 Daniel Dunbar <daniel@zuster.org> Remove lookupFieldDeclFromIvar from ObjCIvarDecl interface.
- This is only used by CGObjCRuntime now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b64206c5f93e51a1857706eeab24cf945491ef42 22-Apr-2009 Chris Lattner <sabre@nondot.org> ObjCQualifiedClass is dead, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
068360e16fa4504a6fb80affebae5c5713629a96 22-Apr-2009 Chris Lattner <sabre@nondot.org> ObjCQualifiedClass is dead, remove it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69783 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
rontend/PCHBitCodes.h
9b9f23586594572ec4c581b15c883f2a84a44ff1 22-Apr-2009 Chris Lattner <sabre@nondot.org> pch support for protocol qualified id's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
d7a3fcd48cb308074cc95031252bc64966f0703d 22-Apr-2009 Chris Lattner <sabre@nondot.org> pch support for protocol qualified id's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
c49bbe72221ca7cde0d45c52ae6a72374b2d8529 22-Apr-2009 Chris Lattner <sabre@nondot.org> add three new objc expression types. @selector doesn't work because we have no
way to serialize selectors yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
3a57a3765b6192a94ff4e5997ae0489a1471b308 22-Apr-2009 Chris Lattner <sabre@nondot.org> add three new objc expression types. @selector doesn't work because we have no
way to serialize selectors yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69780 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
80f83c6f299e76871b6b4f63b20de18197cd0cdc 22-Apr-2009 Chris Lattner <sabre@nondot.org> implement serialization support for @encode,
fix a couple of bugs in reader support for ObjCInterfaceDecl,
and add support for reading ObjCInterfaceType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
4dcf151a555ff51e4d643e8e6eeb80f121d11d1b 22-Apr-2009 Chris Lattner <sabre@nondot.org> implement serialization support for @encode,
fix a couple of bugs in reader support for ObjCInterfaceDecl,
and add support for reading ObjCInterfaceType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69779 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
rontend/PCHBitCodes.h
37f477ebbb9755380e3d8849e6281d5239157431 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Reorganize built-in initialization to separate the creation of target builtins from marking IdentifierInfos as builtins. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69774 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
71dfdb9bc91b5d81b124e6091c903e4efd87149d 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Reorganize built-in initialization to separate the creation of target builtins from marking IdentifierInfos as builtins. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69774 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
be1ff27081f5dda61e46171ccdcd46970a173fae 22-Apr-2009 Daniel Dunbar <daniel@zuster.org> Mark another TypeForDecl const and make getObjCInterfaceType's argument const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69772 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
nalysis/PathSensitive/MemRegion.h
3b3a45858c6b2a45114e91902c3bf3c4b7f5f302 22-Apr-2009 Daniel Dunbar <daniel@zuster.org> Mark another TypeForDecl const and make getObjCInterfaceType's argument const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69772 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
nalysis/PathSensitive/MemRegion.h
11ac02512fb47e253ae0c72f7e3b60bb940aa960 22-Apr-2009 Chris Lattner <sabre@nondot.org> Fix some mishandling of the attr(gnu_inline) mode when used with
extern. Previously we would warn about it and ignore the attribute.
This is incorrect, it should be handled as a c89 "extern inline"
function. Many thanks to Matthieu Castet for pointing this out and
beating me over the head until I got it.

PR3988: extern inline function are not externally visible




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d55a71d852d4d8b785122b8d033a0c06b187067b 22-Apr-2009 Chris Lattner <sabre@nondot.org> Fix some mishandling of the attr(gnu_inline) mode when used with
extern. Previously we would warn about it and ignore the attribute.
This is incorrect, it should be handled as a c89 "extern inline"
function. Many thanks to Matthieu Castet for pointing this out and
beating me over the head until I got it.

PR3988: extern inline function are not externally visible




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69756 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e0ad2dd12bdb710fe5ae52da85066aba9e35d927 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Lazy deserialization of macro definitions for precompiled headers.

This optimization improves performance on the Carbon-prefixed "Hello,
World!" example by 57%. For reference, we're now about 2.25x faster
than GCC PCH. We're also pulling in far less of the PCH file:

*** PCH Statistics:
411/20693 types read (1.986179%)
2553/59230 declarations read (4.310316%)
1093/44646 identifiers read (2.448148%)
1/32954 statements read (0.003035%)
21/6187 macros read (0.339421%)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69755 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
37e2684abfe38207fdb90620da062bb18c23f29a 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Lazy deserialization of macro definitions for precompiled headers.

This optimization improves performance on the Carbon-prefixed "Hello,
World!" example by 57%. For reference, we're now about 2.25x faster
than GCC PCH. We're also pulling in far less of the PCH file:

*** PCH Statistics:
411/20693 types read (1.986179%)
2553/59230 declarations read (4.310316%)
1093/44646 identifiers read (2.448148%)
1/32954 statements read (0.003035%)
21/6187 macros read (0.339421%)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69755 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
d331e75761638e0fdb33d3531acc45988a60e8f1 22-Apr-2009 Mike Stump <mrs@apple.com> Tighten up blocks type checking. This was discussed back in the
r56595 timeframe, but left undone. Radar 6812711


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
25efa107ae8381458ffa464c5fc7d21135bbe52d 22-Apr-2009 Mike Stump <mrs@apple.com> Tighten up blocks type checking. This was discussed back in the
r56595 timeframe, but left undone. Radar 6812711


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69745 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c713da9e66dd3c47ee7b0011172e03b59ff02420 22-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Lazy deserialization of the declaration chains associated with
identifiers from a precompiled header.

This patch changes the primary name lookup method for entities within
a precompiled header. Previously, we would load all of the names of
declarations at translation unit scope into a large DenseMap (inside
the TranslationUnitDecl's DeclContext), and then perform a special
"last resort" lookup into this DeclContext when we knew there was a
PCH file (see Sema::LookupName). Now, when we see an identifier named
for the first time, we load all of the declarations with that name
that are visible from the translation unit into the IdentifierInfo's
chain of declarations. Thus, the explicit "look into the translation
unit's DeclContext" code is gone, and Sema effectively uses the same
IdentifierInfo-based name lookup mechanism whether we are using a PCH
file or not.

This approach should help PCH scale with the size of the input program
rather than the size of the PCH file. The "Hello, World!" application
with Carbon.h as a PCH file now loads 20% of the identifiers in the
PCH file rather than 85% of the identifiers.

90% of the 20% of identifiers loaded are actually loaded when we
deserialize the preprocessor state. The next step is to make the
preprocessor load macros lazily, which should drastically reduce the
number of types, declarations, and identifiers loaded for "Hello,
World".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
asic/IdentifierTable.h
asic/OnDiskHashTable.h
rontend/PCHReader.h
ema/ExternalSemaSource.h
ema/SemaConsumer.h
668c1a4fdcc56bdd050256b1688e116fe84b72db 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Lazy deserialization of the declaration chains associated with
identifiers from a precompiled header.

This patch changes the primary name lookup method for entities within
a precompiled header. Previously, we would load all of the names of
declarations at translation unit scope into a large DenseMap (inside
the TranslationUnitDecl's DeclContext), and then perform a special
"last resort" lookup into this DeclContext when we knew there was a
PCH file (see Sema::LookupName). Now, when we see an identifier named
for the first time, we load all of the declarations with that name
that are visible from the translation unit into the IdentifierInfo's
chain of declarations. Thus, the explicit "look into the translation
unit's DeclContext" code is gone, and Sema effectively uses the same
IdentifierInfo-based name lookup mechanism whether we are using a PCH
file or not.

This approach should help PCH scale with the size of the input program
rather than the size of the PCH file. The "Hello, World!" application
with Carbon.h as a PCH file now loads 20% of the identifiers in the
PCH file rather than 85% of the identifiers.

90% of the 20% of identifiers loaded are actually loaded when we
deserialize the preprocessor state. The next step is to make the
preprocessor load macros lazily, which should drastically reduce the
number of types, declarations, and identifiers loaded for "Hello,
World".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
asic/IdentifierTable.h
asic/OnDiskHashTable.h
rontend/PCHReader.h
ema/ExternalSemaSource.h
ema/SemaConsumer.h
4d107bccf19ce4a94f3efba4c853f4f85e48c9a9 22-Apr-2009 Chris Lattner <sabre@nondot.org> this is a warning now, return a well formed ast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69731 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5b54b88c4082bb81b8b341b622fda9a85cbd5fad 22-Apr-2009 Chris Lattner <sabre@nondot.org> this is a warning now, return a well formed ast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69731 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4c91a40f3c880d0e1c5a676db48dee8e0e6d8830 21-Apr-2009 Ted Kremenek <kremenek@apple.com> Refactor 'BasicStoreManager::CastRegion' and 'RegionStoreManager::CastRegion'
into StoreManager::CastRegion. Both methods were practically identical, and this
is core logic that is common to all StoreManagers since it defines the basic
invariants of the abstract memory model.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
c62abc1012feb0b15eff091b02c176649766a347 21-Apr-2009 Ted Kremenek <kremenek@apple.com> Refactor 'BasicStoreManager::CastRegion' and 'RegionStoreManager::CastRegion'
into StoreManager::CastRegion. Both methods were practically identical, and this
is core logic that is common to all StoreManagers since it defines the basic
invariants of the abstract memory model.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
afb4c2a2718f3f41d24f62979ff5c72cfaf8c956 21-Apr-2009 Chris Lattner <sabre@nondot.org> temporarily downgrade to a warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69720 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f365d5b3b3e27129443cca7ca64b0f849910b574 21-Apr-2009 Chris Lattner <sabre@nondot.org> temporarily downgrade to a warning.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69720 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
51ba3b8da2cd039ab20c2d24b432295479f64703 21-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to diagnose use of objc's @defs in nonfragile abi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0468fb99068c40990a3b1451938fee5b90daf941 21-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to diagnose use of objc's @defs in nonfragile abi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
398efb58c66291f72259289385374731380ecafa 21-Apr-2009 Ted Kremenek <kremenek@apple.com> Recommit 69694 but this time also include the header changes (sorry for breaking
the build).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69702 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
72e032004b0d2c2c298e8e4f7027f23a21c0cc7d 21-Apr-2009 Ted Kremenek <kremenek@apple.com> Recommit 69694 but this time also include the header changes (sorry for breaking
the build).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69702 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
e1127c4fa41b0ccc7fa5777aa6ba866549fb0aa2 21-Apr-2009 Chris Lattner <sabre@nondot.org> reject sizeof(itf) when itf is a forward declared interface, or when
in non-fragile abi mode. rdar://6811884


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ca790923930ca8df23bc1473fe925586e27387a6 21-Apr-2009 Chris Lattner <sabre@nondot.org> reject sizeof(itf) when itf is a forward declared interface, or when
in non-fragile abi mode. rdar://6811884


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9cdb4a1f7769e97892b7b6ccb54b6f6914cd29ae 21-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Explictly track tentative definitions within Sema, then hand those
tentative definitions off to the ASTConsumer at the end of the
translation unit.

Eliminate CodeGen's internal tracking of tentative definitions, and
instead hook into ASTConsumer::CompleteTentativeDefinition. Also,
tweak the definition-deferal logic for C++, where there are no
tentative definitions.

Fixes <rdar://problem/6808352>, and will make it much easier for
precompiled headers to cope with tentative definitions in the future.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
b6c8c8bd8d362c8a6cdb767415b0d21e62b77eb2 21-Apr-2009 Douglas Gregor <dgregor@apple.com> Explictly track tentative definitions within Sema, then hand those
tentative definitions off to the ASTConsumer at the end of the
translation unit.

Eliminate CodeGen's internal tracking of tentative definitions, and
instead hook into ASTConsumer::CompleteTentativeDefinition. Also,
tweak the definition-deferal logic for C++, where there are no
tentative definitions.

Fixes <rdar://problem/6808352>, and will make it much easier for
precompiled headers to cope with tentative definitions in the future.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
97b53bda541230096b4966b4ae44d02b1756dad5 21-Apr-2009 Steve Naroff <snaroff@apple.com> Add pch reader/writer support for most of DeclObjC.h. Very close to reading/writing all ObjC AST nodes that we will encounter in header files (still a few FIXME's).

Once selector support is in place, we should be able to take this for a spin (and add test cases).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
30833f8d77c08f8f16371776fde85a9fde3d9b6e 21-Apr-2009 Steve Naroff <snaroff@apple.com> Add pch reader/writer support for most of DeclObjC.h. Very close to reading/writing all ObjC AST nodes that we will encounter in header files (still a few FIXME's).

Once selector support is in place, we should be able to take this for a spin (and add test cases).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
08d892fa735a012d19ebf06c24a9aa53e341ab25 21-Apr-2009 Chris Lattner <sabre@nondot.org> implement semantic analysis for @synchronized, fixing a crash on invalid
rdar://6810940 - @synchronized has no sema checks


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69670 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a868a203a18571d091e5d226f5f100d4440f3d94 21-Apr-2009 Chris Lattner <sabre@nondot.org> implement semantic analysis for @synchronized, fixing a crash on invalid
rdar://6810940 - @synchronized has no sema checks


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69670 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f3d40ed12bf642798b8f8f2c02ccb606020c819 21-Apr-2009 Chris Lattner <sabre@nondot.org> add support for goto checking and @synchronized blocks,
rdar://6810106


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
46c3c4ba78766ac0f1c5ec631b424773e21f5271 21-Apr-2009 Chris Lattner <sabre@nondot.org> add support for goto checking and @synchronized blocks,
rdar://6810106


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
94269d741940b43053feb62986cf97a487032829 21-Apr-2009 Chris Lattner <sabre@nondot.org> Split preprocessor initialization logic out of clang-cc into
libfrontend. Patch by Alexei Svitkine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69664 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
e116ccf140b813ecd20e3fb4041d7d0b8a967c0b 21-Apr-2009 Chris Lattner <sabre@nondot.org> Split preprocessor initialization logic out of clang-cc into
libfrontend. Patch by Alexei Svitkine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69664 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/InitPreprocessor.h
13bac9ed8736c3d07fd47bf6fb78c62681995c58 21-Apr-2009 Chris Lattner <sabre@nondot.org> rename -fprint-source-range-info -> -fdiagnostics-print-source-range-info.
Temporarily accept both of them, I'll rip out the old one after awhile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69662 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
182e09240a33c6f1d303deecabec6e0e9c9d109d 21-Apr-2009 Chris Lattner <sabre@nondot.org> rename -fprint-source-range-info -> -fdiagnostics-print-source-range-info.
Temporarily accept both of them, I'll rip out the old one after awhile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69662 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
556d1c28b3182d84cd1a5acf079858733cadbdcb 21-Apr-2009 Chris Lattner <sabre@nondot.org> downgrade from extwarn to warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69660 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ce84c16a9560b424d109e74126e45f99c6a08fcd 21-Apr-2009 Chris Lattner <sabre@nondot.org> downgrade from extwarn to warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69660 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ca97af8f196cae612198ecfd283f48c283f912bd 21-Apr-2009 Chris Lattner <sabre@nondot.org> improve MacroInfo to track the source range of the macro definition,
patch by Alexei Svitkine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69659 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
2451b528fe114595d0f10ef2c05047928558ab0f 21-Apr-2009 Chris Lattner <sabre@nondot.org> improve MacroInfo to track the source range of the macro definition,
patch by Alexei Svitkine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69659 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
4b4e1eb946dcdd1df1111ade301886f87e9022b0 21-Apr-2009 Chris Lattner <sabre@nondot.org> add a preprocessor callback function for #undef, patch by
Alexei Svitkine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69656 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
41c17473e3ece9e60d97c5d9397866b7730cf7ee 21-Apr-2009 Chris Lattner <sabre@nondot.org> add a preprocessor callback function for #undef, patch by
Alexei Svitkine!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69656 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
350edcf8219cfcf5392522f795bfc190ade02f8d 21-Apr-2009 Anders Carlsson <andersca@mac.com> Add a CXXDestroyExpr. Add classof member functions to CXXTempVarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/StmtNodes.def
19d28a650ca6d98f7907ad891557fccca7baaea8 21-Apr-2009 Anders Carlsson <andersca@mac.com> Add a CXXDestroyExpr. Add classof member functions to CXXTempVarDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/StmtNodes.def
6678aacfd5bfaa90a0be90f76ca678db13e3a1b1 21-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Use an APInt of target int size to detect overflow while parsing multichars.
So 'abc' on i16 platforms will warn but not on i32 platforms.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69653 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
4bc11af9bed1d4a247e3db1fcb754d410ad99099 21-Apr-2009 Sanjiv Gupta <sanjiv.gupta@microchip.com> Use an APInt of target int size to detect overflow while parsing multichars.
So 'abc' on i16 platforms will warn but not on i32 platforms.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69653 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
9373ea65895ec7b047211ea999079a05dfed19b0 21-Apr-2009 Anders Carlsson <andersca@mac.com> Add the beginnings of a CXXTempVarDecl class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
86fa7502706b993ebbe5b5be147604c3bed0fcad 21-Apr-2009 Anders Carlsson <andersca@mac.com> Add the beginnings of a CXXTempVarDecl class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
f5254bda2945bd427acad4a0f0f62026333b66ce 21-Apr-2009 Daniel Dunbar <daniel@zuster.org> Kill ASTContext::[gs]etFieldForDecl, instead we just lookup things
when we need them -- which is exactly what some code was already
doing!
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
525c9b7baeeff022127cd1b167579f3bda73b3ed 21-Apr-2009 Daniel Dunbar <daniel@zuster.org> Kill ASTContext::[gs]etFieldForDecl, instead we just lookup things
when we need them -- which is exactly what some code was already
doing!
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7ff82e7e864ca1825cef56a84b80a7999aa70316 21-Apr-2009 Mike Stump <mrs@apple.com> Fixup codegen for write barriers for block variables. Radar 6786715


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/DeclSpec.h
75b163f4c832696edf4d66d8ac1ec0ed5ea59e17 21-Apr-2009 Mike Stump <mrs@apple.com> Fixup codegen for write barriers for block variables. Radar 6786715


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/DeclSpec.h
4bcc73af80ea01c73079f1f08cffdb0fca8fc476 20-Apr-2009 Daniel Dunbar <daniel@zuster.org> Mark TypeForDecl mutable.
- Let the const propogation begin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3bfb885583f8816bf296b61c5886b97a81158bab 20-Apr-2009 Daniel Dunbar <daniel@zuster.org> Mark TypeForDecl mutable.
- Let the const propogation begin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ff9a6098a9ae0ccd6ef60b0cb8fcee9caa5b0a42 20-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Write the identifier table into the PCH file as an on-disk hash table
that also includes the contents of the IdentifierInfo itself (the
various fields and flags, along with the chain of identifiers visible
at the top level that have that name).

We don't make any use of the hash table yet, except that our
identifier ID -> string mapping points into the hash table now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
rontend/PCHWriter.h
3251ceb90b3fec68e86d6dcfa58836e20a7205c3 20-Apr-2009 Douglas Gregor <dgregor@apple.com> Write the identifier table into the PCH file as an on-disk hash table
that also includes the contents of the IdentifierInfo itself (the
various fields and flags, along with the chain of identifiers visible
at the top level that have that name).

We don't make any use of the hash table yet, except that our
identifier ID -> string mapping points into the hash table now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
rontend/PCHReader.h
rontend/PCHWriter.h
59f28e9c704f31430f9670572fd04417f12ca4dc 20-Apr-2009 Steve Naroff <snaroff@apple.com> Fix spelling error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69620 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
28e71cf851b73a67604735a9a95aef800b144e2e 20-Apr-2009 Steve Naroff <snaroff@apple.com> Fix spelling error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69620 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7333b4925d5032304792f8b0a268549bbbc3a6ef 20-Apr-2009 Steve Naroff <snaroff@apple.com> Add pch reader/writer support for ObjCContainerDecl, ObjCInterfaceDecl, & ObjCIvarDecl.

Next step: Add selector support to PCHWriter::AddDeclarationName().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
33feeb019a5742b286eededd5446ec0fe87c5a61 20-Apr-2009 Steve Naroff <snaroff@apple.com> Add pch reader/writer support for ObjCContainerDecl, ObjCInterfaceDecl, & ObjCIvarDecl.

Next step: Add selector support to PCHWriter::AddDeclarationName().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
15ce6cc75018b69a2fc849c9ee5bceb30e0e67c1 20-Apr-2009 Chris Lattner <sabre@nondot.org> the __gnuc_inline__ attribute is actually named __gnu_inline__,
PR4023


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
cf2a7211b4785068c7efa836baab90b198a4d2a6 20-Apr-2009 Chris Lattner <sabre@nondot.org> the __gnuc_inline__ attribute is actually named __gnu_inline__,
PR4023


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
arse/AttributeList.h
ac896d6f7a1167948262414f22d967fbf67f386c 20-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Allow the Info type used in the on-disk hash table generator to have state

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
24022803af76734534d7b506137142d8df5b457d 20-Apr-2009 Douglas Gregor <dgregor@apple.com> Allow the Info type used in the on-disk hash table generator to have state

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
cfe5157a5e74dbaa8d7c018c7b41dca582f21b61 20-Apr-2009 Chris Lattner <sabre@nondot.org> clean up anonymous bitfield diagnostics, PR4017


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
df9bcd568c79779d92b2f8d04a24ca822c56523d 20-Apr-2009 Chris Lattner <sabre@nondot.org> clean up anonymous bitfield diagnostics, PR4017


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
87887da76ef2e4c5d22ce9bb45623b6b9a24cf19 20-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce the notion of a SemaConsumer, which is an ASTConsumer that
also gets access to the Sema object performing semantic analysis. This
will be used by the PCH writer to serialize Sema state.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69595 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
rontend/PCHWriter.h
ema/SemaConsumer.h
e7785040107266d01ebdcc066365f70b7ace371f 20-Apr-2009 Douglas Gregor <dgregor@apple.com> Introduce the notion of a SemaConsumer, which is an ASTConsumer that
also gets access to the Sema object performing semantic analysis. This
will be used by the PCH writer to serialize Sema state.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69595 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
rontend/PCHWriter.h
ema/SemaConsumer.h
79ea0e0d94f7bbe2f26ac0eaf995e420bb7298c9 20-Apr-2009 Steve Naroff <snaroff@apple.com> Add pch reader/writer support for ObjCMethodDecl.

Test will be enabled with ObjCInterfaceDecl is added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
53c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eec 20-Apr-2009 Steve Naroff <snaroff@apple.com> Add pch reader/writer support for ObjCMethodDecl.

Test will be enabled with ObjCInterfaceDecl is added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
rontend/PCHBitCodes.h
5271586cd31409625617b202d9401407ffef17c6 20-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make the on-disk hash table usable with non-file
raw_ostreams. Requires LLVM r69583.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
3432fa591ca896e5828bbcc83807353b9b6fba2b 20-Apr-2009 Douglas Gregor <dgregor@apple.com> Make the on-disk hash table usable with non-file
raw_ostreams. Requires LLVM r69583.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
4e58a6d2fe2cac2f743c9f54e7c22f8f47a07ac5 20-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Move the on-disk hash table code into its own header. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
9378ba44b3f46d697653003c784be87746e138d2 20-Apr-2009 Douglas Gregor <dgregor@apple.com> Move the on-disk hash table code into its own header. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69580 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OnDiskHashTable.h
701c850caafa406bf8217cbeb32ee8d6da34b2b3 20-Apr-2009 Daniel Dunbar <daniel@zuster.org> Make FieldDecl parameter to getObjCEncodingForType... const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
153bfe5795e2c1a5a738e73d3784964e082237fc 20-Apr-2009 Daniel Dunbar <daniel@zuster.org> Make FieldDecl parameter to getObjCEncodingForType... const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69578 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c5d0d047367ebacf27b7300ab11de11999bd5dd3 20-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove loc::FuncVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69577 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
5cbe5f9105eae5968229fa2d82fc258e61e27153 20-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove loc::FuncVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69577 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
8f56a6dad89b550b3517c34336fad5bcce9cc09e 20-Apr-2009 Chris Lattner <sabre@nondot.org> Add option groups for -Wimplicit-int and -Wimplicit.
remove special case hack for -Werror-implicit-function-declaration



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
9da8a683f29a1780f1e0e59d392affedb759bb14 20-Apr-2009 Chris Lattner <sabre@nondot.org> Add option groups for -Wimplicit-int and -Wimplicit.
remove special case hack for -Werror-implicit-function-declaration



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69571 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
cac107ad72067922b197790a0183d1dadfbdae37 20-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> get a CodeTextRegion when visiting FunctionDecl reference.
get FunctionDecl with more general utility method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69570 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
369f447eded97e6048ced02c0c2be3842f61fc1c 20-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> get a CodeTextRegion when visiting FunctionDecl reference.
get FunctionDecl with more general utility method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69570 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
6092d38bffc21b223742e42b6c06a8fe78494c25 20-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Hook up -Wunused-value to the unused expression warning. This is
useful for macro-heavy codebases that tend to trigger this warning a
lot.

Note that a make clean is required to get the option working; the
dependencies for DiagnosticGroups.inc appear to be broken.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
0272b56daef094f74613c7838f48de8ebd1c6e79 20-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Hook up -Wunused-value to the unused expression warning. This is
useful for macro-heavy codebases that tend to trigger this warning a
lot.

Note that a make clean is required to get the option working; the
dependencies for DiagnosticGroups.inc appear to be broken.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f0587c6ee2d465d64c0f64fda81cfb665f400a43 20-Apr-2009 Daniel Dunbar <daniel@zuster.org> Remove non-const form of lookupFieldDeclForIvar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
60952f94cf67ddb566600434857cad7a48264c3b 20-Apr-2009 Daniel Dunbar <daniel@zuster.org> Remove non-const form of lookupFieldDeclForIvar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5dd80064fc52268f96d03a28d474ab1156517355 20-Apr-2009 Chris Lattner <sabre@nondot.org> implement "#pragma GCC diagnostic". Besides being a nice feature, this
will let us test for multiple different warning modes in the same
file in regression tests.

This implements rdar://2362963, a 10-year old feature request :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
edaf877d2469147ba818187a3e57a00b3f73b123 20-Apr-2009 Chris Lattner <sabre@nondot.org> implement "#pragma GCC diagnostic". Besides being a nice feature, this
will let us test for multiple different warning modes in the same
file in regression tests.

This implements rdar://2362963, a 10-year old feature request :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
9b343070dcd19f948a392caf8a1b6cd8ed0a8b8d 20-Apr-2009 Chris Lattner <sabre@nondot.org> move group twiddling options into Diagnostic.cpp instead of
Warnings.cpp. Warnings.cpp now doesn't need to #include
tblgen produced output directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69559 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3bc172bc6a787842db6fea351cf6929539fca70d 20-Apr-2009 Chris Lattner <sabre@nondot.org> move group twiddling options into Diagnostic.cpp instead of
Warnings.cpp. Warnings.cpp now doesn't need to #include
tblgen produced output directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69559 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
fa661e0578bb7e6a5b60afd48b01e113383c48ac 19-Apr-2009 Chris Lattner <sabre@nondot.org> Warn about uses of #pragma STDC FENV_ACCESS ON, since we don't
support it. I don't know what evaluation method we use for complex
arithmetic, so I don't know whether/if we should warn about use of
CX_LIMITED_RANGE.

This concludes my planned hacking on STDC pragmas, flame away :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
4d8aac3778b40c161bed9964125948ee01c08821 19-Apr-2009 Chris Lattner <sabre@nondot.org> Warn about uses of #pragma STDC FENV_ACCESS ON, since we don't
support it. I don't know what evaluation method we use for complex
arithmetic, so I don't know whether/if we should warn about use of
CX_LIMITED_RANGE.

This concludes my planned hacking on STDC pragmas, flame away :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6f7bb267206298ab332bb8ec207193024595eafb 19-Apr-2009 Chris Lattner <sabre@nondot.org> diagnose invalid syntax of STDC pragmas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69554 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6c5cf4a2e234923ab66127de0874a71cb6bfdd83 19-Apr-2009 Chris Lattner <sabre@nondot.org> diagnose invalid syntax of STDC pragmas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69554 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
b34382785e1b8bafe77e52998e11a9bc0e7daad3 19-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Print an error for uses of __thread on targets which don't support it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4fb71b0cc3c199cc0c736b4ec4fabdd01f56f4e8 19-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Print an error for uses of __thread on targets which don't support it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69553 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8f5751758930cdecf2768a506c1614df44a598ea 19-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Add target property for whether thread-local storage is supported.
Let me know if I messed up for some target. Note that for Windows, we
should be able to support it (MSVC supports "__declspec(thread)"), but
I'm pretty sure LLVM doesn't know how to generate the correct code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
b030f0272500c6c5602f587ac029ee0dc0e5a05c 19-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Add target property for whether thread-local storage is supported.
Let me know if I messed up for some target. Note that for Windows, we
should be able to support it (MSVC supports "__declspec(thread)"), but
I'm pretty sure LLVM doesn't know how to generate the correct code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69552 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
cc848420d12e5f670b908f6d71fde498d36632be 19-Apr-2009 Chris Lattner <sabre@nondot.org> reject invalid stuff in the STDC namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
f545be5552b6fd40a4c766fbf82dab0ab5305790 19-Apr-2009 Chris Lattner <sabre@nondot.org> reject invalid stuff in the STDC namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ca63e1c0301e1abeabf77b9ae36f429e7072b764 19-Apr-2009 Daniel Dunbar <daniel@zuster.org> Forward f[no-]dollars-in-identifiers to clang, when specified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69549 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
7695fba30221613b7cf31276456217c41bb90960 19-Apr-2009 Daniel Dunbar <daniel@zuster.org> Forward f[no-]dollars-in-identifiers to clang, when specified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69549 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d65e0141a566fdef42f9be21026148f41cab0f4c 19-Apr-2009 Chris Lattner <sabre@nondot.org> basic support for -Wunknown-pragmas, more coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69547 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
af7cdf45da4925f788e87a4c318ee67404646088 19-Apr-2009 Chris Lattner <sabre@nondot.org> basic support for -Wunknown-pragmas, more coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69547 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
4bd8a7ff789dbaf423fb1bd7e9754495344bdc04 19-Apr-2009 Daniel Dunbar <daniel@zuster.org> Forward -fno-diagnostics-fixit-info to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69546 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
49138fc59eeac2aacd3b7e04c2642180d5baefd7 19-Apr-2009 Daniel Dunbar <daniel@zuster.org> Forward -fno-diagnostics-fixit-info to clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69546 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
1a3e74ccb00a3b0e61cf8debec8a20d274ab031f 19-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Add more thorough/correct checking for invalid __thread specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
63054b39a27ff333487e88247d495a444838b44a 19-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Add more thorough/correct checking for invalid __thread specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
041bd734664c2ce26c8c1fbf7c0403309dd0764b 19-Apr-2009 Chris Lattner <sabre@nondot.org> implement compiler support for -fno-diagnostics-fixit-info,
rdar://6805442


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69525 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
aa5bf2e8dc01f9835efef76222dc440a5c18b160 19-Apr-2009 Chris Lattner <sabre@nondot.org> implement compiler support for -fno-diagnostics-fixit-info,
rdar://6805442


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69525 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
a2eb46453acb0578d4bf6a4f455383031bf79df7 19-Apr-2009 Chris Lattner <sabre@nondot.org> second half of indirect jump checking: make sure that any
address taken labels are in function scope


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b5cf1ea6f410f72290b9c7767a63717a944c7a8f 19-Apr-2009 Chris Lattner <sabre@nondot.org> second half of indirect jump checking: make sure that any
address taken labels are in function scope


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
578689d178efcaf8ece43554c1bdd6e8abf28372 19-Apr-2009 Chris Lattner <sabre@nondot.org> First half of jump scope checking for indirect goto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
04ea2b633a1f8ee662b8a99d2903a11c1b68e1ed 19-Apr-2009 Chris Lattner <sabre@nondot.org> First half of jump scope checking for indirect goto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9ef9c284e6791a48278b3b76cfa85b05cc0c5a20 19-Apr-2009 Chris Lattner <sabre@nondot.org> Add location info for indirect goto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ad56d684259f706b7c0ae5ad9c23adb4f2926817 19-Apr-2009 Chris Lattner <sabre@nondot.org> Add location info for indirect goto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
218c7abd63c51aa2e8a15524319b4f510cfca3d9 19-Apr-2009 Chris Lattner <sabre@nondot.org> add a new Lexer::SkipEscapedNewLines method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69483 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
033749571f8d4c804eeb357c70b06424aa24503b 19-Apr-2009 Chris Lattner <sabre@nondot.org> add a new Lexer::SkipEscapedNewLines method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69483 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
f5ae880a433437e9447afda709556959df61cc40 19-Apr-2009 Chris Lattner <sabre@nondot.org> factor escape newline measuring out into its own helper function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69482 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
24f0e48c0aa62f2268e061aad70f9b19a59e7b52 19-Apr-2009 Chris Lattner <sabre@nondot.org> factor escape newline measuring out into its own helper function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69482 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
0ec3c6ad603fb0128360c59e7bad8cc1118bd33e 18-Apr-2009 Chris Lattner <sabre@nondot.org> reject invalid jumps among pieces of @try blocks. This seems to work
reasonably well except for the problem that @catches are nested within
each other in the AST, giving the ugly diagnostics in L8.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
07e775d5a1d5262a9cfe1ff333af713535b8cbab 18-Apr-2009 Chris Lattner <sabre@nondot.org> reject invalid jumps among pieces of @try blocks. This seems to work
reasonably well except for the problem that @catches are nested within
each other in the AST, giving the ugly diagnostics in L8.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticSemaKinds.td
6c892e4acce59e8caeccaf69e08dd4449870e3f5 18-Apr-2009 Anders Carlsson <andersca@mac.com> Add functions for iterating over the argument types of an ObjCMethodDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6ea8e2152e1ba93b4c80e7268403a582896dc3dc 18-Apr-2009 Anders Carlsson <andersca@mac.com> Add functions for iterating over the argument types of an ObjCMethodDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69468 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2c8f7ce1c7bf941ba219bfef249e44084c0b0f9b 18-Apr-2009 Chris Lattner <sabre@nondot.org> Improve switch diagnostic to emit the "jump" message on the
specific bad case instead of on the switch. Putting it on the
switch means you don't know what case is the problem. For
example:

scope-check.c:54:3: error: illegal switch case into protected scope
case 2:
^
scope-check.c:53:9: note: jump bypasses initialization of variable length array
int a[x];
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a9768b72bb5ea061c9f10d6aa51b3be3241f3ec2 18-Apr-2009 Chris Lattner <sabre@nondot.org> Improve switch diagnostic to emit the "jump" message on the
specific bad case instead of on the switch. Putting it on the
switch means you don't know what case is the problem. For
example:

scope-check.c:54:3: error: illegal switch case into protected scope
case 2:
^
scope-check.c:53:9: note: jump bypasses initialization of variable length array
int a[x];
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69462 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
69a480e7fedc19bb8fb33db261bc1e36100e9246 18-Apr-2009 Chris Lattner <sabre@nondot.org> first step to getting switches giving "jump into vla scope" errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
366920a45e3e278d35cbc3bc74d9d0676ae87dfe 18-Apr-2009 Chris Lattner <sabre@nondot.org> first step to getting switches giving "jump into vla scope" errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
930cc9adca0effdf3586012fa6916254b21f8e3f 18-Apr-2009 Chris Lattner <sabre@nondot.org> improve wording of scope violation error messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69456 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
5ce71c99cf00f24f876548d7f0dd0eefac47b168 18-Apr-2009 Chris Lattner <sabre@nondot.org> improve wording of scope violation error messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69456 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2b57963a5c0b7643ddf0382d7e674c791ad59abd 18-Apr-2009 Chris Lattner <sabre@nondot.org> more fun with line markers: the digit string is required to be interpreted
as decimal, even if it starts with 0. Also, since things like 0x1 are
completely illegal, don't even bother using numericliteralparser for them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69454 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
dc8c90da158030c0d0c62539e2da0adccc09f271 18-Apr-2009 Chris Lattner <sabre@nondot.org> more fun with line markers: the digit string is required to be interpreted
as decimal, even if it starts with 0. Also, since things like 0x1 are
completely illegal, don't even bother using numericliteralparser for them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69454 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
e44e5cc7af9dd85746abdb6397446f0565e9d9d6 18-Apr-2009 Chris Lattner <sabre@nondot.org> rewrite the goto scope checking code to be more efficient, simpler,
produce better diagnostics, and be more correct in ObjC cases (fixing
rdar://6803963).

An example is that we now diagnose:

int test1(int x) {
goto L;
int a[x];
int b[x];
L:
return sizeof a;
}

with:

scope-check.c:15:3: error: illegal goto into protected scope
goto L;
^
scope-check.c:17:7: note: scope created by variable length array
int b[x];
^
scope-check.c:16:7: note: scope created by variable length array
int a[x];
^

instead of just saying "invalid jump". An ObjC example is:

void test1() {
goto L;
@try {
L: ;
} @finally {
}
}

t.m:6:3: error: illegal goto into protected scope
goto L;
^
t.m:7:3: note: scope created by @try block
@try {
^

There are a whole ton of fixme's for stuff to do, but I believe that this
is a monotonic improvement over what we had.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a5251fcf79ae9707680d656377a6e43dcbff6c25 18-Apr-2009 Chris Lattner <sabre@nondot.org> rewrite the goto scope checking code to be more efficient, simpler,
produce better diagnostics, and be more correct in ObjC cases (fixing
rdar://6803963).

An example is that we now diagnose:

int test1(int x) {
goto L;
int a[x];
int b[x];
L:
return sizeof a;
}

with:

scope-check.c:15:3: error: illegal goto into protected scope
goto L;
^
scope-check.c:17:7: note: scope created by variable length array
int b[x];
^
scope-check.c:16:7: note: scope created by variable length array
int a[x];
^

instead of just saying "invalid jump". An ObjC example is:

void test1() {
goto L;
@try {
L: ;
} @finally {
}
}

t.m:6:3: error: illegal goto into protected scope
goto L;
^
t.m:7:3: note: scope created by @try block
@try {
^

There are a whole ton of fixme's for stuff to do, but I believe that this
is a monotonic improvement over what we had.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8c1d5fd953f214f47ca73a8b514b0baccfebd4c9 18-Apr-2009 Chris Lattner <sabre@nondot.org> add accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8f4e18fce5ef11a4e1bcb9dd7adcd2e20a21ef0a 18-Apr-2009 Chris Lattner <sabre@nondot.org> add accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
00b6c184715a0fa8e1af74b063f9cc05a9b60884 18-Apr-2009 Chris Lattner <sabre@nondot.org> __builtin_prefetch should be declared as "void __builtin_prefetch(const void *)",
not "const void __builtin_prefetch(void *)". This fixes PR3912.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
40c56f7129bdaf8a01e2ffe7ddde714a586eb45d 18-Apr-2009 Chris Lattner <sabre@nondot.org> __builtin_prefetch should be declared as "void __builtin_prefetch(const void *)",
not "const void __builtin_prefetch(void *)". This fixes PR3912.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ac014be617010f3fe5c7d7a4cd4911b71aee83f9 18-Apr-2009 Chris Lattner <sabre@nondot.org> second half of PR3940: #line requires simple digit sequence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
bc81682756a2406e1788b14c576b3c8b515d97a3 18-Apr-2009 Chris Lattner <sabre@nondot.org> second half of PR3940: #line requires simple digit sequence.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
e01ad449597f9ae32fda68a1991ed1fd0bece9e3 18-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Store the type ID for __builtin_va_list in the PCH file, so that the
AST context's __builtin_va_list type will be set when the PCH file is
loaded. This fixes the crash when CodeGen'ing a va_arg expression
pulled in from a PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69421 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
ad1de006ea080b540e480efc6b86c2e201dbf1ec 18-Apr-2009 Douglas Gregor <dgregor@apple.com> Store the type ID for __builtin_va_list in the PCH file, so that the
AST context's __builtin_va_list type will be set when the PCH file is
loaded. This fixes the crash when CodeGen'ing a va_arg expression
pulled in from a PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69421 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
21d14d0db92940b316d2923bc8ef23280013ed60 18-Apr-2009 Chris Lattner <sabre@nondot.org> this is really just a recommendation, not a requirement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69416 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
d92fa477d54e42c1f0cf9a785b53659a638b8eeb 18-Apr-2009 Chris Lattner <sabre@nondot.org> this is really just a recommendation, not a requirement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69416 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
3c665db9c1af6ed5787ec2b7f31e5e6ea45d69b0 18-Apr-2009 Chris Lattner <sabre@nondot.org> enforce requirements imposed by C90 6.8 TC1, fixing PR3919.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6272bcfe5dc148d293ccce9db19df9e71c991cde 18-Apr-2009 Chris Lattner <sabre@nondot.org> enforce requirements imposed by C90 6.8 TC1, fixing PR3919.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69415 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
95734503e030e934c4e082ee2ff44d7106bb8c7b 18-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Preliminary PCH support in the driver

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69410 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
df91ef3d6c55692a0236f67b6c6b134a3bf84098 18-Apr-2009 Douglas Gregor <dgregor@apple.com> Preliminary PCH support in the driver

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69410 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
3b9a7c8115604645e51bd272985603fa4f3c6d61 18-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Lazy deserialization of function bodies for PCH files. For the Carbon
"Hello, World!", this takes us from deserializing 6469
statements/expressions down to deserializing 1
statement/expression. It only translated into a 1% improvement on the
Carbon-prefixed 403.gcc, but (a) it's the right thing to do, and (b)
we expect this to matter more once we lazily deserialize identifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExternalASTSource.h
rontend/PCHReader.h
250fc9c859fdeed3f200ae911a7e7ea338f38436 18-Apr-2009 Douglas Gregor <dgregor@apple.com> Lazy deserialization of function bodies for PCH files. For the Carbon
"Hello, World!", this takes us from deserializing 6469
statements/expressions down to deserializing 1
statement/expression. It only translated into a 1% improvement on the
Carbon-prefixed 403.gcc, but (a) it's the right thing to do, and (b)
we expect this to matter more once we lazily deserialize identifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExternalASTSource.h
rontend/PCHReader.h
e3241e9ede65d127bd9e98fa29d8aa7546288434 18-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> FunctionDecl::getBody() is getting an ASTContext argument for use in
lazy PCH deserialization. Propagate that argument wherever it needs to
be. No functionality change, except that I've tightened up a few PCH
tests in preparation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/Expr.h
ST/ExternalASTSource.h
rontend/PCHReader.h
7297134f128423fce2e88f92421ed135bded7d4e 18-Apr-2009 Douglas Gregor <dgregor@apple.com> FunctionDecl::getBody() is getting an ASTContext argument for use in
lazy PCH deserialization. Propagate that argument wherever it needs to
be. No functionality change, except that I've tightened up a few PCH
tests in preparation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/Expr.h
ST/ExternalASTSource.h
rontend/PCHReader.h
3e8b99c43069c25c1de5461543f2220cb0142696 18-Apr-2009 Chris Lattner <sabre@nondot.org> remove dead diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69405 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
95d0281798d837041272c4dbeed37b33ca0f2b0d 18-Apr-2009 Chris Lattner <sabre@nondot.org> remove dead diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69405 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
c042efff9868728a019f55a3cca1622725443451 18-Apr-2009 Chris Lattner <sabre@nondot.org> implement PR3940: #line numbers not fully checked


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
58e91d57510a5ce4fd424fe7fd1cdfa86701ef35 18-Apr-2009 Chris Lattner <sabre@nondot.org> implement PR3940: #line numbers not fully checked


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
882d285565daf61297ec8726283d3242e6c1cd3e 18-Apr-2009 Chris Lattner <sabre@nondot.org> #line is allowed to have macros that expand to nothing after them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69401 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ab82f41b217ce588a9456c0b4411f219d3ed0df8 18-Apr-2009 Chris Lattner <sabre@nondot.org> #line is allowed to have macros that expand to nothing after them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69401 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
456e095968a54d21f42ddbbc666e7afbeb2265b6 18-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Keep track of the number of statements/expressions written to and read
from a PCH file. It turns out that "Hello, World!" is bringing in 19%
of all of the statements in Carbon.h, so we need to be lazy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69393 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
3e1af84bb0092a1aafb49deaa4ab6664c9a9071b 18-Apr-2009 Douglas Gregor <dgregor@apple.com> Keep track of the number of statements/expressions written to and read
from a PCH file. It turns out that "Hello, World!" is bringing in 19%
of all of the statements in Carbon.h, so we need to be lazy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69393 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
5d231e397238feb9ea2f7e6903fbfdce0cde9dff 18-Apr-2009 Chris Lattner <sabre@nondot.org> tweak redefinition of a typedef a bit to fix a couple of problems:
1. We had logic in sema to decide whether or not to emit the error
based on manually checking whether in a system header file.
2. we were allowing redefinitions of typedefs in class scope in C++
if in header file.
3. there was no way to force typedef redefinitions to be accepted
by the C compiler, which annoys me when stripping linemarkers out
of .i files.

The fix is to split the C++ class typedef redefinition path from the
C path, and change the C path to be a warning that normally maps to
error. This causes it to properly be ignored in system headers,
etc. and gives us a way to control it. Passing
-Wtypedef-redefinition now turns the error into a warning.

One behavior change is that we now diagnose cases where you redefine
a typedef in your .c file that was defined in a header file. This
seems like reasonable behavior, and the diagnostic now indicates that
it can be controlled with -Wtypedef-redefinition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
32b06752d05630996b43c543c80796e1e16dadde 18-Apr-2009 Chris Lattner <sabre@nondot.org> tweak redefinition of a typedef a bit to fix a couple of problems:
1. We had logic in sema to decide whether or not to emit the error
based on manually checking whether in a system header file.
2. we were allowing redefinitions of typedefs in class scope in C++
if in header file.
3. there was no way to force typedef redefinitions to be accepted
by the C compiler, which annoys me when stripping linemarkers out
of .i files.

The fix is to split the C++ class typedef redefinition path from the
C path, and change the C path to be a warning that normally maps to
error. This causes it to properly be ignored in system headers,
etc. and gives us a way to control it. Passing
-Wtypedef-redefinition now turns the error into a warning.

One behavior change is that we now diagnose cases where you redefine
a typedef in your .c file that was defined in a header file. This
seems like reasonable behavior, and the diagnostic now indicates that
it can be controlled with -Wtypedef-redefinition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69391 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b9f636426bb01df0ab7e2216d2bbcb6cf12b3f07 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Fix two embarrassing PCH bugs:
1) Accidentally used delete [] on an array of statements that was allocated with ASTContext's allocator
2) Deserialization of names with multiple declarations (e.g., a struct and a function) used the wrong mangling constant, causing it to view declaration IDs as Decl*s.

403.gcc builds and links properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
88c9a46f0b84f1ee83e01917825346551ee540d0 17-Apr-2009 Douglas Gregor <dgregor@apple.com> Fix two embarrassing PCH bugs:
1) Accidentally used delete [] on an array of statements that was allocated with ASTContext's allocator
2) Deserialization of names with multiple declarations (e.g., a struct and a function) used the wrong mangling constant, causing it to view declaration IDs as Decl*s.

403.gcc builds and links properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
3e1f9fb48943b37644188d83a59cc0bf4d666462 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for inline assembly statements.

This completes support for all of C (+ extensions). We can (again)
build a PCH file for Carbon.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
cd7d5a9dc558178ed7a66032f888781b3c592e4f 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for inline assembly statements.

This completes support for all of C (+ extensions). We can (again)
build a PCH file for Carbon.h.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
5f7937dc4f4b2513881265a8cb78f5629ad1fadc 17-Apr-2009 Chris Lattner <sabre@nondot.org> refactor htmldiags to be created up front like the other diag clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69379 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
rontend/PathDiagnosticClients.h
409d4e716a01a71c4fecfaec59ca8348c8a5d275 17-Apr-2009 Chris Lattner <sabre@nondot.org> refactor htmldiags to be created up front like the other diag clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69379 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
rontend/PathDiagnosticClients.h
2961dc55ecc216dce4bb45877dd6a16067a77fa5 17-Apr-2009 Chris Lattner <sabre@nondot.org> add a virtual method to DiagnosticClient to get rid of some fragile
casting in clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/TextDiagnosticPrinter.h
40469651a3f8379dc0f32df69e9bade06a2aad36 17-Apr-2009 Chris Lattner <sabre@nondot.org> add a virtual method to DiagnosticClient to get rid of some fragile
casting in clang-cc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69377 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/TextDiagnosticPrinter.h
e246b741a2f4b00a690b9e975201b7ced23f68cf 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for blocks

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
84af7c27cdc615ff917a501d61256b4049383c97 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for blocks

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
d33a0d6afa38bd128cf17ea23580fa8ebb98f27f 17-Apr-2009 Chris Lattner <sabre@nondot.org> wire up comment diagnostics to -Wcomment, add it to -Wall. Now
you can silence these with -Wno-all or -Wno-comment, but they
still default to on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
8705b4785a81a942d4633f1628bc0520b060b4e6 17-Apr-2009 Chris Lattner <sabre@nondot.org> wire up comment diagnostics to -Wcomment, add it to -Wall. Now
you can silence these with -Wno-all or -Wno-comment, but they
still default to on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticLexKinds.td
eca12f63c262ab4d44f40b966790c9155518b3ae 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for GNU statement expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69370 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
6a2dd55b0b3ae376d449a4b07bbb6b2d30b26330 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for GNU statement expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69370 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
95a8fe35717bf897cc9c0bcc47482a4ba3301120 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for indirect gotos and address-of-label expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69369 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
7d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41f 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for indirect gotos and address-of-label expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69369 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
f9e757c38a35614303a564697c87ab4a0b6052a6 17-Apr-2009 Chris Lattner <sabre@nondot.org> move a vector conversion warning to be diabled by default (like gcc),
but add it to -Wall (unlike gcc) and give it a controlling group
(-Wvector-conversions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
71558924fc13d5b65f72cc9f3bd261c7214098a1 17-Apr-2009 Chris Lattner <sabre@nondot.org> move a vector conversion warning to be diabled by default (like gcc),
but add it to -Wall (unlike gcc) and give it a controlling group
(-Wvector-conversions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69365 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticSemaKinds.td
6e411bfd8bc304cf4746140e2ff51d243a564d27 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for labels and goto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
1de05feeeafe5b215fe7617594a7076a5192a6e2 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for labels and goto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
f2513a3ea74dbe4bb3b3e23da44534834857f39a 17-Apr-2009 Chris Lattner <sabre@nondot.org> add basic support for building DiagnosticGroups.inc with cmake


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69357 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
995533a10db296db77374df8d8a3b083f34e7230 17-Apr-2009 Chris Lattner <sabre@nondot.org> add basic support for building DiagnosticGroups.inc with cmake


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69357 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
78ff29fdafdbdf8fcf3de07337355aa99eb00cf2 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for declaration statements, and a test for PredefinedExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
84f2170062014d268951902164bed0d8bdea0e82 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for declaration statements, and a test for PredefinedExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
22d2dcd05c69e223587fa4f3ce3f356d1631007f 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for return statements.

Optimize PCH encoding for switch-case statements slightly, by making
the switch-case numbering local to a particular statement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
0de9d8857b715c2f45c987651f4ce06d73330d93 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for return statements.

Optimize PCH encoding for switch-case statements slightly, by making
the switch-case numbering local to a particular statement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
d316913addcd81dcae78bef3296ae2e624ec2b33 17-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement lvalue test for conditional expressions.
Add a few commented lines to the test case that point out things that don't work yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
76458501a8963fa11b91c9337a487de6871169b4 17-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement lvalue test for conditional expressions.
Add a few commented lines to the test case that point out things that don't work yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2ccf617abead15547573f284d4841cf1f3bd2f92 17-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Added -print-ivar-layout option. No change in functionality
yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
448f5e6c191b40c90a67c48547df420d16f48b96 17-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Added -print-ivar-layout option. No change in functionality
yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69346 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
39a10dbbffb3f5f06c9412b24d32a6c6563d0af1 17-Apr-2009 Anders Carlsson <andersca@mac.com> Add support for the __has_trivial_destructor type trait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69345 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
072abefcddea5fb65e435cea60921b3c21c1279d 17-Apr-2009 Anders Carlsson <andersca@mac.com> Add support for the __has_trivial_destructor type trait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69345 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
fb5f25baeb2fc7145db78312e05b9e34b39ec4e3 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for do-while and for loops

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69334 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
67d8249924ef38a5375ff9c92cd21c1854d6abab 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for do-while and for loops

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69334 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
a6b503f5f754f4c798ce80471cbcdf03a01205a3 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for while and continue statements

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
d921cf976b4769af8d06d6763a2547dadf7940ab 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for while and continue statements

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
9c4782a93e8963f9b180c851b00a5f3568a5918b 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for the first batch of statements, including null,
compound, case, default, if, switch, and break statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
025452fa0eda63e150cfaeebe64f0a19c96b3a06 17-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for the first batch of statements, including null,
compound, case, default, if, switch, and break statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
6a51bb864f69fdd310f475adcd5e5d75b8789bf0 17-Apr-2009 Anders Carlsson <andersca@mac.com> Add constructor getter to CXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
d87a5012d174ae5aa076b3fa800aecf55d70bac4 17-Apr-2009 Anders Carlsson <andersca@mac.com> Add constructor getter to CXXTemporaryObjectExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
11ee7dd154bd9d5201df579de85aa832ce20c0c6 17-Apr-2009 Chris Lattner <sabre@nondot.org> -Wall is -Wmost -Wparentheses



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69324 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
b00ac07d2582b8bd32b61478970e10a1524b0298 17-Apr-2009 Chris Lattner <sabre@nondot.org> -Wall is -Wmost -Wparentheses



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69324 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
c72f6c80b9e2f14ecff2f30ad6f8ba2f8906d17d 17-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Prepare PCH reader and writer for (de-)serialization of statements. No
functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69319 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
c9490c000f515c29f200a1215328d8ab9a0f3818 17-Apr-2009 Douglas Gregor <dgregor@apple.com> Prepare PCH reader and writer for (de-)serialization of statements. No
functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69319 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
bd26196393e625829ded9aab83e56c39b65c9ed0 16-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a crash bug when comparing overload quality of conversion operators with conversion constructors.
Remove an atrocious amount of trailing whitespace in the overloaded operator mangler. Sorry, couldn't help myself.
Change the DeclType parameter of Sema::CheckReferenceInit to be passed by value instead of reference. It wasn't changed anywhere.
Let the parser handle C++'s irregular grammar around assignment-expression and conditional-expression.
And finally, the reason for all this stuff: implement C++ semantics for the conditional operator. The implementation is complete except for determining lvalueness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69299 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/OperatorKinds.def
3201f6beec688ab9fe8750527e28f52d5420e22d 16-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix a crash bug when comparing overload quality of conversion operators with conversion constructors.
Remove an atrocious amount of trailing whitespace in the overloaded operator mangler. Sorry, couldn't help myself.
Change the DeclType parameter of Sema::CheckReferenceInit to be passed by value instead of reference. It wasn't changed anywhere.
Let the parser handle C++'s irregular grammar around assignment-expression and conditional-expression.
And finally, the reason for all this stuff: implement C++ semantics for the conditional operator. The implementation is complete except for determining lvalueness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69299 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/OperatorKinds.def
77c7d34ab7344a7cb55595cdbc38bc9febe6b11f 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Pass -fdiagnostics-show-option to clang-cc by default.
- <rdar://problem/6796848> implement -fdiagnostics-show-option


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69276 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9e820ee054fefe5422b4db3f681e567a8976747e 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Pass -fdiagnostics-show-option to clang-cc by default.
- <rdar://problem/6796848> implement -fdiagnostics-show-option


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69276 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d9c0d24ed777c33ccbe2ba5fecf4acd0f6413966 16-Apr-2009 Chris Lattner <sabre@nondot.org> other half of 69274



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
56dc97a8f27016775f3b2279af42bea1dd492617 16-Apr-2009 Chris Lattner <sabre@nondot.org> other half of 69274



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
cab574ff191f66ef5541c8cdb459c3f7946bd651 16-Apr-2009 Chris Lattner <sabre@nondot.org> split diagnostic group definitions out into their own file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticOptions.td
asic/Makefile
11bddefe100d439b61cff2d592fa167b7e778ae1 16-Apr-2009 Chris Lattner <sabre@nondot.org> split diagnostic group definitions out into their own file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticGroups.td
asic/DiagnosticOptions.td
asic/Makefile
8ee040e4581ec7530eae4b689ab7a4a9c9ce9bbd 16-Apr-2009 Chris Lattner <sabre@nondot.org> tblgen is now passing diagnostic group information in the .inc file, ignore it everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
19cbb44e3c4f2181dafa2ab92d3e3a26619b71d9 16-Apr-2009 Chris Lattner <sabre@nondot.org> tblgen is now passing diagnostic group information in the .inc file, ignore it everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
a96ec3bcfecbf4d1a9b4b6523060eb591a905810 16-Apr-2009 Chris Lattner <sabre@nondot.org> implement framework for -fdiagnostics-show-option, but tblgen isn't
passing down the right info yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69268 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/TextDiagnosticPrinter.h
d51d74a3e89c5e5fc9bfd2814996a5feab6dc932 16-Apr-2009 Chris Lattner <sabre@nondot.org> implement framework for -fdiagnostics-show-option, but tblgen isn't
passing down the right info yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69268 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
rontend/TextDiagnosticPrinter.h
85b1ac8086b3ceaf6602590c5bb0236150ae0d7c 16-Apr-2009 Chris Lattner <sabre@nondot.org> move handling of -pedantic and -pedantic-errors into Diagnostics,
out of Warnings.cpp. This simplifies warnings.cpp and makes it more
efficient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b54b276a920246c595a0498da281821eb9d22996 16-Apr-2009 Chris Lattner <sabre@nondot.org> move handling of -pedantic and -pedantic-errors into Diagnostics,
out of Warnings.cpp. This simplifies warnings.cpp and makes it more
efficient.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
8444dd14fb028ecd77751405c8be4ea8686ce6f1 16-Apr-2009 Chris Lattner <sabre@nondot.org> arrange for -Wno-error=foo warnings to be immune to -Werror as
they are supposed to be.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2b07d8fe9e8a8ba12d64066632e17a9a5308a12e 16-Apr-2009 Chris Lattner <sabre@nondot.org> arrange for -Wno-error=foo warnings to be immune to -Werror as
they are supposed to be.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
0958cff64be2a6fa11889c64ae54944b85912bce 16-Apr-2009 Chris Lattner <sabre@nondot.org> change mappings to distinguish between "unset", "set by the user" and
"set to the default value".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
691f1ae7164ba78c3dd7ac20c487399935b9544b 16-Apr-2009 Chris Lattner <sabre@nondot.org> change mappings to distinguish between "unset", "set by the user" and
"set to the default value".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69264 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
00d3c7987125945b112779784cb8519de47afdb5 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Remove the majority of -W* options, the driver doesn't
generally need to know about these now we don't have to hold
clang-cc's hand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69263 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
e5ca82f20860797b5238d0a67f5ed00281370f7a 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Remove the majority of -W* options, the driver doesn't
generally need to know about these now we don't have to hold
clang-cc's hand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69263 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
0e9eeea74fa74cc4120dfaa1c7f588a9c99de64a 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward -W* to clang, it can handle all these itself now.

Remove clang_W_Group and clang_ignored_W_Group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69261 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
06ef3c3e9be4923b8e29c8e267b0c56afaa14ff3 16-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward -W* to clang, it can handle all these itself now.

Remove clang_W_Group and clang_ignored_W_Group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69261 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
fe7d902badef88957acc4652baeba2e7497e00e0 16-Apr-2009 Chris Lattner <sabre@nondot.org> switch DiagMappings *back* to 4 bits per diag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
e29cc89f82261ad899791f47d1c1d9ef91e172b6 16-Apr-2009 Chris Lattner <sabre@nondot.org> switch DiagMappings *back* to 4 bits per diag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69260 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
28d6d3f8d90d991fc8fb78de251e1a13240a79e0 16-Apr-2009 Chris Lattner <sabre@nondot.org> implement -Wno-#warnings etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6ac9ffc9f0c07671211484385ab00e4337f27895 16-Apr-2009 Chris Lattner <sabre@nondot.org> implement -Wno-#warnings etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69259 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ceb004d789eb5057182c35d399bbde104dec2fc3 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate pch::TYPE_ATTR, which is never used

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69256 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
63f5c2646e75041277657aa1392a5bdd643367a7 16-Apr-2009 Douglas Gregor <dgregor@apple.com> Eliminate pch::TYPE_ATTR, which is never used

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69256 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
b70b48fec5bfeef402757d6ca8034ff879d52a66 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for CompoundLiteralExpr. This is the last C expression
that does not require PCH support for statements. Only AddrLabelExpr,
StmtExpr, and BlockExpr remain (for C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
ba6d7e7fa5f79959d3eef39adb5620d845ba5198 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for CompoundLiteralExpr. This is the last C expression
that does not require PCH support for statements. Only AddrLabelExpr,
StmtExpr, and BlockExpr remain (for C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
6710a3cb6c5ecf9a10f118028aac70bffbc42a67 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for InitListExpr, DesignatedInitExpr, and ImplicitValueInitExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
d077d759d0c7fceee98f4e77b6423a3f11cfc849 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for InitListExpr, DesignatedInitExpr, and ImplicitValueInitExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69251 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
2b10743b92e831d19ea39b038d3af55821150f75 16-Apr-2009 Chris Lattner <sabre@nondot.org> add scafolding to represent heirarchical warnings, start with -Wall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69246 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
bc583a0e02c39cc84c1392fa89cca8b62b79c3de 16-Apr-2009 Chris Lattner <sabre@nondot.org> add scafolding to represent heirarchical warnings, start with -Wall.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69246 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
c636371070a906200e74097d5d940c9e29500d11 16-Apr-2009 Anders Carlsson <andersca@mac.com> Add support for the __has_trivial_constructor type trait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
347ba89dec89091868982434154c3508085b727a 16-Apr-2009 Anders Carlsson <andersca@mac.com> Add support for the __has_trivial_constructor type trait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
725e94b56fd3a575a687ef6aedcb28d8fb614904 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for ShuffleVectorExpr and BlockDeclRefExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
94cd5d1397bb1a8bcd109602aa38dd787b164c22 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for ShuffleVectorExpr and BlockDeclRefExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
209d4621adeb4554b5e64a05d53c2fe40b0061d9 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for TypesCompatibleExpr, ChooseExpr, and GNUNullExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
44cae0c8669cdf83618cbe7fd36ea7a8e51cf97f 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for TypesCompatibleExpr, ChooseExpr, and GNUNullExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
ec0b8294b6a1a71300f08b0485ba370d4952ee73 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for ExtVectorElementExpr and VAArgExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69240 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
d3c98a02c73417689deaaa6671ea6df7f2a8a73c 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for ExtVectorElementExpr and VAArgExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69240 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
ab98e2fbb6971f7aedf25ad9858b6fb29084f416 16-Apr-2009 Chris Lattner <sabre@nondot.org> add anonymous groups for all the warning command line flags that the clang
driver accepts and discards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
5b43098e90df2822612e9d57380e3228f1becf15 16-Apr-2009 Chris Lattner <sabre@nondot.org> add anonymous groups for all the warning command line flags that the clang
driver accepts and discards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
c599bbf9f6816cbefa2650ab18a4ce610775425f 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for CompoundAssignOperator and ConditionalOperator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for CompoundAssignOperator and ConditionalOperator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
a577ce39abfe27539091d4663721384bdd025d5d 16-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -Wextra and -W



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69236 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
c83b60de5d0e76578f913f3fc9f3b0df0748fd83 16-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -Wextra and -W



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69236 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
d9fa421867ef9bad5c8a7027c1cc65ad6cb39b45 16-Apr-2009 Chris Lattner <sabre@nondot.org> comment out IsGroup: tblgen isn't instantiating these dependent defs quite right yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
7171825a5f55ce7439d4dfaaa32a7c0d51a7cba7 16-Apr-2009 Chris Lattner <sabre@nondot.org> comment out IsGroup: tblgen isn't instantiating these dependent defs quite right yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69234 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
21ddd8cd9f39e8090e6637fc59eec1ead8092060 16-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for ImaginaryLiteral and ArraySubscriptExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69233 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
cb2ca73c1d7e76cc1358ce51457d2d5837d84f9b 16-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for ImaginaryLiteral and ArraySubscriptExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69233 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
dca996f13719dcdff9625b6d7fd0b6f6a567eb13 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add warning when a tentative array definition is assumed to have one element.
- Also, fixed one to actually be one (instead of zero). :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dbb4f21125699f207ce7accfc52fdd99f47ce352 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add warning when a tentative array definition is assumed to have one element.
- Also, fixed one to actually be one (instead of zero). :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69226 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1c5078881cbde0e85b487f7f022b91801646d4b5 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for declaration attributes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
68a2eb0cc76267ba0615992fb5e0977853c397b2 15-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for declaration attributes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69225 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
43e778bb0fba88ebe9488701b863ef426bd37ff8 15-Apr-2009 Chris Lattner <sabre@nondot.org> generate diagnostic group tables, this requires llvm r69219 or later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
8469c313879bb3deb4af2d501c73e32add4b8e40 15-Apr-2009 Chris Lattner <sabre@nondot.org> generate diagnostic group tables, this requires llvm r69219 or later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
8b5a0529869466355ca3ab6fea17cc7b6e156865 15-Apr-2009 Chris Lattner <sabre@nondot.org> fix a name shadowing problem in tblgen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69218 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
cb75e3c27350dca6dafcf16051b033baa1a4c2a1 15-Apr-2009 Chris Lattner <sabre@nondot.org> fix a name shadowing problem in tblgen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69218 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
d532345b0be9aa1a98f3d3485d48c219ef25d640 15-Apr-2009 Chris Lattner <sabre@nondot.org> use slightly more verbose to work around a tblgen bug for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69214 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
e6cea2c04ba54cc9ea263fb36be7e4509079be30 15-Apr-2009 Chris Lattner <sabre@nondot.org> use slightly more verbose to work around a tblgen bug for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69214 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
a5238a0f1567d8e86f4137f7ca08b4d96c49043c 15-Apr-2009 Chris Lattner <sabre@nondot.org> move clang specific makefile goop to clang instead of llvm. This may require
updating the llvm tree.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69207 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
8ee50eaf015e3857c04d0ed229f8165faee5544d 15-Apr-2009 Chris Lattner <sabre@nondot.org> move clang specific makefile goop to clang instead of llvm. This may require
updating the llvm tree.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69207 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Makefile
843d9b3fb3e4556b0362320995271cdc3560fa2d 15-Apr-2009 Chris Lattner <sabre@nondot.org> move some pp diags to the right .td file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69193 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
16e48ff5e9c72101904d4422accd91c59f9f653f 15-Apr-2009 Chris Lattner <sabre@nondot.org> move some pp diags to the right .td file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69193 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
6a3f5b82ba43d29f4e5d6d82275a7982c29427f7 15-Apr-2009 Chris Lattner <sabre@nondot.org> annotate diagnostics with which groups they belong to. Each
diagnostic can belong to at most one group. Each group can
contain multiple diags, but we have nice syntax for the common
case of "1 diag to one group".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
494571789e4154a0eba645e4d611913ab395adb2 15-Apr-2009 Chris Lattner <sabre@nondot.org> annotate diagnostics with which groups they belong to. Each
diagnostic can belong to at most one group. Each group can
contain multiple diags, but we have nice syntax for the common
case of "1 diag to one group".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
364e5802d19e46d42913107998c5ff6008dd4cd1 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> For source location entries that describe instantiations, encode the
token length in the PCH file rather than trying (and failing) to
reconstruct it be getting the spelling token's length.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69191 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f60e9918690fcf02974bc1ebecd42c99d561855e 15-Apr-2009 Douglas Gregor <dgregor@apple.com> For source location entries that describe instantiations, encode the
token length in the PCH file rather than trying (and failing) to
reconstruct it be getting the spelling token's length.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69191 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
7e2b1cd1ea97a4d2ff8096be01d92646715414c2 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for MemberExpr and CallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69186 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
1f0d0133b0e8d1f01f63951ee04927796b34740d 15-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for MemberExpr and CallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69186 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
0a1d8a76950c44e548b99a05f37177583f38d2c4 15-Apr-2009 Chris Lattner <sabre@nondot.org> now that we've decoupled diagnostic classes from default mappings,
move the remaining default mapping exceptions from C++ code into
the .td files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
af008839f3ad499b1e6f752b6a324b7bd1de6cea 15-Apr-2009 Chris Lattner <sabre@nondot.org> now that we've decoupled diagnostic classes from default mappings,
move the remaining default mapping exceptions from C++ code into
the .td files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69183 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticSemaKinds.td
e5d60a3d4be1eaa0b6349236787e3ee92bbfc8ff 15-Apr-2009 Chris Lattner <sabre@nondot.org> Make diagnostic class explicit in the diag record instead of
implicit from its parenting. Now that diag mapping is
explicit, eliminate the fatal and extwarn classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
8a941e0c71d318430648e24eeca91a464a46eba9 15-Apr-2009 Chris Lattner <sabre@nondot.org> Make diagnostic class explicit in the diag record instead of
implicit from its parenting. Now that diag mapping is
explicit, eliminate the fatal and extwarn classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
13d17ac85da60e14f4dace39d6c438a5ea016757 15-Apr-2009 Chris Lattner <sabre@nondot.org> Tblgen now passes the default mapping explicitly, instead of having it
be tied to the diag class. This requires an LLVM tree update.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69175 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
4ac072aceb9c68f7a023050e2ab9ccacb4fe6e5b 15-Apr-2009 Chris Lattner <sabre@nondot.org> Tblgen now passes the default mapping explicitly, instead of having it
be tied to the diag class. This requires an LLVM tree update.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69175 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
596e093e4eb79a78ceb02d8d3b78d3c6d3088cc0 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for string literals

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76 15-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for string literals

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
a5f09bc964bf16c4ae0ca6587d662b061062b3a2 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add --help-hidden


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69171 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.def
c35d71f1e0a0c72fd43a73ddecd408bf43d501de 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add --help-hidden


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69171 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.def
12d7405658246a6252805e4d64f54d4ebef41859 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for UnaryOperator, SizeOfAlignOfExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
0b0b77fa29c74c99a77548ed86ca8a04f7cf6b02 15-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for UnaryOperator, SizeOfAlignOfExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69169 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
321de994c3254612811bff4c705c2db55b41519a 15-Apr-2009 Chris Lattner <sabre@nondot.org> this should be private


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9faf50e62ddcd2535b472abc8daafd7042120caa 15-Apr-2009 Chris Lattner <sabre@nondot.org> this should be private


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69158 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
015b4e1bb608f6c89e6c0daaadae57ff33375766 15-Apr-2009 Chris Lattner <sabre@nondot.org> Rejigger how -pedantic and -pedantic-errors work and their interaction
with other diagnostic mapping. In the new scheme, -Wfoo or -Wno-foo or
-Werror=foo all override the -pedantic options, and __extension__
robustly silences all extension diagnostics in their scope.

An added bonus of this change is that MAP_DEFAULT goes away, meaning that
per-diagnostic mapping information can now be stored in 2 bits, doubling
the density of the Diagnostic::DiagMapping array. This also
substantially simplifies Diagnostic::getDiagnosticLevel.

OTOH, this temporarily introduces some "macro intensive" code in
Diagnostic.cpp. This will be addressed in a later patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69154 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
27ceb9d77d929f02a8a811d189a96885629c7c0c 15-Apr-2009 Chris Lattner <sabre@nondot.org> Rejigger how -pedantic and -pedantic-errors work and their interaction
with other diagnostic mapping. In the new scheme, -Wfoo or -Wno-foo or
-Werror=foo all override the -pedantic options, and __extension__
robustly silences all extension diagnostics in their scope.

An added bonus of this change is that MAP_DEFAULT goes away, meaning that
per-diagnostic mapping information can now be stored in 2 bits, doubling
the density of the Diagnostic::DiagMapping array. This also
substantially simplifies Diagnostic::getDiagnosticLevel.

OTOH, this temporarily introduces some "macro intensive" code in
Diagnostic.cpp. This will be addressed in a later patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69154 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
cc94ab72501999e1d61a538f9891523603f9236c 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for designated initializers that refer to members of
anonymous structs or unions. Fixes PR3778.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
ffb4b6e299069139908540ce97be4462e16b53a4 15-Apr-2009 Douglas Gregor <dgregor@apple.com> Implement support for designated initializers that refer to members of
anonymous structs or unions. Fixes PR3778.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.td
a2c28208e848457fe4f8358865bd10e8bfef0c5a 15-Apr-2009 Chris Lattner <sabre@nondot.org> make default diagnostic mapping more explicit in .td file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69149 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
839324d564c7263402fb49e73c307817a0e5992c 15-Apr-2009 Chris Lattner <sabre@nondot.org> make default diagnostic mapping more explicit in .td file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69149 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
aa3572798c5ccf8e609ee7609d630d4bd5857327 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Switch designated-initializer checking from using designator iterators
to using designator indices. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
711997184366d584c9c437102cae1e9d9927b986 15-Apr-2009 Douglas Gregor <dgregor@apple.com> Switch designated-initializer checking from using designator iterators
to using designator indices. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69147 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
86c9cb59c745ad3bdfe8754c509504488c8bf2f2 15-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69133 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
3fabc86064359d6de3b9ac25f137eca5d76b7ec0 15-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69133 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c742c4a1289937a08a722cd700824c14acd40e74 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: For clang, accept -fsigned-bitfields and reject
-funsigned-bitfields for now (clang defaults to -fsigned-bitfields).
- <rdar://problem/6790309> ER: Support
-fsigned-bitfields/-funsigned-bitfields


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69131 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
70d3c92820f590b10553da9c96eda24e4325ba34 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: For clang, accept -fsigned-bitfields and reject
-funsigned-bitfields for now (clang defaults to -fsigned-bitfields).
- <rdar://problem/6790309> ER: Support
-fsigned-bitfields/-funsigned-bitfields


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69131 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
c75d0cbfbe5a6c525a1eaf5d2062a0386e5fc6b4 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for CStyleCastExpr and BinaryOperator expression kinds.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
db600c330a37b1c3ab4533310729910ee188f900 15-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for CStyleCastExpr and BinaryOperator expression kinds.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69119 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
f7fa9dcd32818f9ed2932c690b460724e2f5c9f2 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Improve "assignment to cast" diagnostic.
- Strip off extra parens when looking for casts.
- Change the location info to point at the cast (instead of the
assignment).

For example, on

int *b;
#define a ((void*) b)
void f0() {
a = 10;
}

we now emit:

/tmp/t.c:4:3: error: assignment to cast is illegal, lvalue casts are not supported
a = 10;
^ ~
/tmp/t.c:2:12: note: instantiated from:
#define a ((void*) b)
~^~~~~~~~~~

instead of:

/tmp/t.c:4:5: error: expression is not assignable
a = 10;
~ ^


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
44e35f7b2b5da1eb338639e46bf0b5522e75c5f3 15-Apr-2009 Daniel Dunbar <daniel@zuster.org> Improve "assignment to cast" diagnostic.
- Strip off extra parens when looking for casts.
- Change the location info to point at the cast (instead of the
assignment).

For example, on

int *b;
#define a ((void*) b)
void f0() {
a = 10;
}

we now emit:

/tmp/t.c:4:3: error: assignment to cast is illegal, lvalue casts are not supported
a = 10;
^ ~
/tmp/t.c:2:12: note: instantiated from:
#define a ((void*) b)
~^~~~~~~~~~

instead of:

/tmp/t.c:4:5: error: expression is not assignable
a = 10;
~ ^


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4ea0b1fbabc67f7d2a1fe35df8dc0b1bd6bfdf56 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for ParenExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
c04db4feefa2b0dbbc6876cb4eeeee108aa6791d 15-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for ParenExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
a151ba485fefb14e2237321ba13c346853f765e3 15-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add PCH support for ImplicitCastExprs. This is the first expression
kind PCH handles that has an expression as an operand, so most of this
work is in the infrastructure to rebuild expression trees from the
serialized representation. We now store expressions in post-order
(e.g., Reverse Polish Notation), so that we can easily rebuild the
appropriate expression tree.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
087fd536809ebe754d91c641a98917e02dd7452d 15-Apr-2009 Douglas Gregor <dgregor@apple.com> Add PCH support for ImplicitCastExprs. This is the first expression
kind PCH handles that has an expression as an operand, so most of this
work is in the infrastructure to rebuild expression trees from the
serialized representation. We now store expressions in post-order
(e.g., Reverse Polish Notation), so that we can easily rebuild the
appropriate expression tree.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
rontend/PCHWriter.h
e1be6022a0d3c1b7bc55c74f96edaac22f1da21a 15-Apr-2009 Chris Lattner <sabre@nondot.org> Change Lexer::MeasureTokenLength to take a LangOptions reference.
This allows it to accurately measure tokens, so that we get:

t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~~^

instead of the woefully inferior:

t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~ ^

Most of this is just plumbing to push the reference around.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69099 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
rontend/TextDiagnosticPrinter.h
ex/Lexer.h
ewrite/Rewriter.h
2c78b873f4f3823ae859c15674cb3d76c8554113 15-Apr-2009 Chris Lattner <sabre@nondot.org> Change Lexer::MeasureTokenLength to take a LangOptions reference.
This allows it to accurately measure tokens, so that we get:

t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~~^

instead of the woefully inferior:

t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~ ^

Most of this is just plumbing to push the reference around.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69099 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
rontend/TextDiagnosticPrinter.h
ex/Lexer.h
ewrite/Rewriter.h
0a4ea0e386ba03a794973c3d7244bbfb2302275d 15-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose properties which have no implementations;
either unimplemented setter/getter or no
implementation directive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
12bac2566e3136d4bd9d42e6aabe27e1038f7793 15-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose properties which have no implementations;
either unimplemented setter/getter or no
implementation directive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
52cd762ff8a33a7bbb582138df0253550be7f76a 15-Apr-2009 Chris Lattner <sabre@nondot.org> Make the implicit-int handling error recovery stuff handle C++
nested name specifiers. Now we emit stuff like:

t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~ ^

instead of:

t.cpp:8:16: error: invalid token after top level declarator
static foo::X P;
^

This is inspired by a really awful error message I got from
g++ when I misspelt diag::kind as diag::Kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69086 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f4382f50b7ab9f445c3f5b3ddaa59e6da25ea3bb 15-Apr-2009 Chris Lattner <sabre@nondot.org> Make the implicit-int handling error recovery stuff handle C++
nested name specifiers. Now we emit stuff like:

t.cpp:8:13: error: unknown type name 'X'
static foo::X P;
~~~~ ^

instead of:

t.cpp:8:16: error: invalid token after top level declarator
static foo::X P;
^

This is inspired by a really awful error message I got from
g++ when I misspelt diag::kind as diag::Kind.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69086 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e2f3720dcee0a0fa77ddffa42a7cd4c88006659e 14-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add PCH support for PredefinedExpr and FloatingLiteral expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69084 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
17fc223395d51be582fc666bb6ea21bd1dff26dc 14-Apr-2009 Douglas Gregor <dgregor@apple.com> Add PCH support for PredefinedExpr and FloatingLiteral expressions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69084 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
82353c679e6c84538bb576569366c929f2f4972d 14-Apr-2009 Chris Lattner <sabre@nondot.org> refactor "implicit int error recovery" code out of
ParseDeclarationSpecifiers into its own function, no
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69083 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e40c295d017a8f75a945fe9ed2aa9d8bb7a7341a 14-Apr-2009 Chris Lattner <sabre@nondot.org> refactor "implicit int error recovery" code out of
ParseDeclarationSpecifiers into its own function, no
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69083 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c10f86ffa5a4693fe3f3779305047d260c35d90b 14-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for a few very, very simple kinds of expressions. Hook up
expression (de-)serialization for VLAs, variable initializers,
enum constant initializers, and bitfield widths.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
0b7489194f9f89fac39d57211c1e7953ae50251f 14-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for a few very, very simple kinds of expressions. Hook up
expression (de-)serialization for VLAs, variable initializers,
enum constant initializers, and bitfield widths.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/Stmt.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
9a18310cbcb0d7f99b506cb260e26af6cf302b72 14-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -W[no-]extra-tokens


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69071 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
7eba5c9df989632c4dcaf13a20798d33d9ba3186 14-Apr-2009 Chris Lattner <sabre@nondot.org> add support for -W[no-]extra-tokens


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69071 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2a3e43d3efc6ded9f8e6bf87af565cbd931f3823 14-Apr-2009 Chris Lattner <sabre@nondot.org> implement some sema for gnuc_inline attribute. Reject always_inline and no_inline on objc methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c51974328b3a378c3c40b1fa527ecb928ed2bfda 14-Apr-2009 Chris Lattner <sabre@nondot.org> implement some sema for gnuc_inline attribute. Reject always_inline and no_inline on objc methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
429e56a918f44f517850a651cbb283d9f9f19fae 14-Apr-2009 Chris Lattner <sabre@nondot.org> recognize the gnuc_inline attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
26e25545b26ec06f5d674dbae00fb168e6688d90 14-Apr-2009 Chris Lattner <sabre@nondot.org> recognize the gnuc_inline attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
e0d5c560565d3a702385b33d790ff2eed6bef62f 14-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> When building a PCH file, don't perform end-of-translation-unit
wrap-up (e.g., turning tentative definitions into definitions). Also,
very that, when we actually use the PCH file, we get the ride code
generation for tentative definitions and definitions that show up in
the PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69043 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
f807fe0d1a865f4c6ba7e494cf4ae360c4173521 14-Apr-2009 Douglas Gregor <dgregor@apple.com> When building a PCH file, don't perform end-of-translation-unit
wrap-up (e.g., turning tentative definitions into definitions). Also,
very that, when we actually use the PCH file, we get the ride code
generation for tentative definitions and definitions that show up in
the PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69043 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
8394fda08a9d9d837c14da025465d4f169987d36 14-Apr-2009 Daniel Dunbar <daniel@zuster.org> Clean up handling of visibility.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
04d4078425614bf9fd58d606335c1f5f74ee7fa4 14-Apr-2009 Daniel Dunbar <daniel@zuster.org> Clean up handling of visibility.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1ac90d4f3e2993d5d85e3bc29d9ea9efecd4dfd3 14-Apr-2009 Chris Lattner <sabre@nondot.org> Fix the #import / #include_next "extra tokens at end of #foo directive"
Warning to properly report that it is an import/include_next instead of
claiming it is a #include.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69023 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
35410d5cbbb18735d76e00496540d416dc49b577 14-Apr-2009 Chris Lattner <sabre@nondot.org> Fix the #import / #include_next "extra tokens at end of #foo directive"
Warning to properly report that it is an import/include_next instead of
claiming it is a #include.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69023 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
caf78fb050f4870758014c771009095ca71c9366 14-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add VarDecl::getStorageClassSpecifierString (StorageClass -> const char*).
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69019 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b286a78c8cce4592306dae6abc3656daf6379c77 14-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add VarDecl::getStorageClassSpecifierString (StorageClass -> const char*).
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69019 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0df11ba02c3767922c68f0375c806adfb2d1d3a0 14-Apr-2009 Mike Stump <mrs@apple.com> Fix build error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
38c1effc8549af15d5049a684257c7ca8e9c7a87 14-Apr-2009 Mike Stump <mrs@apple.com> Fix build error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
631f6c64882b5254c5e4dbde6ec604dd4b96fd23 14-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> When writing a PCH file, keep track of all of the non-static,
non-inline external definitions (and tentative definitions) that are
found at the top level. The corresponding declarations are stored in a
record in the PCH file, so that they can be provided to the
ASTConsumer (via HandleTopLevelDecl) when the PCH file is read.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
fdd0172ca1b3c837f8c2b37d69cc2085234e09fa 14-Apr-2009 Douglas Gregor <dgregor@apple.com> When writing a PCH file, keep track of all of the non-static,
non-inline external definitions (and tentative definitions) that are
found at the top level. The corresponding declarations are stored in a
record in the PCH file, so that they can be provided to the
ASTConsumer (via HandleTopLevelDecl) when the PCH file is read.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
2a49179c4c884b49f446728ccf0f306751396255 14-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Partial PCH support for FileScopeAsmDecl and BlockDecl. Both require
expression or statement serialization before we can test them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
1028bc67d56ea088c3a57c4c44c3f6aeff60a031 14-Apr-2009 Douglas Gregor <dgregor@apple.com> Partial PCH support for FileScopeAsmDecl and BlockDecl. Both require
expression or statement serialization before we can test them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
23ce3a5b5e65ff7d43001cd829a99932173a345e 14-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for functions and their parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68997 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
3a2f7e42514ddbec983c61826ce85d3071e23e8e 14-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for functions and their parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68997 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
982365e249bd61429e7ed4e38556b8cd84dc356e 13-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH support for record decls/types and their fields. Now that we can
handle the definition of __builtin_va_list on x86-64, eliminate the
forced -triple in PCH tests to get better coverage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
8c70006581a9b9e9485570ca727a6c5f7be63521 13-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH support for record decls/types and their fields. Now that we can
handle the definition of __builtin_va_list on x86-64, eliminate the
forced -triple in PCH tests to get better coverage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
887235921e3eb668326b4a9a208bb2532c5235b6 13-Apr-2009 Chris Lattner <sabre@nondot.org> upgrade "extra tokens at end of directive" to warn by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
db678c6b0c3bdf5b9ba56bb21960cfa2d54c4f87 13-Apr-2009 Chris Lattner <sabre@nondot.org> upgrade "extra tokens at end of directive" to warn by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68980 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
1b85c5054320bd3b7d0593a0ab1f43db7ed01bc5 13-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> In objc2's None-Fragile ABI, one cannot use the super class ivar for
setter/getter synthesis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
29da66ec56b56db03ed4d48be3e1415f2dbf8995 13-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> In objc2's None-Fragile ABI, one cannot use the super class ivar for
setter/getter synthesis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
47f1b2cbd21093c1348fe3c59f513cb2abed3255 13-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add PCH support for enumerations and enumerators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
0a2b45e5885b6b8477b167042c0f6cd1d99a1f13 13-Apr-2009 Douglas Gregor <dgregor@apple.com> Add PCH support for enumerations and enumerators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
03d555746a43d4c69b2d1e4db808ea2feaa96ec8 13-Apr-2009 Steve Naroff <snaroff@apple.com> Change diagnostic as a result of researching <rdar://problem/6779809> missing interface name in "error: cannot declare variable inside a class, protocol or category ''.

Since ObjC 2.0 class "extensions" have a null name, the diagnostic above is actually "correct". Nevertheless, it is confusing. Decided to remove the name entirely (from my perspective, it didn't add any value). Also simplified the text of the diagnostic a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68967 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
87454161a6377b573d4fc3ff45e7b3ec193e860c 13-Apr-2009 Steve Naroff <snaroff@apple.com> Change diagnostic as a result of researching <rdar://problem/6779809> missing interface name in "error: cannot declare variable inside a class, protocol or category ''.

Since ObjC 2.0 class "extensions" have a null name, the diagnostic above is actually "correct". Nevertheless, it is confusing. Decided to remove the name entirely (from my perspective, it didn't add any value). Also simplified the text of the diagnostic a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68967 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
635f97f496328be23baade4b8c0e2cb5f4215d34 13-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Include the SourceManager's line table in the PCH file. We can now
properly cope with #line directives in PCH files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68963 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
asic/SourceManagerInternals.h
rontend/PCHBitCodes.h
bd94500d3aa60092fb0f1e90f53fb0d03fa502a8 13-Apr-2009 Douglas Gregor <dgregor@apple.com> Include the SourceManager's line table in the PCH file. We can now
properly cope with #line directives in PCH files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68963 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
asic/SourceManagerInternals.h
rontend/PCHBitCodes.h
cdad0ba825bd59e5ee9ccd4e5894f15171440208 13-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Factor the internals of SourceManager (specially, LineTableInfo) into a separate Internals header. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68960 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManagerInternals.h
d4f77aa7c276be49aee5e59ef509cb91e26aa79f 13-Apr-2009 Douglas Gregor <dgregor@apple.com> Factor the internals of SourceManager (specially, LineTableInfo) into a separate Internals header. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68960 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManagerInternals.h
8fc38c21132d37ff76f624ab1dcfe03ba63e2518 13-Apr-2009 Chris Lattner <sabre@nondot.org> fix rdar://6774906, a crash handling implicit conversions between pointers
in different address spaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ecca7536488e425417dcb005c39cc15ae1947aab 13-Apr-2009 Chris Lattner <sabre@nondot.org> fix rdar://6774906, a crash handling implicit conversions between pointers
in different address spaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4b21c20753389c64f7f0a89e6ef34d0eaaf3e3ce 13-Apr-2009 Chris Lattner <sabre@nondot.org> implement the microsoft/gnu "__COUNTER__" macro: rdar://4329310


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
rontend/PCHBitCodes.h
ex/Preprocessor.h
c1f9d828c733ec1eba06d01070735d1f36fda733 13-Apr-2009 Chris Lattner <sabre@nondot.org> implement the microsoft/gnu "__COUNTER__" macro: rdar://4329310


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
rontend/PCHBitCodes.h
ex/Preprocessor.h
d6c780916a75bb1f7a6efb1ed8e36aac2b32168d 13-Apr-2009 Chris Lattner <sabre@nondot.org> fix some out of date comments pointed out by Sebastian


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68923 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b6688e02d2cea9a1e2519654133ac2aa81fd8055 13-Apr-2009 Chris Lattner <sabre@nondot.org> fix some out of date comments pointed out by Sebastian


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68923 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
197b4343435266ed64cbed114d030078292cdd6f 12-Apr-2009 Chris Lattner <sabre@nondot.org> Diagnose invalid uses of tagged types with a missing tag. For example, in:

struct xyz { int y; };
enum abc { ZZZ };

static xyz b;
abc c;

we used to produce:

t2.c:4:8: error: unknown type name 'xyz'
static xyz b;
^
t2.c:5:1: error: unknown type name 'abc'
abc c;
^

we now produce:

t2.c:4:8: error: use of tagged type 'xyz' without 'struct' tag
static xyz b;
^
struct
t2.c:5:1: error: use of tagged type 'abc' without 'enum' tag
abc c;
^
enum

GCC produces the normal:
t2.c:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’
t2.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘c’

rdar://6783347


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
4c97d762d8c5a84f6554e5bfb31d28c90df64158 12-Apr-2009 Chris Lattner <sabre@nondot.org> Diagnose invalid uses of tagged types with a missing tag. For example, in:

struct xyz { int y; };
enum abc { ZZZ };

static xyz b;
abc c;

we used to produce:

t2.c:4:8: error: unknown type name 'xyz'
static xyz b;
^
t2.c:5:1: error: unknown type name 'abc'
abc c;
^

we now produce:

t2.c:4:8: error: use of tagged type 'xyz' without 'struct' tag
static xyz b;
^
struct
t2.c:5:1: error: use of tagged type 'abc' without 'enum' tag
abc c;
^
enum

GCC produces the normal:
t2.c:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’
t2.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘c’

rdar://6783347


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/Action.h
arse/Parser.h
cc98d8c25806d02561d5b64cfd78740c8150538f 12-Apr-2009 Chris Lattner <sabre@nondot.org> Implement the first set of changes for PR3963 and rdar://6759604,
which tries to do better error recovery when it is "obvious" that an
identifier is a mis-typed typename. In this case, we try to parse
it as a typename instead of as the identifier in a declarator, which
gives us several options for better error recovery and immediately
makes diagnostics more useful. For example, we now produce:

t.c:4:8: error: unknown type name 'foo_t'
static foo_t a = 4;
^

instead of:

t.c:4:14: error: invalid token after top level declarator
static foo_t a = 4;
^

Also, since we now parse "a" correctly, we make a decl for it,
preventing later uses of 'a' from emitting things like:

t.c:12:20: error: use of undeclared identifier 'a'
int bar() { return a + b; }
^

I'd really appreciate any scrutiny possible on this, it
is a tricky area.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68911 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086 12-Apr-2009 Chris Lattner <sabre@nondot.org> Implement the first set of changes for PR3963 and rdar://6759604,
which tries to do better error recovery when it is "obvious" that an
identifier is a mis-typed typename. In this case, we try to parse
it as a typename instead of as the identifier in a declarator, which
gives us several options for better error recovery and immediately
makes diagnostics more useful. For example, we now produce:

t.c:4:8: error: unknown type name 'foo_t'
static foo_t a = 4;
^

instead of:

t.c:4:14: error: invalid token after top level declarator
static foo_t a = 4;
^

Also, since we now parse "a" correctly, we make a decl for it,
preventing later uses of 'a' from emitting things like:

t.c:12:20: error: use of undeclared identifier 'a'
int bar() { return a + b; }
^

I'd really appreciate any scrutiny possible on this, it
is a tricky area.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68911 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
5140b9832b2a844ecea92c250bbe95f50d190baa 12-Apr-2009 Chris Lattner <sabre@nondot.org> add a new isNull() method to DeclGroupRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
20401698e3bd93a24bb5d9e18e435895cefe5fd1 12-Apr-2009 Chris Lattner <sabre@nondot.org> add a new isNull() method to DeclGroupRef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
d50ecbcdb8e5b76f15a3625dccf03cdb1d620e4e 12-Apr-2009 Chris Lattner <sabre@nondot.org> add a new Decl::hasAttr<T>() predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
115cafcafec3572756635ca81ef83999ae0c8af7 12-Apr-2009 Chris Lattner <sabre@nondot.org> add a new Decl::hasAttr<T>() predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
a55834a91ff6bdf483aba26c5da64669b2464e2f 12-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parse deleted member functions. Parsing member declarations goes through a different code path that I forgot previously.
Implement the rvalue reference overload dance for returning local objects. Returning a local object first tries to find a move constructor now.
The error message when no move constructor is defined (or is not applicable) and the copy constructor is deleted is quite ugly, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68902 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e2b6833d445c7a4ce64f1816c05f176ba1740aca 12-Apr-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parse deleted member functions. Parsing member declarations goes through a different code path that I forgot previously.
Implement the rvalue reference overload dance for returning local objects. Returning a local object first tries to find a move constructor now.
The error message when no move constructor is defined (or is not applicable) and the copy constructor is deleted is quite ugly, though.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68902 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f3115080185e00b944e20cfa17abf747d3c9ebb7 12-Apr-2009 Chris Lattner <sabre@nondot.org> call objc interfaces just "interfaces" in diagnostics, not "Objective-C types"
or "Objective-C interface types" etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68892 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
05af26216bc704b893dee860cb84de28d801a7f6 12-Apr-2009 Chris Lattner <sabre@nondot.org> call objc interfaces just "interfaces" in diagnostics, not "Objective-C types"
or "Objective-C interface types" etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68892 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
81f00ed9267bca789b5074d89a6723631968e500 12-Apr-2009 Chris Lattner <sabre@nondot.org> implement rdar://6780761, making sema reject some code that otherwise
crashes codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
312531a8cd69c562d5687bd69fd334be99d87320 12-Apr-2009 Chris Lattner <sabre@nondot.org> implement rdar://6780761, making sema reject some code that otherwise
crashes codegen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
346d9e455304edb2eb9f076b322dd26d619b7849 12-Apr-2009 Chris Lattner <sabre@nondot.org> Implement support for GCC's -dD mode, which dumps -E output *and*
macro definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68884 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d82df3ad430397d7f9ef511e7c5157f997c41f53 12-Apr-2009 Chris Lattner <sabre@nondot.org> Implement support for GCC's -dD mode, which dumps -E output *and*
macro definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68884 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
23b517d8af1485ef3f45e3dab180d628cfa5f63c 12-Apr-2009 Chris Lattner <sabre@nondot.org> add a ppcallback hook for macro definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68883 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
f4a72b07747cd6ae1a9f6974e148ae504c879349 12-Apr-2009 Chris Lattner <sabre@nondot.org> add a ppcallback hook for macro definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68883 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
29241860a38d1db6de4aad454cb74452c265dd53 11-Apr-2009 Chris Lattner <sabre@nondot.org> now that we have an identifier table in the PCH file, finish hooking up
macro deserialization. We now correctly install II's in tokens, handle
function-like macros, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68882 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
7356a31327be9b3c3434a0c88746028980da5684 11-Apr-2009 Chris Lattner <sabre@nondot.org> now that we have an identifier table in the PCH file, finish hooking up
macro deserialization. We now correctly install II's in tokens, handle
function-like macros, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68882 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
7e4c91b78ac49c43ab16006187b70912bad77e18 11-Apr-2009 Chris Lattner <sabre@nondot.org> improve the 'conflicting types' diagnostics to include correct location info, now
that it is plumbed through Sema. On a file from growl, we used to emit:

t.mi:107059:1: warning: conflicting types for 'removePluginHandler:forPluginTypes:'
- (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions {
^
t.mi:105280:1: note: previous definition is here
- (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types;
^

now we produce:

t.mi:107059:55: warning: conflicting parameter types in implementation of 'removePluginHandler:forPluginTypes:': 'id<NSObject>' vs 'id<GrowlPluginHandler>'
- (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions {
^
t.mi:105280:45: note: previous definition is here
- (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types;
^

We still don't have proper loc info for properties, hence the FIXME.

rdar://6782494



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3aff919532fd807ed678b9cfa4b7eca7b04adcf9 11-Apr-2009 Chris Lattner <sabre@nondot.org> improve the 'conflicting types' diagnostics to include correct location info, now
that it is plumbed through Sema. On a file from growl, we used to emit:

t.mi:107059:1: warning: conflicting types for 'removePluginHandler:forPluginTypes:'
- (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions {
^
t.mi:105280:1: note: previous definition is here
- (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types;
^

now we produce:

t.mi:107059:55: warning: conflicting parameter types in implementation of 'removePluginHandler:forPluginTypes:': 'id<NSObject>' vs 'id<GrowlPluginHandler>'
- (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions {
^
t.mi:105280:45: note: previous definition is here
- (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types;
^

We still don't have proper loc info for properties, hence the FIXME.

rdar://6782494



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7621073d070b38162151ebfa5464ef9e55d50eec 11-Apr-2009 Chris Lattner <sabre@nondot.org> Improve the 'cannot pass objc interface by value' diagnostic:
1) improve localizability by not passing english strings in.
2) improve location for arguments.
3) print the objc type being passed.

Before:
method-bad-param.m:15:1: error: Objective-C type cannot be passed by value
-(void) my_method:(foo) my_param
^

after:
method-bad-param.m:15:25: error: Objective-C interface type 'foo' cannot be passed by value
-(void) my_method:(foo) my_param
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
2dd979fbd59938babbed76e2376116511b403c93 11-Apr-2009 Chris Lattner <sabre@nondot.org> Improve the 'cannot pass objc interface by value' diagnostic:
1) improve localizability by not passing english strings in.
2) improve location for arguments.
3) print the objc type being passed.

Before:
method-bad-param.m:15:1: error: Objective-C type cannot be passed by value
-(void) my_method:(foo) my_param
^

after:
method-bad-param.m:15:25: error: Objective-C interface type 'foo' cannot be passed by value
-(void) my_method:(foo) my_param
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
612a2f7b260691c0eb74930977f19b78e2b36260 11-Apr-2009 Chris Lattner <sabre@nondot.org> change the interface to ActOnMethodDeclaration to pass down argument
information in a little struct instead of individually. While we're
at it, add per-argument loc info and attribute info.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68871 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e294d3fbaffcbc0cf5f16067ab31d2b2763d25e9 11-Apr-2009 Chris Lattner <sabre@nondot.org> change the interface to ActOnMethodDeclaration to pass down argument
information in a little struct instead of individually. While we're
at it, add per-argument loc info and attribute info.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68871 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
551a9d209e93775d7c4d17f9877677afc311048e 11-Apr-2009 Chris Lattner <sabre@nondot.org> sink abstract typedefs like Action::ExprTy from the Action class
down to the ActionBase class. This eliminates dependencies of (e.g.)
DeclSpec.h on Action.h, meaning that action.h can now include these
headers and use their types directly in the actions interfaces.

This is a refactoring to support a future change, no functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68869 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
8f823d2d3c557326d22699d66e5d367d0f0e44ef 11-Apr-2009 Chris Lattner <sabre@nondot.org> sink abstract typedefs like Action::ExprTy from the Action class
down to the ActionBase class. This eliminates dependencies of (e.g.)
DeclSpec.h on Action.h, meaning that action.h can now include these
headers and use their types directly in the actions interfaces.

This is a refactoring to support a future change, no functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68869 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Designator.h
arse/Ownership.h
d1b0f3b4acee29b25cb5a039477038ed544a727a 11-Apr-2009 Chris Lattner <sabre@nondot.org> rename Parser::ParseObjCSelector -> Parser::ParseObjCSelectorPiece,
since it only parses one identifier out of the selector, not the
whole thing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68867 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2fc5c2428ecb450a3256c8316b93b8655cb76a0f 11-Apr-2009 Chris Lattner <sabre@nondot.org> rename Parser::ParseObjCSelector -> Parser::ParseObjCSelectorPiece,
since it only parses one identifier out of the selector, not the
whole thing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68867 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
484e6f0dc0edbb8b5435324ec6485d170afa9583 11-Apr-2009 Ted Kremenek <kremenek@apple.com> analyzer: We cannot bind values to CodeTextRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68857 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
8ec3d7dbff9d526fcdce4fbea683830192340c90 11-Apr-2009 Ted Kremenek <kremenek@apple.com> analyzer: We cannot bind values to CodeTextRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68857 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ab4592f83315373b2b2e88cf94fe8f0a5ce0a7cb 11-Apr-2009 Daniel Dunbar <daniel@zuster.org> Tweak wording, input argument isn't necessarily a "file", things like
-lstdc++ are inputs too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68854 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
3c69d3dda3af53760526d7897743e0fad68a44dc 11-Apr-2009 Daniel Dunbar <daniel@zuster.org> Tweak wording, input argument isn't necessarily a "file", things like
-lstdc++ are inputs too.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68854 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
7a224cfc5265f1a06cdbabbc3fbfe8387ecc3d02 11-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Store unique IDs for identifiers in the PCH file. Use some bitmangling
so that we only need to perform the lookup and identifier resolution
once per identifier in the PCH file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68846 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
afaf308b779cd8e8fc8c42601b9f383423c15c2d 11-Apr-2009 Douglas Gregor <dgregor@apple.com> Store unique IDs for identifiers in the PCH file. Use some bitmangling
so that we only need to perform the lookup and identifier resolution
once per identifier in the PCH file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68846 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
8765ebca090282a7025dd46e0c71e45fd0e9b6ec 11-Apr-2009 Ted Kremenek <kremenek@apple.com> Implement analyzer support for OSCompareAndSwap. This required pushing "tagged"
ProgramPoints all the way through to GRCoreEngine.

NSString.m now fails with RegionStoreManager because of the void** cast.
Disabling use of region store for that test for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68845 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
nalysis/ProgramPoint.h
1670e403c48f3af4fceff3f6773a0e1cfc6c4eb3 11-Apr-2009 Ted Kremenek <kremenek@apple.com> Implement analyzer support for OSCompareAndSwap. This required pushing "tagged"
ProgramPoints all the way through to GRCoreEngine.

NSString.m now fails with RegionStoreManager because of the void** cast.
Disabling use of region store for that test for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68845 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
nalysis/ProgramPoint.h
b3a04c8b6ed5c93e1358246ff80dc869ca2a0efd 11-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Compare the predefines buffer in the PCH file with the predefines
buffer generated for the current translation unit. If they are
different, complain and then ignore the PCH file. This effectively
checks for all compilation options that somehow would affect
preprocessor state (-D, -U, -include, the dreaded -imacros, etc.).

When we do accept the PCH file, throw away the contents of the
predefines buffer rather than parsing them, since all of the results
of that parsing are already stored in the PCH file. This eliminates
the ugliness with the redefinition of __builtin_va_list, among other
things.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
ex/Preprocessor.h
e1d918e9fe55e3b34401fd5d420c47ea0f9572c9 11-Apr-2009 Douglas Gregor <dgregor@apple.com> Compare the predefines buffer in the PCH file with the predefines
buffer generated for the current translation unit. If they are
different, complain and then ignore the PCH file. This effectively
checks for all compilation options that somehow would affect
preprocessor state (-D, -U, -include, the dreaded -imacros, etc.).

When we do accept the PCH file, throw away the contents of the
predefines buffer rather than parsing them, since all of the results
of that parsing are already stored in the PCH file. This eliminates
the ugliness with the redefinition of __builtin_va_list, among other
things.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHReader.h
ex/Preprocessor.h
9a1c029d139454f15270d4a2a9f993c97a29c5c5 11-Apr-2009 Chris Lattner <sabre@nondot.org> do a dance with predefines, and finally enable reading of macros from
PCH. This works now, except for limitations not being able to do things
with identifiers. The basic example in the testcase works though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68832 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
531cc8355608295caa01f31fa4e078d77a3d6470 11-Apr-2009 Chris Lattner <sabre@nondot.org> do a dance with predefines, and finally enable reading of macros from
PCH. This works now, except for limitations not being able to do things
with identifiers. The basic example in the testcase works though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68832 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
db1c81b6e4f5129686a794228c7b7c7a3a8a74a5 10-Apr-2009 Chris Lattner <sabre@nondot.org> add support for reading macros. This does all the reading (with a bunch of
fixme's, e.g. for tokens with identifiers) but does not actually install
them. Some details with the predefines buffer needs to be sorted out first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68828 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
42d42b5b84603032e57add333b5b44e0ef99bd9e 10-Apr-2009 Chris Lattner <sabre@nondot.org> add support for reading macros. This does all the reading (with a bunch of
fixme's, e.g. for tokens with identifiers) but does not actually install
them. Some details with the predefines buffer needs to be sorted out first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68828 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHReader.h
7ff7cb4b755ae86bba2a1dfd9faf56079ec07783 10-Apr-2009 Chris Lattner <sabre@nondot.org> make a method public


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68827 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f908c519c1625e81d9e33d8a2a306a92834fe317 10-Apr-2009 Chris Lattner <sabre@nondot.org> make a method public


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68827 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
b5887f3db333427f9e0bb3adcdd46d8df71a6a7b 10-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Encode the target triple in the PCH file, and check that target triple when using the PCH file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHBitCodes.h
rontend/PCHWriter.h
2bec0410d268779f601bd509e0302a500af7ac6a 10-Apr-2009 Douglas Gregor <dgregor@apple.com> Encode the target triple in the PCH file, and check that target triple when using the PCH file

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHBitCodes.h
rontend/PCHWriter.h
6340b726fbc89d9dc278ef385c9c2d643bcf8aee 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Add arbitrary "tags" to ProgramPoints. While this fattens up ProgramPoint even
more, it gives us a tremendous amount of flexibility for extending the analyzer
to handle arbitrary program points.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68823 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
e8063ae53bd241de10ba1053054d06867a5c56ab 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Add arbitrary "tags" to ProgramPoints. While this fattens up ProgramPoint even
more, it gives us a tremendous amount of flexibility for extending the analyzer
to handle arbitrary program points.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68823 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
179cfb1201fb5a1e80f0f65abab334f414210a73 10-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Implement serialization/deserialization of LangOptions in the PCH
file. When de-serializing LangOptions, we check that the
currently-provided language options are consistent with the options
used to compile the PCH file. If they are not, we emit a diagnostic
and ignore the PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
0a0428e96c6f1e8bef7a481a9eb69a6f6df38951 10-Apr-2009 Douglas Gregor <dgregor@apple.com> Implement serialization/deserialization of LangOptions in the PCH
file. When de-serializing LangOptions, we check that the
currently-provided language options are consistent with the options
used to compile the PCH file. If they are not, we emit a diagnostic
and ignore the PCH file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68820 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
0523c0162c49b9a1d47a7a1fc45521a18b99641b 10-Apr-2009 Chris Lattner <sabre@nondot.org> add a new PP_MACRO_NAME hack so that I can test object-like macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68803 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
d14f27053c5d2a9140eed38b9d208b94e7f83b31 10-Apr-2009 Chris Lattner <sabre@nondot.org> add a new PP_MACRO_NAME hack so that I can test object-like macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68803 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
84800be4a9bd116c68029223b43877b8fc862b39 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Move a few more NonLoc static functions to ValueManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68800 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
fc3388dfddf760cf3484fd99de28e1eb53769554 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Move a few more NonLoc static functions to ValueManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68800 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
64a24193dcfd174703d895a41525cb758f466020 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Default initialize 'code' instance variable to NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68799 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
83a1d1d1a28aafca1f2a271189b78a299b4c9d65 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Default initialize 'code' instance variable to NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68799 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
850eabdc06c965f36bc4dda0e47c4075eec94165 10-Apr-2009 Chris Lattner <sabre@nondot.org> emit tokens, constify the Preprocessor passed down into PCH writer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68798 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
df961c28f84666051ad59d2da1f44023f6366d02 10-Apr-2009 Chris Lattner <sabre@nondot.org> emit tokens, constify the Preprocessor passed down into PCH writer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68798 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
1b094953f00df1cf46a584cb986fd56d3eff8973 10-Apr-2009 Chris Lattner <sabre@nondot.org> emit function-like and object-like macros to the PCH file.
Note that we don't do anything useful with identifier infos yet
and don't emit the tokens that the macros are defined to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68797 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ex/Preprocessor.h
7c5d24efcd2e505b5739f7def08dfe25ce59a1b2 10-Apr-2009 Chris Lattner <sabre@nondot.org> emit function-like and object-like macros to the PCH file.
Note that we don't do anything useful with identifier infos yet
and don't emit the tokens that the macros are defined to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68797 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHBitCodes.h
ex/Preprocessor.h
ac8f280704e948b8051e8e9bd7f557127d31624b 10-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Various minor fixes to PCH reading and writing, with general
cleanup. Aside from a minor tweak to the PCH file format, no
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
8038d5182b72dcdef292f6fb8539ad77f338855a 10-Apr-2009 Douglas Gregor <dgregor@apple.com> Various minor fixes to PCH reading and writing, with general
cleanup. Aside from a minor tweak to the PCH file format, no
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclContextInternals.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ffc05ed23455aa7ae1e33a8e1d9227015d2666ac 10-Apr-2009 Chris Lattner <sabre@nondot.org> Arrange for the preprocessor to be passed down into the PCH writer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68790 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
0b1fb988012da21d996c43e36867787a7a07b889 10-Apr-2009 Chris Lattner <sabre@nondot.org> Arrange for the preprocessor to be passed down into the PCH writer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68790 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/PCHWriter.h
ef3fb4c00d0af83997f6a4d4fd2406b831d946e7 10-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add prototype for CodeTextRegion.
A CodeTextRegion wraps two kinds of data: FunctionDecl* or SymbolRef.
The latter comes from the symbolic function pointer that are generated from
function calls or input data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68777 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
ec13d9206645af07ef7c571405893b8d901de151 10-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add prototype for CodeTextRegion.
A CodeTextRegion wraps two kinds of data: FunctionDecl* or SymbolRef.
The latter comes from the symbolic function pointer that are generated from
function calls or input data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68777 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/ValueManager.h
18bcec095fe0c92a3e6aea95d424042b061c347e 10-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Finally nuke loc::SymbolVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68771 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
3330dcb0da654fb06e78dc410ba15ab90c1b08e7 10-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Finally nuke loc::SymbolVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68771 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
ea2dce2eb97312b2ceb93ce1f8ff067cd60f7d7a 10-Apr-2009 Anders Carlsson <andersca@mac.com> Add Expr::EvaluateAsLValue which will (believe it or not) try to evaluate an Expr as an LValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1b78276a75a5a0f496a82429c1ff9604d622a76d 10-Apr-2009 Anders Carlsson <andersca@mac.com> Add Expr::EvaluateAsLValue which will (believe it or not) try to evaluate an Expr as an LValue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cfbd5a86d2128bce79457e99a58dfce6ffe0eef4 10-Apr-2009 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
c1da56ef012d02c77c13689f4ca1a2e4f002eb2a 10-Apr-2009 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ab1cef74f1dd3666977c3d53645f21306f96e086 10-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> PCH serialization/deserialization of the source manager. With this
improvement, source locations read from the PCH file will properly
resolve to the source files that were used to build the PCH file
itself.

Once we have the preprocessor state stored in the PCH file, source
locations that refer to macro instantiations that occur in the PCH
file should have the appropriate instantiation information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ex/Preprocessor.h
14f79002e58556798e86168c63e48d533287eda5 10-Apr-2009 Douglas Gregor <dgregor@apple.com> PCH serialization/deserialization of the source manager. With this
improvement, source locations read from the PCH file will properly
resolve to the source files that were used to build the PCH file
itself.

Once we have the preprocessor state stored in the PCH file, source
locations that refer to macro instantiations that occur in the PCH
file should have the appropriate instantiation information.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
ex/Preprocessor.h
1ce91f2da99710e0d14f15efc8c26d0fd8b24c4d 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Implement attribute "analyzer_noreturn" (<rdar://problem/6777003>). This allows
clients of the analyzer to designate custom assertion routines as "noreturn"
functions from the analyzer's perspective but not the compiler's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
b725232b46e92f3e36b03a32a6fc75748c312122 10-Apr-2009 Ted Kremenek <kremenek@apple.com> Implement attribute "analyzer_noreturn" (<rdar://problem/6777003>). This allows
clients of the analyzer to designate custom assertion routines as "noreturn"
functions from the analyzer's perspective but not the compiler's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
c34897dac02ae4ac32e65601c9b175fa17edf1f6 10-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Implementation of pre-compiled headers (PCH) based on lazy
de-serialization of abstract syntax trees.

PCH support serializes the contents of the abstract syntax tree (AST)
to a bitstream. When the PCH file is read, declarations are serialized
as-needed. For example, a declaration of a variable "x" will be
deserialized only when its VarDecl can be found by a client, e.g.,
based on name lookup for "x" or traversing the entire contents of the
owner of "x".

This commit provides the framework for serialization and (lazy)
deserialization, along with support for variable and typedef
declarations (along with several kinds of types). More
declarations/types, along with important auxiliary structures (source
manager, preprocessor, etc.), will follow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
2cf2634ffdb4f7c8d46cef3f8e60a55993f1c57a 10-Apr-2009 Douglas Gregor <dgregor@apple.com> Implementation of pre-compiled headers (PCH) based on lazy
de-serialization of abstract syntax trees.

PCH support serializes the contents of the abstract syntax tree (AST)
to a bitstream. When the PCH file is read, declarations are serialized
as-needed. For example, a declaration of a variable "x" will be
deserialized only when its VarDecl can be found by a client, e.g.,
based on name lookup for "x" or traversing the entire contents of the
owner of "x".

This commit provides the framework for serialization and (lazy)
deserialization, along with support for variable and typedef
declarations (along with several kinds of types). More
declarations/types, along with important auxiliary structures (source
manager, preprocessor, etc.), will follow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68732 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/ExternalASTSource.h
rontend/PCHBitCodes.h
rontend/PCHReader.h
rontend/PCHWriter.h
e4cb3c885918ee0188495f47d76045831333e641 10-Apr-2009 Ted Kremenek <kremenek@apple.com> - Move ownership of MemRegionManager into ValueManager.
- Pull SVal::GetConjuredSymbol() and friends into ValueManager. This greatly
simplifies the calling interface to clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
8d7f5481a0eeb4c0508202a4bd2b754cfa93c4fe 10-Apr-2009 Ted Kremenek <kremenek@apple.com> - Move ownership of MemRegionManager into ValueManager.
- Pull SVal::GetConjuredSymbol() and friends into ValueManager. This greatly
simplifies the calling interface to clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueManager.h
c55b0b035289cd7702034bad930c71302bc80836 09-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Propagate the ASTContext to various AST traversal and lookup functions.
No functionality change (really).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DeclObjC.h
ST/DeclarationName.h
6ab3524f72a6e64aa04973fa9433b5559abb3525 09-Apr-2009 Douglas Gregor <dgregor@apple.com> Propagate the ASTContext to various AST traversal and lookup functions.
No functionality change (really).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68726 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DeclObjC.h
ST/DeclarationName.h
13c27cd3b576157bd593b41a8fbb550d4ac569a0 09-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Simple DeclContext's internal representation by always storing a
StoredDeclsMap, instead of using the it's-an-array-or-its-a-map
trick. I'll verify that performance isn't impacted later; for now, I
need the common representation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c36c540c5bfce941f3d892919394d092491211f2 09-Apr-2009 Douglas Gregor <dgregor@apple.com> Simple DeclContext's internal representation by always storing a
StoredDeclsMap, instead of using the it's-an-array-or-its-a-map
trick. I'll verify that performance isn't impacted later; for now, I
need the common representation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
cda58d2bb87f7b48180e3469fb86b19bb21d34d7 09-Apr-2009 Ted Kremenek <kremenek@apple.com> Remove SVal::MakeZero and replace it with ValueManager::makeZeroVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68711 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
8e5fb2849d9a8cb40d008a409273766f8ff8f854 09-Apr-2009 Ted Kremenek <kremenek@apple.com> Remove SVal::MakeZero and replace it with ValueManager::makeZeroVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68711 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/ValueManager.h
2d643513564dfe6ce2d2f276514cf874be52ce77 09-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add more builtin definitions, including strcmp.
- PR3964.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
7a0048b3f59b9623e33bda2609c7a9fefc4a65c3 09-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add more builtin definitions, including strcmp.
- PR3964.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
e9e726ebd3b6b17a0a9fc5592bc8a3232340e673 09-Apr-2009 Ted Kremenek <kremenek@apple.com> analyzer: Introduce a new class, ValueManager, that serves as an aggregate
"manager of symbolic values", wrapping BasicValueFactory, SymbolManager, and
MemRegionManager. While these individual managers nicely separate functionality
in the analyzer, constructing symbolic values can sometimes be cumbersome
because it requires using multiple managers at once. The goal of this class is
to create some factory methods to create SVals that require the use of these
different managers, thus (hopefully) simplifying the analyzer API for clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68709 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/ValueManager.h
044b6f0417cb98741f277602fabf5f07ec9a02c0 09-Apr-2009 Ted Kremenek <kremenek@apple.com> analyzer: Introduce a new class, ValueManager, that serves as an aggregate
"manager of symbolic values", wrapping BasicValueFactory, SymbolManager, and
MemRegionManager. While these individual managers nicely separate functionality
in the analyzer, constructing symbolic values can sometimes be cumbersome
because it requires using multiple managers at once. The goal of this class is
to create some factory methods to create SVals that require the use of these
different managers, thus (hopefully) simplifying the analyzer API for clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68709 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/ValueManager.h
75f459ccb9ae8b7687ffac418d6aee3f8ba5d89b 09-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> stop using loc::SymbolVal and clean up code with new API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68703 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
c565b63a7905347a51249fafbcaf41b177a22bf0 09-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> stop using loc::SymbolVal and clean up code with new API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68703 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
62b4a2a1fae8b64ddc015b25a90b7ea24a2fa239 09-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a new method because sometimes the type of the conjured symbol is not the
type of the expression where we create the symbol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68692 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
fe1635bb27f5a13314169143cfdae6ecc6e4b3e2 09-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add a new method because sometimes the type of the conjured symbol is not the
type of the expression where we create the symbol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68692 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
8611215962af8d7ec7c25de0b8ee72659be67978 09-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Create a symbolic region instead of a loc::SymbolVal. This is a continued step
to eliminate the use of loc::SymbolVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68685 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
867418fdb53b351f7c88cb0255c4a250ea283c3a 09-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> Create a symbolic region instead of a loc::SymbolVal. This is a continued step
to eliminate the use of loc::SymbolVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68685 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
49fd7ad55f63f6241e2a1818a5d4b10b925afa33 09-Apr-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6770998> make cast of super illegal (again:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a0c3e9cde1581b1b4d43ca89fdf413cd84eaec1f 09-Apr-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6770998> make cast of super illegal (again:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4f305c44f80bc448374014567021504529221c13 09-Apr-2009 Chris Lattner <sabre@nondot.org> add driver support for -Wno-trigraphs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68650 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
247aaa64f03c259a029205c1494d2a062e5629bd 09-Apr-2009 Chris Lattner <sabre@nondot.org> add driver support for -Wno-trigraphs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68650 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
0853ac9afc9a748ae037af7cb8381aa87bcf9c64 08-Apr-2009 Chris Lattner <sabre@nondot.org> implement -imacros support in driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68641 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9b2ce37922ef34061cf0c193af7ce295a77d9298 08-Apr-2009 Chris Lattner <sabre@nondot.org> implement -imacros support in driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68641 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
f2895871e5f6a3865aaec0973ff293ad1338cbf4 08-Apr-2009 Ted Kremenek <kremenek@apple.com> Enhance analyzer reasoning about sending messages to nil. A nil receiver returns 0 for scalars of size <= sizeof(void*).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68629 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
da9ae6088b9543134a6561a412b79530e290408d 08-Apr-2009 Ted Kremenek <kremenek@apple.com> Enhance analyzer reasoning about sending messages to nil. A nil receiver returns 0 for scalars of size <= sizeof(void*).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68629 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
f77da7e846ba296384cea237f00f03d43351ca78 08-Apr-2009 Chris Lattner <sabre@nondot.org> reject the #__include_macros directive unless it comes from the
predefines buffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68627 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
de076650fa79a02743b5fe57a72f991ba24779f9 08-Apr-2009 Chris Lattner <sabre@nondot.org> reject the #__include_macros directive unless it comes from the
predefines buffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68627 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ex/Preprocessor.h
0e004a10bfb9560c7b2507267362672d3e93f3fb 08-Apr-2009 Chris Lattner <sabre@nondot.org> Add initial support for -imacros. Right now it has the same semantics as
-include, but that will be fixed soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
b8e240ed8b8f58c7b7fe82776bd6147b437f5d53 08-Apr-2009 Chris Lattner <sabre@nondot.org> Add initial support for -imacros. Right now it has the same semantics as
-include, but that will be fixed soon.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68625 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
cdd3c76f2e9e6897c185b35559e68cc2bf6506ae 08-Apr-2009 Daniel Dunbar <daniel@zuster.org> More fixes to builtin preprocessor defines.
- Add -static-define option driver can use when __STATIC__ should be
defined (instead of __DYNAMIC__).

- Don't set __OPTIMIZE_SIZE__ on Os, __OPTIMIZE_SIZE__ is tied to Oz.

- Set __NO_INLINE__ following GCC 4.2.

- Set __GNU_GNU_INLINE__ or __GNU_STDC_INLINE__ following GCC 4.2.

- Set __EXCEPTIONS for Objective-C NonFragile ABI.

- Set __STRICT_ANSI__ for standard conforming modes.

- I added a clang style test case in utils for this, but its not
particularly portable and I don't think it belongs in the test
suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
3bbc75302fd43cf13d868b46c94ff8794b302e43 08-Apr-2009 Daniel Dunbar <daniel@zuster.org> More fixes to builtin preprocessor defines.
- Add -static-define option driver can use when __STATIC__ should be
defined (instead of __DYNAMIC__).

- Don't set __OPTIMIZE_SIZE__ on Os, __OPTIMIZE_SIZE__ is tied to Oz.

- Set __NO_INLINE__ following GCC 4.2.

- Set __GNU_GNU_INLINE__ or __GNU_STDC_INLINE__ following GCC 4.2.

- Set __EXCEPTIONS for Objective-C NonFragile ABI.

- Set __STRICT_ANSI__ for standard conforming modes.

- I added a clang style test case in utils for this, but its not
particularly portable and I don't think it belongs in the test
suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
6ba226808459888c545a6a100813e7866169c830 08-Apr-2009 Steve Naroff <snaroff@apple.com> Sema::CheckConditionalOperands(): Soften pointer/integer mismatch from error->warning.

Fixes <rdar://problem/6762239> [sema] gcc incompatibility; error on incompatible operand types in ?:.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68617 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9158804749356f88be8c5a3bade75b761846273c 08-Apr-2009 Steve Naroff <snaroff@apple.com> Sema::CheckConditionalOperands(): Soften pointer/integer mismatch from error->warning.

Fixes <rdar://problem/6762239> [sema] gcc incompatibility; error on incompatible operand types in ?:.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68617 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dedc94c29b4dd7cec9aa290170f7bb1062a2a9b1 08-Apr-2009 Daniel Dunbar <daniel@zuster.org> Make debug info work when using -save-temps.
- This is pretty ugly, but the most obvious solution. Chime in if you
have a nicer one.

- The problem is that with -save-temps, clang-cc has no idea what the
name of the original input file is. However, the user expects to be
able to set breakpoints based on the input file name.

- We support this by providing a new option -main-file-name (similar
to -dumpbase used by gcc) which allows the driver to pass in the
original file name.

- <rdar://problem/6753383> building with clang using --save-temps
gets the compile unit name from the .i file...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
c9abc043af88f90d177a5bd147f627b78ca49fde 08-Apr-2009 Daniel Dunbar <daniel@zuster.org> Make debug info work when using -save-temps.
- This is pretty ugly, but the most obvious solution. Chime in if you
have a nicer one.

- The problem is that with -save-temps, clang-cc has no idea what the
name of the original input file is. However, the user expects to be
able to set breakpoints based on the input file name.

- We support this by providing a new option -main-file-name (similar
to -dumpbase used by gcc) which allows the driver to pass in the
original file name.

- <rdar://problem/6753383> building with clang using --save-temps
gets the compile unit name from the .i file...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
6a150e1c6ce14440d70edf69ecb4ddcf13130635 08-Apr-2009 Chris Lattner <sabre@nondot.org> improve compatibility with VC+, patch by John Thompson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68586 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
a27e5feaab38b99a0e4473247dbd157f015ea4d1 08-Apr-2009 Chris Lattner <sabre@nondot.org> improve compatibility with VC+, patch by John Thompson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68586 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclContextInternals.h
e7c6d4fac636e290fa0e3a59adda20c07d7d8ae7 08-Apr-2009 Ted Kremenek <kremenek@apple.com> New static analyzer check by Nikita Zhuk!

"The attached patch generates warnings of cases where an ObjC message is sent to
a nil object and the size of return type of that message is larger than the size
of void pointer. This may result in undefined return values as described in PR
2718. The patch also includes test cases."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
899b3de7bc32434fc406f35255cc828ba8372b3d 08-Apr-2009 Ted Kremenek <kremenek@apple.com> New static analyzer check by Nikita Zhuk!

"The attached patch generates warnings of cases where an ObjC message is sent to
a nil object and the size of return type of that message is larger than the size
of void pointer. This may result in undefined return values as described in PR
2718. The patch also includes test cases."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68585 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
e079c717362b860dbad093253e55255ce76321f6 08-Apr-2009 Daniel Dunbar <daniel@zuster.org> Set __PIC__ (more) correctly.
- Add -pic-level clang-cc option to specify the value for the define,
updated driver to pass this.

- Added __pic__

- Added OBJC_ZEROCOST_EXCEPTIONS define while I was here (to match gcc).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
9fd0b1f845a61e71dd8099f596532d34c519630a 08-Apr-2009 Daniel Dunbar <daniel@zuster.org> Set __PIC__ (more) correctly.
- Add -pic-level clang-cc option to specify the value for the define,
updated driver to pass this.

- Added __pic__

- Added OBJC_ZEROCOST_EXCEPTIONS define while I was here (to match gcc).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68584 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
7ad5e312a1f68ead5df0ecefb5cf7811e19a546d 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward remaining -f options to clang manually.
- Groups are really just intended to hold inherent structure of the
options, not be abused for individual tool argument translation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68554 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
3aaf082689d3235937a2e56a60f90fc1b3aebfb2 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward remaining -f options to clang manually.
- Groups are really just intended to hold inherent structure of the
options, not be abused for individual tool argument translation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68554 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
c7e14460094afb16b2110d132f2140c2d0e4e3be 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Only forward last instance of -mmacosx-version-min= and
-isysroot to clang.
- Don't forward arbitrary -i* options to clang, just the ones we know
about.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68553 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2ac9fc2ad64e16127df8c60caeea2edfe9a400a2 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Only forward last instance of -mmacosx-version-min= and
-isysroot to clang.
- Don't forward arbitrary -i* options to clang, just the ones we know
about.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68553 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9d805ce49ec3f5061b9c6944f9da1693cf701cca 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Manually translate a number of -f with no- variants options to
clang.
- We will eventually want some more driver infrastructre for this
probably.

- For now, the clang-cc interface stays relatively the same, but we
don't accept multiple instances anymore, or the [no-] variants
directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68550 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
48d1ef782c8c88066b5febf60f8f456064d7d3f0 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Manually translate a number of -f with no- variants options to
clang.
- We will eventually want some more driver infrastructre for this
probably.

- For now, the clang-cc interface stays relatively the same, but we
don't accept multiple instances anymore, or the [no-] variants
directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68550 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9e5c3953213d392c7892480202dd8625a915a711 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add default for ArgList::hasFlag and simplify implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68549 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
9af6668984f1594459a58c381d95272aa7ca7663 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add default for ArgList::hasFlag and simplify implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68549 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
f834eaff447215c2bb25961757e7aa0184c6f3a7 07-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Diagnose uses of function specifiers on declarations which don't declare
functions. Fixes PR3941.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
85a5319ea4b5c916d7dd665e84af61e4a8a0b9c2 07-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Diagnose uses of function specifiers on declarations which don't declare
functions. Fixes PR3941.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
31abb2b2bc7607fe83fb161fcf382bb54cab2def 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Explicitly warn that -pg isn't supported (even though we
aren't failing the compilation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
5c1aaafbd6dd25a99ca1960e1c3c98aeefe9d728 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Explicitly warn that -pg isn't supported (even though we
aren't failing the compilation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
1cfd891cf792c46f2b740a074ec2ba716ead3cd8 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add 'q' flag for options which shouldn't be reported as unused.
- <rdar://problem/6756295> warning about '-dynamic' argument unused
during compilation seems incorrect


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68535 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.def
1e23f5f963dd6a3cee43ace77578161798e41e2d 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add 'q' flag for options which shouldn't be reported as unused.
- <rdar://problem/6756295> warning about '-dynamic' argument unused
during compilation seems incorrect


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68535 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.def
d2b6edce099c2f8888e358bbef10736002d1948a 07-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Move the internal DeclContext data structures into a separate header.

Simplify the addition of a case statement to a switch.

Fix -print-stats for attribute-qualified types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68522 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DeclVisitor.h
ST/Stmt.h
c2ee10d79f70036af652a395ac1f8273f3d04e12 07-Apr-2009 Douglas Gregor <dgregor@apple.com> Move the internal DeclContext data structures into a separate header.

Simplify the addition of a case statement to a switch.

Fix -print-stats for attribute-qualified types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68522 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclContextInternals.h
ST/DeclVisitor.h
ST/Stmt.h
676c28bb915a6c7f09c12b58c2be65ea47156f0c 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: More verbosity reduction.
- Ignore some more -W options and -[fm] options which we can somewhat
safely ignore.

- Recognize that -W is an alias for -Wextra

W: -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wfour-char-constants -Winit-self -Wmissing-format-attribute -Wno-#warnings -Wno-comment -Wno-long-long -Wno-variadic-macros -Wold-style-definition -Wstrict-prototypes -Wunused-parameter

f: -fconstant-cfstrings -fdollars-in-identifiers -finline -finline-functions -fno-inline -fno-keep-inline-functions -fno-strict-aliasing -fobjc-atdefs -fobjc-call-cxx-cdtors -fobjc-new-property -fstack-protector

m: -mconstant-cfstrings -mfix-and-continue


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68487 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
16fd3a9f5159b74bfdd65cf290b4bd091088de91 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: More verbosity reduction.
- Ignore some more -W options and -[fm] options which we can somewhat
safely ignore.

- Recognize that -W is an alias for -Wextra

W: -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wfour-char-constants -Winit-self -Wmissing-format-attribute -Wno-#warnings -Wno-comment -Wno-long-long -Wno-variadic-macros -Wold-style-definition -Wstrict-prototypes -Wunused-parameter

f: -fconstant-cfstrings -fdollars-in-identifiers -finline -finline-functions -fno-inline -fno-keep-inline-functions -fno-strict-aliasing -fobjc-atdefs -fobjc-call-cxx-cdtors -fobjc-new-property -fstack-protector

m: -mconstant-cfstrings -mfix-and-continue


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68487 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
8654a5b5e407cdc32b1c4ea62363160d37eed055 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Implement __sync_{add,sub,and,or,xor}_and_fetch and
__sync_bool_compare_and_swap.
- <rdar://problem/6762223> [sema/irgen] support
__sync_bool_compare_and_swap and __sync_add_and_fetch


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
0002d23aaf10f307273dab5facda01c137283d22 07-Apr-2009 Daniel Dunbar <daniel@zuster.org> Implement __sync_{add,sub,and,or,xor}_and_fetch and
__sync_bool_compare_and_swap.
- <rdar://problem/6762223> [sema/irgen] support
__sync_bool_compare_and_swap and __sync_add_and_fetch


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
6819955c0da56c4ec39f80e83982374dca4cd38d 07-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Warn instead of error on duplicate protocol definitions.
Be kind to so many projects which are doing this (and be
like gcc).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e2573e529d8630e1586e8fb1230938d6e1d799e5 07-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Warn instead of error on duplicate protocol definitions.
Be kind to so many projects which are doing this (and be
like gcc).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68474 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
01d9ee4cc963c74f9cfd4030103955962a35112f 07-Apr-2009 Ted Kremenek <kremenek@apple.com> PathDiagnosticLocation now also wraps Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68470 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
fea5f5a1e8fe558d716ddeddf1aecf63f2e9a54f 07-Apr-2009 Ted Kremenek <kremenek@apple.com> PathDiagnosticLocation now also wraps Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68470 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
a0bd8a94fb46edac5aa60a1373bcd735790cb2f6 07-Apr-2009 Steve Naroff <snaroff@apple.com> Make casting 'super' a deprecated warning (instead of a hard error).

This will simplify clang adoption, and is probably better "etiquette" (since gcc has always accepted this idiom without warning). Once we are over the adoption hurdle, we can turn this into an error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68468 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fc479d793b5daa20bbf54651b83a90e77e907949 07-Apr-2009 Steve Naroff <snaroff@apple.com> Make casting 'super' a deprecated warning (instead of a hard error).

This will simplify clang adoption, and is probably better "etiquette" (since gcc has always accepted this idiom without warning). Once we are over the adoption hurdle, we can turn this into an error.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68468 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
dfd776447509180ce32d1427f5ac7939ed1a9074 06-Apr-2009 Anders Carlsson <andersca@mac.com> Define __OPTIMIZE__ and __OPTIMIZE_SIZE__ if the -O[12] and -Os flags are passed to the compiler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68450 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
4ca076fffdfa72ebfab364c8de091b89fc291ae6 06-Apr-2009 Anders Carlsson <andersca@mac.com> Define __OPTIMIZE__ and __OPTIMIZE_SIZE__ if the -O[12] and -Os flags are passed to the compiler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68450 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
cb9469d0dff4e2999f5dfb7087a08c0d8e6d7bdd 06-Apr-2009 Chris Lattner <sabre@nondot.org> Daniel convinced me that accepting "const va_list" arguments to va_arg is
a really really bad idea. Now that we emit an error about the unpromoted
type, users should be able to understand what is going on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68447 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
3f419761288f6ce8ffc284e9e241c28b536fce35 06-Apr-2009 Chris Lattner <sabre@nondot.org> Daniel convinced me that accepting "const va_list" arguments to va_arg is
a really really bad idea. Now that we emit an error about the unpromoted
type, users should be able to understand what is going on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68447 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
89a72c56e87128c3e86051131b510335bc0f09e0 05-Apr-2009 Chris Lattner <sabre@nondot.org> Add a warning for questionable va_args usage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9dc8f19a5394c4268727f0d755623f8d56416e7c 05-Apr-2009 Chris Lattner <sabre@nondot.org> Add a warning for questionable va_args usage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9a553c4c52b949a7b662e781196bb587462c6ea7 04-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -dumpversion, this is used by some configuration
scripts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68418 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
e06dc219a869d73b6c9a398a2dee0aa2d4e2dcf0 04-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -dumpversion, this is used by some configuration
scripts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68418 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2431e605018b816767570dc53eae345183d9f8e6 04-Apr-2009 Anton Korobeynikov <asl@math.spbu.ru> Basic support for regparm codegen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
1102f4282ceb430dbc9fcedb9dd2ad25898a09e8 04-Apr-2009 Anton Korobeynikov <asl@math.spbu.ru> Basic support for regparm codegen

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
8fcffeb6ce16ac977e11f965077e8dfbb62dd4bd 04-Apr-2009 Anton Korobeynikov <asl@math.spbu.ru> Provide sema proper values of maximal number of arguments passed in registers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
264a76cdf382c507f4d43e64c89f1503f003ac95 04-Apr-2009 Anton Korobeynikov <asl@math.spbu.ru> Provide sema proper values of maximal number of arguments passed in registers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TargetInfo.h
025de204498d19c7d684769858d86b97667c918b 04-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -Qunused-arguments option to suppress driver "unused
arguments" warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68410 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
bf4a6767a8fd4f81df93c55f88b1b4b7142a04d4 04-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -Qunused-arguments option to suppress driver "unused
arguments" warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68410 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
66549c46330647bceec3c2fb4189e0bb076a254b 03-Apr-2009 Chris Lattner <sabre@nondot.org> improve the string literal comparison warning to not call @encode's "string literals".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
95f49fb26637e0f271bca580e8e20ce3c08ac2e9 03-Apr-2009 Chris Lattner <sabre@nondot.org> improve the string literal comparison warning to not call @encode's "string literals".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
eb4efed0be2f096eb7f2d8a3680d3dff9a278dc7 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Explicitly ignore -fpch-preprocess when using clang, we don't
need to do anything special to support this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68403 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Options.def
68fb469aeb19144403e703b825854d08353c8eea 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Explicitly ignore -fpch-preprocess when using clang, we don't
need to do anything special to support this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68403 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Options.def
4c56f99519089cbc022fa69a83bcd876d68e4e28 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Reduce Driver verbosity by suppressing unused warning about another
cluster of -W options.

The list: -Waggregate-return -Wbad-function-cast -Wcast-qual
-Wformat-security -Wformat=2 -Wformat -Wmissing-declarations
-Wnewline-eof -Wno-parentheses -Wpacked -Wredundant-decls -Wshadow
-Wsign-compare -Wstrict-overflow= -Wstrict-overflow -Wuninitialized
-Wunknown-pragmas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68402 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
93e54836706ba0c4c1bbf23b72e179263f218245 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Reduce Driver verbosity by suppressing unused warning about another
cluster of -W options.

The list: -Waggregate-return -Wbad-function-cast -Wcast-qual
-Wformat-security -Wformat=2 -Wformat -Wmissing-declarations
-Wnewline-eof -Wno-parentheses -Wpacked -Wredundant-decls -Wshadow
-Wsign-compare -Wstrict-overflow= -Wstrict-overflow -Wuninitialized
-Wunknown-pragmas.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68402 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
0a7e2e95566ed952f18bea49f1482ecd955957f2 03-Apr-2009 Chris Lattner <sabre@nondot.org> Fix Clang on VC++, patch by Bixia Zheng!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68394 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
ff9b446dd1db0ed3a89403373df83b0da81dc6f5 03-Apr-2009 Chris Lattner <sabre@nondot.org> Fix Clang on VC++, patch by Bixia Zheng!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68394 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
cec0374ffa1f3ca65b875506d3a66c434c643aa6 03-Apr-2009 Chris Lattner <sabre@nondot.org> fix some warnings on VC++, patch by John Thompson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Stmt.h
fb523e16dd1f860ff02a3ae03e5e3e25327a5860 03-Apr-2009 Chris Lattner <sabre@nondot.org> fix some warnings on VC++, patch by John Thompson!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Stmt.h
f0377a948e98ffe328a1d58c8b9fc76aa36e2c2d 03-Apr-2009 Chris Lattner <sabre@nondot.org> initialize an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
c83cb1beddb6dab1226ea88c60a0f1e2263f6d48 03-Apr-2009 Chris Lattner <sabre@nondot.org> initialize an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1f48e436a6b82ca9e0b533771633aa549729e2c8 03-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> This is the first step to gradually remove the use of loc::SymbolVal. Now
when creating symbolic values, we distinguish between location and non-location
values. For location values, we create a symbolic region instead of a
loc::SymbolVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68373 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
a1718c78770db93d1b762620f07728a56786f2ae 03-Apr-2009 Zhongxing Xu <xuzhongxing@gmail.com> This is the first step to gradually remove the use of loc::SymbolVal. Now
when creating symbolic values, we distinguish between location and non-location
values. For location values, we create a symbolic region instead of a
loc::SymbolVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68373 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
4bda26203c1f15f56a36989ee82d8b3467f6afb8 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Do we have fixit advice for comments yet?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6d7d8398e71a8bd121d3b46e250f1dbcfb9679d4 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Do we have fixit advice for comments yet?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68372 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f5db69b661b04556c28994e816601902d6129cae 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
23d16b3efb640f0d34d95557c51b82d037d08adc 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68370 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
49343339a8f693f76108e9c84b8a4c3ea48a99e9 03-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Implement -fvisibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
7cd2e93125e2f3b6ca01b24ed0c3fd7e94683fd9 03-Apr-2009 Fariborz Jahanian <fjahanian@apple.com> Implement -fvisibility.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68369 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
6a91648fe9226db360759a23c89bb5aec3f3ceab 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add target hook for setting symbol prefix and section of unicode
string literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
a9668e0b4c451a1021fe650c451b54dc98c2d18d 03-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add target hook for setting symbol prefix and section of unicode
string literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68363 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
24b48b064cb801d6f38ad8f7aac0f535bc0be3e0 02-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add a new command-line option "-fixit-at=file:line:column" that only
applies fix-its to error messages that occur at that specific location
in the program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68342 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
26df2f09587ad6978ac8e357ca46b2731d591cc4 02-Apr-2009 Douglas Gregor <dgregor@apple.com> Add a new command-line option "-fixit-at=file:line:column" that only
applies fix-its to error messages that occur at that specific location
in the program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68342 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
f71b7740f3a3544b325cec81205c7e989149f773 02-Apr-2009 Mike Stump <mrs@apple.com> Remove -ftrapu.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
035cf8911c2282550411be70f370dfe5d282b5c9 02-Apr-2009 Mike Stump <mrs@apple.com> Remove -ftrapu.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
563a251a2b3d640d631c014bea16eda560c27d3e 02-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Provide FIX-IT notes to describe what fix-it is doing behind the
scenes, using the underlying diagnostic client to format the
messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68324 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticFrontendKinds.td
rontend/FixItRewriter.h
de4bf6a63219c5b9d3bce1fed3dfe075568098a0 02-Apr-2009 Douglas Gregor <dgregor@apple.com> Provide FIX-IT notes to describe what fix-it is doing behind the
scenes, using the underlying diagnostic client to format the
messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68324 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticFrontendKinds.td
rontend/FixItRewriter.h
a8f2ae69c8ca9cfdbce4f7c45709e6d6f22229fa 02-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> When calling a function without a prototype for which we have a
definition, warn if there are too many/too few function call
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
74734d576b1dd082f623abb76ab204d69970dadb 02-Apr-2009 Douglas Gregor <dgregor@apple.com> When calling a function without a prototype for which we have a
definition, warn if there are too many/too few function call
arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
00e935b0ffe95a769a5cede65a084aa76d528a04 02-Apr-2009 Chris Lattner <sabre@nondot.org> add TemplateName.cpp/h to the xcode project, minor tidying.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68301 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
c960ee31c7e22a157a8cd31c92d9a9aa945e1e96 02-Apr-2009 Chris Lattner <sabre@nondot.org> add TemplateName.cpp/h to the xcode project, minor tidying.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68301 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
899ae67dc06ebe16da389d33b837962a85c6db04 02-Apr-2009 Ted Kremenek <kremenek@apple.com> Hack: Add 'PathDiagnostic::flattenLocations()'. Because PlistDiagnosticClient
can use a PathLocation after any reference Stmts are reclaimed,
flattenLocation() converts those references to statements to source ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
96a69267fc771dcb288bb7b3c5b5b6d49a9542ff 02-Apr-2009 Ted Kremenek <kremenek@apple.com> Hack: Add 'PathDiagnostic::flattenLocations()'. Because PlistDiagnosticClient
can use a PathLocation after any reference Stmts are reclaimed,
flattenLocation() converts those references to statements to source ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
9802a0af70a8ca442ab2646c7d68b42c2e91573d 02-Apr-2009 Chris Lattner <sabre@nondot.org> fix a FIXME, providing accurate source range info for DeclStmt's. The end
of the range is now the ';' location. For something like this:

$ cat t2.c

#define bool int
void f(int x, int y) {
bool b = !x && y;
}

We used to produce:
$ clang-cc t2.c -ast-dump
typedef char *__builtin_va_list;

void f(int x, int y)
(CompoundStmt 0x2201f10 <t2.c:3:22, line:5:1>
(DeclStmt 0x2201ef0 <line:2:14> <----
0x2201a20 "int b =
(BinaryOperator 0x2201ed0 <line:4:10, col:16> 'int' '&&'
(UnaryOperator 0x2201e90 <col:10, col:11> 'int' prefix '!'
(DeclRefExpr 0x2201c90 <col:11> 'int' ParmVar='x' 0x2201a50))
(DeclRefExpr 0x2201eb0 <col:16> 'int' ParmVar='y' 0x2201e10))")


Now we produce:

$ clang-cc t2.c -ast-dump
typedef char *__builtin_va_list;

void f(int x, int y)
(CompoundStmt 0x2201f10 <t2.c:3:22, line:5:1>
(DeclStmt 0x2201ef0 <line:2:14, line:4:17> <------
0x2201a20 "int b =
(BinaryOperator 0x2201ed0 <col:10, col:16> 'int' '&&'
(UnaryOperator 0x2201e90 <col:10, col:11> 'int' prefix '!'
(DeclRefExpr 0x2201c90 <col:11> 'int' ParmVar='x' 0x2201a50))
(DeclRefExpr 0x2201eb0 <col:16> 'int' ParmVar='y' 0x2201e10))")



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68288 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
97144fc41a9419bf6d74fc9450e8ef3f6e11f7e0 02-Apr-2009 Chris Lattner <sabre@nondot.org> fix a FIXME, providing accurate source range info for DeclStmt's. The end
of the range is now the ';' location. For something like this:

$ cat t2.c

#define bool int
void f(int x, int y) {
bool b = !x && y;
}

We used to produce:
$ clang-cc t2.c -ast-dump
typedef char *__builtin_va_list;

void f(int x, int y)
(CompoundStmt 0x2201f10 <t2.c:3:22, line:5:1>
(DeclStmt 0x2201ef0 <line:2:14> <----
0x2201a20 "int b =
(BinaryOperator 0x2201ed0 <line:4:10, col:16> 'int' '&&'
(UnaryOperator 0x2201e90 <col:10, col:11> 'int' prefix '!'
(DeclRefExpr 0x2201c90 <col:11> 'int' ParmVar='x' 0x2201a50))
(DeclRefExpr 0x2201eb0 <col:16> 'int' ParmVar='y' 0x2201e10))")


Now we produce:

$ clang-cc t2.c -ast-dump
typedef char *__builtin_va_list;

void f(int x, int y)
(CompoundStmt 0x2201f10 <t2.c:3:22, line:5:1>
(DeclStmt 0x2201ef0 <line:2:14, line:4:17> <------
0x2201a20 "int b =
(BinaryOperator 0x2201ed0 <col:10, col:16> 'int' '&&'
(UnaryOperator 0x2201e90 <col:10, col:11> 'int' prefix '!'
(DeclRefExpr 0x2201c90 <col:11> 'int' ParmVar='x' 0x2201a50))
(DeclRefExpr 0x2201eb0 <col:16> 'int' ParmVar='y' 0x2201e10))")



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68288 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
133d2554efb2245f1757becfd369cb298495f0bc 02-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a "-fixit" mode to clang-cc that applies code-modification hints.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68268 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
558cb56caf8906e0adbe643e3febbef0b7af1b9f 02-Apr-2009 Douglas Gregor <dgregor@apple.com> Introduce a "-fixit" mode to clang-cc that applies code-modification hints.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68268 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/FixItRewriter.h
0f595bbd73ed9dc1ede9d4d9ea597e37a89227ce 02-Apr-2009 Mike Stump <mrs@apple.com> Fixup -ftrapv to be more gcc compatible. -ftrapu (for want of a
better name) is the option that SmallTalk can use to intercept all
overflows, including unsigned. I added some testcases so we don't
break anything.

Also included is another patch from David for += and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68267 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
5d8b2cf9fd704f6ca5e33525803a65421c0b440e 02-Apr-2009 Mike Stump <mrs@apple.com> Fixup -ftrapv to be more gcc compatible. -ftrapu (for want of a
better name) is the option that SmallTalk can use to intercept all
overflows, including unsigned. I added some testcases so we don't
break anything.

Also included is another patch from David for += and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68267 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
3faaa81f0ad6ec851c64050c6e10f01b5c623748 02-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add some more code modification hints

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68261 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
a3a835149ed4b183e3b009a1f94a6123779d696b 02-Apr-2009 Douglas Gregor <dgregor@apple.com> Add some more code modification hints

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68261 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
arse/Action.h
126da5e5a1461d63cd60121c0c25704fb546f672 02-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Allow -ccc-gcc-name to specify the name/path to use when
calling gcc in generic configurations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68260 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
78d8a089c8f124ba6f47bb37e2c4a36986f60e23 02-Apr-2009 Daniel Dunbar <daniel@zuster.org> Driver: Allow -ccc-gcc-name to specify the name/path to use when
calling gcc in generic configurations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68260 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
1ba5cb396d90db17a6d186891c1776ad0935a4a3 02-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Add code modification hints to various parsing-related diagnostics.

Plus, reword a extension warnings to avoid talking about "ISO C" when
the extension might also be available in C++ or C++0x.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
9b3064b55f3c858923734e8b1c9831777fc22554 02-Apr-2009 Douglas Gregor <dgregor@apple.com> Add code modification hints to various parsing-related diagnostics.

Plus, reword a extension warnings to avoid talking about "ISO C" when
the extension might also be available in C++ or C++0x.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68257 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
arse/DeclSpec.h
d7cb037d4b143f66083a4bca56b8b9e51606f9f0 01-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Make parsing a semantic analysis a little more robust following Sema
failures that involve malformed types, e.g., "typename X::foo" where
"foo" isn't a type, or "std::vector<void>" that doens't instantiate
properly.

Similarly, be a bit smarter in our handling of ambiguities that occur
in Sema::getTypeName, to eliminate duplicate error messages about
ambiguous name lookup.

This eliminates two XFAILs in test/SemaCXX, one of which was crying
out to us, trying to tell us that we were producing repeated error
messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68251 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
31a19b6989bbf326d2de5ae12e712e2a65ca9c34 01-Apr-2009 Douglas Gregor <dgregor@apple.com> Make parsing a semantic analysis a little more robust following Sema
failures that involve malformed types, e.g., "typename X::foo" where
"foo" isn't a type, or "std::vector<void>" that doens't instantiate
properly.

Similarly, be a bit smarter in our handling of ambiguities that occur
in Sema::getTypeName, to eliminate duplicate error messages about
ambiguous name lookup.

This eliminates two XFAILs in test/SemaCXX, one of which was crying
out to us, trying to tell us that we were producing repeated error
messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68251 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5e6084cc603111587df403ce188b17e5928e5ac9 01-Apr-2009 Steve Naroff <snaroff@apple.com> CodeGenModule::GetAddrOfConstantCFString():
- Finish up support for converting UTF8->UTF16 to support ObjC @"string" constants.

Remove warning from CheckObjCString.

As the FIXME in the test case indicates, I still have a bug to work out (apparently with \u handling).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68245 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b59212a6e494d2c364b54462f545833902c29158 01-Apr-2009 Steve Naroff <snaroff@apple.com> CodeGenModule::GetAddrOfConstantCFString():
- Finish up support for converting UTF8->UTF16 to support ObjC @"string" constants.

Remove warning from CheckObjCString.

As the FIXME in the test case indicates, I still have a bug to work out (apparently with \u handling).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68245 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
db789919a1dd1af6123a4caff699a40f082b5514 01-Apr-2009 Mike Stump <mrs@apple.com> Add -ftrapv support, patch from David Chisnall; well all except the
clang option code that is and two bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
2add47387d39ee6c40dcb0e9f3d51c27ad1e113c 01-Apr-2009 Mike Stump <mrs@apple.com> Add -ftrapv support, patch from David Chisnall; well all except the
clang option code that is and two bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
789c0106af6dfcd4d614839d2a32c71d77db36d2 01-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Revert r68221, -ftrapv support, which causes several regressions in
Clang's test suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68230 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
7e203b7f5d894b1969765332e35c6a8b4d45556f 01-Apr-2009 Douglas Gregor <dgregor@apple.com> Revert r68221, -ftrapv support, which causes several regressions in
Clang's test suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68230 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
d4b0bd683558291a28dfc5be82f976e31c94230d 01-Apr-2009 Mike Stump <mrs@apple.com> Add -ftrapv support, patch from David Chisnall; well all except the
clang option code that is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68221 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
3fb07bdc32cb301a8438c297fe7d68542a7537b2 01-Apr-2009 Mike Stump <mrs@apple.com> Add -ftrapv support, patch from David Chisnall; well all except the
clang option code that is.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68221 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
river/Options.def
82e5db22dbf69459dc108176bbef86bd1287c151 01-Apr-2009 Steve Naroff <snaroff@apple.com> Add ConvertUTF module from http://www.unicode.org/Public/PROGRAMS/CVTUTF.

#ifdef'd out the 5 conversion routines that we don't currently need.

Still need a bit more work in GetAddrOfConstantCFString(). Added a FIXME to indicate this.

Expect to remove the FIXME today...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
e9b7d8ace8674585818990cff585daae7745bd88 01-Apr-2009 Steve Naroff <snaroff@apple.com> Add ConvertUTF module from http://www.unicode.org/Public/PROGRAMS/CVTUTF.

#ifdef'd out the 5 conversion routines that we don't currently need.

Still need a bit more work in GetAddrOfConstantCFString(). Added a FIXME to indicate this.

Expect to remove the FIXME today...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/ConvertUTF.h
da0c4d26ecb98b02a0f22bde39a1a45dbc2f6d3f 01-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Give Type::getDesugaredType a "for-display" mode that can apply more
heuristics to determine when it's useful to desugar a type for display
to the user. Introduce two C++-specific heuristics:

- For a qualified type (like "foo::bar"), only produce a new
desugred type if desugaring the qualified type ("bar", in this
case) produces something interesting. For example, if "foo::bar"
refers to a class named "bar", don't desugar. However, if
"foo::bar" refers to a typedef of something else, desugar to that
something else. This gives some useful desugaring such as
"foo::bar (aka 'int')".
- Don't desugar class template specialization types like
"basic_string<char>" down to their underlying "class
basic_string<char, char_traits<char>, allocator<char>>, etc.";
it's better just to leave such types alone.

Update diagnostics.html with some discussion and examples of type
preservation in C++, showing qualified names and class template
specialization types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68207 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
969c689d893a248eca4f049f5b89f747e66e4bff 01-Apr-2009 Douglas Gregor <dgregor@apple.com> Give Type::getDesugaredType a "for-display" mode that can apply more
heuristics to determine when it's useful to desugar a type for display
to the user. Introduce two C++-specific heuristics:

- For a qualified type (like "foo::bar"), only produce a new
desugred type if desugaring the qualified type ("bar", in this
case) produces something interesting. For example, if "foo::bar"
refers to a class named "bar", don't desugar. However, if
"foo::bar" refers to a typedef of something else, desugar to that
something else. This gives some useful desugaring such as
"foo::bar (aka 'int')".
- Don't desugar class template specialization types like
"basic_string<char>" down to their underlying "class
basic_string<char, char_traits<char>, allocator<char>>, etc.";
it's better just to leave such types alone.

Update diagnostics.html with some discussion and examples of type
preservation in C++, showing qualified names and class template
specialization types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68207 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9a744e58dcfc2ba9a639be2d7a07e806415d206b 01-Apr-2009 Steve Naroff <snaroff@apple.com> More "prep" work for handling UTF16 CFString.

Patch by Jean-Daniel Dupas. Thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8d4141f83d9de379547cf05bd75d4c6cf894b189 01-Apr-2009 Steve Naroff <snaroff@apple.com> More "prep" work for handling UTF16 CFString.

Patch by Jean-Daniel Dupas. Thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7573221654c5470c1a708beab7ef4338bfcaeee9 01-Apr-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/6740387>. Sending nil to an object that returns a struct
should only be an error if that value is consumed. This fix was largely
accomplished by moving 'isConsumedExpr' back to ParentMap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
nalysis/PathSensitive/GRExprEngine.h
b930d7adb7cb7642c9c49b39df04ebd5cbfa713a 01-Apr-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/6740387>. Sending nil to an object that returns a struct
should only be an error if that value is consumed. This fix was largely
accomplished by moving 'isConsumedExpr' back to ParentMap.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
nalysis/PathSensitive/GRExprEngine.h
46ee0f3f00561293f0dd50eee67083227273113f 01-Apr-2009 Chris Lattner <sabre@nondot.org> remove ASTContext::buildObjCInterfaceType, which breaks canonical
types. It is no longer needed now that the code generator
re-lays-out interfaces if they are defines after being laid out
from a forward decl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
03d9f34a96ea28eaa698cc779462a1ce1dc79105 01-Apr-2009 Chris Lattner <sabre@nondot.org> remove ASTContext::buildObjCInterfaceType, which breaks canonical
types. It is no longer needed now that the code generator
re-lays-out interfaces if they are defines after being laid out
from a forward decl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2fba615a01fdcf27d03c41117bfc266db7955812 01-Apr-2009 Ted Kremenek <kremenek@apple.com> - Changed PathDiagnosticPiece::getLocation() to return a PathDiagnosticLocation
instead of a FullSourceLoc. This resulted in a bunch of small edits in various
clients.
- Updated BugReporter to include an alternate PathDiagnostic generation
algorithm for PathDiagnosticClients desiring more control-flow pieces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68193 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
5fb5dfb6646464db3cd6d54a6332375c8fe36b75 01-Apr-2009 Ted Kremenek <kremenek@apple.com> - Changed PathDiagnosticPiece::getLocation() to return a PathDiagnosticLocation
instead of a FullSourceLoc. This resulted in a bunch of small edits in various
clients.
- Updated BugReporter to include an alternate PathDiagnostic generation
algorithm for PathDiagnosticClients desiring more control-flow pieces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68193 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
b96c754daae75f88947a2b3d36530c8fd71cf6e7 01-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Follow gcc's example and warn by default on unknown escapes. Inspired
by mailing list message about "\phello" style strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
aec5cabee22888bbc052585bfcfa11eb1d1478cb 01-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Follow gcc's example and warn by default on unknown escapes. Inspired
by mailing list message about "\phello" style strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
ab4f8648d764cf753bcd87a3f8ebbe43e856aa76 01-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Flip diagnostic from Warning to ExtWarn so that it's an error
with -pedantic-errors. This fixes the C99 part of PR3919.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
6c105c403025a42ef49641586ba34c23bbfa7958 01-Apr-2009 Eli Friedman <eli.friedman@gmail.com> Flip diagnostic from Warning to ExtWarn so that it's an error
with -pedantic-errors. This fixes the C99 part of PR3919.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68178 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
77da58034d00866f3261d2c657a5823578f73028 01-Apr-2009 Douglas Gregor <doug.gregor@gmail.com> Parsing, semantic analysis, and template instantiation for typename
specifiers that terminate in a simple-template-id, e.g.,

typename MetaFun::template apply<T1, T2>

Also, implement template instantiation for dependent
nested-name-specifiers that involve unresolved identifiers, e.g.,

typename T::type::type





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/NestedNameSpecifier.h
ST/TemplateName.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/IdentifierTable.h
arse/Action.h
1734317845d60307d474b5da8a8d33adbaf5e723 01-Apr-2009 Douglas Gregor <dgregor@apple.com> Parsing, semantic analysis, and template instantiation for typename
specifiers that terminate in a simple-template-id, e.g.,

typename MetaFun::template apply<T1, T2>

Also, implement template instantiation for dependent
nested-name-specifiers that involve unresolved identifiers, e.g.,

typename T::type::type





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/NestedNameSpecifier.h
ST/TemplateName.h
ST/Type.h
asic/DiagnosticParseKinds.td
asic/IdentifierTable.h
arse/Action.h
c3a4893262053ed2efc04a6128358cc8f706a5a0 01-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add Target hooks for IRgen of [cf]string literals.
- Notably, set section on cfstring literal string data (for now, this
is done everywhere because it matches what we were already doing
for the CFString data itself)

- <rdar://problem/6599098> [irgen] linker requires objc string data
to go into cstring


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8e5c2b8072f4409c7c0004331d1db9652d5209c0 01-Apr-2009 Daniel Dunbar <daniel@zuster.org> Add Target hooks for IRgen of [cf]string literals.
- Notably, set section on cfstring literal string data (for now, this
is done everywhere because it matches what we were already doing
for the CFString data itself)

- <rdar://problem/6599098> [irgen] linker requires objc string data
to go into cstring


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e627b6808b4f973c64a8b3b5612e8b609a0d1bff 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement basic --help text.
- PR3875.
- <rdar://problem/6615249> [driver] ccc should support some form of
--help


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68148 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.def
91e28afe3503893c69afd71877f11e3bf03fa4ce 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement basic --help text.
- PR3875.
- <rdar://problem/6615249> [driver] ccc should support some form of
--help


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68148 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Options.def
9ea3322dcf04fe44bdd6f0d328cd4648660986c7 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add OptTable::getOptionKind.

Also, removed default value for getOptionMetaVar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68146 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
febdf7d3858539a3533895bdeb3bd5c083fb087a 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add OptTable::getOptionKind.

Also, removed default value for getOptionMetaVar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68146 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
f9ea36b71d12c7dff9b75db5f20001c91884fa84 31-Mar-2009 Ted Kremenek <kremenek@apple.com> Allow two codepaths for PathDiagnostic generation. This patch mainly consists of
refactoring to make this possible (no functionality change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68141 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
7dc8664a54f4ede40a5f4adee3f5081a59d7ee1c 31-Mar-2009 Ted Kremenek <kremenek@apple.com> Allow two codepaths for PathDiagnostic generation. This patch mainly consists of
refactoring to make this possible (no functionality change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68141 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
aed9804d13f675e5739e1139938bcc2cac8c6e3b 31-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Some cleanup and renaming. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ST/TemplateName.h
9bde77309fd2f9f7a53446e374472c48c81f5182 31-Mar-2009 Douglas Gregor <dgregor@apple.com> Some cleanup and renaming. No functionality change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68140 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
ST/TemplateName.h
636cccdd9342180597906f56e44179502aec2ef2 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add extra parameters for help text to option definitions.
- Currently unused.

And yes, now may be about the time I want a TableGen backend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68139 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Options.h
c0d12e93ee244534147960334c095a6d6510d0ae 31-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add extra parameters for help text to option definitions.
- Currently unused.

And yes, now may be about the time I want a TableGen backend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68139 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Options.h
15a928580f936a76dc09f5f57c055122d32d763d 31-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for template names, including both
template template parameters and dependent template names. For
example, the oft-mentioned

typename MetaFun::template apply<T1, T2>::type

can now be instantiated, with the appropriate name lookup for "apply".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68128 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
asic/DiagnosticSemaKinds.td
de650ae96b53eb6109f29fdb5ee51c514259e6e4 31-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement template instantiation for template names, including both
template template parameters and dependent template names. For
example, the oft-mentioned

typename MetaFun::template apply<T1, T2>::type

can now be instantiated, with the appropriate name lookup for "apply".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68128 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TemplateName.h
asic/DiagnosticSemaKinds.td
ed2a889909b96a10a1d592b353c1398e397dd35c 31-Mar-2009 Steve Naroff <snaroff@apple.com> Add -Wdeprecated-declarations to driver and add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68117 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
cfdee929290b73ae1c4e5896d5cba120bc677661 31-Mar-2009 Steve Naroff <snaroff@apple.com> Add -Wdeprecated-declarations to driver and add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68117 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
2c8a08e939d78d1aff70bdda1f122a200861f4ab 31-Mar-2009 Steve Naroff <snaroff@apple.com> Some "prep" work for handling ObjC @-string constants that contain UTF-8. No functionality change.

Changed GenerateConstantString() to take an ObjCStringLiteral (instead of a std::string). While this isn't strictly necessary, it seems cleaner and allows us to cache to "containsNonAscii" if necessary (to avoid checking in both Sema and CodeGen).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
33fdb738a6c125f4c788733897021b7c1a062b0c 31-Mar-2009 Steve Naroff <snaroff@apple.com> Some "prep" work for handling ObjC @-string constants that contain UTF-8. No functionality change.

Changed GenerateConstantString() to take an ObjCStringLiteral (instead of a std::string). While this isn't strictly necessary, it seems cleaner and allows us to cache to "containsNonAscii" if necessary (to avoid checking in both Sema and CodeGen).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cd7ac6f1cb1dfd52004718038c227ba5e4d28da4 31-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement -Wmissing-prototypes. Fixes PR3911.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68110 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
river/Options.def
8499f3f5ff8d5f95ece8047780030a3daad1b6fa 31-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement -Wmissing-prototypes. Fixes PR3911.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68110 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
river/Options.def
608c1e3356e6510e979a1af7b22bde37be3eb019 31-Mar-2009 Chris Lattner <sabre@nondot.org> Fix a problem in ASTContext::addRecordToClass handling forward declarations.
In a case like:

@class foo;
foo *P;

addRecordToClass was making an empty shadow struct for the foo interface and
completing it. Later when an:

@interface foo
...
@endif

foo *Q;

was seen, ASTContext::addRecordToClass would think that foo was already laid
out and not lay out the definition. This fixes it to create a forward declared
struct the first time around, then complete it when the definition is seen.

Note that this causes two tests to regress, because something is trying to get
the size of the forward declared structs returned by this. Previously, this
would end up getting a size of zero but now it properly dies. I'm not sure
what the right solution is for this, so I xfailed the tests.

Fariborz, please take a look at this. The testcase in rdar://6676794 now gets
farther, but dies later because the objc ivar is not assigned a field number.

As an aside, I really don't like the fact that the objc front-end is creating
shadow C structs for ObjC types. This seems like an implementation detail of
the code generator that could be fixed by better factoring of the extant code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2349925b505564915f786583238266840801b689 31-Mar-2009 Chris Lattner <sabre@nondot.org> Fix a problem in ASTContext::addRecordToClass handling forward declarations.
In a case like:

@class foo;
foo *P;

addRecordToClass was making an empty shadow struct for the foo interface and
completing it. Later when an:

@interface foo
...
@endif

foo *Q;

was seen, ASTContext::addRecordToClass would think that foo was already laid
out and not lay out the definition. This fixes it to create a forward declared
struct the first time around, then complete it when the definition is seen.

Note that this causes two tests to regress, because something is trying to get
the size of the forward declared structs returned by this. Previously, this
would end up getting a size of zero but now it properly dies. I'm not sure
what the right solution is for this, so I xfailed the tests.

Fariborz, please take a look at this. The testcase in rdar://6676794 now gets
farther, but dies later because the objc ivar is not assigned a field number.

As an aside, I really don't like the fact that the objc front-end is creating
shadow C structs for ObjC types. This seems like an implementation detail of
the code generator that could be fixed by better factoring of the extant code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
41b780c6caa012115bfdcccff94b9965d4de71f0 31-Mar-2009 Chris Lattner <sabre@nondot.org> disable copying of Type objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
16ff705a594697f98b9473f9b7e7d378f331fe4b 31-Mar-2009 Chris Lattner <sabre@nondot.org> disable copying of Type objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68103 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9329cf566969b233c3ed0f85132fc718aa7ef812 31-Mar-2009 Chris Lattner <sabre@nondot.org> fill in temporary smallvectors instead of vectors for performance.
Fix BuildAggrIvarLayout to not access vectors out of range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f1690858344968358131f8d5690d9ee458883000 31-Mar-2009 Chris Lattner <sabre@nondot.org> fill in temporary smallvectors instead of vectors for performance.
Fix BuildAggrIvarLayout to not access vectors out of range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
04f4db7847a24ee7ff3074908df8b4bfebd446d9 31-Mar-2009 Chris Lattner <sabre@nondot.org> add a const version of the lookupFieldDeclForIvar method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
da04639a40e01d8d2ee891c075b271fd272d3d53 31-Mar-2009 Chris Lattner <sabre@nondot.org> add a const version of the lookupFieldDeclForIvar method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
10687e3da97d5ffb3a7466acdf19269342f92e4b 31-Mar-2009 Chris Lattner <sabre@nondot.org> Codegen sometimes crashes on comparisons that aren't legal, just
disable this feature for now, to err on the side of rejecting instead
of sometimes crashing. rdar://6326239


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d013aa1ee78d8ead93179c179b7c0746e8d97dbb 31-Mar-2009 Chris Lattner <sabre@nondot.org> Codegen sometimes crashes on comparisons that aren't legal, just
disable this feature for now, to err on the side of rejecting instead
of sometimes crashing. rdar://6326239


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68088 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e089063ccbf6f60daab8a2739829430863a9f7a3 31-Mar-2009 Anders Carlsson <andersca@mac.com> Document NamespaceAliasDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68085 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
63840b5fc57b426e156d36e5109b7d418b711f7d 31-Mar-2009 Anders Carlsson <andersca@mac.com> Document NamespaceAliasDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68085 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
aabb850022fc6b16f63f4199e2f5496ccb49ac24 31-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Parsing and AST representation for dependent template names that occur
within nested-name-specifiers, e.g., for the "apply" in

typename MetaFun::template apply<T1, T2>::type

At present, we can't instantiate these nested-name-specifiers, so our
testing is sketchy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TemplateKinds.h
arse/Action.h
c45c232440dfafedca1a3773b904fb42609b1b19 31-Mar-2009 Douglas Gregor <dgregor@apple.com> Parsing and AST representation for dependent template names that occur
within nested-name-specifiers, e.g., for the "apply" in

typename MetaFun::template apply<T1, T2>::type

At present, we can't instantiate these nested-name-specifiers, so our
testing is sketchy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
asic/TemplateKinds.h
arse/Action.h
c625fa9911a35cf67fa0c73b8d0446d2dcbb02fd 31-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> fe support for objc2's nonfragile-abi synthesized ivars.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
af3e72285238369c2ea4ebd40a1c9a87bd3eabb7 31-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> fe support for objc2's nonfragile-abi synthesized ivars.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
16476fb11b83d37c93f5bb80adb5a6ceb6b8b560 31-Mar-2009 Steve Naroff <snaroff@apple.com> Implement UCN support for C string literals (C99 6.4.3) and add some very basic tests. Chris Goller has graciously offered to write some test to help validate UCN support.

From a front-end perspective, I believe this code should work for ObjC @-strings. At the moment, I believe we need to tweak the code generation for @-strings (which doesn't appear to handle them). Will be investigating.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
0e3e3eb3879d5a7aaca4a393706149ddef8544f1 31-Mar-2009 Steve Naroff <snaroff@apple.com> Implement UCN support for C string literals (C99 6.4.3) and add some very basic tests. Chris Goller has graciously offered to write some test to help validate UCN support.

From a front-end perspective, I believe this code should work for ObjC @-strings. At the moment, I believe we need to tweak the code generation for @-strings (which doesn't appear to handle them). Will be investigating.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.td
dd13e8468462e60971487bcd5915419762dab814 31-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Improve the representation of template names in the AST. This
representation handles the various ways in which one can name a
template, including unqualified references ("vector"), qualified
references ("std::vector"), and dependent template names
("MetaFun::template apply").

One immediate effect of this change is that the representation of
nested-name-specifiers in type names for class template
specializations (e.g., std::vector<int>) is more accurate. Rather than
representing std::vector<int> as

std::(vector<int>)

we represent it as

(std::vector)<int>

which more closely follows the C++ grammar.

Additionally, templates are no longer represented as declarations
(DeclPtrTy) in Parse-Sema interactions. Instead, I've introduced a new
OpaquePtr type (TemplateTy) that holds the representation of a
TemplateName. This will simplify the handling of dependent
template-names, once we get there.






git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/TemplateName.h
ST/Type.h
ST/TypeNodes.def
arse/Action.h
arse/Parser.h
7532dc66648cfe7432c9fe66dec5225f0ab301c6 31-Mar-2009 Douglas Gregor <dgregor@apple.com> Improve the representation of template names in the AST. This
representation handles the various ways in which one can name a
template, including unqualified references ("vector"), qualified
references ("std::vector"), and dependent template names
("MetaFun::template apply").

One immediate effect of this change is that the representation of
nested-name-specifiers in type names for class template
specializations (e.g., std::vector<int>) is more accurate. Rather than
representing std::vector<int> as

std::(vector<int>)

we represent it as

(std::vector)<int>

which more closely follows the C++ grammar.

Additionally, templates are no longer represented as declarations
(DeclPtrTy) in Parse-Sema interactions. Instead, I've introduced a new
OpaquePtr type (TemplateTy) that holds the representation of a
TemplateName. This will simplify the handling of dependent
template-names, once we get there.






git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/TemplateName.h
ST/Type.h
ST/TypeNodes.def
arse/Action.h
arse/Parser.h
d3934f4545535a2708a3140bec151bf7b124b83d 31-Mar-2009 Ted Kremenek <kremenek@apple.com> Re-apply 68028. The code had drifted enough that the tests would fail without
it. Will discuss offline whether symbolic regions should by typed or typeless.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68070 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
e8e86482da4c1872673bbb9c237649229d19793b 31-Mar-2009 Ted Kremenek <kremenek@apple.com> Re-apply 68028. The code had drifted enough that the tests would fail without
it. Will discuss offline whether symbolic regions should by typed or typeless.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68070 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b5ed72ad36bfb49a6561c85e6ed8554732266f30 30-Mar-2009 Ted Kremenek <kremenek@apple.com> Revert 68028.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68068 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
782582df7b06952e96123b3cde509ef4f5c794a3 30-Mar-2009 Ted Kremenek <kremenek@apple.com> Revert 68028.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68068 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b27c69ce0f999f73a75d48e816ea193a0bee5066 30-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Added new info to property impl. AST node to support
objc2's ivar synthesis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68064 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d497bae0ed149584636f07b638ba8db6e3f0fcb3 30-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Added new info to property impl. AST node to support
objc2's ivar synthesis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68064 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2ca985b4b5ece480bd0d2fa96d8d0fe890d8ccfd 30-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68063 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
be65d908d6da886a03cd2b3a47605e10ee0645f2 30-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68063 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
d7065a30188ad58a961fcd59c77edc218664829e 30-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Implement -Wno-pointer-sign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68062 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
757e0dd411c8b6c9c13a310883457a3372b1795a 30-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Implement -Wno-pointer-sign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68062 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
606f6146e65b52cf4ed6144427b2974f81c153bd 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch FreeBSD tool chain.
- Patch by Ed Schouten!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68061 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
75358d267256022475371416654b056ad8531cb3 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch FreeBSD tool chain.
- Patch by Ed Schouten!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68061 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
af69ccc858fd14b1821fdc118b4a1d52ef588e39 30-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Remove a trivial FIXME

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68045 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
f1e5a9591317d20161aa0638ff36944ae8b89360 30-Mar-2009 Douglas Gregor <dgregor@apple.com> Remove a trivial FIXME

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68045 91177308-0d34-0410-b5e6-96231b3b80d8
ST/NestedNameSpecifier.h
9fb9a4bbfd0ac4a5be28dab7a7ef6f73e0efc780 30-Mar-2009 Ted Kremenek <kremenek@apple.com> Add version of GRExprEngine::AddCheck that registered a GRSimpleAPICheck that
will be called for every expression in a basic block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68041 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
536aa02b29ea2bdffff2cc507ed04f6b56737116 30-Mar-2009 Ted Kremenek <kremenek@apple.com> Add version of GRExprEngine::AddCheck that registered a GRSimpleAPICheck that
will be called for every expression in a basic block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68041 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1c9c8492570033c6287b650ddb38b1b3ac43fe4a 30-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make SymbolicRegion untyped.
Layer the type information with a TypedViewRegion on top of the SymbolicRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68028 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
a45fec1a586a3b234d301bb89e26f2e891def0d7 30-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make SymbolicRegion untyped.
Layer the type information with a TypedViewRegion on top of the SymbolicRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68028 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
049b7243e866b45eb3ad2f5dc78cf6662a86b6f7 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -M and -MM.
- Not particularly elegant, but my hand is forced by gcc.

Also, tweak -ccc-print-bindings output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68027 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
river/Types.def
cd8e4c44dd068956e9181381be3ee2d49a0fac52 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -M and -MM.
- Not particularly elegant, but my hand is forced by gcc.

Also, tweak -ccc-print-bindings output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68027 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
river/Types.def
9ddfd1927cb3cb6785d176576bf0b1da03cf1396 30-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> Implement a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68024 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
f1d537f460c529906c73de56d891046b45434fb3 30-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> Implement a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68024 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
ae849528416c7ba91e7e6657f2647dbe95496902 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Track which original arguments an arg is derived from, so that
we can properly claim arguments, even if they have been translated by
the tool chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68020 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
478edc295efc560627053e2320bedd2f696ae028 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Track which original arguments an arg is derived from, so that
we can properly claim arguments, even if they have been translated by
the tool chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68020 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
9a30d7a7bcf151e35f0ef1ce282f7205fcd4e116 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix typo in diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
c77b766d221f6030ae509545d6b7c897707ca655 30-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix typo in diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
f801604648a392ca8d383c9ff101b75398e8df61 29-Mar-2009 Chris Lattner <sabre@nondot.org> hoist some code for handling objc foreach construct out of Declaration processing
into ParseForStatement. Merge two tests into one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68010 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
cd1477562e7cf03279850885583d615e1f631dd4 29-Mar-2009 Chris Lattner <sabre@nondot.org> hoist some code for handling objc foreach construct out of Declaration processing
into ParseForStatement. Merge two tests into one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68010 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2c41d487a6f044bd49a3f4ded9192202d8a8f248 29-Mar-2009 Chris Lattner <sabre@nondot.org> hoist checks for ; and in out of ParseInitDeclaratorListAfterFirstDeclarator
into ParseSimpleDeclaration, and improve a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68009 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
23c4b1883b13dc17484b7214091b73f3ba29096e 29-Mar-2009 Chris Lattner <sabre@nondot.org> hoist checks for ; and in out of ParseInitDeclaratorListAfterFirstDeclarator
into ParseSimpleDeclaration, and improve a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68009 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
a17991fc70d5f5d774a4ea21feefcfc64b1f73a3 29-Mar-2009 Chris Lattner <sabre@nondot.org> Push DeclGroup much farther throughout the compiler. Now the various
productions (except the already broken ObjC cases like @class X,Y;) in
the parser that can produce more than one Decl return a DeclGroup instead
of a Decl, etc.

This allows elimination of the Decl::NextDeclarator field, and exposes
various clients that should look at all decls in a group, but which were
only looking at one (such as the dumper, printer, etc). These have been
fixed.

Still TODO:

1) there are some FIXME's in the code about potentially using
DeclGroup for better location info.
2) ParseObjCAtDirectives should return a DeclGroup due to @class etc.
3) I'm not sure what is going on with StmtIterator.cpp, or if it can
be radically simplified now.
4) I put a truly horrible hack in ParseTemplate.cpp.

I plan to bring up #3/4 on the mailing list, but don't plan to tackle
#1/2 in the short term.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/DeclBase.h
ST/DeclGroup.h
arse/Action.h
arse/Parser.h
682bf92db408a6cbc3d37b5496a99b6ef85041ec 29-Mar-2009 Chris Lattner <sabre@nondot.org> Push DeclGroup much farther throughout the compiler. Now the various
productions (except the already broken ObjC cases like @class X,Y;) in
the parser that can produce more than one Decl return a DeclGroup instead
of a Decl, etc.

This allows elimination of the Decl::NextDeclarator field, and exposes
various clients that should look at all decls in a group, but which were
only looking at one (such as the dumper, printer, etc). These have been
fixed.

Still TODO:

1) there are some FIXME's in the code about potentially using
DeclGroup for better location info.
2) ParseObjCAtDirectives should return a DeclGroup due to @class etc.
3) I'm not sure what is going on with StmtIterator.cpp, or if it can
be radically simplified now.
4) I put a truly horrible hack in ParseTemplate.cpp.

I plan to bring up #3/4 on the mailing list, but don't plan to tackle
#1/2 in the short term.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/DeclBase.h
ST/DeclGroup.h
arse/Action.h
arse/Parser.h
612f72554ee112c765b3c217ba9e20d0ac1f280f 29-Mar-2009 Chris Lattner <sabre@nondot.org> DeclRefExpr refers to one decl, not all the declarators in a declaration.

Ted, please check this, this change causes no regression tests to fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68001 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
827ecb0db9225c98f08cfc991598210bcf0045dd 29-Mar-2009 Chris Lattner <sabre@nondot.org> DeclRefExpr refers to one decl, not all the declarators in a declaration.

Ted, please check this, this change causes no regression tests to fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68001 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
19672e47f10cae8382d12246e34c6be64e0c7f8b 29-Mar-2009 Chris Lattner <sabre@nondot.org> Implement PointerLikeTypeTraits for DeclGroupRef.
Make OpaquePtr work with things that are pointer-like but not
necessarily pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
arse/Ownership.h
d51a183ffd7de05374ef20977e17ab4444bd633c 29-Mar-2009 Chris Lattner <sabre@nondot.org> Implement PointerLikeTypeTraits for DeclGroupRef.
Make OpaquePtr work with things that are pointer-like but not
necessarily pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
arse/Ownership.h
ecf5fb23106c6d229fc1bca2385053c5473d2e68 29-Mar-2009 Chris Lattner <sabre@nondot.org> remove unused #include


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67994 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
b2e57f6b6540644b53c59589b91a12ee1c561e28 29-Mar-2009 Chris Lattner <sabre@nondot.org> remove unused #include


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67994 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
cbaf44d34d77c2facbf3740fceda6bc60dfd3231 29-Mar-2009 Chris Lattner <sabre@nondot.org> switch TemplateOrInstantiation to be a PointerUnion, which
simplifies some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
005f92f53c99ce8e701e44115c94216b108ea021 29-Mar-2009 Chris Lattner <sabre@nondot.org> switch TemplateOrInstantiation to be a PointerUnion, which
simplifies some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5ce4f6ddd0a30e2cc65f78119473878943a9a04f 29-Mar-2009 Chris Lattner <sabre@nondot.org> switch DeclBase::DeclCtx to the new happy and type-safe
llvm::PointerUnion class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ee219fd5f2776d8dd39d857f87304297b5ed743a 29-Mar-2009 Chris Lattner <sabre@nondot.org> switch DeclBase::DeclCtx to the new happy and type-safe
llvm::PointerUnion class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
567422c7bf82a952fc5e87bc8cc4d3da6f9e486e 29-Mar-2009 Chris Lattner <sabre@nondot.org> Make the ActionResult optimization work for non-void*'s and switch DeclPtrTy to use it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67983 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
4656978783e444bbd4a70ead1946e341587779ca 29-Mar-2009 Chris Lattner <sabre@nondot.org> Make the ActionResult optimization work for non-void*'s and switch DeclPtrTy to use it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67983 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
5c3553bf58908eb3c91b25df77808bdbe17e9361 29-Mar-2009 Chris Lattner <sabre@nondot.org> genericize the ActionResult optimization for holding the "ininvalid" bit
in the low bit position a little bit (haha).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
683ad0f3bbf5b686f00431a371ec11835a47c85c 29-Mar-2009 Chris Lattner <sabre@nondot.org> genericize the ActionResult optimization for holding the "ininvalid" bit
in the low bit position a little bit (haha).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
330a05b88b1d39fcef6c65b9387e74b5e8ddb98d 29-Mar-2009 Chris Lattner <sabre@nondot.org> various cleanups


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67981 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
64540d71b4aaab07d93cb3593ce462d26a83d326 29-Mar-2009 Chris Lattner <sabre@nondot.org> various cleanups


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67981 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e41419144a0a01456f5426efcd9b919f68284527 29-Mar-2009 Chris Lattner <sabre@nondot.org> adjust to llvm mainline changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Type.h
arse/Ownership.h
0eda3b31a672ea486fa92b9bc49a2c91be856b53 29-Mar-2009 Chris Lattner <sabre@nondot.org> adjust to llvm mainline changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/Type.h
arse/Ownership.h
797f166cc0cfdbc03895e802ed6087c19286e05f 29-Mar-2009 Chris Lattner <sabre@nondot.org> add fixme


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67977 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d59ad42b3e6361259c08d53fe5346960eef840c2 29-Mar-2009 Chris Lattner <sabre@nondot.org> add fixme


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67977 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
5e05f29efda155f4505b87eaa54331e45b1833dd 29-Mar-2009 Chris Lattner <sabre@nondot.org> add getNumLowBitsAvailable for OpaquePtr and QualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/Ownership.h
11a7f35c2e3a496342031c2ed721f58e691ebfca 29-Mar-2009 Chris Lattner <sabre@nondot.org> add getNumLowBitsAvailable for OpaquePtr and QualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/Ownership.h
d776b2da9bd694c41f1506e152aeb35d1babeba6 29-Mar-2009 Chris Lattner <sabre@nondot.org> follow llvm mainline, where PointerLikeTypeInfo got renamed
to PointerLikeTypeTraits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/Ownership.h
daae940507f2e93c6fa12e8062fa958e34cc2d1c 29-Mar-2009 Chris Lattner <sabre@nondot.org> follow llvm mainline, where PointerLikeTypeInfo got renamed
to PointerLikeTypeTraits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/Ownership.h
cdd67caf66a2aa1a95da3ed9726bea7a3659b35b 29-Mar-2009 Chris Lattner <sabre@nondot.org> implement the PointerLikeTypeInfo trait for QualType, allowing
it to be stuck into a SmallPtrSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4e7072872e8e2ed76a4c6933424bffa253896e7e 29-Mar-2009 Chris Lattner <sabre@nondot.org> implement the PointerLikeTypeInfo trait for QualType, allowing
it to be stuck into a SmallPtrSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
87e3568d5f286a9d5bcafcef102fd7d875946dc5 29-Mar-2009 Anders Carlsson <andersca@mac.com> Handle the case where the namespace decl is an alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
af9e40f9909d89501617897c7295dff68c3907a3 29-Mar-2009 Anders Carlsson <andersca@mac.com> Handle the case where the namespace decl is an alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67965 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ddb1d8b3f23921c8e46127e9ffe065f1b3618a9b 28-Mar-2009 Anders Carlsson <andersca@mac.com> Create AST nodes for namespace aliases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
68771c73f4293620dc1a99154ec02111e6490e28 28-Mar-2009 Anders Carlsson <andersca@mac.com> Create AST nodes for namespace aliases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67962 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
26de7885f94c72ffa2df696ecb102a12ea2b0733 28-Mar-2009 Anders Carlsson <andersca@mac.com> Parse the location of the 'namespace' token to ActOnNamespaceAliasDef. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67961 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
03bd5a1e9a54b62b10ae8aeb6eb5245e2031d98b 28-Mar-2009 Anders Carlsson <andersca@mac.com> Parse the location of the 'namespace' token to ActOnNamespaceAliasDef. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67961 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
5261d0c6a3046b35512b0950a247a49d9130da87 28-Mar-2009 Chris Lattner <sabre@nondot.org> Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a
pointer. Its purpose in life is to be a glorified void*, but which does not
implicitly convert to void* or other OpaquePtr's with a different UID.

Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the
entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This
makes the C++ compiler enforce that these aren't convertible to other opaque
types.

We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
but I don't plan to do that in the short term.

The one outstanding known problem with this patch is that we lose the
bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
bitmangle the success bit into the low bit of DeclPtrTy. I will rectify
this with a subsequent patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67952 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Ownership.h
arse/Parser.h
arse/Scope.h
b28317a8e5e0e2953d1e5406d753d6c3c7f1e7d2 28-Mar-2009 Chris Lattner <sabre@nondot.org> Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a
pointer. Its purpose in life is to be a glorified void*, but which does not
implicitly convert to void* or other OpaquePtr's with a different UID.

Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the
entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This
makes the C++ compiler enforce that these aren't convertible to other opaque
types.

We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
but I don't plan to do that in the short term.

The one outstanding known problem with this patch is that we lose the
bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
bitmangle the success bit into the low bit of DeclPtrTy. I will rectify
this with a subsequent patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67952 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Ownership.h
arse/Parser.h
arse/Scope.h
1ecff66a0960967dd192fdebe940526c3fd1f8f4 28-Mar-2009 Ted Kremenek <kremenek@apple.com> Add comparison operators for PathDiagosticLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67947 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
3b0868d1da749f7122757016f57f9f4b62b539f4 28-Mar-2009 Ted Kremenek <kremenek@apple.com> Add comparison operators for PathDiagosticLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67947 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
0b8be995e023b551c62f403c113546086029bcc3 28-Mar-2009 Ted Kremenek <kremenek@apple.com> Add comparison operators for SourceRange.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
a898283deb689b2454f3a966ef1cbf81bcb3e3e4 28-Mar-2009 Ted Kremenek <kremenek@apple.com> Add comparison operators for SourceRange.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
57e39f0733b4018ad9de923cfbad0ddf20ebc674 28-Mar-2009 Chris Lattner <sabre@nondot.org> add accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
cc1f8693df4c96d7a8db585e5c05e31b8520f6c2 28-Mar-2009 Chris Lattner <sabre@nondot.org> add accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ffae0dd2cfdc6d66f3e3b83d9104e8a18df0d8da 28-Mar-2009 Chris Lattner <sabre@nondot.org> some random cleanups


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67928 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/Stmt.h
e66a8cf9117e5fb95a05ff76ec06615e63dd5ade 28-Mar-2009 Chris Lattner <sabre@nondot.org> some random cleanups


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67928 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/Stmt.h
034a87df6e74f1d1ff8f1ec2e72fad30a49827b4 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate unneeded iterator wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67927 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
0632dd6fe068011af5710c0d6a745724021ff620 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate unneeded iterator wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67927 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b41cc2a93b6b22eaadaeaabde6072cbe21135e69 28-Mar-2009 Chris Lattner <sabre@nondot.org> change NamespaceDecl to hold its 'NextNamespace' pointer itself
instead of in NextDeclarator. This temporarily increases memory
usage, but simplifies and decouples things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f05ca7df086aa2c176bbc32408fb3f9eaef82c05 28-Mar-2009 Chris Lattner <sabre@nondot.org> change NamespaceDecl to hold its 'NextNamespace' pointer itself
instead of in NextDeclarator. This temporarily increases memory
usage, but simplifies and decouples things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4a9a85e7edac3b86b7bddc70b193de210ae0517a 28-Mar-2009 Chris Lattner <sabre@nondot.org> rename some methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67923 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7e24e82a70a2c681f4291a3397bcd1e1005f251a 28-Mar-2009 Chris Lattner <sabre@nondot.org> rename some methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67923 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
1a5b1dffdab1e9c0061a0e922af85dea86f82825 28-Mar-2009 Chris Lattner <sabre@nondot.org> Cleanups for DeclGroup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/Stmt.h
fe95deaf66e4fbd82d44b5f6afa8162fa69cb85c 28-Mar-2009 Chris Lattner <sabre@nondot.org> Cleanups for DeclGroup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67922 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/Stmt.h
fb8416a5431d2f959c7ac3a1659fde598a765370 28-Mar-2009 Chris Lattner <sabre@nondot.org> rename NextDeclInScope to NextDeclInContext, since the pointer
points within contexts not scopes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
244a67d911d08c3757a18ad666e4a268cf3ee285 28-Mar-2009 Chris Lattner <sabre@nondot.org> rename NextDeclInScope to NextDeclInContext, since the pointer
points within contexts not scopes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
7954817083ece1f6a9fa6b64118f3799062ce20c 28-Mar-2009 Chris Lattner <sabre@nondot.org> simplify getNextDeclInScope


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
96f4468b6b1bf69bb01c1207f716a3ffaeb4a8d3 28-Mar-2009 Chris Lattner <sabre@nondot.org> simplify getNextDeclInScope


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67918 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
8cffcd6bdefbd5191c07d91f5ff3d027ca91f51d 28-Mar-2009 Anders Carlsson <andersca@mac.com> Add an ActOnNamespaceAliasDef action and have the parser call it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67915 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
dbb0094f441d2f15dd6eee581e1569244a26009f 28-Mar-2009 Anders Carlsson <andersca@mac.com> Add an ActOnNamespaceAliasDef action and have the parser call it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67915 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
fc318198d083d968069df85b4c972c000b12a4c9 28-Mar-2009 Chris Lattner <sabre@nondot.org> remove TranslationUnit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
1266eca868fa0ac799291ed04f349c9bbd7a9469 28-Mar-2009 Chris Lattner <sabre@nondot.org> remove TranslationUnit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
f4fbc448d069f2e72f90f3d94795480eb9f5dac9 28-Mar-2009 Chris Lattner <sabre@nondot.org> push more ASTContext goodness out through interfaces that use
TranslationUnit


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67913 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TranslationUnit.h
557c5b1717bc8919b1b40cf2064b51491ec53a44 28-Mar-2009 Chris Lattner <sabre@nondot.org> push more ASTContext goodness out through interfaces that use
TranslationUnit


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67913 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TranslationUnit.h
07b08c010d3d91d378642b1faa5082e6bed4299e 28-Mar-2009 Chris Lattner <sabre@nondot.org> remove TranslationUnit from ParseAST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67911 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
3599dbe94ed8229b4a0eca0b066129e381ccb277 28-Mar-2009 Chris Lattner <sabre@nondot.org> remove TranslationUnit from ParseAST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67911 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
2a594d0d2a5c1fe506608f75b7d135d743b56911 28-Mar-2009 Chris Lattner <sabre@nondot.org> change HandleTranslationUnit to take an ASTContext instead of TranslationUnit


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67910 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
dacbc5d46aaeea817742b8c76c987b87d2490c85 28-Mar-2009 Chris Lattner <sabre@nondot.org> change HandleTranslationUnit to take an ASTContext instead of TranslationUnit


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67910 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
f94cca20b8f30165b5faf7a016b480b25de4eb26 28-Mar-2009 Anders Carlsson <andersca@mac.com> Parse namespace aliases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67908 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f67606ae2febe3bb0718f05040c6c4bc2c2c3276 28-Mar-2009 Anders Carlsson <andersca@mac.com> Parse namespace aliases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67908 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7bb39bc52a09b80c93d83e6decdaaad862a82df4 28-Mar-2009 Chris Lattner <sabre@nondot.org> simplify away some dead ownership stuff, TranslationUnit is now
just a wrapper around ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
3776d4cea4f15e04f32997742deb4b35b72c9b8c 28-Mar-2009 Chris Lattner <sabre@nondot.org> simplify away some dead ownership stuff, TranslationUnit is now
just a wrapper around ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
8c86cdfe9a2fd82488715fac4be04baafc1e1e8f 28-Mar-2009 Chris Lattner <sabre@nondot.org> hoist TranslationUnit some more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
d2fa67570b363843215f62395b795c1f70e6b85f 28-Mar-2009 Chris Lattner <sabre@nondot.org> hoist TranslationUnit some more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67905 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
78e3dd4b8f6006066ba845de5af0ccae5c729852 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate some wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
80a033358d8da09d1f62b0b3ba98cee0346c0a49 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate some wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
06459ae8fe140c4f6cc1a6de2ee2e63f02f5592f 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate ReadASTBitcodeFile


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
5f737ccd3854b55a3eb9ab3aa54f2b1c3212418f 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate ReadASTBitcodeFile


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67903 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
b09b31d1abab14413df5e744869200dd1095dc53 28-Mar-2009 Chris Lattner <sabre@nondot.org> move serialization logic from TranslationUnit to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67902 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TranslationUnit.h
a9376d470ccb0eac74fe09a6b2a18a890f1d17c4 28-Mar-2009 Chris Lattner <sabre@nondot.org> move serialization logic from TranslationUnit to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67902 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TranslationUnit.h
fb88a5f60c9366bcb62fa604e9a49021b6771c6a 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate ASTConsumer::InitializeTU, all clients are
happy with just ASTContext, they don't need a TU.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
7bb0da001fc579410035cec00b6bca499251a318 28-Mar-2009 Chris Lattner <sabre@nondot.org> eliminate ASTConsumer::InitializeTU, all clients are
happy with just ASTContext, they don't need a TU.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
9c18fde756bfdfc5660cf1ebdb0b8d73f68bf2b7 28-Mar-2009 Chris Lattner <sabre@nondot.org> remove TranslationUnit::OwnsDecls, which is only set, never read.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
ed0e497efc23ac4b35481a60a80579d355335e07 28-Mar-2009 Chris Lattner <sabre@nondot.org> remove TranslationUnit::OwnsDecls, which is only set, never read.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
143fd6d9ec67b67192ee6661da47820c4771c3ce 28-Mar-2009 Chris Lattner <sabre@nondot.org> simplify ParseAST by sucking -disable-free handling logic up into
clang.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67890 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
9ecd26ad19875e410e76476b36f77c47069ba04c 28-Mar-2009 Chris Lattner <sabre@nondot.org> simplify ParseAST by sucking -disable-free handling logic up into
clang.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67890 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
3cd92880b42cd67bcb631c769a7ab62068e9aac9 28-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Change compound assignment operators to keep track of both the promoted
LHS type and the computation result type; this encodes information into
the AST which is otherwise non-obvious. Fix Sema to always come up with the
right answer for both of these types. Fix IRGen and the analyzer to
account for these changes. This fixes PR2601. The approach is inspired
by PR2601 comment 2.

Note that this changes real *= complex in CodeGen from a silent
miscompilation to an explicit error.

I'm not really sure that the analyzer changes are correct, or how to
test them... someone more familiar with the analyzer should check those
changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ab3a852ae713189444dcbf75e70accf1e8c2b7f2 28-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Change compound assignment operators to keep track of both the promoted
LHS type and the computation result type; this encodes information into
the AST which is otherwise non-obvious. Fix Sema to always come up with the
right answer for both of these types. Fix IRGen and the analyzer to
account for these changes. This fixes PR2601. The approach is inspired
by PR2601 comment 2.

Note that this changes real *= complex in CodeGen from a silent
miscompilation to an explicit error.

I'm not really sure that the analyzer changes are correct, or how to
test them... someone more familiar with the analyzer should check those
changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a1f7fd4e18c08272aa1c721bbbe69f464c1acb6f 28-Mar-2009 Chris Lattner <sabre@nondot.org> move StatListener out to top level.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
52ba870eba17e634339622dbf103434ca31935eb 28-Mar-2009 Chris Lattner <sabre@nondot.org> move StatListener out to top level.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
5f34f0ee70302e8ce1fb6dd8ba4c03e873762476 28-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Make our diagnostics about the obsolete GNU designated-initializer
syntax into extension warnings, and provide code-modification hints
showing how to fix the problem.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticParseKinds.td
arse/Action.h
eeae8f072748affce25ab4064982626361293390 28-Mar-2009 Douglas Gregor <dgregor@apple.com> Make our diagnostics about the obsolete GNU designated-initializer
syntax into extension warnings, and provide code-modification hints
showing how to fix the problem.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticParseKinds.td
arse/Action.h
d30226003ea60119b19901b7813821c7ec3d7e55 28-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of parsing, semantic analysis, and template
instantiation for C++ typename-specifiers such as

typename T::type

The parsing of typename-specifiers is relatively easy thanks to
annotation tokens. When we see the "typename", we parse the
typename-specifier and produce a typename annotation token. There are
only a few places where we need to handle this. We currently parse the
typename-specifier form that terminates in an identifier, but not the
simple-template-id form, e.g.,

typename T::template apply<U, V>

Parsing of nested-name-specifiers has a similar problem, since at this
point we don't have any representation of a class template
specialization whose template-name is unknown.

Semantic analysis is only partially complete, with some support for
template instantiation that works for simple examples.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclarationName.h
ST/NestedNameSpecifier.h
ST/Type.h
ST/TypeNodes.def
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
d57959af02b4af695276f4204443afe6e5d86bd8 28-Mar-2009 Douglas Gregor <dgregor@apple.com> Initial implementation of parsing, semantic analysis, and template
instantiation for C++ typename-specifiers such as

typename T::type

The parsing of typename-specifiers is relatively easy thanks to
annotation tokens. When we see the "typename", we parse the
typename-specifier and produce a typename annotation token. There are
only a few places where we need to handle this. We currently parse the
typename-specifier form that terminates in an identifier, but not the
simple-template-id form, e.g.,

typename T::template apply<U, V>

Parsing of nested-name-specifiers has a similar problem, since at this
point we don't have any representation of a class template
specialization whose template-name is unknown.

Semantic analysis is only partially complete, with some support for
template instantiation that works for simple examples.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67875 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclarationName.h
ST/NestedNameSpecifier.h
ST/Type.h
ST/TypeNodes.def
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
8769fc8cd9d5734b13b457049594183a1631f172 27-Mar-2009 Ted Kremenek <kremenek@apple.com> Add missing header file change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67871 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
ced21016cec1f189a695857bed103ecc9e3f3696 27-Mar-2009 Ted Kremenek <kremenek@apple.com> Add missing header file change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67871 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
404adca9e6daa75b26b07f23b63b2deedec55b06 27-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Finish off semantic analysis for regparm, and remove the warning. Also
remove a redundant error in CodeGen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
55d3aaf9a537888734762170823daf750ea9036d 27-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Finish off semantic analysis for regparm, and remove the warning. Also
remove a redundant error in CodeGen.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.td
8752fe0e06d1386829890b23416e2be3c1144305 27-Mar-2009 Chris Lattner <sabre@nondot.org> minor cleanups: make getIdentifierNamespace() be a single load
instead of a load + large inlined switch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67864 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
769dbdf467681f6020ff248b969c2d41a4fdccd3 27-Mar-2009 Chris Lattner <sabre@nondot.org> minor cleanups: make getIdentifierNamespace() be a single load
instead of a load + large inlined switch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67864 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f58df97d6b36f21138a13d63a309f8b859eb3373 27-Mar-2009 Mike Stump <mrs@apple.com> Fixup -fcommon and -fno-common to be more gcc compatible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67863 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
1c9b7422dceb5ecdc50bad41e7cf4b635bf89c15 27-Mar-2009 Mike Stump <mrs@apple.com> Fixup -fcommon and -fno-common to be more gcc compatible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67863 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9a502bdc1e0a96b31a52aed1913744b00032fb94 27-Mar-2009 Chris Lattner <sabre@nondot.org> reduce # const_casts, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
0cf2b1990c82121d03a004dafe498ba43bf4b42a 27-Mar-2009 Chris Lattner <sabre@nondot.org> reduce # const_casts, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f5151efd6813a6952094f9d020e9f733f70efc4b 27-Mar-2009 Chris Lattner <sabre@nondot.org> change Decl::DeclCtx to use a PointerIntPair instead of hand bitmangling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
10d8379676f32b493740a5509e2cd7f0d6433139 27-Mar-2009 Chris Lattner <sabre@nondot.org> change Decl::DeclCtx to use a PointerIntPair instead of hand bitmangling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
97703437b51ac8fdbd4adbc8edb33ad6cc161a08 27-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Besides the warning, issue unsupported diagnostics in
ir gen. No intended change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
ee760330a415635369556796a97afcfd6207f4dc 27-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Besides the warning, issue unsupported diagnostics in
ir gen. No intended change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
7e12bd3abf2afd659ab13d7f110501b9e9f1a2bb 27-Mar-2009 Ted Kremenek <kremenek@apple.com> Move declaration of 'PathDiagnostic' to the end of PathDiagnostic.h and add PathDiagnostic::getLocation().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67842 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
8a9a26785c3cd8f4fd4e71aa71b4a87b3da2344a 27-Mar-2009 Ted Kremenek <kremenek@apple.com> Move declaration of 'PathDiagnostic' to the end of PathDiagnostic.h and add PathDiagnostic::getLocation().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67842 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
e37b539a66af7e71da17b14550f52b92b00a234b 27-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostic: replace 'std::list' with 'std::deque'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67840 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
89e65a1fabf5a9569b3358203b8e9e9813209b8f 27-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostic: replace 'std::list' with 'std::deque'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67840 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
484d0e265300434bda07397555b5f4b751524a98 27-Mar-2009 Ted Kremenek <kremenek@apple.com> Add iterators to PathDiagnosticControlFlowDiagnostic for iterating over the
multiple location vectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67838 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
c3a838bef9565295850923eb8cb622b5b8e861e4 27-Mar-2009 Ted Kremenek <kremenek@apple.com> Add iterators to PathDiagnosticControlFlowDiagnostic for iterating over the
multiple location vectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67838 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
501c2a9c75db9c1169e16f50df29593c0d41b6e7 27-Mar-2009 Anders Carlsson <andersca@mac.com> Implement checking for base class access. Right now it's overly conservative but that will change. (Also, protected isn't implemented right now).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67827 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c4f1e87138bfe5d3aaccff13c86b383a255bca42 27-Mar-2009 Anders Carlsson <andersca@mac.com> Implement checking for base class access. Right now it's overly conservative but that will change. (Also, protected isn't implemented right now).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67827 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
762da55b1e7d4a95ee2185d49007c19a61aa50e4 27-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> If the user is trying to apply the -> or . member reference operator
to a function or function pointer, it's probably because the user
forgot to put in parentheses () to call the function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
214f31a347d7824eb92e6a3f5dce4d4047fd5ae0 27-Mar-2009 Douglas Gregor <dgregor@apple.com> If the user is trying to apply the -> or . member reference operator
to a function or function pointer, it's probably because the user
forgot to put in parentheses () to call the function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
149f0d82b1430ec62e86e942fb366da1749f21fd 27-Mar-2009 Ted Kremenek <kremenek@apple.com> BugReporter:
- Added an internal helper class 'PathDiagnosticBuilder' which now bundles the
'ExecutionContinues' methods.
- Added preliminary diagnostics for short-circuit '&&' and '||'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67822 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
babdd7b56d02e2b6924a2c93b061d6a48bb5f0ca 27-Mar-2009 Ted Kremenek <kremenek@apple.com> BugReporter:
- Added an internal helper class 'PathDiagnosticBuilder' which now bundles the
'ExecutionContinues' methods.
- Added preliminary diagnostics for short-circuit '&&' and '||'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67822 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
c14c7f0fda52d3bb363788b42a38405720a21e48 27-Mar-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6719156 - clang should emit a better error when blocks are disabled but are used anyway
by changing blocks from being disabled in the parser to being disabled
in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67816 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
9af5500f3f132f9a2f9abbe82113a7c7bb751472 27-Mar-2009 Chris Lattner <sabre@nondot.org> Fix rdar://6719156 - clang should emit a better error when blocks are disabled but are used anyway
by changing blocks from being disabled in the parser to being disabled
in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67816 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
d26213ce346168ffd740d32242a01051e2fccefd 27-Mar-2009 Ted Kremenek <kremenek@apple.com> - Fix thinko in implementation of PathDiagnosticLocation::asStmt(). Thanks to
Anders Johnsen for pointing this out.
- Have PathDiagnosticControlFlowPiece take PathDiagnosticLocation for the
arguments to its constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
a11982a01d2a239a5132b1871f2b417de11ab80d 27-Mar-2009 Ted Kremenek <kremenek@apple.com> - Fix thinko in implementation of PathDiagnosticLocation::asStmt(). Thanks to
Anders Johnsen for pointing this out.
- Have PathDiagnosticControlFlowPiece take PathDiagnosticLocation for the
arguments to its constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67812 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
32b1bbe0a8fc63b3fcde326eeb5b6ea2ac74af77 27-Mar-2009 Mike Stump <mrs@apple.com> Fix searching for gcc, we only want executable files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67806 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
950bedd8a9f00caabd2f1fc6812d70e08103f847 27-Mar-2009 Mike Stump <mrs@apple.com> Fix searching for gcc, we only want executable files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67806 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
e615803e1c4a70ba66b6687b2b95e1fdcd16cd3b 27-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Clarify that QualifiedNameType is sugar-only. This will matter once we can parse typename-specifiers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
119057adf21237d53dcd490cec9700dca2465e3e 27-Mar-2009 Douglas Gregor <dgregor@apple.com> Clarify that QualifiedNameType is sugar-only. This will matter once we can parse typename-specifiers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
041e929321e7b8550735acdcbceef54dde881bd7 27-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Simplify CXXScopeSpec a lot. No more weird SmallVector-like hacks here

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67800 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
3507369940bfb269551bfa1fec812481f60e3552 27-Mar-2009 Douglas Gregor <dgregor@apple.com> Simplify CXXScopeSpec a lot. No more weird SmallVector-like hacks here

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67800 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
1e589cc31d339860b9df61870930961601d68120 27-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Revamp our representation of C++ nested-name-specifiers. We now have a
uniqued representation that should both save some memory and make it
far easier to properly build canonical types for types involving
dependent nested-name-specifiers, e.g., "typename T::Nested::type".

This approach will greatly simplify the representation of
CXXScopeSpec. That'll be next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67799 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/Type.h
ab452ba8323d1985e08bade2bced588cddf2cc28 27-Mar-2009 Douglas Gregor <dgregor@apple.com> Revamp our representation of C++ nested-name-specifiers. We now have a
uniqued representation that should both save some memory and make it
far easier to properly build canonical types for types involving
dependent nested-name-specifiers, e.g., "typename T::Nested::type".

This approach will greatly simplify the representation of
CXXScopeSpec. That'll be next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67799 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/Type.h
0ebd5fd906e7bc56e481b3934846e7921952d8b8 27-Mar-2009 Anders Carlsson <andersca@mac.com> I said _fix_ the build, don't break it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
5bf17cd277db2a253f6012968471064c4f4537a3 27-Mar-2009 Anders Carlsson <andersca@mac.com> I said _fix_ the build, don't break it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
96ee573215c05d11da43fad65df4409b863a3027 27-Mar-2009 Anders Carlsson <andersca@mac.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67796 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
f569cc5d933750bcc4e005280457f111beec5ac1 27-Mar-2009 Anders Carlsson <andersca@mac.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67796 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
e8dcd92a726d835d52374e818436a239868d9c19 27-Mar-2009 Anders Carlsson <andersca@mac.com> Add

const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
AccessSpecifier AS);

so we can easily add access specifiers to diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/Diagnostic.h
05bf2c79770927c66ca725e9bb589048ed3f069e 27-Mar-2009 Anders Carlsson <andersca@mac.com> Add

const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
AccessSpecifier AS);

so we can easily add access specifiers to diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/Diagnostic.h
19ff977dc396142701ee5d62ec08181db8329b6e 27-Mar-2009 Ted Kremenek <kremenek@apple.com> - Add class PathDiagosticLocationPair.
- Have PathDiagnosticControlFlowPiece use a vector of PathDiagnosticLocationPairs to represent transitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
6f00204d44dfab30f55c19b744e3ece9f229043f 27-Mar-2009 Ted Kremenek <kremenek@apple.com> - Add class PathDiagosticLocationPair.
- Have PathDiagnosticControlFlowPiece use a vector of PathDiagnosticLocationPairs to represent transitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
335f02cce33fafae392afc40e916ca8153a6dc2c 26-Mar-2009 Ted Kremenek <kremenek@apple.com> Implement PathDiagnosticLocation::asRange() and PathDiagnosticLocation::asStmt().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67777 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
becf8886d10c41a4605c5e66cd806492eb8b864c 26-Mar-2009 Ted Kremenek <kremenek@apple.com> Implement PathDiagnosticLocation::asRange() and PathDiagnosticLocation::asStmt().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67777 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
9c4eb9cfbb8fda9ae8d0292d29e53180a2c62eda 26-Mar-2009 Ted Kremenek <kremenek@apple.com> - Implement PathDiagnosticLocation::asLocation.
- Switch PathDiagnosticEventPiece and PathDiagnosticMacroPiece to use
PathDiagnosticLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67774 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
97b40036d4d4d1bf4e7be71fc2bce009de4e8c0c 26-Mar-2009 Ted Kremenek <kremenek@apple.com> - Implement PathDiagnosticLocation::asLocation.
- Switch PathDiagnosticEventPiece and PathDiagnosticMacroPiece to use
PathDiagnosticLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67774 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
d76d7716fdda8042ef062c060de3992c87ee4b25 26-Mar-2009 Ted Kremenek <kremenek@apple.com> Because of the use of 'cast<TagDecl>', ASTContext.h now depends on Decl.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ad75653f81dece1c806e9c28dd7e7582c9929a27 26-Mar-2009 Ted Kremenek <kremenek@apple.com> Because of the use of 'cast<TagDecl>', ASTContext.h now depends on Decl.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1dd45ce966e279d3e9c82d6dacee915a0d75d05a 26-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostics (analyzer):
- Added a new class, 'PathDiagnosticLocation', that is a variant for
SourceLocation, SourceRange, or Stmt*. This will be used soon by
PathDiagnosticPieces to describe locations for targets of branches, locations
of events, etc.
- Did some prep. refactoring of PathDiagnosticPieces to prepare them for
adopting the new PathDiagnosticLocation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67767 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
1f9bd0fbf5894b41bba5f2fdb0c6546a7a6ef3d8 26-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostics (analyzer):
- Added a new class, 'PathDiagnosticLocation', that is a variant for
SourceLocation, SourceRange, or Stmt*. This will be used soon by
PathDiagnosticPieces to describe locations for targets of branches, locations
of events, etc.
- Did some prep. refactoring of PathDiagnosticPieces to prepare them for
adopting the new PathDiagnosticLocation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67767 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
0451d5191ee9f5f2d0ab7e5729f264a23d6b0d7d 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward -fno-common to clang.
- <rdar://problem/6710978> ccc/clang-driver ignore -fno-common


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67762 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
069afd5c8c515ce483fd2f2a91daa355f66ff478 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forward -fno-common to clang.
- <rdar://problem/6710978> ccc/clang-driver ignore -fno-common


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67762 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
eb1be3fea0e2f41f3bc6a708a8c38b00c0888739 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add darwin::Link tool.
- <rdar://problem/6717381> [driver] implement ld argument translation
in new driver


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
02633b541b04ad5ffc1c70f4c2feeeb13e607057 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add darwin::Link tool.
- <rdar://problem/6717381> [driver] implement ld argument translation
in new driver


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
55e34e3bf9f92e3fc23bfa0ac7fbe382dc7b2710 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Fix a number of option definition mismatches (flags instead of
separate, or vice versa).

Also, fix initialization of LinkingOutput variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67757 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d7b88c2cb8986217f164203747d35c8f596e38c2 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Fix a number of option definition mismatches (flags instead of
separate, or vice versa).

Also, fix initialization of LinkingOutput variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67757 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
0ded7ded3be29d0c36e652da31e6bf1d9ea994b5 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Print the correct target when printing the version.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67756 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
70c8db1003af49d3627aeef41fcdd7c6c6a7df79 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Print the correct target when printing the version.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67756 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
9cdd4d47dbc12191aa8b2f700b3438613fb4b7ff 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move GetReleaseVersion to static Driver::GetReleaseVersion method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67754 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
d73fe9b70c5f6738d004744562287a62831f39bf 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move GetReleaseVersion to static Driver::GetReleaseVersion method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67754 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
7d3f8852b069805fbdc02e1d782a5c088191e7c0 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::AddAllArgsTranslated; for forwarding options to
tools with the name of the option replace, and arguments rendered
separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67753 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
524b9fb54564ab8bc437118ed55ee7c9e8c1247d 26-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::AddAllArgsTranslated; for forwarding options to
tools with the name of the option replace, and arguments rendered
separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67753 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
f04a7561dc267ed9c54670386d9b5dfebc84d416 26-Mar-2009 Chris Lattner <sabre@nondot.org> most of this is plumbing to get CompileOptions down into
CodeGenModule. Once there, add a new NoCommon option to
it and implement -fno-common.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67735 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/CompileOptions.h
bd3606426d389370616126af969904ec493cb105 26-Mar-2009 Chris Lattner <sabre@nondot.org> most of this is plumbing to get CompileOptions down into
CodeGenModule. Once there, add a new NoCommon option to
it and implement -fno-common.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67735 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
rontend/CompileOptions.h
54122d8d9195830b6a7085c40965eec939826df9 26-Mar-2009 Chris Lattner <sabre@nondot.org> make this self contained, declare everything as 'class'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67734 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
e062533e298f72d970b2aa99cd0e3818b20d73df 26-Mar-2009 Chris Lattner <sabre@nondot.org> make this self contained, declare everything as 'class'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67734 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
74556a1d8d84f6cb45f8331c8ba9be05f15edb68 26-Mar-2009 Ted Kremenek <kremenek@apple.com> analyzer infrastructure: make a bunch of changes to symbolic expressions that
Zhongxing and I discussed by email.

Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)

This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
e0e4ebf6bfca5a71b2344d8a1b748b852509279c 26-Mar-2009 Ted Kremenek <kremenek@apple.com> analyzer infrastructure: make a bunch of changes to symbolic expressions that
Zhongxing and I discussed by email.

Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)

This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
ed20fb93b83794139c15c9914ffb0cc4739855c1 26-Mar-2009 Anders Carlsson <andersca@mac.com> Handle parsing of templates in member declarations. Pass the AccessSpecifier all the way down to ActOnClassTemplate.

Doug, Sebastian: Plz review! :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67723 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
5aeccdbb4bdc94e48c04cacc59fa812af32109b2 26-Mar-2009 Anders Carlsson <andersca@mac.com> Handle parsing of templates in member declarations. Pass the AccessSpecifier all the way down to ActOnClassTemplate.

Doug, Sebastian: Plz review! :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67723 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
bccb4bce64483b3e5f9305d8c3df64ca7f4e7e95 26-Mar-2009 Anders Carlsson <andersca@mac.com> Check that the access specifier of a member redeclaration is the same as the original declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67722 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
50713450f61b85805e1ca97e547a4082b7798bd3 26-Mar-2009 Anders Carlsson <andersca@mac.com> Check that the access specifier of a member redeclaration is the same as the original declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67722 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
55216ac1d698c5d24c5d6a9f0986404cdc703762 26-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> The injected-class-name of class templates and class template
specializations can be treated as a template. Finally, we can parse
and process the first implementation of Fibonacci I wrote!

Note that this code does not handle all of the cases where
injected-class-names can be treated as templates. In particular,
there's an ambiguity case that we should be able to handle (but
can't), e.g.,

template <class T> struct Base { };
template <class T> struct Derived : Base<int>, Base<char> {
typename Derived::Base b; // error: ambiguous
typename Derived::Base<double> d; // OK
};




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67720 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
befc20e1dc869edb0e7b560e69f32d5c71f867ab 26-Mar-2009 Douglas Gregor <dgregor@apple.com> The injected-class-name of class templates and class template
specializations can be treated as a template. Finally, we can parse
and process the first implementation of Fibonacci I wrote!

Note that this code does not handle all of the cases where
injected-class-names can be treated as templates. In particular,
there's an ambiguity case that we should be able to handle (but
can't), e.g.,

template <class T> struct Base { };
template <class T> struct Derived : Base<int>, Base<char> {
typename Derived::Base b; // error: ambiguous
typename Derived::Base<double> d; // OK
};




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67720 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8ea6a3293085bfc0d8bae39057dd918f839ab424 26-Mar-2009 Anders Carlsson <andersca@mac.com> Tighten the setAccess assert. We now allow AS_none if the decl contex is not a C++ record decl.

Also, fix fallout from the change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1329c274628cc8c4e8ad472b41d1a78c8123f611 26-Mar-2009 Anders Carlsson <andersca@mac.com> Tighten the setAccess assert. We now allow AS_none if the decl contex is not a C++ record decl.

Also, fix fallout from the change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67717 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
0c793bb0ab1ed0c1265ccfb77904fd247a11f209 25-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Pass access specifiers through to member classes and member enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67710 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
06c0fecd197fef21e265a41bca8dc5022de1f864 25-Mar-2009 Douglas Gregor <dgregor@apple.com> Pass access specifiers through to member classes and member enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67710 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
cc88797aac66319a370847d204aef5de70c43f65 25-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Instantiation for member classes of class templates. Note that only
the declarations of member classes are instantiated when the owning
class template is instantiated. The definitions of such member classes
are instantiated when a complete type is required.

This change also introduces the injected-class-name into a class
template specialization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
d475b8d9e6f5ff0e6ab8d15667ce8a64c7cb9a4d 25-Mar-2009 Douglas Gregor <dgregor@apple.com> Instantiation for member classes of class templates. Note that only
the declarations of member classes are instantiated when the owning
class template is instantiated. The definitions of such member classes
are instantiated when a complete type is required.

This change also introduces the injected-class-name into a class
template specialization.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticSemaKinds.td
0f60b3201cfbd32a43939cd26f128932d73a0421 25-Mar-2009 Anders Carlsson <andersca@mac.com> It doesn't make sense to set the access specifier to AS_none (I think)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b8547e800f9553a72c2f3635ae2371692bd4411a 25-Mar-2009 Anders Carlsson <andersca@mac.com> It doesn't make sense to set the access specifier to AS_none (I think)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
43bfaafb142657ceee76b65396075a57e195d8d1 25-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Predicate to detect when a RecordDecl is really the injected-class-name

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67687 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c9b5b4074bd73d4af76e69cccf8ecd365fdd1008 25-Mar-2009 Douglas Gregor <dgregor@apple.com> Predicate to detect when a RecordDecl is really the injected-class-name

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67687 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0752a102f3abe787f38772c8a7269bfb909692f5 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -Xarch_, including warning for nasty -Xarch_ use cases
we aren't going to support. For example:
clang -Xarch_i386 -S -Xarch_i386 -o -Xarch_i386 myi386asm.s ...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
4e7e9cff2e3b1bf15da06a4284a936da15e19578 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -Xarch_, including warning for nasty -Xarch_ use cases
we aren't going to support. For example:
clang -Xarch_i386 -S -Xarch_i386 -o -Xarch_i386 myi386asm.s ...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67680 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
f2f1f9de712de6ec5ee5d49f56973e97f7ab5c8e 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Replace Option::ForwardToGCC by Option::DriverOption (which
matches the flag in Options.def).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67679 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
f6dd66b7b80e2fb42628df2593b3948149a53a5f 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Replace Option::ForwardToGCC by Option::DriverOption (which
matches the flag in Options.def).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67679 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
02bb0349b9f6faf3de9adc08813c1ab7899bbe5a 25-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> This patch adds two more SymbolData subclasses: SymIntExpr and SymSymExpr, for
representing symbolic expressions like 'x'+3 and 'x'+'y'. The design is
subjected to change later when we fix the class hierarchy of symbolic
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67678 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
a129eb974d8ff0ad4a4dd94ad1e6c5f98897ddb4 25-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> This patch adds two more SymbolData subclasses: SymIntExpr and SymSymExpr, for
representing symbolic expressions like 'x'+3 and 'x'+'y'. The design is
subjected to change later when we fix the class hierarchy of symbolic
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67678 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
a16e4fe637c9098d7aa334262b8394c1a8afd857 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Prep for tool chain specific argument translation.
- Lift ArgList to a base class for InputArgList and DerivedArgList.

- This is not a great decomposition, but it does embed the
translation into the type system, and keep things efficient for
tool chains that don't want to do any translation.

- No intended functionality change.

Eventually I hope to get rid of tool chain specific translation and
have each tool do the right thing, but for now this is the easiest way
to match gcc precisely (which is good for testing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67676 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Compilation.h
river/Driver.h
river/Option.h
river/Options.h
river/ToolChain.h
f3cad36e59a41b5767fe662b5ac8911ee174b801 25-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Prep for tool chain specific argument translation.
- Lift ArgList to a base class for InputArgList and DerivedArgList.

- This is not a great decomposition, but it does embed the
translation into the type system, and keep things efficient for
tool chains that don't want to do any translation.

- No intended functionality change.

Eventually I hope to get rid of tool chain specific translation and
have each tool do the right thing, but for now this is the easiest way
to match gcc precisely (which is good for testing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67676 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
river/Compilation.h
river/Driver.h
river/Option.h
river/Options.h
river/ToolChain.h
c7f8720d22f898d5885f872b060e270f9d464e16 25-Mar-2009 Anders Carlsson <andersca@mac.com> Improve handling of base initializers. We now parse initializers in out of line decls, such as:

class C {
C() { }

int a;
};

C::C() : a(10) { }

We also diagnose when initializers are used on declarations that aren't constructors:

t.cpp:1:10: error: only constructors take base initializers
void f() : a(10) { }
^

Doug and/or Sebastian: I'd appreciate a review, especially the nested-name-spec test results (from the looks of it we now match gcc in that test.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a7b3521ef52d983bd0e7fa562bb9ef1393f14634 25-Mar-2009 Anders Carlsson <andersca@mac.com> Improve handling of base initializers. We now parse initializers in out of line decls, such as:

class C {
C() { }

int a;
};

C::C() : a(10) { }

We also diagnose when initializers are used on declarations that aren't constructors:

t.cpp:1:10: error: only constructors take base initializers
void f() : a(10) { }
^

Doug and/or Sebastian: I'd appreciate a review, especially the nested-name-spec test results (from the looks of it we now match gcc in that test.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
c5d6fa7539cdd5f00ca102783df46f68ae82da18 25-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> In Parser::ParseClassSpecifier, don't conflate a NULL declaration with
failure to perform a declaration. Instead, explicitly note semantic
failures that occur during template parsing with a DeclResult. Fixes
PR3872.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67659 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
212e81cc5151b3c42346e43cfd42499a53ffd39a 25-Mar-2009 Douglas Gregor <dgregor@apple.com> In Parser::ParseClassSpecifier, don't conflate a NULL declaration with
failure to perform a declaration. Instead, explicitly note semantic
failures that occur during template parsing with a DeclResult. Fixes
PR3872.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67659 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a8cecf66e3d8ebbd30501d92692c912cc843160b 24-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parse deleted function definitions and hook them up to Doug's machinery.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
arse/Action.h
50de12f5783b57c74fd30ebfa3945181313625ff 24-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parse deleted function definitions and hook them up to Doug's machinery.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.td
arse/Action.h
26ea122d7b08fc76c2135ef2609af311d951dac3 24-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Type::isObjectType now implements the (more sensible) C++ definition
of "object type" rather than the C definition of "object type". The
difference is that C's "object type" excludes incomplete types such as

struct X;

However, C's definition also makes it far too easy to use isObjectType
as a means to detect incomplete types when in fact we should use other
means (e.g., Sema::RequireCompleteType) that cope with C++ semantics,
including template instantiation.

I've already audited every use of isObjectType and isIncompleteType to
ensure that they are doing the right thing for both C and C++, so this
is patch does not change any functionality.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
bad0e656c3732e3539a9cd6525de721d7e47408b 24-Mar-2009 Douglas Gregor <dgregor@apple.com> Type::isObjectType now implements the (more sensible) C++ definition
of "object type" rather than the C definition of "object type". The
difference is that C's "object type" excludes incomplete types such as

struct X;

However, C's definition also makes it far too easy to use isObjectType
as a means to detect incomplete types when in fact we should use other
means (e.g., Sema::RequireCompleteType) that cope with C++ semantics,
including template instantiation.

I've already audited every use of isObjectType and isIncompleteType to
ensure that they are doing the right thing for both C and C++, so this
is patch does not change any functionality.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dec1445fa095364e7c94bfe7bb8f4ad1dbfc17a1 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -flto, -O4, and tweak -emit-llvm to match llvm-gcc.
- -emit-llvm no longer changes what compilation steps are done.

- -emit-llvm and -emit-llvm -S write output files with .o and .s
suffixes, respectively.

- <rdar://problem/6714125> clang-driver should support -O4 and -flto,
like llvm-gcc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67645 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Types.def
337a6271b98c4c183f7eaad1563a75260b4f2871 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle -flto, -O4, and tweak -emit-llvm to match llvm-gcc.
- -emit-llvm no longer changes what compilation steps are done.

- -emit-llvm and -emit-llvm -S write output files with .o and .s
suffixes, respectively.

- <rdar://problem/6714125> clang-driver should support -O4 and -flto,
like llvm-gcc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67645 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Types.def
05e28f67bcd6f3da0eb2cf9916a9fbadcde4257d 24-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure to use RequireCompleteType rather than testing for
incomplete types. RequireCompleteType is needed when the type may be
completed by instantiating a template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
e7450f5dbd5bed63b8ef9db86350a8fc3db011e8 24-Mar-2009 Douglas Gregor <dgregor@apple.com> Make sure to use RequireCompleteType rather than testing for
incomplete types. RequireCompleteType is needed when the type may be
completed by instantiating a template.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b1ae14d18ce75793676b6992da4d2053a18ef9d1 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Warn when 'clang' is used to compile a source file we could
conceivably handle, but are defaulting to not using clang for.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
6256d3654533547a7996170647c21a859cb441e1 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Warn when 'clang' is used to compile a source file we could
conceivably handle, but are defaulting to not using clang for.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
0ea85f7b9233049174bd3c494a1ac26122874279 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Change default use of "clang" compiler.
- Don't default to using clang for C++ (use -ccc-clang-cxx to
override).

- Default to only using clang on i386 and x86_64 (use
-ccc-clang-archs "" to override).

- <rdar://problem/6712350> [driver] clang should not be used on
powerpc by default
- <rdar://problem/6705767> driver should default to -ccc-no-clang-cxx

I plan to add a warning that we are not using the clang compiler for
the given compilation so that users do not think clang is being used
in situations it isn't.

This change is motivated by the desire to be able to drop clang into a
build and have things "just work", even if it happens to get used to
compile C++ code or code for an architecture we don't support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67640 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
0f99d2e57d8e3cf2508e7f9f868d41eccdc229c9 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Change default use of "clang" compiler.
- Don't default to using clang for C++ (use -ccc-clang-cxx to
override).

- Default to only using clang on i386 and x86_64 (use
-ccc-clang-archs "" to override).

- <rdar://problem/6712350> [driver] clang should not be used on
powerpc by default
- <rdar://problem/6705767> driver should default to -ccc-no-clang-cxx

I plan to add a warning that we are not using the clang compiler for
the given compilation so that users do not think clang is being used
in situations it isn't.

This change is motivated by the desire to be able to drop clang into a
build and have things "just work", even if it happens to get used to
compile C++ code or code for an architecture we don't support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67640 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
1a9c8ca241f576c87e0230fc7c9103bc93d61a08 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Move ToolChain::ShouldUseClangCompiler to
Driver::ShouldUseClangCompiler.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67639 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
af80e1ffafeb77929cc0b9ba8940a7f1c0b80d51 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Move ToolChain::ShouldUseClangCompiler to
Driver::ShouldUseClangCompiler.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67639 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/ToolChain.h
fdf1552e33e7fc30b558c688e7829009b6f10e11 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Translate -fverbose-asm for LLVM backend.
- <rdar://problem/6715707> driver should translate -fverbose-asm into
-asm-verbose


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67634 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
b3fd500a1c486e9fb82d82e28828ead025462aeb 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Translate -fverbose-asm for LLVM backend.
- <rdar://problem/6715707> driver should translate -fverbose-asm into
-asm-verbose


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67634 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
7c952c9d27956f78b4a5dfb39f3edb2189b0f762 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: ArgList::getLastArg was in fact returning the first matching arg.
- <rdar://problem/6715818> clang doesn't honor gcc semantic that last
-O optimization option wins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67628 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
fe2e04a979205c1f395b699a24d74adb82bb4833 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: ArgList::getLastArg was in fact returning the first matching arg.
- <rdar://problem/6715818> clang doesn't honor gcc semantic that last
-O optimization option wins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67628 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
412c34014b576ee253e5026e1e74a5ef62a41135 24-Mar-2009 Anders Carlsson <andersca@mac.com> More work on diagnosing abstract classes. We can now handle cases like

class C {
void g(C c);

virtual void f() = 0;
};

In this case, C is not known to be abstract when doing semantic analysis on g. This is done by recursively traversing the abstract class and checking the types of member functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclVisitor.h
8211effbd3abc5948a5d6924c87e72323016a376 24-Mar-2009 Anders Carlsson <andersca@mac.com> More work on diagnosing abstract classes. We can now handle cases like

class C {
void g(C c);

virtual void f() = 0;
};

In this case, C is not known to be abstract when doing semantic analysis on g. This is done by recursively traversing the abstract class and checking the types of member functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67594 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclVisitor.h
87050400219c4e5fb53f1729e19f3990e34c5835 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: -r option doesn't take an argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67581 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
d3dfdb8d98c39b400894e40ee679c1e7a3a57bf5 24-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: -r option doesn't take an argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67581 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
86a631bda5c8483192c6f7674a60d0df5016d855 23-Mar-2009 Ted Kremenek <kremenek@apple.com> Implement '#pragma unused'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67569 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
4726d03ab3abce41911c31d1354a18f1258cae4d 23-Mar-2009 Ted Kremenek <kremenek@apple.com> Implement '#pragma unused'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67569 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
arse/Action.h
arse/Parser.h
ec0b90f275751a7fd00222b64970a25fe3b80e05 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two special groups of "whitelisted" options which we know
clang doesn't support, and don't want to warn are unused. Eventually
these should disappear.

Here is a more readable list than is in the diff:

W options: -Wall, -Wcast-align, -Wchar-align, -Wchar-subscripts,
-Werror, -Wextra, -Winline, -Wint-to-pointer-cast, -Wmissing-braces,
-Wmost, -Wnested-externs, -Wno-format-y2k, -Wno-four-char-constants,
-Wno-missing-field-initializers, -Wno-trigraphs, -Wno-unknown-pragmas,
-Wno-unused-parameter, -Wparentheses, -Wpointer-arith,
-Wpointer-to-int-cast, -Wreturn-type, -Wshorten-64-to-32, -Wswitch,
-Wunused-function, -Wunused-label, -Wunused-value, -Wunused-variable,
-Wwrite-strings.

f options: -fasm-blocks, -fmessage-length=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67549 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
a880db0b0fc028abf754c290d921d809eec0518a 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two special groups of "whitelisted" options which we know
clang doesn't support, and don't want to warn are unused. Eventually
these should disappear.

Here is a more readable list than is in the diff:

W options: -Wall, -Wcast-align, -Wchar-align, -Wchar-subscripts,
-Werror, -Wextra, -Winline, -Wint-to-pointer-cast, -Wmissing-braces,
-Wmost, -Wnested-externs, -Wno-format-y2k, -Wno-four-char-constants,
-Wno-missing-field-initializers, -Wno-trigraphs, -Wno-unknown-pragmas,
-Wno-unused-parameter, -Wparentheses, -Wpointer-arith,
-Wpointer-to-int-cast, -Wreturn-type, -Wshorten-64-to-32, -Wswitch,
-Wunused-function, -Wunused-label, -Wunused-value, -Wunused-variable,
-Wwrite-strings.

f options: -fasm-blocks, -fmessage-length=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67549 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
b1f0c697c8eee172eeb9de05a77b75c9b0975679 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Check that options are ordered properly (outside of
Release-Asserts mode).

Also, avoid searching through option groups (which will never match).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67548 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
b355692a7f9349e9af747b6b444ce56e9228a696 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Check that options are ordered properly (outside of
Release-Asserts mode).

Also, avoid searching through option groups (which will never match).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67548 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
d5a949898d4547babb07823bae45ed8324bef9de 23-Mar-2009 Anders Carlsson <andersca@mac.com> It's an error to try to allocate an abstract object using new.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
b9bbe49f513080b3307e88bdee0d383f4b8c1d4e 23-Mar-2009 Anders Carlsson <andersca@mac.com> It's an error to try to allocate an abstract object using new.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67542 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
1e23a5fcf5d96f1504fbf57860d2709b1628c1fc 23-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Fix PR3855. When we encounter an incompatible redeclaration of a
library function, accept this declaration and pretend that we do not
know that this is a library function. autoconf depends on this
(broken) behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
374e156647e4250274eb66102839abf0ee9d7fe8 23-Mar-2009 Douglas Gregor <dgregor@apple.com> Fix PR3855. When we encounter an incompatible redeclaration of a
library function, accept this declaration and pretend that we do not
know that this is a library function. autoconf depends on this
(broken) behavior.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67541 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
bf090d3919592058433b1c01da77a159ce48deda 23-Mar-2009 Ted Kremenek <kremenek@apple.com> analyzer: Fix embarrassing regression in BasicStore when invalidating struct
values passed-by-reference to unknown functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
693de5d7feb92c096431c98ea6ee637494bfe6fb 23-Mar-2009 Ted Kremenek <kremenek@apple.com> analyzer: Fix embarrassing regression in BasicStore when invalidating struct
values passed-by-reference to unknown functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
4e67adbb167e43b884cb1ab9c957382c73af5840 23-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Recognize rvalue references in C++03, but complain about them. This leads to far better error recovery.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
743de1f671ee0ef213c7404cfdc85579dd12c56e 23-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Recognize rvalue references in C++03, but complain about them. This leads to far better error recovery.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.td
6ca28cbcda9115d6063e293c24e4905dda9c8248 23-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Partial implementation of PR3342: break out pointer sign
incompatibilities in assignments from other pointer incompatibilities.
Based off of the patch in PR3342. (This doesn't implement -Wno-pointer-sign,
but I don't know the driver code very well.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f05c05d2e1a2952e6cc7c3e54366fb8d99ff579c 23-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Partial implementation of PR3342: break out pointer sign
incompatibilities in assignments from other pointer incompatibilities.
Based off of the patch in PR3342. (This doesn't implement -Wno-pointer-sign,
but I don't know the driver code very well.)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
8a8b351ed149696f31d5a115e65493667031ad52 23-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Disallow catching exceptions by rvalue reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
f2e21e5ad5e816d88e048c89dc775a9d4547c089 23-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Disallow catching exceptions by rvalue reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
fb88ce0e495979d0b663e98e82308e06dd6a11cb 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement 'missing argument' error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ArgList.h
river/Option.h
river/Options.h
b0c4df5c4df69a003f26b378eb95961bc7c486e5 23-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement 'missing argument' error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
river/ArgList.h
river/Option.h
river/Options.h
71612c0a2ed07ad310a735723114cd67b782fd25 22-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> .td files have been used for a few days without complaint. Kill the .def files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriverKinds.def
asic/DiagnosticFrontendKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
acddd2e5b91123ab43cef0dd74f7a1829f652458 22-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> .td files have been used for a few days without complaint. Kill the .def files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67488 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriverKinds.def
asic/DiagnosticFrontendKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
103c6c7d5921f42e2fa3d72ed1ec59a626e7ed8c 22-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement static_cast from lvalue to rvalue reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
157be839ade8312389b20d02a3d470c0487fd756 22-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement static_cast from lvalue to rvalue reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67487 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
83dec9e0a6adc212e3a07dc68eb176165fa6f597 22-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Check that the return/argument types of calls are complete.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67485 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
e7c6f7aa7e8ee1f0acacc314dcf59d5dadff1524 22-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Check that the return/argument types of calls are complete.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67485 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
e1299b3edca565a8418a88828d4f7357abed772a 22-Mar-2009 Anders Carlsson <andersca@mac.com> Disallow abstract types where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
4681ebd429846ed98e7beaf49934fa347ff22152 22-Mar-2009 Anders Carlsson <andersca@mac.com> Disallow abstract types where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a6fe878ddf8804734de57b1bbd1c8a25ff963024 22-Mar-2009 Chris Lattner <sabre@nondot.org> add some missing type predicates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
26d1a40edc612f4c53399427480592101acb0dbe 22-Mar-2009 Chris Lattner <sabre@nondot.org> add some missing type predicates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6348cc6d948ad64b63e4ebdf64d489568e3a9f77 22-Mar-2009 Ted Kremenek <kremenek@apple.com> PTHManager::Create():
- Make the Diagnostic::Level for PTH errors to be specified by the caller

clang (driver):
- Set the PTHManager diagnostic level to "Diagnostic::Error" for -include-pth
(a hard error) and Diagnostic::Warning for -token-cache (we can still
proceed).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67462 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
22f0d09298ef05136f1ef6ebc4469b482cbd73e7 22-Mar-2009 Ted Kremenek <kremenek@apple.com> PTHManager::Create():
- Make the Diagnostic::Level for PTH errors to be specified by the caller

clang (driver):
- Set the PTHManager diagnostic level to "Diagnostic::Error" for -include-pth
(a hard error) and Diagnostic::Warning for -token-cache (we can still
proceed).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67462 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
1dae87f4b8750e107fde542377d457e462b6c9b1 22-Mar-2009 Anders Carlsson <andersca@mac.com> Keep track of whether a class is abstract or not. This is currently only used for the __is_abstract type trait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
67e4dd2e9936d828d68b20e01922b6442c6ce31b 22-Mar-2009 Anders Carlsson <andersca@mac.com> Keep track of whether a class is abstract or not. This is currently only used for the __is_abstract type trait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ca277321b9f701b45abbd450657bdbfb72428d0f 21-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Issue error if variables are defined inside an objc class,
category or protocol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
b31cb7f1752ea011fd06ac9574ce24667d11cbdb 21-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Issue error if variables are defined inside an objc class,
category or protocol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67450 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
5db77cd6276bbca3a44db218d6989f516552654b 21-Mar-2009 Chris Lattner <sabre@nondot.org> continue dancing around the obvious algorithm issues in PR3810:
This speeds up getAsIdentifierInfo from being a call to a function
with a big switch to a single testl instruction. This speeds up
the example in PR3810 by 6.2%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
91058ff73fd3b00275348dd4d49f83501dfc0542 21-Mar-2009 Chris Lattner <sabre@nondot.org> continue dancing around the obvious algorithm issues in PR3810:
This speeds up getAsIdentifierInfo from being a call to a function
with a big switch to a single testl instruction. This speeds up
the example in PR3810 by 6.2%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
86913d435f38b466d301682e07798acdb46b7202 21-Mar-2009 Chris Lattner <sabre@nondot.org> add an assertion for unreachable code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ac8d75fe94f2aefde5179d53e230b99a1fe1201a 21-Mar-2009 Chris Lattner <sabre@nondot.org> add an assertion for unreachable code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
004a9bbb54964500d98c0a3d8d94a2cc35daf267 21-Mar-2009 Chris Lattner <sabre@nondot.org> partially inline getAttrs() to speed up PR3810 (and lots of
other code presumably) by 4.3%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67430 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
81abbdd848aa02c30242bd22dcc6ffe024ae2957 21-Mar-2009 Chris Lattner <sabre@nondot.org> partially inline getAttrs() to speed up PR3810 (and lots of
other code presumably) by 4.3%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67430 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
37dda8b6017b14ada6e5a563d3b3b4474312d111 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Give Compilation::Execute total control over the Driver result
code; and don't return an error code when -### is present, even if
errors occur.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67425 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
af96def468042cfbed55a4cc12b1bb917ead4f33 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Give Compilation::Execute total control over the Driver result
code; and don't return an error code when -### is present, even if
errors occur.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67425 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
ee0792c36716c6104957542be022949d99629d62 21-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> When building the structured initializer list, pre-allocate storage in
its vectors based on the subobject type we're initializing and the
(unstructured) initializer list. This eliminates some malloc thrashing
when parsing initializers (from 117 vector reallocations down to 0
when parsing Cocoa.h). We can't always pre-allocate the right amount
of storage, since designated initializers can cause us to initialize
in non-predictable patterns.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67421 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fa2192042f223b5122a9e17719930f77634fd31f 21-Mar-2009 Douglas Gregor <dgregor@apple.com> When building the structured initializer list, pre-allocate storage in
its vectors based on the subobject type we're initializing and the
(unstructured) initializer list. This eliminates some malloc thrashing
when parsing initializers (from 117 vector reallocations down to 0
when parsing Cocoa.h). We can't always pre-allocate the right amount
of storage, since designated initializers can cause us to initialize
in non-predictable patterns.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67421 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
73e8e03359a46f97b4c2ec586501205376e619e2 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver/clang-fe: Accept -fbuiltin, and forward -f[no-]builtin to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67420 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
9f9768c1ee1242ca0e665a070038b53f1f0c6799 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver/clang-fe: Accept -fbuiltin, and forward -f[no-]builtin to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67420 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
7b6dfbddac482c9b8a1deaf7d7236c2758418d74 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: .s defaults to 'assembler-with-cpp' on Darwin.
- <rdar://problem/6669441> ccc doesn't handle assembler-with-cpp
semantics correctly (but clang supports it)

- This is sad, because it requires a fairly useless target
hook. C'est la vie.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67418 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
e33bea4ef34598e7a4a6a3a117392268998552d4 21-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: .s defaults to 'assembler-with-cpp' on Darwin.
- <rdar://problem/6669441> ccc doesn't handle assembler-with-cpp
semantics correctly (but clang supports it)

- This is sad, because it requires a fairly useless target
hook. C'est la vie.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67418 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
3a45f668dfd4187637ef83ddac66efd2a34f2e56 21-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> InitListDesignations hasn't been used (ever). Eliminate it, and
simplify the parsing and action interface for designated
initializers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67415 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Designator.h
arse/Parser.h
5908a9293b88a3da57ae59b522275d05e1ab11e0 21-Mar-2009 Douglas Gregor <dgregor@apple.com> InitListDesignations hasn't been used (ever). Eliminate it, and
simplify the parsing and action interface for designated
initializers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67415 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Designator.h
arse/Parser.h
46970ed35b8989a3c1b787beab82125493ccbd1a 20-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate post-diagnostic hooks. Instead, implement a Sema-specific
variant of DiagnosticBuilder that emits the template instantiation
backtrace when needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
25a88bbf042317976f0d9cbfa87dfe89426e8393 20-Mar-2009 Douglas Gregor <dgregor@apple.com> Eliminate post-diagnostic hooks. Instead, implement a Sema-specific
variant of DiagnosticBuilder that emits the template instantiation
backtrace when needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67413 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
51787c77ed35d2d402efb8bc97c3dcf09aedda89 20-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix <rdar://problem/6704086> by allowing the format string checking in Sema to
allow non-literal format strings that are variables that (a) permanently bind to
a string constant and (b) whose string constants are resolvable within the same
translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
082d936a5b8323ac2c04558d8bca277a647831a3 20-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix <rdar://problem/6704086> by allowing the format string checking in Sema to
allow non-literal format strings that are variables that (a) permanently bind to
a string constant and (b) whose string constants are resolvable within the same
translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
831c834f4de9c9db16fd7259cde3f310f98bbd88 20-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Improve documentation for MemberExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
57e8b05fe9ba03d410db9c161e032cb79c9ab5ba 20-Mar-2009 Douglas Gregor <dgregor@apple.com> Improve documentation for MemberExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
607415e5b4dee1385ae937dc1f54dd3ddcedb3d2 20-Mar-2009 Ted Kremenek <kremenek@apple.com> GRExprEngine:
- Conjure symbols at '--' and '++' unary operations
- Add utility method SVal::GetConjuredSymbolVal() and constify some arguments
along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67395 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
bb9b2711ded08d39f9c9aa08b06ac5e288f32c62 20-Mar-2009 Ted Kremenek <kremenek@apple.com> GRExprEngine:
- Conjure symbols at '--' and '++' unary operations
- Add utility method SVal::GetConjuredSymbolVal() and constify some arguments
along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67395 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
d9be90970ec5cfd2f132f66343b949e431adec19 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Parse Darwin version out of target triple.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
fc6a89964badf45cbe8e907cd1e1ea1765f5357b 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Parse Darwin version out of target triple.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
0008f9d76b2b450fc9e782e7aaa718dc044ec6fa 20-Mar-2009 Ted Kremenek <kremenek@apple.com> Allow profiling of "invalid" Symbols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67383 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
def1a888f999725dba7184e4fae7b94f8978032f 20-Mar-2009 Ted Kremenek <kremenek@apple.com> Allow profiling of "invalid" Symbols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67383 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
eefd914ea5580cc0e615e2c1bc18b09a386d020e 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two option overload for AddAllArgValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67377 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
ee51031c3734176d00723054c765538fcffc0984 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two option overload for AddAllArgValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67377 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
796824014e267eb99d8e80b01eff55f3d5be8b44 20-Mar-2009 Chris Lattner <sabre@nondot.org> pass LangOptions into TargetInfo::getTargetDefines, so that targets
can have language-specific defines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
33328642a7a8a126918814ddcbcebf83c121ad54 20-Mar-2009 Chris Lattner <sabre@nondot.org> pass LangOptions into TargetInfo::getTargetDefines, so that targets
can have language-specific defines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
31e7f6f42abbb965248663fec5ae2a299a1c1d5b 20-Mar-2009 Chris Lattner <sabre@nondot.org> add a new LangOptions::GNUMode bit to distinguish between GNU99 and C99 etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67374 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
7e9c90b1a7402dfeca87980cb07e36bedc1a42b8 20-Mar-2009 Chris Lattner <sabre@nondot.org> add a new LangOptions::GNUMode bit to distinguish between GNU99 and C99 etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67374 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
7322593f4890c9389c81182a0a4afaf46415e027 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::getAsString and use when dumping arguments to
diagnostics.
- This ensures that the whole argument and values are printed,
instead of just the option name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67366 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
38dd3d54186cf44ea9d37f463c3f2800ab526b82 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::getAsString and use when dumping arguments to
diagnostics.
- This ensures that the whole argument and values are printed,
instead of just the option name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67366 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
91b9e20fc3c4eecbe548f150fe10263a2589cd78 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement -print-search-dirs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67362 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
ca3459e95f552cfae6c9c5fb4ed161e3a662c25e 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement -print-search-dirs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67362 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
8fcc087dc28be73e4dc15f354a311f6bc757c964 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Unbreak ToolChain::get{File,Program}Paths (which should return
reference, not copy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67361 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
bbafc5c7645e41a52af688ef8f71a28b19fe4326 20-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Unbreak ToolChain::get{File,Program}Paths (which should return
reference, not copy).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67361 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
cd2c52736917f6a0abc8604413e0ddfd48fbe9b1 20-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Allow flexible array initializers that are not surrounded by
braces. We now build the appropriate fully-structured initializer list
for such things. Per PR3618, verified that we're getting the right
code generation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67353 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
a6457963cf7ffe71498c408dd590d9d1acb9513c 20-Mar-2009 Douglas Gregor <dgregor@apple.com> Allow flexible array initializers that are not surrounded by
braces. We now build the appropriate fully-structured initializer list
for such things. Per PR3618, verified that we're getting the right
code generation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67353 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
716abb33028907efa4832c2bcbf7d04b83b55054 20-Mar-2009 Ted Kremenek <kremenek@apple.com> Add accessor Preprocessor::getPTHManager().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67351 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
880dcf21dfdb3ff763c60195b6794bab0d913095 20-Mar-2009 Ted Kremenek <kremenek@apple.com> Add accessor Preprocessor::getPTHManager().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67351 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
23974ac63841eada280bdd4821091d1b127242a5 20-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Bindir and Win32 builds work, so switch to .inc files. Leave the .def files in the tree for a day or so longer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67346 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
4d7a089144f336b11e5e8ce437b3b27bce2b310d 20-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Bindir and Win32 builds work, so switch to .inc files. Leave the .def files in the tree for a day or so longer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67346 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
6dca3d20ec3f2000a57a0b2f15a93f40151b3451 19-Mar-2009 Ted Kremenek <kremenek@apple.com> Add PTHManager::getOriginalSourceFile(), a method that returns the name of the
original source file (if any) that was used to generate the PTH cache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67343 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
68228634016f644a1164fa1f024a9ce2093656bf 19-Mar-2009 Ted Kremenek <kremenek@apple.com> Add PTHManager::getOriginalSourceFile(), a method that returns the name of the
original source file (if any) that was used to generate the PTH cache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67343 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
3d3732e278ed7586870606c96175e43d6326e2cc 19-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Variables marked as "extern" can actually have internal linkage if
there is a previous declaration marked "static". This fixes PR3645.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5ef122e9449a86e4a6466ea07ed7f5ba5f6a48bc 19-Mar-2009 Douglas Gregor <dgregor@apple.com> Variables marked as "extern" can actually have internal linkage if
there is a previous declaration marked "static". This fixes PR3645.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
47bde7c68e2935358db5cffa7d6a3986bb5bcec8 19-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new expression type, UnresolvedDeclRefExpr, that describes
dependent qualified-ids such as

Fibonacci<N - 1>::value

where N is a template parameter. These references are "unresolved"
because the name is dependent and, therefore, cannot be resolved to a
declaration node (as we would do for a DeclRefExpr or
QualifiedDeclRefExpr). UnresolvedDeclRefExprs instantiate to
DeclRefExprs, QualifiedDeclRefExprs, etc.

Also, be a bit more careful about keeping only a single set of
specializations for a class template, and instantiating from the
definition of that template rather than a previous declaration. In
general, we need a better solution for this for all TagDecls, because
it's too easy to accidentally look at a declaration that isn't the
definition.

We can now process a simple Fibonacci computation described as a
template metaprogram.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/ExprCXX.h
ST/StmtNodes.def
arse/DeclSpec.h
5953d8b37f92f0cf548941f617c9b0a7703df33b 19-Mar-2009 Douglas Gregor <dgregor@apple.com> Introduce a new expression type, UnresolvedDeclRefExpr, that describes
dependent qualified-ids such as

Fibonacci<N - 1>::value

where N is a template parameter. These references are "unresolved"
because the name is dependent and, therefore, cannot be resolved to a
declaration node (as we would do for a DeclRefExpr or
QualifiedDeclRefExpr). UnresolvedDeclRefExprs instantiate to
DeclRefExprs, QualifiedDeclRefExprs, etc.

Also, be a bit more careful about keeping only a single set of
specializations for a class template, and instantiating from the
definition of that template rather than a previous declaration. In
general, we need a better solution for this for all TagDecls, because
it's too easy to accidentally look at a declaration that isn't the
definition.

We can now process a simple Fibonacci computation described as a
template metaprogram.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/ExprCXX.h
ST/StmtNodes.def
arse/DeclSpec.h
3c27dbc90645d3d5b77786c0d4dddf8b8be7c0b2 19-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Executing piped jobs with a single command is easy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67295 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
ceafbc8f55e00345a85d5e6674d3339a45cbbf76 19-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Executing piped jobs with a single command is easy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67295 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
79ba44da3437146a9cc3fec5cd16443ec2e361a1 19-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::renderAsInput; this is a messy area and something I
was hoping to clean up in the rewrite, but I don't see it yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67291 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Options.def
42f7fc23044cc736db77878734258d35ad3dfe66 19-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::renderAsInput; this is a messy area and something I
was hoping to clean up in the rewrite, but I don't see it yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67291 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Options.def
76485a9d630813a9320e494b7e5b9e67d9e025ca 19-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Print the context of tag types as part of pretty-printing, e.g.,

struct N::M::foo



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
24c46b3133b03e254877a680f92f035e56058a39 19-Mar-2009 Douglas Gregor <dgregor@apple.com> Print the context of tag types as part of pretty-printing, e.g.,

struct N::M::foo



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67284 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7e50826d3559f284eee6659f0aa159c68f504b34 19-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Generalize printing of nested-name-specifier sequences for use in both
QualifiedNameType and QualifiedDeclRefExpr. We now keep track of the
exact nested-name-specifier spelling for a QualifiedDeclRefExpr, and
use that spelling when printing ASTs. This fixes PR3493.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/Type.h
bad351822117eaf280081494e3dbe4a06c0dbfcf 19-Mar-2009 Douglas Gregor <dgregor@apple.com> Generalize printing of nested-name-specifier sequences for use in both
QualifiedNameType and QualifiedDeclRefExpr. We now keep track of the
exact nested-name-specifier spelling for a QualifiedDeclRefExpr, and
use that spelling when printing ASTs. This fixes PR3493.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67283 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/NestedNameSpecifier.h
ST/Type.h
734b4baa8e7677d03085a3d3716fa550fb40be63 19-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a representation for types that we referred to via a
qualified name, e.g.,

foo::x

so that we retain the nested-name-specifier as written in the source
code and can reproduce that qualified name when printing the types
back (e.g., in diagnostics). This is PR3493, which won't be complete
until finished the other tasks mentioned near the end of this commit.

The parser's representation of nested-name-specifiers, CXXScopeSpec,
is now a bit fatter, because it needs to contain the scopes that
precede each '::' and keep track of whether the global scoping
operator '::' was at the beginning. For example, we need to keep track
of the leading '::', 'foo', and 'bar' in

::foo::bar::x

The Action's CXXScopeTy * is no longer a DeclContext *. It's now the
opaque version of the new NestedNameSpecifier, which contains a single
component of a nested-name-specifier (either a DeclContext * or a Type
*, bitmangled).

The new sugar type QualifiedNameType composes a sequence of
NestedNameSpecifiers with a representation of the type we're actually
referring to. At present, we only build QualifiedNameType nodes within
Sema::getTypeName. This will be extended to other type-constructing
actions (e.g., ActOnClassTemplateId).

Also on the way: QualifiedDeclRefExprs will also store a sequence of
NestedNameSpecifiers, so that we can print out the property
nested-name-specifier. I expect to also use this for handling
dependent names like Fibonacci<I - 1>::value.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/NestedNameSpecifier.h
ST/Type.h
ST/TypeNodes.def
arse/DeclSpec.h
e4e5b054b4917f0ee493bb2fda5b1ec749bfb9a1 19-Mar-2009 Douglas Gregor <dgregor@apple.com> Introduce a representation for types that we referred to via a
qualified name, e.g.,

foo::x

so that we retain the nested-name-specifier as written in the source
code and can reproduce that qualified name when printing the types
back (e.g., in diagnostics). This is PR3493, which won't be complete
until finished the other tasks mentioned near the end of this commit.

The parser's representation of nested-name-specifiers, CXXScopeSpec,
is now a bit fatter, because it needs to contain the scopes that
precede each '::' and keep track of whether the global scoping
operator '::' was at the beginning. For example, we need to keep track
of the leading '::', 'foo', and 'bar' in

::foo::bar::x

The Action's CXXScopeTy * is no longer a DeclContext *. It's now the
opaque version of the new NestedNameSpecifier, which contains a single
component of a nested-name-specifier (either a DeclContext * or a Type
*, bitmangled).

The new sugar type QualifiedNameType composes a sequence of
NestedNameSpecifiers with a representation of the type we're actually
referring to. At present, we only build QualifiedNameType nodes within
Sema::getTypeName. This will be extended to other type-constructing
actions (e.g., ActOnClassTemplateId).

Also on the way: QualifiedDeclRefExprs will also store a sequence of
NestedNameSpecifiers, so that we can print out the property
nested-name-specifier. I expect to also use this for handling
dependent names like Fibonacci<I - 1>::value.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67265 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/NestedNameSpecifier.h
ST/Type.h
ST/TypeNodes.def
arse/DeclSpec.h
96969e234609db1d2d27a07d99084352b3d0804e 19-Mar-2009 Gabor Greif <ggreif@gmail.com> Add a sugared version of ASTOwningResult::take,
that does a downcast. It is named takeAs<T>().
The plain-pointer version is also added, but
that side seems to be seriously bitrotten.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67258 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
fb5cab24e271d35e2476c5f60d28ddbabc6ac492 19-Mar-2009 Gabor Greif <ggreif@gmail.com> Add a sugared version of ASTOwningResult::take,
that does a downcast. It is named takeAs<T>().
The plain-pointer version is also added, but
that side seems to be seriously bitrotten.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67258 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
1fef88d69733424179f5b90632e116101d7010e0 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Execute jobs; no pipe support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Compilation.h
49b98e700e300b8a61b2f7fbb0bb22264e8ec27a 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Execute jobs; no pipe support yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Compilation.h
2c7de6dabb766d0ab8350090fc9afc18743378de 18-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> objc: Implemented variables declared in class interface
whose sema decl is at the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
38e24c782c17b6058bf61d635747bbde19fb1bc7 18-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> objc: Implemented variables declared in class interface
whose sema decl is at the translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
31a76e3eee82b52694c3f7e2b8fcb89fb364f407 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Cleanup temporary/result files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Compilation.h
e530ad407af4a8904377592bfdb236acd320c6c2 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Cleanup temporary/result files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Compilation.h
6182bb6ee658dd94902c209e708a6d7ab0e9fc86 18-Mar-2009 Ted Kremenek <kremenek@apple.com> Add stub TableGen file for diagnostic options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticOptions.td
c1ce194ea5e2a3e6ab2f27edad93fd680c381246 18-Mar-2009 Ted Kremenek <kremenek@apple.com> Add stub TableGen file for diagnostic options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67238 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticOptions.td
cc7600c5c957e9c6fe15b9fc947ec6a2b8af25e6 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support ToolChain specific path lists to search for files and
programs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67229 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
0edefebc10fbc627d55d53936fc66178d1c08da1 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support ToolChain specific path lists to search for files and
programs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67229 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
b6ddc9573ba61f8d06b522c512c1f78f5b9dbea1 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Construct temporary file names.
- This is still suboptimal, but should at least be workable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Driver.h
214399ebd73545dde02b4a45872e7ca9e1d9e742 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Construct temporary file names.
- This is still suboptimal, but should at least be workable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Driver.h
4c31702d942cb5b00c02a999202b4dadad506341 18-Mar-2009 Ted Kremenek <kremenek@apple.com> HTML rewriter: Don't replace tabs with spaces by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67221 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
9a688659ed6bb3f6a3e4d76a88c2c626616e3c90 18-Mar-2009 Ted Kremenek <kremenek@apple.com> HTML rewriter: Don't replace tabs with spaces by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67221 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
374511f867e2b07197cb2847d96a3f28b4add859 18-Mar-2009 Ted Kremenek <kremenek@apple.com> Refactor 'Warning', 'Extension', and 'ExtWarn' TableGen classes to subclass
'DiagnosticControlled'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
dd62beb8f7004c14c6f7731cb57e2c188051208e 18-Mar-2009 Ted Kremenek <kremenek@apple.com> Refactor 'Warning', 'Extension', and 'ExtWarn' TableGen classes to subclass
'DiagnosticControlled'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67209 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
b4266ea0b557935691f48e591577b6edf65c4900 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Port Clang argument translation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67193 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
1d46033f760ba5fd266ce59fe391fac473f04f52 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Port Clang argument translation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67193 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
3a4dcdff6934a670b6ed4f4ced3d56945eb6a8d7 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add argument translation utilities to ArgList.
- Support things like telling which -ffoo -fno-foo option won, and
forwarding all arguments matching a certain set of options to the
tool.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67189 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
18a7f33af877fca8f72cfde00d52f4aef600547f 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add argument translation utilities to ArgList.
- Support things like telling which -ffoo -fno-foo option won, and
forwarding all arguments matching a certain set of options to the
tool.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67189 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
790b1e66aa0b0167ea3d8e8bff68241ebc761fe3 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forgot to mark -### as a driver option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67184 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
e324ffe33e179f6167d18834e15c48c49e314bb4 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Forgot to mark -### as a driver option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67184 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
5591e8d604aba4163994f2906f906fda4ab9ef86 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add "d" flag to Options.def for options which are completely
handled by driver.
- This is not very precise, we use it to drive the "forward-to-gcc"
predicate, when trying to talk to a generic gcc tool.

- Slightly better than what ccc was doing, and should be good
enough. Platforms which want a robust driver should implement a
proper tool chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67181 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.def
6d954d788925e6b80077ef379c8eeb028cc31d0e 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add "d" flag to Options.def for options which are completely
handled by driver.
- This is not very precise, we use it to drive the "forward-to-gcc"
predicate, when trying to talk to a generic gcc tool.

- Slightly better than what ccc was doing, and should be good
enough. Platforms which want a robust driver should implement a
proper tool chain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67181 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.def
933ac4568614ff525639e2d077b721b80c453154 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: ConstructJob also needs to know the destination (where to put
its commands).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67179 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
river/Tool.h
871adcf4e41285e3f4c3b62eaa1b2e05b60b92da 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: ConstructJob also needs to know the destination (where to put
its commands).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67179 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
river/Tool.h
1b265978eb3a9b001c15f39cec70c63cb2a05c44 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement -### (hard to tell, since we don't actually
construct any jobs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67177 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
24b5560b6ea51b8a260194710468fa060775fc01 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement -### (hard to tell, since we don't actually
construct any jobs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67177 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
7b9e5b6c72c0db181d33670a4f1c425cbc8cb055 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add forwarding methods to underlying list for PipedJob and
JobList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67176 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
cfcb96f610d6354234e8c33f3a25e340f6cd3a80 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add forwarding methods to underlying list for PipedJob and
JobList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67176 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
4d093fa5555c845a5742baaac91cb95cb4f5386d 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Make Arg::Claimed mutable.
- This is unfortunate but necessary to retain any utility for const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67173 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
456422c7eccee0e74893eb52b7fcd9171b6ea079 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Make Arg::Claimed mutable.
- This is unfortunate but necessary to retain any utility for const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67173 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
7e4387447ed822f95f47bb4847a5e6dee2f93064 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Rename Command::Argv to Command::Arguments to make it clearer
that this does not include the implicit first argument (the executable
name).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67172 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
d57ac5990d22592665a67a28fc5d39f1155424d3 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Rename Command::Argv to Command::Arguments to make it clearer
that this does not include the implicit first argument (the executable
name).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67172 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
be4533875746acc5b7ea98de41b9ea4051819920 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add a dash of const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67170 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
62cf601812e03dd9bc5df42b8ef06a0cdedc38bf 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add a dash of const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67170 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
00fd37960476697fe729a16f8c2c55213d6ef1d4 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out Tool::ConstructJob.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67169 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
river/Util.h
47ac7d27c44bd64a7d0fc03d4babc196cf2b8230 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out Tool::ConstructJob.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67169 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
river/Util.h
2b856ce04ee93882c46e6642314d98d7e4f14a83 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Ditch Driver::DefaultToolChain, this can vary between compilations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67162 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Driver.h
10ffa9a4887d9376e3eb3598e40523d1b58773c9 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Ditch Driver::DefaultToolChain, this can vary between compilations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67162 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Driver.h
c42a0f42b5288f847eb4f83a9470021939d58afa 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Err, didn't mean to commit this part yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67159 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
d9c834f6af12ab21d5d4af8150e6fb94eadda043 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Err, didn't mean to commit this part yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67159 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
73f7b8c73ad89e96bfdea06b56528f102a431b88 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move actions into Compilation, and construct the compilation
earlier.

- This gives us a simple ownership model, and allows clients access
to more information should they ever want it.

- We now free Actions correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67158 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
21549237f14505cfc2a18a06416372a36229d0ce 18-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Move actions into Compilation, and construct the compilation
earlier.

- This gives us a simple ownership model, and allows clients access
to more information should they ever want it.

- We now free Actions correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67158 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
1925278b252f9d2674f59271558d8e2aa775458e 18-Mar-2009 Chris Lattner <sabre@nondot.org> don't crash when sentinel attribute is used on function without a prototype,
discovered as part of PR3817


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
897cd90fef4cd5139999585f3af31d85c2d07720 18-Mar-2009 Chris Lattner <sabre@nondot.org> don't crash when sentinel attribute is used on function without a prototype,
discovered as part of PR3817


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
835327293da59eb16667ae5a2b7158131865a079 17-Mar-2009 Chris Lattner <sabre@nondot.org> Fix Type::getDesugaredType() to remove all direct sugar on
a type. For example, if we have a typedef of a typeof of
int, we strip all the say down to int. This allows us to
simplify the getAs* methods, and is the first step towards
fixing PR3817


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2fa8c2598c2615da4639b4e42e9079647bd3aea4 17-Mar-2009 Chris Lattner <sabre@nondot.org> Fix Type::getDesugaredType() to remove all direct sugar on
a type. For example, if we have a typedef of a typeof of
int, we strip all the say down to int. This allows us to
simplify the getAs* methods, and is the first step towards
fixing PR3817


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
07c9a1d3de9711e052206cee39d26d26dccc9c31 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -ccc-print-bindings option (for testing); the Python
driver has no corresponding option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67125 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
5c3c1d7b494660ba5e8983ee4584622750725ac2 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add -ccc-print-bindings option (for testing); the Python
driver has no corresponding option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67125 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
eed1b4206be7cc0df6e18db75ea00263adbd7b5b 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add name to Tool (for testing/debugging) and move GCC_* tools
into gcc:: namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67120 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
31b1e5437e7435879fc044afb77ff27096008e72 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add name to Tool (for testing/debugging) and move GCC_* tools
into gcc:: namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67120 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
b5d3e9547d8ce2d566cacac0ddf5708689ef1f24 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out generic GCC tool selection.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67108 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
670b7f4fe6720e91520ec5a993b33c00058ed77a 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out generic GCC tool selection.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67108 91177308-0d34-0410-b5e6-96231b3b80d8
river/Tool.h
cd5386954ad3146ac973237c909d9c21759d30c9 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pass HostInfo reference into ToolChain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67105 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
fa0cda430f7324404ddd74f41a3b8f5f749d7ec1 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pass HostInfo reference into ToolChain.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67105 91177308-0d34-0410-b5e6-96231b3b80d8
river/ToolChain.h
1b39ef49e647e821486916cafab07d641277c054 17-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor instantiation of declarations within a template into a much
cleaner visitor framework.

Added a visitor for declarations, which is quite similar to the
visitor for statatements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclVisitor.h
8dbc2694424b4e842b1d5ea39744a137b58600c3 17-Mar-2009 Douglas Gregor <dgregor@apple.com> Refactor instantiation of declarations within a template into a much
cleaner visitor framework.

Added a visitor for declarations, which is quite similar to the
visitor for statatements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclVisitor.h
08966caa2b46f3a963299ef50102cf7a28312825 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pass Driver reference down into Host info, which will need it
to pass to ToolChains, which may need Driver specific information (for
example, to form search paths).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67102 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
e504952bc89f79fc9ff54d5641ab30bb07ec435e 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pass Driver reference down into Host info, which will need it
to pass to ToolChains, which may need Driver specific information (for
example, to form search paths).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67102 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
7424b8a2c4d6ecb1f6b0360f146a84862f2354aa 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Hide HostInfo implementations.
- Also, normalize arch names a tad and stub out getToolChain
implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67091 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
1fd6c4b8abbbdcbae0e221f35100102112dabff2 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Hide HostInfo implementations.
- Also, normalize arch names a tad and stub out getToolChain
implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67091 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
35f55a2724cd51049cb7303144ee27c0fab34dc8 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two option form of ArgList::getLastArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67090 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
cd4e186cdc1db0dcac937eb20afe8b5f5ff1a38d 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add two option form of ArgList::getLastArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67090 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
01fb26a9fd7a5550d736b70f9ac8462a764b66f3 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add logic for computing where to put job outputs (pipe,
temporary file, user provided name, derived name).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67088 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
441d060838a5797691777dfcc992ff836b73dcd1 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add logic for computing where to put job outputs (pipe,
temporary file, user provided name, derived name).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67088 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
290bb3d3948fbea6650944ce880a2b276eb361b9 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add list of temporary and result files to Compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67087 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
df78a9515c108677ed42c2b982c612362f18c277 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add list of temporary and result files to Compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67087 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
019b241c8b5d6929f15168bb97eeb614a2729d73 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add ArgList::MakeArgString and make ArgList::Make* const.
- Slightly strange, but the idea is that the ArgList data structure
is primarily a list of arguments; we want to allow clients to still
add argument strings to an ArgList to avoid worrying about string
lifetimes (or unnecessary string copying).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67086 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
3494bb1e01eb5f90d4dc9c91b912daf945da4ff5 17-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add ArgList::MakeArgString and make ArgList::Make* const.
- Slightly strange, but the idea is that the ArgList data structure
is primarily a list of arguments; we want to allow clients to still
add argument strings to an ArgList to avoid worrying about string
lifetimes (or unnecessary string copying).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67086 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
ce6fff0486d0e15bc969fb0e3e4850c0784e997f 17-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Almost complete implementation of rvalue references. One bug, and a few unclear areas. Maybe Doug can shed some light on some of the fixmes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67059 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
7c80bd64032e610c0dbd74fc0ef6ea334447f2fd 17-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Almost complete implementation of rvalue references. One bug, and a few unclear areas. Maybe Doug can shed some light on some of the fixmes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67059 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ST/TypeNodes.def
asic/DiagnosticSemaKinds.def
asic/DiagnosticSemaKinds.td
026a2ef889178bbf6707465b73909aa38aaf7e6b 17-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Build system changes to use TableGen to generate the various
diagnostics. This builds on the patch that Sebastian committed and
then revert. Major differences are:

- We don't remove or use the current ".def" files. Instead, for now,
we just make sure that we're building the ".inc" files.
- Fixed CMake makefiles to run TableGen and build the ".inc" files
when needed. Tested with both the Xcode and Makefile generators
provided by CMake, so it should be solid.
- Fixed normal makefiles to handle out-of-source builds that involve
the ".inc" files.

I'll send a separate patch to the list with Sebastian's changes that
eliminate the use of the .def files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
asic/Makefile
MakeLists.txt
akefile
a393e9eedcc28b25f521a4feceb3b56e3d0d360f 17-Mar-2009 Douglas Gregor <dgregor@apple.com> Build system changes to use TableGen to generate the various
diagnostics. This builds on the patch that Sebastian committed and
then revert. Major differences are:

- We don't remove or use the current ".def" files. Instead, for now,
we just make sure that we're building the ".inc" files.
- Fixed CMake makefiles to run TableGen and build the ".inc" files
when needed. Tested with both the Xcode and Makefile generators
provided by CMake, so it should be solid.
- Fixed normal makefiles to handle out-of-source builds that involve
the ".inc" files.

I'll send a separate patch to the list with Sebastian's changes that
eliminate the use of the .def files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/CMakeLists.txt
asic/Makefile
MakeLists.txt
akefile
7ce6adde549f61daff167128dadfc0fad8a9c11f 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement majority tool binding logic.
- Still need code for determining proper output location.

- Doesn't work yet, of course, as the host isn't providing real
tool chains.

- Interface still has a few warts, but has gotten a nice bit of
polish during the rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Driver.h
f353c8cc2ee1cc16ff194b399a8d951f707fb129 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Implement majority tool binding logic.
- Still need code for determining proper output location.

- Doesn't work yet, of course, as the host isn't providing real
tool chains.

- Interface still has a few warts, but has gotten a nice bit of
polish during the rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Driver.h
9d625e1c4e1e2931bad73515d051e0f2a090ceec 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Migrate some data into the Compilation; after pipelining
access to most data should go through the current Compilation, not the
Driver (which shouldn't be specialized on variables for a single
compilation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67037 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
586dc233bb88f2920c9f3638f69cef0ccd55dced 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Migrate some data into the Compilation; after pipelining
access to most data should go through the current Compilation, not the
Driver (which shouldn't be specialized on variables for a single
compilation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67037 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
e1cef7d00e0f9ac3afeac2284bbcfd1abda7c5ff 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch Tool and ToolChain classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67036 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Tool.h
river/ToolChain.h
2ba38ba9a18b8ec88e2509fad622eeec01562769 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch Tool and ToolChain classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67036 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Tool.h
river/ToolChain.h
44710a5db41b3c30bdf35f59117792492c090d7f 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Include Casting header definitions in a few places, add
Action::getInputs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67035 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Job.h
a1ead48a4e9961c7eb22592310c7e9c30cb56794 16-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Include Casting header definitions in a few places, add
Action::getInputs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67035 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Job.h
9951dbcaa76733b05b910a5c3e61d3c1ce67e4c1 15-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for rvalue references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67033 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
05532f2a88161eb6d9b796614f1b82dca541ff22 15-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for rvalue references.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67033 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
c45057a4b1aae40e5b63424444cb2615a1bc4399 15-Mar-2009 Anders Carlsson <andersca@mac.com> Handle static_asserts when instantiating structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
94b15fbc3a10cdfb1639528a8a773b66a1e7cd9e 15-Mar-2009 Anders Carlsson <andersca@mac.com> Handle static_asserts when instantiating structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
7f2e7440faa9260d23fcbc0a0368d10f9538b462 15-Mar-2009 Anders Carlsson <andersca@mac.com> Add the ability to clone integer and string literals. Use it when instantiating template expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67030 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a135fb43eb94524a6529768596a4533eed9aa70d 15-Mar-2009 Anders Carlsson <andersca@mac.com> Add the ability to clone integer and string literals. Use it when instantiating template expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67030 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
76bb8ec9aab1ccfcf2b5665ce7e8ed9e591ad143 15-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a bunch of actions to smart pointers, and also bring PrintParserCallbacks a bit more in line with reality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67029 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f53597fb16142bdb4a66901f8c0b768db4f2a548 15-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a bunch of actions to smart pointers, and also bring PrintParserCallbacks a bit more in line with reality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67029 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
de92817bd6070904a4e24e8b5e35c4836a38a96e 15-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Keep diagnostic td in sync with r67015.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67026 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
8afc3da10f9bdf3036ee2b8253d329f97a15219b 15-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Keep diagnostic td in sync with r67015.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67026 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
cd695c24f602ea3adea7316d7a891bf48594369a 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67021 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
4abaed07d1b8037870a1c0de75746aa74d56c428 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67021 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
114ec035530be59bc6f8dab46e8bd89d8e916158 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Typo fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
223476833a3aa5f383529e914ac28b5aa627aac5 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Typo fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
c413f8223307f9578ddb67eb184e794205d6c9f7 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Start warning about unused arguments.
- This has a number of current flaws, enabling now to flush out
problems while bringing up other parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
river/Arg.h
8d2554a2c3201aa664cbf2108cf9d57aa0aa4b0a 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Start warning about unused arguments.
- This has a number of current flaws, enabling now to flush out
problems while bringing up other parts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67015 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
river/Arg.h
e9c70fa179dff6bd5e0c8c9efb5d347c2ff985eb 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Update ArgList::{hasArg,getLastArg} to optionally claim the
arguments if they exist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67014 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
8022fd46d45005de63306a7513aece20a1be16ed 15-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Update ArgList::{hasArg,getLastArg} to optionally claim the
arguments if they exist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67014 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
eee67792c8f4abd48c28e7b3267022fda25bca8d 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Revert the switch to the tablegen diags. It fails for seperate objdir builds and cmake builds, and I have no clue what to do about it. Revisit this after someone with a clue about the build systems has looked at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/CMakeLists.txt
asic/Diagnostic.h
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriverKinds.def
asic/DiagnosticFrontendKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
asic/Makefile
MakeLists.txt
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
akefile
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
e89b6b272f9f3b15afa56a701a4d7a6b1001ed34 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Revert the switch to the tablegen diags. It fails for seperate objdir builds and cmake builds, and I have no clue what to do about it. Revisit this after someone with a clue about the build systems has looked at it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/CMakeLists.txt
asic/Diagnostic.h
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriverKinds.def
asic/DiagnosticFrontendKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
asic/Makefile
MakeLists.txt
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
akefile
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
fa70786a0bc7a28c23c389fbe538038e1ea97ce2 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Switch diagnostics from .def to tablegen files. Please validate the Windows build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/CMakeLists.txt
asic/Diagnostic.h
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriverKinds.def
asic/DiagnosticFrontendKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
asic/Makefile
MakeLists.txt
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
akefile
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
3801d71fbeb6e74a22cdd6a858e10d887bc29c7a 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Switch diagnostics from .def to tablegen files. Please validate the Windows build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/CMakeLists.txt
asic/Diagnostic.h
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriverKinds.def
asic/DiagnosticFrontendKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
asic/Makefile
MakeLists.txt
river/DriverDiagnostic.h
rontend/FrontendDiagnostic.h
ex/LexDiagnostic.h
akefile
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
3776eb10d9ca9b2d46fa85af87e1119af2272d71 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Update tablegen diagnostic files to be in sync with the def files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
f4dc83c6377fc14d230ccc3e82dc24d03b14f725 14-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Update tablegen diagnostic files to be in sync with the def files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
c5f6de063c95e74de9f6d52ce7332cc260320ad6 14-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove dead DeclarationName constructors that involving knowing about the
internal implementation of Selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
3eb8dd78a622d257a7fed279714428c3de906f93 14-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove dead DeclarationName constructors that involving knowing about the
internal implementation of Selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ed69156f9911f1107f284a0b62bdc62295979867 14-Mar-2009 Anders Carlsson <andersca@mac.com> More static_assert work. Check that the assert expr is valid and show an error if it's false. Create the declaration and add it to the current context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
asic/DiagnosticSemaKinds.def
arse/Action.h
fb311762bb52dc015c02cb257d2913f104b556f8 14-Mar-2009 Anders Carlsson <andersca@mac.com> More static_assert work. Check that the assert expr is valid and show an error if it's false. Create the declaration and add it to the current context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
asic/DiagnosticSemaKinds.def
arse/Action.h
afc86944eda447fb5bb71ab1a664e594b712f8c7 14-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Check for overflow and signedness problems with template
arguments. Eliminates a FIXME.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
f80a9d5c2ccc465211178223799217f7a42774ae 14-Mar-2009 Douglas Gregor <dgregor@apple.com> Check for overflow and signedness problems with template
arguments. Eliminates a FIXME.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66993 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7c568a445f1fa9278ff887e4a5ffd19ad05ee0f7 14-Mar-2009 Ted Kremenek <kremenek@apple.com> Make Selector::getIdentifierInfo() private. I took a first attempt at this last
week in:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090302/013580.html

That patch caused the output of the diagnostics to change. Since
'DeclarationName' can already reason about Selectors and the Diagnostics logic
reasons about DeclarationName, there is no additional code needed to get the
diagnostics working by making Selector::getIdentifierInfo() private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66992 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
8af2c16571f3aade6d47ce81fa3857d01d375719 14-Mar-2009 Ted Kremenek <kremenek@apple.com> Make Selector::getIdentifierInfo() private. I took a first attempt at this last
week in:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090302/013580.html

That patch caused the output of the diagnostics to change. Since
'DeclarationName' can already reason about Selectors and the Diagnostics logic
reasons about DeclarationName, there is no additional code needed to get the
diagnostics working by making Selector::getIdentifierInfo() private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66992 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
544cda6467e24d0ced693fbb52f800405de610e7 14-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that the canonical representation of integral template arguments uses the bitwidth and signedness of the template parameter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
5b0f752655cc94b970113235110b56a722eb40d4 14-Mar-2009 Douglas Gregor <dgregor@apple.com> Make sure that the canonical representation of integral template arguments uses the bitwidth and signedness of the template parameter

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
c78182dea4396fba411d2526a1386ca994eee6c0 14-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for the prefix unary operators. As
always, refactored the existing logic to tease apart the parser action
and the semantic analysis shared by the parser and template
instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66987 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bc736fceca6f0bca31d16003a7587857190408fb 14-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement template instantiation for the prefix unary operators. As
always, refactored the existing logic to tease apart the parser action
and the semantic analysis shared by the parser and template
instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66987 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
50e035e408ae0217c0cb0fe8f142cd37ae886230 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::{isAcceptedByClang,isCXX} predicates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66986 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
4db938ceb72dbaa5f7b50f6420a72629acbf29eb 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::{isAcceptedByClang,isCXX} predicates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66986 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
56085246b0e1ea62320c484df82c4397f45eb41b 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add simple Job classes, simple wrappers for information about
what processes to execute during a compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66985 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
789e220d481371d52bd6265b5c414c5fe277f76b 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add simple Job classes, simple wrappers for information about
what processes to execute during a compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66985 91177308-0d34-0410-b5e6-96231b3b80d8
river/Job.h
a24e8d5003c83020e9cb821a9f6b2cbc10915b2b 14-Mar-2009 Anders Carlsson <andersca@mac.com> Pass more sane arguments to ActOnStaticAssertDeclaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66983 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ad5f960f9e42568a87bf5e03dce7ad878f9ba6da 14-Mar-2009 Anders Carlsson <andersca@mac.com> Pass more sane arguments to ActOnStaticAssertDeclaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66983 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d436b8ed860b2bebce2906fa734766b890c801c9 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Provide food and shelter for Action vtables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66978 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
f40ed17472a39097cc5039ed437445289487c9bf 14-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Provide food and shelter for Action vtables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66978 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
911b867858e37e8c5fcf105f75423cff911c0c09 13-Mar-2009 Chris Lattner <sabre@nondot.org> wire up a new -fno-builtin option, make it control things like simplifylibcalls,
etc and make freestanding imply it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
asic/LangOptions.h
7644f0726c310ec4224085eaea5f9aff8b957d90 13-Mar-2009 Chris Lattner <sabre@nondot.org> wire up a new -fno-builtin option, make it control things like simplifylibcalls,
etc and make freestanding imply it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
asic/LangOptions.h
50f45b6375f57078e247fa75dce10b5dc70dbed0 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Include component warning TableGen files in Diagnostic.td.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
0527bcc36d67c4475d95669944d667c6f19f4ea4 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Include component warning TableGen files in Diagnostic.td.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
47d762ee90d6d91fb851a41d833b4bdc2ad480ea 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sprinkle some consts in, stub out BuildJobs method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66968 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
57b704d8d8f49bcaf856a3e37941d5ac6456eb50 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sprinkle some consts in, stub out BuildJobs method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66968 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
c8e528ee11acaa9d8320d752820d09e579c5e4b0 13-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3798 by ignoring all diagnostics generated while repreprocessing a file in rewrite macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66961 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7c175fb196a2bc3dbc86ea3865c713e1875f3f6d 13-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3798 by ignoring all diagnostics generated while repreprocessing a file in rewrite macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66961 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f1e7b79fc7d42da912a08ea8f09089f9bc12712c 13-Mar-2009 Chris Lattner <sabre@nondot.org> make Preprocessor::Diags be a pointer instead of a reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66955 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
836040f9eafe862fb1607df5c30cd3df0c22c832 13-Mar-2009 Chris Lattner <sabre@nondot.org> make Preprocessor::Diags be a pointer instead of a reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66955 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
396f114b5e704ed6d0ca7f89caf377322f287ead 13-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for several more kinds of expressions:
- C++ function casts, e.g., T(foo)
- sizeof(), alignof()

More importantly, this allows us to verify that we're performing
overload resolution during template instantiation, with
argument-dependent lookup and the "cached" results of name lookup from
the template definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ba49817c5b9f502602672861cf369fd0e53966e8 13-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement template instantiation for several more kinds of expressions:
- C++ function casts, e.g., T(foo)
- sizeof(), alignof()

More importantly, this allows us to verify that we're performing
overload resolution during template instantiation, with
argument-dependent lookup and the "cached" results of name lookup from
the template definition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
be54e2ad1f57b0cce18fd7288992e61143e1d109 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66944 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
e8463ef889be035312c2e40fa318bbbcfce02a3e 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66944 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticFrontendKinds.td
2da0d0df43c875938cbf58cb466b0f1cf63bce66 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Add missing ';'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
88ef4c48277cb2444d57e67fd5234d9b0509d7e9 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Add missing ';'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.td
00fe3f63604d2be2fafbf42fe5df0795d7d29116 13-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Refactor the way we handle operator overloading and template
instantiation for binary operators. This change moves most of the
operator-overloading code from the parser action ActOnBinOp to a new,
parser-independent semantic checking routine CreateOverloadedBinOp.

Of particular importance is the fact that CreateOverloadedBinOp does
*not* perform any name lookup based on the current parsing context (it
doesn't take a Scope*), since it has to be usable during template
instantiation, when there is no scope information. Rather, it takes a
pre-computed set of functions that are visible from the context or via
argument-dependent lookup, and adds to that set any member operators
and built-in operator candidates. The set of functions is computed in
the parser action ActOnBinOp based on the current context (both
operator name lookup and argument-dependent lookup). Within a
template, the set computed by ActOnBinOp is saved within the
type-dependent AST node and is augmented with the results of
argument-dependent name lookup at instantiation time (see
TemplateExprInstantiator::VisitCXXOperatorCallExpr).

Sadly, we can't fully test this yet. I'll follow up with template
instantiation for sizeof so that the real fun can begin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66923 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Type.h
063daf6e196c51f162e0485478355d8e280eef5c 13-Mar-2009 Douglas Gregor <dgregor@apple.com> Refactor the way we handle operator overloading and template
instantiation for binary operators. This change moves most of the
operator-overloading code from the parser action ActOnBinOp to a new,
parser-independent semantic checking routine CreateOverloadedBinOp.

Of particular importance is the fact that CreateOverloadedBinOp does
*not* perform any name lookup based on the current parsing context (it
doesn't take a Scope*), since it has to be usable during template
instantiation, when there is no scope information. Rather, it takes a
pre-computed set of functions that are visible from the context or via
argument-dependent lookup, and adds to that set any member operators
and built-in operator candidates. The set of functions is computed in
the parser action ActOnBinOp based on the current context (both
operator name lookup and argument-dependent lookup). Within a
template, the set computed by ActOnBinOp is saved within the
type-dependent AST node and is augmented with the results of
argument-dependent name lookup at instantiation time (see
TemplateExprInstantiator::VisitCXXOperatorCallExpr).

Sadly, we can't fully test this yet. I'll follow up with template
instantiation for sizeof so that the real fun can begin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66923 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Type.h
2b30d91cc05f0698d885464bbe07b03727d2528c 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Forward -fheinous-gnu-extensions to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66915 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
13135a6171e5eb1dd0b10f49305bb757b8f8b20c 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Forward -fheinous-gnu-extensions to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66915 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
dd863aa6f9b9514480ff6b7e6f927eb6cc9835ff 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Some minor bug fixes.
- language recognition was recognizing prefixes incorrectly.
- -x none wasn't working.
- test for "can lipo" was backwords.
- missed a '"' in -ccc-print-phases


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66911 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
3dbd6c51bcd8a730c3fe58e29d7e0d999a94fa91 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Some minor bug fixes.
- language recognition was recognizing prefixes incorrectly.
- -x none wasn't working.
- test for "can lipo" was backwords.
- missed a '"' in -ccc-print-phases


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66911 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.def
1e3eedb7a8ef93f39107d9da4a5bba25899ab50d 13-Mar-2009 Chris Lattner <sabre@nondot.org> introduce a new -fheinous-gnu-extensions flag that enables really
really horrible extensions that are disabled by default but that can
be accepted by -fheinous-gnu-extensions (but which always emit a
warning when enabled).

As our first instance of this, implement PR3788/PR3794, which allows
non-lvalues in inline asms in contexts where lvalues are required. bleh.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/LangOptions.h
810f6d5d6223adaab0ccf0139f40de6484ad1bb5 13-Mar-2009 Chris Lattner <sabre@nondot.org> introduce a new -fheinous-gnu-extensions flag that enables really
really horrible extensions that are disabled by default but that can
be accepted by -fheinous-gnu-extensions (but which always emit a
warning when enabled).

As our first instance of this, implement PR3788/PR3794, which allows
non-lvalues in inline asms in contexts where lvalues are required. bleh.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/LangOptions.h
ab0b8b17cf7b4eb4e367e8ed9ed23b7139b4be62 13-Mar-2009 Chris Lattner <sabre@nondot.org> add a helper function to strip noop casts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ecdd84147c0765caa999ddc22dde25b42712bb4d 13-Mar-2009 Chris Lattner <sabre@nondot.org> add a helper function to strip noop casts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
216ee1868363f079762ac59370fd1e5f7d8c3810 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66905 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
36c233837a37e295ecef133739d2b6429c72b960 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66905 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
494cb0fa1fd613f3dff87a25ab47049f1d9201f9 13-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6675489> BlockDecl should not use llvm::smallvector.

Also changed BlockDecl API to be more consistent (wrt FunctionDecl).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e78b809bbcd92928a63da81f2cd843faad3e4dfd 13-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6675489> BlockDecl should not use llvm::smallvector.

Also changed BlockDecl API to be more consistent (wrt FunctionDecl).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b88d81c0e720bd43335c2776841fa7597c3ca66d 13-Mar-2009 Steve Naroff <snaroff@apple.com> Remove ActiveScope (revert http://llvm.org/viewvc/llvm-project?view=rev&revision=65694 and http://llvm.org/viewvc/llvm-project?view=rev&revision=66741).

Will replace with something better today...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66893 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
caaacecb2b64e6d2e402533baffda4cb540f4145 13-Mar-2009 Steve Naroff <snaroff@apple.com> Remove ActiveScope (revert http://llvm.org/viewvc/llvm-project?view=rev&revision=65694 and http://llvm.org/viewvc/llvm-project?view=rev&revision=66741).

Will replace with something better today...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66893 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
61705c15dcc579c0c51454de85a4881d9f88df61 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix failure reported by Sebastian of test/Analysis/ptr-arith.c when the target
is 64-bit. I used his suggestion of doing a direct bitwidth/signedness
conversion of the 'offset' instead of just changing the sign. For more
information, see:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2009-March/004587.html


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66892 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
610e81d6b7248ce4be4be2252b03a5d4052c9835 13-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix failure reported by Sebastian of test/Analysis/ptr-arith.c when the target
is 64-bit. I used his suggestion of doing a direct bitwidth/signedness
conversion of the 'offset' instead of just changing the sign. For more
information, see:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2009-March/004587.html


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66892 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
494646bbd807879ba5ec2d7209adf188f091a42c 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -ccc-print-phases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66888 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
ba1021388e6839b76c8968b931189361c7286674 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Support -ccc-print-phases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66888 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
612bd74ddac1eb9e71e06aac65c3fb165fc617f5 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add cast<> support for Action, and some other accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66887 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
85da0071a4ab7d6f06831d20bad79122d7407df7 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add cast<> support for Action, and some other accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66887 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
85cb359c04709148c2ef29c4c5c204fc7bd53e85 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Complete "pipelining" (building the list of abstract actions
to perform). Still doesn't do anything interesting.
- This code came out much cleaner than in ccc with the reworked
phases & mapping of types to lists of compilation steps (phases) to
perform.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
river/Driver.h
ad2a9af666efdd9afe3bb5f886bcb0d1c9a0f0c3 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Complete "pipelining" (building the list of abstract actions
to perform). Still doesn't do anything interesting.
- This code came out much cleaner than in ccc with the reworked
phases & mapping of types to lists of compilation steps (phases) to
perform.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66885 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
river/Driver.h
d205a6ce25c57520d30c7097857c1633f2215e13 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add remaining Action classes we need.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66882 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
7ab25d5c03db34ca5cbca466a4caa224c4879ec6 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add remaining Action classes we need.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66882 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
7c32db8a63b30571b5d5b5cfa9f9e2d2dfb84803 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::getNumCompilationPhases, getCompilationPhase to
provide information about what steps should be done for a particular
file type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66881 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
c1b5fa81a2dfa4fea2e25bf057363658e7b43681 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::getNumCompilationPhases, getCompilationPhase to
provide information about what steps should be done for a particular
file type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66881 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
d6a1554f3f1e1c0be8591c4838e12e8951da5345 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pull Phase info into separate file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66880 91177308-0d34-0410-b5e6-96231b3b80d8
river/Phases.h
b1efcd824cad12284037cbb63e0312d16ac5c95a 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pull Phase info into separate file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66880 91177308-0d34-0410-b5e6-96231b3b80d8
river/Phases.h
4f4d6bda03c16c45e754e731cfd28d42ac7e5cf8 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Forward -fprint-source-range-info to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66879 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
3bf8224fa3818b5afab529915018facffcb215ea 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Forward -fprint-source-range-info to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66879 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
695a4f5758026f41a046aa9182252c2736048cb4 13-Mar-2009 Chris Lattner <sabre@nondot.org> implement a new -fprint-source-range-info option, which
defaults to off. When enabled, it emits range info along
with the file/line/col information for a diagnostic. This
allows tools that textually parse the output of clang to know
where the ranges are, even if they span multiple lines. For
example, with:

$ clang exprs.c -fprint-source-range-info

We now produce:

exprs.c:21:11:{21:12-21:13}: warning: use of unary operator that may be intended as compound assignment (+=)
var =+ 5; // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}}
^~
exprs.c:22:11:{22:12-22:13}: warning: use of unary operator that may be intended as compound assignment (-=)
var =- 5; // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}}
^~
exprs.c:36:13:{36:3-36:12}: error: assignment to cast is illegal, lvalue casts are not supported
(float*)X = P; // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
~~~~~~~~~ ^
exprs.c:41:4:{41:3-41:4}: error: called object type 'int' is not a function or function pointer
X(); // expected-error {{called object type 'int' is not a function or function pointer}}
~^
exprs.c:45:15:{45:8-45:14}{45:17-45:24}: error: invalid operands to binary expression ('int *' and '_Complex float')
P = (P-42) + Gamma*4; // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}}
~~~~~~ ^ ~~~~~~~
exprs.c:61:7:{61:16-61:22}: error: invalid application of '__alignof' to bitfield
R = __alignof(P->x); // expected-error {{invalid application of '__alignof' to bitfield}} expected-warning {{extension used}}
^ ~~~~~~

Note the range info after the column in the initial diagnostic.

This is obviously really annoying if you're not a tool parsing the
output of clang, which is why it is off by default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66862 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
1fbee5d02860d3c72a713d3dfb4179fa9f400cb3 13-Mar-2009 Chris Lattner <sabre@nondot.org> implement a new -fprint-source-range-info option, which
defaults to off. When enabled, it emits range info along
with the file/line/col information for a diagnostic. This
allows tools that textually parse the output of clang to know
where the ranges are, even if they span multiple lines. For
example, with:

$ clang exprs.c -fprint-source-range-info

We now produce:

exprs.c:21:11:{21:12-21:13}: warning: use of unary operator that may be intended as compound assignment (+=)
var =+ 5; // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}}
^~
exprs.c:22:11:{22:12-22:13}: warning: use of unary operator that may be intended as compound assignment (-=)
var =- 5; // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}}
^~
exprs.c:36:13:{36:3-36:12}: error: assignment to cast is illegal, lvalue casts are not supported
(float*)X = P; // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
~~~~~~~~~ ^
exprs.c:41:4:{41:3-41:4}: error: called object type 'int' is not a function or function pointer
X(); // expected-error {{called object type 'int' is not a function or function pointer}}
~^
exprs.c:45:15:{45:8-45:14}{45:17-45:24}: error: invalid operands to binary expression ('int *' and '_Complex float')
P = (P-42) + Gamma*4; // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}}
~~~~~~ ^ ~~~~~~~
exprs.c:61:7:{61:16-61:22}: error: invalid application of '__alignof' to bitfield
R = __alignof(P->x); // expected-error {{invalid application of '__alignof' to bitfield}} expected-warning {{extension used}}
^ ~~~~~~

Note the range info after the column in the initial diagnostic.

This is obviously really annoying if you're not a tool parsing the
output of clang, which is why it is off by default.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66862 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/TextDiagnosticPrinter.h
9cef867c7ab92c31928c448895ff0ed24ad2e1dd 13-Mar-2009 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
668ab1a36d6a5731c71a75a5f388ecafd538a896 13-Mar-2009 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66860 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
cc006894663904e265ab3337042eb8910250f3a0 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle "immediate" options.

Also, add some FIXMEs, improve doxygen & comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66857 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
cb881672c2c46142ec1bdfa401c9818ae805db0f 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle "immediate" options.

Also, add some FIXMEs, improve doxygen & comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66857 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/HostInfo.h
3fc092fead94ef6753b163765fce8219cfa3b8b8 13-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Improve the representation of operator expressions like "x + y" within
C++ templates. In particular, keep track of the overloaded operators
that are visible from the template definition, so that they can be
merged with those operators visible via argument-dependent lookup at
instantiation time.

Refactored the lookup routines for argument-dependent lookup and for
operator name lookup, so they can be called without immediately adding
the results to an overload set.

Instantiation of these expressions is completely wrong. I'll work on
that next.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
3fd95ce225393fe4a3623e429766a8c3f487ff9d 13-Mar-2009 Douglas Gregor <dgregor@apple.com> Improve the representation of operator expressions like "x + y" within
C++ templates. In particular, keep track of the overloaded operators
that are visible from the template definition, so that they can be
merged with those operators visible via argument-dependent lookup at
instantiation time.

Refactored the lookup routines for argument-dependent lookup and for
operator name lookup, so they can be called without immediately adding
the results to an overload set.

Instantiation of these expressions is completely wrong. I'll work on
that next.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
5a5ec5cb087bf87e189c5d9c5a7cedc71f5f0d9a 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Mark {dump{machine,specs,version},
print-{multi-{directory,lib,os-directory}, search-dirs} as unsupported
instead of handling separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66848 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
8b1604ece7bf6dc2ba811cd7d8767557e55e2ec2 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> ccc/Driver: Mark {dump{machine,specs,version},
print-{multi-{directory,lib,os-directory}, search-dirs} as unsupported
instead of handling separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66848 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
f4e3740db90d57db4a2a07390ff4e4d7d7af1dcb 13-Mar-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Bring in std::string to fix compilation on GCC 4.3

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66846 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
7517ac00e40da7a0ee4ebf7451e7dc9da74f15d9 13-Mar-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Bring in std::string to fix compilation on GCC 4.3

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66846 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
207a56d26e8d96126acab5314f33411b7c7b083b 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Determine which compilation stages to run.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
river/Driver.h
river/Options.def
af61c71137d1f7239d6b9d7425ce083db7ba31df 13-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Determine which compilation stages to run.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
river/Driver.h
river/Options.def
5b5b669715b9a820c1a10cb4fbfa017f10854006 12-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for builtin binary operators

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
df0325110bb07ab62b808c8db8be2f6eee9b3476 12-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement template instantiation for builtin binary operators

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
63f5d6002bbb0d6b594e320c5522ac03cfb1b6e8 12-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Store the type of the integral value within a TemplateArgument, so that we can more efficiently reconstruct an IntegerLiteral from it during template instantiation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
c971f8694661776ecdec2ccc33fbe0333eeaf191 12-Mar-2009 Douglas Gregor <dgregor@apple.com> Store the type of the integral value within a TemplateArgument, so that we can more efficiently reconstruct an IntegerLiteral from it during template instantiation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
dcfaf606be2852b892acc4a45a2c06171b444fa6 12-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix crash when using TypedViewRegions and ObjCQualifiedIdTypes (TypedViewRegion::getLValueType() was not implemented).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66830 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
e6fbdf538bc50122876639e08a1401e2bc9555ba 12-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix crash when using TypedViewRegions and ObjCQualifiedIdTypes (TypedViewRegion::getLValueType() was not implemented).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66830 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
cdea9de1b915a3a4ccdc738f5c38c6da1a9ced48 12-Mar-2009 Ted Kremenek <kremenek@apple.com> Add file I forgot to commit in previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dc192323e740eec20d6d7c3162067242403aa37b 12-Mar-2009 Ted Kremenek <kremenek@apple.com> Add file I forgot to commit in previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b11cd810cc59b9e037d8217c3c3bf6ddfe161267 12-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostics:
- PathDiagnosticControlFlowPiece now consists of a "start" and "end" location
to indicating the branch location and where the branch goes.

BugReporter:
- Updated BugReporter to construct PathDiagnosticControlFlowPiece objects with
"end" locations.

PlistDiagnostics:
- Plists now contain the bug "type" (not just bug "category")
- Plists now encode control-flow pieces differently than events; now the
"start" and "end" locations are recorded


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66818 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
082cb8d7bd9bdb3fe58e8e1a2897c79c4ebcc3a7 12-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostics:
- PathDiagnosticControlFlowPiece now consists of a "start" and "end" location
to indicating the branch location and where the branch goes.

BugReporter:
- Updated BugReporter to construct PathDiagnosticControlFlowPiece objects with
"end" locations.

PlistDiagnostics:
- Plists now contain the bug "type" (not just bug "category")
- Plists now encode control-flow pieces differently than events; now the
"start" and "end" locations are recorded


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66818 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
fba157b8beb4597864d34b3ae4f6c795dc7a2be0 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add majority of driver-driver implementation.
- Compare to driverdriver.c if bored; not completely fair since the
driver gets a bit more code in other places to handle binding archs
(for Xarch) but not completely unfair either.

Fear not, extra Action classes will have a happy home for their
vtables soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Action.h
2fe63e6adac0b9e5f52bcc3100b545e379417e6e 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add majority of driver-driver implementation.
- Compare to driverdriver.c if bored; not completely fair since the
driver gets a bit more code in other places to handle binding archs
(for Xarch) but not completely unfair either.

Fear not, extra Action classes will have a happy home for their
vtables soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66817 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Action.h
95ba1285f8e6e161f171f7fce558d3cff983666c 12-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Use StmtVisitor to handle the decoding of expressions for
instantiation. This is roughly the structure we want to expression
instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
313a81dd820c9b2c0203bdcd974c781a81e4f0cf 12-Mar-2009 Douglas Gregor <dgregor@apple.com> Use StmtVisitor to handle the decoding of expressions for
instantiation. This is roughly the structure we want to expression
instantiation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
309160771eaf06afd1159cc299a2d462924bd040 12-Mar-2009 Ted Kremenek <kremenek@apple.com> API fix: All "bodies" for functions, Objective-C methods, blocks, are assumed to
be CompoundStmts. I think this is a valid assumption, and felt that the API
should reflect it. Others please validate this assumption to make sure I didn't
break anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
eaab20669b6a9910a5deb0110fdd8f7581d86a36 12-Mar-2009 Ted Kremenek <kremenek@apple.com> API fix: All "bodies" for functions, Objective-C methods, blocks, are assumed to
be CompoundStmts. I think this is a valid assumption, and felt that the API
should reflect it. Others please validate this assumption to make sure I didn't
break anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
a790d3751be0fcf7bc0b0cffa74c1237ef9555df 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Introduce ActionList typedef, tweak some constness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66809 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Util.h
d65bddcbe1385a4de212ecbbdc8919c54b3efeb0 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Introduce ActionList typedef, tweak some constness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66809 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
river/Util.h
1c41167bd9e6bea4ff21968785d873142e3bcb76 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::canLipoType helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66807 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
9f5ef9426fee383cb42b72cee1d6dc949c8c0189 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add types::canLipoType helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66807 91177308-0d34-0410-b5e6-96231b3b80d8
river/Types.h
a8564774c9d6feb22a9cca4b7a83d3c8d39ecdef 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add some HostInfo accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66806 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
1e2d081e8073934ddc1198b6556c2e2f51c99eec 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add some HostInfo accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66806 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
72cac2064e7d199b3032ada8dca88e1ac034d22b 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList support for synthesizing arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66805 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
bca58cb5100a4fdff63165af6a1742f5160ec73b 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList support for synthesizing arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66805 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
643e01055d009e7c508c7a4664fad3471b27c1b0 12-Mar-2009 Chris Lattner <sabre@nondot.org> add a callback for macro expansion, based on a patch by Paolo Bolzoni!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66799 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
ba9eee326434ba62b180271d3cc2999d94ee0de4 12-Mar-2009 Chris Lattner <sabre@nondot.org> add a callback for macro expansion, based on a patch by Paolo Bolzoni!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66799 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
08a0ae49b107c1a974a281399c11cec4d72d7d1b 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::getLastArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66794 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
0c562a23a6560b5736077226ab31d6a9a216ccd3 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::getLastArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66794 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
f45afe6bcfe63fc672f2311cc62e80275a857e9d 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic files for Frontend and move a couple errors over.
- Notably, clang now exits with an error if it can't find a
file. This flushed out a bug in the CGColorSpace.c test case. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.def
asic/DiagnosticFrontendKinds.td
rontend/FrontendDiagnostic.h
50f4f469024928670f2d634c445686d00eeb89b7 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add Diagnostic files for Frontend and move a couple errors over.
- Notably, clang now exits with an error if it can't find a
file. This flushed out a bug in the CGColorSpace.c test case. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66789 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticDriverKinds.td
asic/DiagnosticFrontendKinds.def
asic/DiagnosticFrontendKinds.td
rontend/FrontendDiagnostic.h
d724e335b1724f9978e688a957355daf463e4203 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak diag names to be more consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66787 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
b897f5d3ebfb62c2745e2e2af7faa9920c882438 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak diag names to be more consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66787 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticDriverKinds.def
93468495c02e53c3e6a9f92335496a6fd32bb9fd 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Use standard Diagnostic interface for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Driver.h
river/DriverDiagnostic.h
4ad4b3ebbe5769143389dccfcfadb666a4ba5940 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Use standard Diagnostic interface for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66786 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticDriverKinds.def
asic/DiagnosticDriverKinds.td
river/Driver.h
river/DriverDiagnostic.h
db62cc311476c2eb2bcdb6305db83be64de7b295 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Start sketching construction of abstract built actions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66783 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Driver.h
53ec55215075c8f4ddd47ca6ed7d382f16beb670 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Start sketching construction of abstract built actions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66783 91177308-0d34-0410-b5e6-96231b3b80d8
river/Action.h
river/Driver.h
dda962937192c35fc0c63b93ff3b7432c240bdc1 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add information on Driver input/temporary types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66781 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Types.def
river/Types.h
e9fba573bd9433b89a12f747f2c4ccfa490a79cb 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add information on Driver input/temporary types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66781 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Types.def
river/Types.h
5a860da2b9208b5f092333a53748357ac7b81be8 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66774 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
644eade617a4e2e665455accf18c455e8d025699 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66774 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
8df072fa2482e3d2c9fbc6d8c65e5c11cd95e6fe 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add definitions for all the gcc options the current ccc
understands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66769 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
83293d268ee496a55423566a88a8af5630e22462 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add definitions for all the gcc options the current ccc
understands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66769 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
52bf2d4eebdda3762feb22f24e1501ce82752141 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak option naming/def:
- Use OPT_ prefix for ids.

- Reference groups and aliases by shortend id (on the theory that
this is more readable).

- Rename the special option ids to more protected names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66767 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Options.h
b349fccc4a6e416483b0b36b4f74e39787c62344 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak option naming/def:
- Use OPT_ prefix for ids.

- Reference groups and aliases by shortend id (on the theory that
this is more readable).

- Rename the special option ids to more protected names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66767 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Options.h
ff7aa37801a61b1be92012d3c33b59a1205ac044 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Reorder arguments in Options.def so option name is first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66759 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Options.h
e1495eced887466e235f6a034953adf5ee1e14e6 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Reorder arguments in Options.def so option name is first.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66759 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.def
river/Options.h
f01869c9151325005739f900cf3996af656134d7 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::hasArg, for testing for the presence of an
argument matching some Option::ID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66758 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
d8cadd4f250d1b69373fc80477f67375d2c54820 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::hasArg, for testing for the presence of an
argument matching some Option::ID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66758 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
214bf9dd6c2d72cdcfa937b75af4509d289dacfd 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option::getId and Option::matches taking an option
identifier; we will want to use the latter in situations where we just
want to check for a match, but not load options unnecessarily.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66757 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
cf0dd156e7b9d6a70b7290f5af9646859631bd9a 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option::getId and Option::matches taking an option
identifier; we will want to use the latter in situations where we just
want to check for a match, but not load options unnecessarily.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66757 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
d558211ac953a0ca57c3211ed6e8f9d949a4e837 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add default index (=0) for Arg::getValue and add Arg::claim
(will be used to emit "command line argument unused" diagnostics).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66756 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
d377522ba694e52128b419c98dabae7086ccf9c6 12-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add default index (=0) for Arg::getValue and add Arg::claim
(will be used to emit "command line argument unused" diagnostics).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66756 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
8c4ecbc17014d6782ae8d808c5dae6b4ac5f9ab7 12-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Fix various problems with matching out-of-line definitions of static
class members to the corresponding in-class declaration.

Diagnose the erroneous use of 'static' on out-of-line definitions of
class members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
656de633acefb7ced01a4b573dbd4f70b4300097 12-Mar-2009 Douglas Gregor <dgregor@apple.com> Fix various problems with matching out-of-line definitions of static
class members to the corresponding in-class declaration.

Diagnose the erroneous use of 'static' on out-of-line definitions of
class members.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66740 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
8f53bb70407ca1f3f4d769b7a1bc2eb7a2592c6e 12-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Move most of the checking from ActOnCXXMemberDeclarator to other, more general routines. This is a step toward separating the checking logic from Declarators, which in turn is required for template instantiation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66734 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
021c3b372c58f5423b4fa2a5be6933d1c7ecc663 12-Mar-2009 Douglas Gregor <dgregor@apple.com> Move most of the checking from ActOnCXXMemberDeclarator to other, more general routines. This is a step toward separating the checking logic from Declarators, which in turn is required for template instantiation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66734 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
d71d13aba473fa0abbf03d6140fa48331dc6c952 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add TypedViewRegion::isBoundable() to indicate whether or not the
TypedViewRegion has a valid rvalue type. Also renamed instance variable 'T' to
'LvalueType' to make it unambiguous of its purpose.

This fixes some crashes I was seeing after:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090309/013771.html

This is because 'isBoundable()' is defined in TypedRegion (the parent class) in
terms of the rvalue type (which could be null), while for TypedViewRegion it
should be defined in terms of the lvalue type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66712 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b2dea734527ae75281642a1c6ace28f9e00cab11 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add TypedViewRegion::isBoundable() to indicate whether or not the
TypedViewRegion has a valid rvalue type. Also renamed instance variable 'T' to
'LvalueType' to make it unambiguous of its purpose.

This fixes some crashes I was seeing after:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090309/013771.html

This is because 'isBoundable()' is defined in TypedRegion (the parent class) in
terms of the rvalue type (which could be null), while for TypedViewRegion it
should be defined in terms of the lvalue type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66712 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
26561a01cea14e8e768bd616fe764dd8e8727154 11-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate CXXClassMemberWrapper

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ff7fea809bab2badd0cb241703b14ac20ac258cb 11-Mar-2009 Douglas Gregor <dgregor@apple.com> Eliminate CXXClassMemberWrapper

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
006605882f997a37ee104cd5f30d0b523ef32d44 11-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate CXXClassVarDecl. It doesn't add anything

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
2d2e9cfdc1dbb6e4a22f8c0b1abcd30437e3795d 11-Mar-2009 Douglas Gregor <dgregor@apple.com> Eliminate CXXClassVarDecl. It doesn't add anything

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
0e518af1dd811e427394b66efe3f488c7c4394b4 11-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement basic template instantiation for fields. Reshuffle checking
for FieldDecls so that the parser and the template instantiation make
use of the same semantic checking module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
3cf538d5c49bbebac1afa6f4a5010e3d877440bb 11-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement basic template instantiation for fields. Reshuffle checking
for FieldDecls so that the parser and the template instantiation make
use of the same semantic checking module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
6e7c27cbc6917fcf9507e9d68d051c5c01275484 11-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Add basic, hackish support for instantiation of typedefs in a class
template. More importantly, start to sort out the issues regarding
complete types and nested-name-specifiers, especially the question of:
when do we instantiate a class template specialization that occurs to
the left of a '::' in a nested-name-specifier?




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66662 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4fdf1faedbca40787fd277a6fbd5061fd69b2708 11-Mar-2009 Douglas Gregor <dgregor@apple.com> Add basic, hackish support for instantiation of typedefs in a class
template. More importantly, start to sort out the issues regarding
complete types and nested-name-specifiers, especially the question of:
when do we instantiate a class template specialization that occurs to
the left of a '::' in a nested-name-specifier?




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66662 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
ab0419820d5ccd202f1561ddaa74964ac9ef5674 11-Mar-2009 Anders Carlsson <andersca@mac.com> Add parser support for static_assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66661 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
arse/Action.h
arse/Parser.h
511d7aba3b12853fdb88729a0313b80a60eab8ad 11-Mar-2009 Anders Carlsson <andersca@mac.com> Add parser support for static_assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66661 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
arse/Action.h
arse/Parser.h
96cd182703619441a5516854ec95fa1a5e0ed9a7 11-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> The RValueType of a TypedViewRegion should be the pointee type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66655 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
2e3f73b963b5831d6230f69e157b0964b11eff91 11-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> The RValueType of a TypedViewRegion should be the pointee type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66655 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1fe94246c16c1756776c6b2436973d963bbc6742 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add utility method to BasicValueFactory to convert an APSInt to one of a different sign.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66637 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
672e408f14b528fe5e41c5dc99e95e671149a1e9 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add utility method to BasicValueFactory to convert an APSInt to one of a different sign.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66637 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
4168375470e8b79f1a10422b26ed15e9ea344f63 11-Mar-2009 Chris Lattner <sabre@nondot.org> Improve the "bad receiver" warning for ObjC message sends to be less confusing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4018a28ba12c9cbc0e41101bc5d8c1c2d78e355e 11-Mar-2009 Chris Lattner <sabre@nondot.org> Improve the "bad receiver" warning for ObjC message sends to be less confusing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66635 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
e07e7027fd6ab89de7b754d57cb5759ae925543f 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add accessor method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66626 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
a516ce16b472e61924f5dd10d181c3e8330979af 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add accessor method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66626 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c43ff4a75bc4c8118aad2288646adbf7745ce98e 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add accessor method to return a GRStateManager's internal ConstraintManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66625 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
78a5361ae7cb6f468a6dc721f34883072cf11b34 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add accessor method to return a GRStateManager's internal ConstraintManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66625 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
c91c6be5481e8c51765200dbe826dc0c401e767b 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Added method "canReasonAbout" to ConstraintManager. This method returns true if
a ConstraintManager can usefully reason about the given SVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66624 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
66b527193aa6f3aa94c03f6769c42d7642e1e147 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Added method "canReasonAbout" to ConstraintManager. This method returns true if
a ConstraintManager can usefully reason about the given SVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66624 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
87fd9dffd2ae2ccb4db8edc69f99b274c559b02c 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add some iterators to BugReporter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66621 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
3aa1ab27c14d16c853ccb61f17a4a75d8e366806 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Add some iterators to BugReporter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66621 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
5b13243f6374ef628e5bfec63ffcfcf6bdeed5fa 11-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3258 by rejecting invalid numeric operands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticASTKinds.def
85759278332404e96d4bb89d0e976e46158cd026 11-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3258 by rejecting invalid numeric operands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticASTKinds.def
635c52e3ce3dbee5f58c80e0f472cb0664029773 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove space-break that interrupts one string literal. This is fine in C, but not in TableGen files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
ed6c17617998e38b146479fc0b7a3baa636c7e61 11-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove space-break that interrupts one string literal. This is fine in C, but not in TableGen files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66616 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.td
7c0c17b528295299020428f583a480a6dcb4c7e0 11-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> More Next objc2's gc ivar layout bitmap work.
Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
820e0203079afd64b0de422832f9e0b31a27c0c8 11-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> More Next objc2's gc ivar layout bitmap work.
Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a7f227075d47ea681488d3713bdf8a54db021a5e 11-Mar-2009 Chris Lattner <sabre@nondot.org> checking for symbolic operands as well as % at end of string.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
eab8cfbf4b2e85b66cea6e0fea3b7f8fd2685722 11-Mar-2009 Chris Lattner <sabre@nondot.org> checking for symbolic operands as well as % at end of string.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
7f71b065f4d541a3cc3d86ce4134ad5dbfdfb952 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66613 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
f58e44caf071d81c8d38423978cd420c018c69e1 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66613 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
d4dd42cf8a6b5ed3b295663d9e548eddb9b0eee9 11-Mar-2009 Chris Lattner <sabre@nondot.org> reject invalid escape characters in extended-asm strings with a nice diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
asic/DiagnosticSemaKinds.def
3182db1c8e456c4cd2180fac9d77d331b2c0621f 11-Mar-2009 Chris Lattner <sabre@nondot.org> reject invalid escape characters in extended-asm strings with a nice diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
asic/DiagnosticSemaKinds.def
fbb897a4f1ce5869d60af2e75103d0751923da1e 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add host info (add new files).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66604 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
bf5fc320c8d772d44768413602dc82fd197552ea 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add host info (add new files).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66604 91177308-0d34-0410-b5e6-96231b3b80d8
river/HostInfo.h
2f728b2144bb3e5cfc3b954a95b17f8da81d1448 11-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Add type checking for tentative definitions at the end of the
translation unit.

Thread the various declarations of variables via
VarDecl::getPreviousDeclaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
275a369f003f25bd22c00c1c0fc0251c7208caf4 11-Mar-2009 Douglas Gregor <dgregor@apple.com> Add type checking for tentative definitions at the end of the
translation unit.

Thread the various declarations of variables via
VarDecl::getPreviousDeclaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
d25acaab6d1969eb4fc2ff187667947ffd795e57 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add host info.
- Replace assorted -ccc-host-* options by -ccc-host-triple which is
more sane.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66600 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
dd98e2cad165ca73c769e4f105a4e47c2216387a 11-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add host info.
- Replace assorted -ccc-host-* options by -ccc-host-triple which is
more sane.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66600 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
c516473346d49d9613d2931fc3caa64e52a5d17c 11-Mar-2009 Chris Lattner <sabre@nondot.org> add plumbing to report diagnostics back through sema for malformed asmstrings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
fb5058ef67c054296c88db18ab1b3717845cb71d 11-Mar-2009 Chris Lattner <sabre@nondot.org> add plumbing to report diagnostics back through sema for malformed asmstrings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5c6a6c5f5756bb9b4902b4db4dbc023c73197f52 11-Mar-2009 Chris Lattner <sabre@nondot.org> move the asm string analysis code out of codegen into common
code where Sema can get to it. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66596 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
458cd9c8a79b25b87dcea43c9d97a4c59f194799 11-Mar-2009 Chris Lattner <sabre@nondot.org> move the asm string analysis code out of codegen into common
code where Sema can get to it. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66596 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b282ced133d3ca061cfff3fafbad11d00bde9039 10-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle magic -ccc- options.
- Follows ccc currently, but this functionality should eventually be
outside the Driver lib.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66575 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
365c02f65be026f90e67a8e00e7b827cee60e228 10-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Handle magic -ccc- options.
- Follows ccc currently, but this functionality should eventually be
outside the Driver lib.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66575 91177308-0d34-0410-b5e6-96231b3b80d8
river/Driver.h
56d25a726f0bdb4db08021b9e98782ada5241eaf 10-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Extend the notion of active template instantiations to include the
context of a template-id for which we need to instantiate default
template arguments.

In the TextDiagnosticPrinter, don't suppress the caret diagnostic if
we are producing a non-note diagnostic that follows a note diagnostic
with the same location, because notes are (conceptually) a part of the
warning or error that comes before them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.def
rontend/TextDiagnosticPrinter.h
df667e71b1daadeacb230cf94fc717843f1a138a 10-Mar-2009 Douglas Gregor <dgregor@apple.com> Extend the notion of active template instantiations to include the
context of a template-id for which we need to instantiate default
template arguments.

In the TextDiagnosticPrinter, don't suppress the caret diagnostic if
we are producing a non-note diagnostic that follows a note diagnostic
with the same location, because notes are (conceptually) a part of the
warning or error that comes before them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticSemaKinds.def
rontend/TextDiagnosticPrinter.h
043857897d48206826fd57f10060d7e9eee0657c 10-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Add pretty-printing for class template specializations, e.g.,

'struct A<double, int>'

In the "template instantiation depth exceeded" message, print
"-ftemplate-depth-N" rather than "-ftemplate-depth=N".

An unnamed tag type that is declared with a typedef, e.g.,

typedef struct { int x, y; } Point;

can be used as a template argument. Allow this, and check that we get
sensible pretty-printing for such things.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
98137534e612c274ba270af99d73429043957e53 10-Mar-2009 Douglas Gregor <dgregor@apple.com> Add pretty-printing for class template specializations, e.g.,

'struct A<double, int>'

In the "template instantiation depth exceeded" message, print
"-ftemplate-depth-N" rather than "-ftemplate-depth=N".

An unnamed tag type that is declared with a typedef, e.g.,

typedef struct { int x, y; } Point;

can be used as a template argument. Allow this, and check that we get
sensible pretty-printing for such things.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
fee85d6b7303d9a7ac28836141ded2fcf9bd07a9 10-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Add a notion of "post-diagnostic hooks", which are callbacks attached
to a diagnostic that will be invoked after the diagnostic (if it is
not suppressed). The hooks are allowed to produce additional
diagnostics (typically notes) that provide more information. We should
be able to use this to help diagnostic clients link notes back to the
diagnostic they clarify. Comments welcome; I'll write up documentation
and convert other clients (e.g., overload resolution failures) if
there are no screams of protest.

As the first client of post-diagnostic hooks, we now produce a
template instantiation backtrace when a failure occurs during template
instantiation. There's still more work to do to make this output
pretty, if that's even possible.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66557 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.def
ee1828a6b5ae1bc4ea300e48f3840ac1ec5be295 10-Mar-2009 Douglas Gregor <dgregor@apple.com> Add a notion of "post-diagnostic hooks", which are callbacks attached
to a diagnostic that will be invoked after the diagnostic (if it is
not suppressed). The hooks are allowed to produce additional
diagnostics (typically notes) that provide more information. We should
be able to use this to help diagnostic clients link notes back to the
diagnostic they clarify. Comments welcome; I'll write up documentation
and convert other clients (e.g., overload resolution failures) if
there are no screams of protest.

As the first client of post-diagnostic hooks, we now produce a
template instantiation backtrace when a failure occurs during template
instantiation. There's still more work to do to make this output
pretty, if that's even possible.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66557 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticSemaKinds.def
a5dfc18d3700f95c6f48790977d609e7e79e4099 10-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen support for class getter/setter call
using property dot-syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66556 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
3523d4f59eb0aa1f200dcb943093ecfe75008735 10-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen support for class getter/setter call
using property dot-syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66556 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
a60a4005a980c01741cb5b01b8b904b51b54fa59 10-Mar-2009 Steve Naroff <snaroff@apple.com> Simplify SelectorTable::constructSetterName() usage...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
fdc92b7877535e6264fe43cfbdc8f01e9b224f81 10-Mar-2009 Steve Naroff <snaroff@apple.com> Simplify SelectorTable::constructSetterName() usage...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
fdaed4c5837a0e7e66e063705a5b8c1e57fbca34 10-Mar-2009 Anders Carlsson <andersca@mac.com> Address Doug's comments wrt the mangler and fix Eli's test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4843e584b54460973b8445d38907bab0401ebb0c 10-Mar-2009 Anders Carlsson <andersca@mac.com> Address Doug's comments wrt the mangler and fix Eli's test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
20ac04cc4d10990aa85513d44ba748302f6c1f5a 10-Mar-2009 Chris Lattner <sabre@nondot.org> move matching of named operands into AsmStmt class. At the same
time handle + operands in operand counting, fixing asm.c:t7 to
expand into $2 instead of $1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
10ca96ae9aed6906c3302403ef1a146a8d4c6b74 10-Mar-2009 Chris Lattner <sabre@nondot.org> move matching of named operands into AsmStmt class. At the same
time handle + operands in operand counting, fixing asm.c:t7 to
expand into $2 instead of $1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e1fa84b29f24110b09b76b9174eafe70f0035088 10-Mar-2009 Ted Kremenek <kremenek@apple.com> Add FullSourceLoc::getDecomposedLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66522 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
321abd4583dc02a254489132c5ccbe125d18ce4f 10-Mar-2009 Ted Kremenek <kremenek@apple.com> Add FullSourceLoc::getDecomposedLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66522 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
e8625110518534a980a44226f0f7c249604b22f4 10-Mar-2009 Chris Lattner <sabre@nondot.org> add some helper methods to AsmStmt and add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b327793860737d1c103a73aeda8057dd628a101d 10-Mar-2009 Chris Lattner <sabre@nondot.org> add some helper methods to AsmStmt and add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
70b54b6ba072dab1aff0c21a52f2977aa824b649 10-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnosticControlFlowPiece:
- Correctly set "ControlFlow" kind (fix regression)

PathDiagnosticMacroPiece:
- add method "containsEvent" to determine if a PathDiagnosticMacroPiece
transitively contains a PathDiagnosticEvent


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
83d889b6e8b5b0bb7305cc1d1749780d205a6c9b 10-Mar-2009 Ted Kremenek <kremenek@apple.com> PathDiagnosticControlFlowPiece:
- Correctly set "ControlFlow" kind (fix regression)

PathDiagnosticMacroPiece:
- add method "containsEvent" to determine if a PathDiagnosticMacroPiece
transitively contains a PathDiagnosticEvent


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
375733c3941a6107c2c2c971a0fbf1a8dd7f8d0d 10-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Limit the template instantiation depth to some user-configurable value
(default: 99). Beyond this limit, produce an error and consider the
current template instantiation a failure.

The stack we're building to track the instantiations will, eventually,
be used to produce instantiation backtraces from diagnostics within
template instantiation. However, we're not quite there yet.

This adds a new Clang driver option -ftemplate-depth=NNN, which should
eventually be generated from the GCC command-line operation
-ftemplate-depth-NNN (note the '-' rather than the '='!). I did not
make the driver changes to do this mapping.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/LangOptions.h
26dce44534602660ea9f4152bffc5436fc5fe3b2 10-Mar-2009 Douglas Gregor <dgregor@apple.com> Limit the template instantiation depth to some user-configurable value
(default: 99). Beyond this limit, produce an error and consider the
current template instantiation a failure.

The stack we're building to track the instantiations will, eventually,
be used to produce instantiation backtraces from diagnostics within
template instantiation. However, we're not quite there yet.

This adds a new Clang driver option -ftemplate-depth=NNN, which should
eventually be generated from the GCC command-line operation
-ftemplate-depth-NNN (note the '-' rather than the '='!). I did not
make the driver changes to do this mapping.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/LangOptions.h
f9ff4b14cfc4ee2c4e43dbb71242aa85446ecc2a 10-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement template instantiation for ClassTemplateSpecializationTypes,
such as replacing 'T' in vector<T>. There are a few aspects to this:

- Extend TemplateArgument to allow arbitrary expressions (an
Expr*), and switch ClassTemplateSpecializationType to store
TemplateArguments rather than it's own type-or-expression
representation.

- ClassTemplateSpecializationType can now store dependent types. In
that case, the canonical type is another
ClassTemplateSpecializationType (with default template arguments
expanded) rather than a declaration (we don't build Decls for
dependent types).

- Split ActOnClassTemplateId into ActOnClassTemplateId (called from
the parser) and CheckClassTemplateId (called from
ActOnClassTemplateId and InstantiateType). They're smart enough to
handle dependent types, now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Type.h
40808ce6ac04b102c3b56244a635d6b98eed6d97 10-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement template instantiation for ClassTemplateSpecializationTypes,
such as replacing 'T' in vector<T>. There are a few aspects to this:

- Extend TemplateArgument to allow arbitrary expressions (an
Expr*), and switch ClassTemplateSpecializationType to store
TemplateArguments rather than it's own type-or-expression
representation.

- ClassTemplateSpecializationType can now store dependent types. In
that case, the canonical type is another
ClassTemplateSpecializationType (with default template arguments
expanded) rather than a declaration (we don't build Decls for
dependent types).

- Split ActOnClassTemplateId into ActOnClassTemplateId (called from
the parser) and CheckClassTemplateId (called from
ActOnClassTemplateId and InstantiateType). They're smart enough to
handle dependent types, now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Type.h
29a90b6684c3eb304f0a93d134755e815806f6db 10-Mar-2009 Daniel Dunbar <daniel@zuster.org> Reapply r66316, it got accidentally reverted in r66317.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66506 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
d43b333be82438102ff4c459b1fb5dfb764e5f0d 10-Mar-2009 Daniel Dunbar <daniel@zuster.org> Reapply r66316, it got accidentally reverted in r66317.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66506 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
88cbb9b6a24545104d330d9a23f29b1150ef8bec 09-Mar-2009 Chris Lattner <sabre@nondot.org> move debug info generation flag into CompileOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66478 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
20126046221404b81cdd8de192bd72fdc7b0a670 09-Mar-2009 Chris Lattner <sabre@nondot.org> move debug info generation flag into CompileOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66478 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
8ccad8aaaa92ac2e92df235a78e03acbfeae07e8 09-Mar-2009 Chris Lattner <sabre@nondot.org> Fix PR3766, a really nasty silent miscompilation case where we emitted
a warning and then threw away the AST. While I'm in there, tighten up the
code to actually reject completely bogus cases (sending a message to a
struct). We still allow sending a message to an int, which doesn't make
sense but GCC allows it and is easy to support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66468 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
0c73f37f0a48a1512bc0477a71f0d6cffcb78fc0 09-Mar-2009 Chris Lattner <sabre@nondot.org> Fix PR3766, a really nasty silent miscompilation case where we emitted
a warning and then threw away the AST. While I'm in there, tighten up the
code to actually reject completely bogus cases (sending a message to a
struct). We still allow sending a message to an int, which doesn't make
sense but GCC allows it and is easy to support.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66468 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
73ec9325c26807fae7e2d7271229cf5ba37d547c 09-Mar-2009 Steve Naroff <snaroff@apple.com> Implement property '.' notation on Factory/Class objects. Parser changes aren't very pretty:-(

This fixes <rdar://problem/6496506> Implement class setter/getter for properties.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
asic/IdentifierTable.h
arse/Action.h
61f72cbd037e58f12cfe90cd442373f44092f030 09-Mar-2009 Steve Naroff <snaroff@apple.com> Implement property '.' notation on Factory/Class objects. Parser changes aren't very pretty:-(

This fixes <rdar://problem/6496506> Implement class setter/getter for properties.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
asic/IdentifierTable.h
arse/Action.h
1e4baad7a6032a1e9aa9a0aa9490f680c7fc7f9e 09-Mar-2009 Ted Kremenek <kremenek@apple.com> Add member template "MemRegion::getAs<RegionType>" that dynamically casts a
given MemRegion object to a target region type. This differs from dyn_cast<> in
that it also ignores TypedViewRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ed65d3d97132fbcdd124aef4d2478e348dfbd36b 09-Mar-2009 Ted Kremenek <kremenek@apple.com> Add member template "MemRegion::getAs<RegionType>" that dynamically casts a
given MemRegion object to a target region type. This differs from dyn_cast<> in
that it also ignores TypedViewRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
d526ac51ffc6994618c972231bf01970bcb0174e 08-Mar-2009 Chris Lattner <sabre@nondot.org> the macro redefinition ext warning should default to on, to match gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.def
4e9990b63518b9ca63d6585dfbd492f452f794c2 08-Mar-2009 Chris Lattner <sabre@nondot.org> the macro redefinition ext warning should default to on, to match gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66390 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.def
6b6513d6b3578b5b970b48db98ac62e1599147e9 08-Mar-2009 Chris Lattner <sabre@nondot.org> undefined -> unspecified. Thanks Mike.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
466a7f8aa61ca0d1df1f11ed2dfb2510a386cfa6 08-Mar-2009 Chris Lattner <sabre@nondot.org> undefined -> unspecified. Thanks Mike.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66388 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4e479f95909a4edc651fbecc3100d138d26fa5e9 08-Mar-2009 Chris Lattner <sabre@nondot.org> implement PR3753, warning about comparisons with a string literal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
55660a74897bf42111a8ae61c1f617645e5a9274 08-Mar-2009 Chris Lattner <sabre@nondot.org> implement PR3753, warning about comparisons with a string literal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
d6d3febe3c9e5dfc6f70c96e00a41a375d9370e0 08-Mar-2009 Chris Lattner <sabre@nondot.org> simplify some logic by making ScratchBuffer handle the application of trailing
\0's to created tokens instead of making all clients do it. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66373 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
1fa495304c81e03f07f278a47b5efe9317104aab 08-Mar-2009 Chris Lattner <sabre@nondot.org> simplify some logic by making ScratchBuffer handle the application of trailing
\0's to created tokens instead of making all clients do it. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66373 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
42291e51b5d5ac9f263a13afdb0aa08788801d6a 08-Mar-2009 Chris Lattner <sabre@nondot.org> Update DeclNodes.def to reflect the move of ObjCCategoryImpl
from being a NamedDecl to being and ObjCImplDecl. This fixes
some valgrind issues where ObjCCategoryImpl's were being cast
to NamedDecl and then stuck on name lookup datastructures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66372 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
6b5e4f0cc5672c7d5449db28d5ead94d32407cb2 08-Mar-2009 Chris Lattner <sabre@nondot.org> Update DeclNodes.def to reflect the move of ObjCCategoryImpl
from being a NamedDecl to being and ObjCImplDecl. This fixes
some valgrind issues where ObjCCategoryImpl's were being cast
to NamedDecl and then stuck on name lookup datastructures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66372 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclNodes.def
8fc7dd955011ead87c968121f1085332fed8ccdf 08-Mar-2009 Chris Lattner <sabre@nondot.org> improve comments for MemberExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ddca44e86281bb7dcf5fdcaf1563434c524e3861 08-Mar-2009 Chris Lattner <sabre@nondot.org> improve comments for MemberExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9cc59542e9852e097b6563c46ceda2c734f0a3e6 07-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Some struct/class mismatch fixes, to silence MSVC warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66335 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
arse/DeclSpec.h
43af76e845c95be160c088ec11ba3c43e2527fa8 07-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Some struct/class mismatch fixes, to silence MSVC warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66335 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
arse/DeclSpec.h
8be6f744bc18836256beffedd2440a67b6a229c2 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Revert my last couple patches until I can get them to not make the tests fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/IdentifierTable.h
d42ffbd22fc7eb61321f6a88173ee424991f01c6 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Revert my last couple patches until I can get them to not make the tests fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/IdentifierTable.h
883e3391eb234d5e19dc91177b475229038074d2 07-Mar-2009 Daniel Dunbar <daniel@zuster.org> Cleanup/comment IdentifierInfo::get.
- Shaves off a few instructions on x86_64.

One notable change: this intentionally stops setting the II->Entry
field of IdentifierInfo's retrieved by the ExternalLookup method. This
is to maintain the invariant that .getName() has a constant value for
any given IdentifierInfo. IRgen currently relies on this; which is
quite questionable but will be cleaned up in time.

Apologies for the lack of a test case; there really isn't a good way
to make one. As IRgen will eventually be fixed to not rely on this, we
can survive without one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ccb9bac3adb35a2dc78c1737e7b2dc6537a16393 07-Mar-2009 Daniel Dunbar <daniel@zuster.org> Cleanup/comment IdentifierInfo::get.
- Shaves off a few instructions on x86_64.

One notable change: this intentionally stops setting the II->Entry
field of IdentifierInfo's retrieved by the ExternalLookup method. This
is to maintain the invariant that .getName() has a constant value for
any given IdentifierInfo. IRgen currently relies on this; which is
quite questionable but will be cleaned up in time.

Apologies for the lack of a test case; there really isn't a good way
to make one. As IRgen will eventually be fixed to not rely on this, we
can survive without one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
a732e852da1662171989ebccaa025bc3170efa8e 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Teach Diagnostic about Selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/IdentifierTable.h
b9eb3afc9eafbb1c6815c8b63633065f370be6a5 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Teach Diagnostic about Selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66314 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/IdentifierTable.h
a05c34b7b0c4c529ac9349c28cd0996d384ba8c3 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Selector: (changes made after discussing this more with Steve Naroff)
- Make Selector::getAsIdentifierInfo() private. Using IdentifierInfo* in
Selector is an implementation detail that clients shouldn't think about.
- Modify diagnostic emission in Sema::ProcessPropertyDecl to not use
Selector::getAsIdentifierInfo() (which could crash when IdentifierInfo* is
null) and instead use Selector::getAsString().
- Tidy up Selector::getAsString() implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66313 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
150ec292a6e7995a711cedbe7a10a25d664a6c6b 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Selector: (changes made after discussing this more with Steve Naroff)
- Make Selector::getAsIdentifierInfo() private. Using IdentifierInfo* in
Selector is an implementation detail that clients shouldn't think about.
- Modify diagnostic emission in Sema::ProcessPropertyDecl to not use
Selector::getAsIdentifierInfo() (which could crash when IdentifierInfo* is
null) and instead use Selector::getAsString().
- Tidy up Selector::getAsString() implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66313 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
23563643692a4b2af535de22b053d04c68d2f9c0 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Create PathDiagnosticPiece subclasses PathDiagnosticEventPiece and
PathDiagnosticControlFlowPiece to distinguish (in the class hierarchy) between
events and control-flow diagnostic pieces. Clients must now use these directly
when constructing PathDiagnosticPieces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66310 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
1fbfd5b9b8b82aea084773b76dd1ec6796a7000c 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Create PathDiagnosticPiece subclasses PathDiagnosticEventPiece and
PathDiagnosticControlFlowPiece to distinguish (in the class hierarchy) between
events and control-flow diagnostic pieces. Clients must now use these directly
when constructing PathDiagnosticPieces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66310 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
2caa7439b509b9d3d732fe11fb3b5eb82e4c2bef 07-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Tweak warning text from the last commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66309 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
177f708abadfca856b83f1c540c66667d167a4e8 07-Mar-2009 Douglas Gregor <dgregor@apple.com> Tweak warning text from the last commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66309 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
df4ae57a422ec2e608718336a4ba78655796d3df 07-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Downgrade complaints about the use of variable-sized types within a
struct to an extension warning to match the behavior of GNU C, which
addresses the Sema part of PR3671.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
e4f3e069e5e43d466954989dd7509ed371914bd0 07-Mar-2009 Douglas Gregor <dgregor@apple.com> Downgrade complaints about the use of variable-sized types within a
struct to an extension warning to match the behavior of GNU C, which
addresses the Sema part of PR3671.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
5ea79e6c3e40d61cfdcc3799eabec49906416512 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove false assertion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66306 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
126c011f0f00e9221ce3cd5350ac75da2d2c239d 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Remove false assertion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66306 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
f03265d7e713a48189c04a55b1c6f51e51e232f4 07-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Clean up some error messages with anonymous structs/unions and member declaration parsing. Fixes PR3680

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66305 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
e950d4bbb7c785c7a7abdd0ad98f372b8c7980b8 07-Mar-2009 Douglas Gregor <dgregor@apple.com> Clean up some error messages with anonymous structs/unions and member declaration parsing. Fixes PR3680

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66305 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
b37be77b47309720ca95336bfbf91a44a0188f80 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Re-order contents of file. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66304 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
6d3dee9f9deda0dbe8e71d4228322ed82da70ff7 07-Mar-2009 Ted Kremenek <kremenek@apple.com> Re-order contents of file. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66304 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
95818139d5e8ae2b98a8b53b3852f45b76cc37e7 07-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Use the 'declaration does not declare anything' error when we see an anonymous struct/union declaration outside of a struct or union in C

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
a71c129fb8052a143cbf548963a8db2150b0078e 07-Mar-2009 Douglas Gregor <dgregor@apple.com> Use the 'declaration does not declare anything' error when we see an anonymous struct/union declaration outside of a struct or union in C

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66303 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
6a83969807530ebdb24ed97917eb644a4e724b14 06-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement GNU C semantics for K&R function definitions that follow a
prototype of the same function, where the promoted parameter types in
the K&R definition are not compatible with the types in the
prototype. Fixes PR2821.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
c837656ca6d2a5b434923d7e2fd11d3a3c3bfa74 06-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement GNU C semantics for K&R function definitions that follow a
prototype of the same function, where the promoted parameter types in
the K&R definition are not compatible with the types in the
prototype. Fixes PR2821.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
dcdfa7d6ca1cebec4ad717895c7833e9b86b15df 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Start work on subclassing PathDiagnosticPiece to distinguish more between control-flow pieces, events, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
4e06387c2d6d00c7a30167d4c2206756992dde38 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Start work on subclassing PathDiagnosticPiece to distinguish more between control-flow pieces, events, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
305d8bcba55d2d91ab299cc5e146530600d989a0 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Add null-check assertion in the constructor of Selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
9540717470121f8912c72f6d8ae4ab40a6e45c94 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Add null-check assertion in the constructor of Selector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66290 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
dfd78349aaacaa77299c9b48134f7d8ba28ca4f6 06-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement the GNU semantics for forward declarations of enum types in
C and C++. Fixes PR3688.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
80711a22fa06b734a68d719ac85d4e443a51cb09 06-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement the GNU semantics for forward declarations of enum types in
C and C++. Fixes PR3688.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66282 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
5a17c1ba23ecb8b0be5ec9cce6cc155e1d169297 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Use list instead of vector for storing strings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66271 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
a15a81c45b44d9949be6ce16682a405cbb9b4228 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Use list instead of vector for storing strings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66271 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
077cd647f5ae4184f0db861775a0dbc1344d0b66 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix regression: initialize 'size' for PathDiagnostic to 0.
Add some assertions along the way...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66265 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
4850451c8e93789c099d907dd469898ea9561ecb 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Fix regression: initialize 'size' for PathDiagnostic to 0.
Add some assertions along the way...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66265 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
28379f37c4bd8ac5a1a5608a5cebaee9035510c3 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Like PathDiagnosticPieces, strip trailing periods at the end of PathDiagnostic descriptions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66263 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
a127ccaa38a23dbd9bd3884a2627c091075a7227 06-Mar-2009 Ted Kremenek <kremenek@apple.com> Like PathDiagnosticPieces, strip trailing periods at the end of PathDiagnostic descriptions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66263 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
42e4139c17210534e71cf72b9a7a2f8b5a972fd4 06-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add Parse/Sema support for weak_import attribute.
- Also, diagnose weak applied to types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66259 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
6e775dbafba2ab6634decc489eb3b4301b4b506b 06-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add Parse/Sema support for weak_import attribute.
- Also, diagnose weak applied to types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66259 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
432780cf116423246d49f5f08384fb4a96d7a2a7 06-Mar-2009 Chris Lattner <sabre@nondot.org> refactor C++ bitfield checking a bit (haha)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66213 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
8b963ef99be6235f1e9fe866180fff7dbbe5e85b 06-Mar-2009 Chris Lattner <sabre@nondot.org> refactor C++ bitfield checking a bit (haha)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66213 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
9cffefc74e12b59d4148d0d875ef29386f328a59 05-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3607 and a fixme, by checking bitfield constraints
more consistently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
247936605913c718f4141f845aec6cb6e169fb37 05-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3607 and a fixme, by checking bitfield constraints
more consistently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66210 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
a2c97df8ac195681e0a0976138daa63fd1df9c91 05-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Moved CollectObjCIvars to more commonly available place
for future use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
88e469cf4240d4b898eacc0ad092019b022e0e50 05-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Moved CollectObjCIvars to more commonly available place
for future use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b6b0bb83a70be6f053e5d2cfeccf14b2f0e5ac26 05-Mar-2009 Ted Kremenek <kremenek@apple.com> BasicStore:
- Store bindings using a MemRegion -> SVal binding instead of VarDecl -> SVal
binding. This mirrors some of the idea of RegionStore, but is far simpler and
not nearly as functional. This leads to some code simplification and
some potential for some minor precision hacks.

Along the way...
- constify the use of MemRegion* in a few places
- add operator<<(llvm::raw_ostream, const MemRegion*)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66163 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
be91224894e1501133e224934285ba6440bf5b59 05-Mar-2009 Ted Kremenek <kremenek@apple.com> BasicStore:
- Store bindings using a MemRegion -> SVal binding instead of VarDecl -> SVal
binding. This mirrors some of the idea of RegionStore, but is far simpler and
not nearly as functional. This leads to some code simplification and
some potential for some minor precision hacks.

Along the way...
- constify the use of MemRegion* in a few places
- add operator<<(llvm::raw_ostream, const MemRegion*)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66163 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
f16c1def93371cb18a92150ec666ceed34096b00 05-Mar-2009 Steve Naroff <snaroff@apple.com> Tweak diag for <rdar://problem/5982579> [clang on xcode] (using arch=x86_64): synthesized property 'sdkPath' must either be named the same as a compatible ivar or must explicitly name an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66162 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
fbffca65a95e26b198c084a81a33b9cdfcd01101 05-Mar-2009 Steve Naroff <snaroff@apple.com> Tweak diag for <rdar://problem/5982579> [clang on xcode] (using arch=x86_64): synthesized property 'sdkPath' must either be named the same as a compatible ivar or must explicitly name an ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66162 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
fe56a63075f2a8407d61a8766e52ab822841a629 05-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6144382> [sema] gcc inconsistency w.r.t. forward protocol declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
61d6852f67b4416bb96f1613c1aa589c8cbc17db 05-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6144382> [sema] gcc inconsistency w.r.t. forward protocol declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66161 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
c309adee68d2bf896d62a62257a9e1c73f2da041 05-Mar-2009 Chris Lattner <sabre@nondot.org> rename PrettyStackTraceDecl -> PrettyStackTraceActionsDecl.
Introduce a new PrettyStackTraceDecl.
Use it to add the top level LLVM IR generation stuff in
Backend.cpp to stack traces. We now get crashes like:

Stack dump:
0. Program arguments: clang t.c -emit-llvm
1. <eof> parser at end of file
2. t.c:1:5: LLVM IR generation of declaration 'a'
Abort

for IR generation crashes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
49f28ca787d8db7cac3c8898334f70ea55374c98 05-Mar-2009 Chris Lattner <sabre@nondot.org> rename PrettyStackTraceDecl -> PrettyStackTraceActionsDecl.
Introduce a new PrettyStackTraceDecl.
Use it to add the top level LLVM IR generation stuff in
Backend.cpp to stack traces. We now get crashes like:

Stack dump:
0. Program arguments: clang t.c -emit-llvm
1. <eof> parser at end of file
2. t.c:1:5: LLVM IR generation of declaration 'a'
Abort

for IR generation crashes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
4d6c272ab7f08ea24b3fc8224654e7be8b27dfa1 05-Mar-2009 Chris Lattner <sabre@nondot.org> remove unneeded forward decl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c3b401d314c21f9561c4411d23956d76aece6133 05-Mar-2009 Chris Lattner <sabre@nondot.org> remove unneeded forward decl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66151 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6b3833cd5b2cbaf7705018ae93e2b5850892a3c6 05-Mar-2009 Chris Lattner <sabre@nondot.org> When the parser is live, print out the location and spelling of its current token.
For example:

Stack dump:
0. Program arguments: clang t.cpp
1. t.cpp:4:8: current parser token: ';'
2. t.cpp:3:1: parsing struct/union/class body 'x'
Abort

It is weird that the parser is always "underneath" any parse context
actions, but the parser is created first.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66148 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0102c30896c83f70cf6b6519fd5c674cb981c0b5 05-Mar-2009 Chris Lattner <sabre@nondot.org> When the parser is live, print out the location and spelling of its current token.
For example:

Stack dump:
0. Program arguments: clang t.cpp
1. t.cpp:4:8: current parser token: ';'
2. t.cpp:3:1: parsing struct/union/class body 'x'
Abort

It is weird that the parser is always "underneath" any parse context
actions, but the parser is created first.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66148 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f259e8e9f79cb37a5fdf7ea84a86fc400debfdbd 05-Mar-2009 Chris Lattner <sabre@nondot.org> finish comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66146 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PrettyStackTrace.h
741e73efbf2ef0b7187358e5f62d79ebd78d21e0 05-Mar-2009 Chris Lattner <sabre@nondot.org> finish comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66146 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PrettyStackTrace.h
7dc2a04e65423b263e6270f0907e06b7d3dfa435 05-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Basic argument parsing.
- Add Driver::ParseArgStrings.
- Store values directly in CommaJoinedArg to support simple access.
- Add FlagArg class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66142 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Driver.h
river/Options.def
0648262df75d97b464c2be0ed867da3615659785 05-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Basic argument parsing.
- Add Driver::ParseArgStrings.
- Store values directly in CommaJoinedArg to support simple access.
- Add FlagArg class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66142 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/Driver.h
river/Options.def
d042d0f0e2c699e6ea045c34d564974c6416b01e 05-Mar-2009 Chris Lattner <sabre@nondot.org> When parsing a function body, add it to the crash stack, giving us something
like:

Stack dump:
0. t.c:5:10: in compound statement ('{}')
1. t.c:3:12: in compound statement ('{}')
2. t.c:3:12: parsing function body 'foo'
3. clang t.c
Abort



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66118 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
21ff9c99d3df1e4a13e6820fc2aa7a8cc6673198 05-Mar-2009 Chris Lattner <sabre@nondot.org> When parsing a function body, add it to the crash stack, giving us something
like:

Stack dump:
0. t.c:5:10: in compound statement ('{}')
1. t.c:3:12: in compound statement ('{}')
2. t.c:3:12: parsing function body 'foo'
3. clang t.c
Abort



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66118 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
02bfeebd3959645df949819fca98fb71e48fcf9d 05-Mar-2009 Chris Lattner <sabre@nondot.org> fix some 80 col violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66114 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7833ed2a6eb10750572fb7b7dbb16741fe1b00ec 05-Mar-2009 Chris Lattner <sabre@nondot.org> fix some 80 col violations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66114 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0818a7a0bebaab332e53e569325e15335c4f27c5 05-Mar-2009 Chris Lattner <sabre@nondot.org> Simplify the interface to ParseFunctionStatementBody to not take
locations that are the current tok loc. Note that inline C++ methods
have a big fixme that could cause a crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66113 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
40e9bc84a2ab49fc33c2b1a95c6674ab2b820e9e 05-Mar-2009 Chris Lattner <sabre@nondot.org> Simplify the interface to ParseFunctionStatementBody to not take
locations that are the current tok loc. Note that inline C++ methods
have a big fixme that could cause a crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66113 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
15c04bd8111843ce92eaa9fb3199c62de5163676 05-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Use LLVM type header rather than using stdint.h directly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
852157601505e0a641f1b66c9e2fb028f77bb7d1 05-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Use LLVM type header rather than using stdint.h directly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
c24b889ca4ac3c0af96c30cbf5d4db8165ff2dfe 05-Mar-2009 Chris Lattner <sabre@nondot.org> Include information about compound statements when crashing in sema or the
parser. For example, we now print out:

0. t.c:5:10: in compound statement {}
1. t.c:3:12: in compound statement {}
2. clang t.c -fsyntax-only



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PrettyStackTrace.h
asic/SourceLocation.h
ae50fa0a9e7217b043ed4ffe175af4b26dc90f34 05-Mar-2009 Chris Lattner <sabre@nondot.org> Include information about compound statements when crashing in sema or the
parser. For example, we now print out:

0. t.c:5:10: in compound statement {}
1. t.c:3:12: in compound statement {}
2. clang t.c -fsyntax-only



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/PrettyStackTrace.h
asic/SourceLocation.h
79d02158839dd73138e54caa30bd7b022c6ce1d3 05-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::dump and SeparateArg stubs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66100 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
f781c4192ee51a55c08ec53f054284ad1cdb2043 05-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Arg::dump and SeparateArg stubs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66100 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
315b113a044dfbb59edd6f598e09b451026fffa2 04-Mar-2009 Ted Kremenek <kremenek@apple.com> MemRegion:
- Have 'TypedRegion::getRValueType()' return a null QualType for 'id<...>'
instead of aborting.
- Change 'TypedRegion::isBoundable()' to return true for all objects with a
non-null RValueType (this may not be the final behavior).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66093 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1b9b883a95215e38e153d253a46a2a2fcac25896 04-Mar-2009 Ted Kremenek <kremenek@apple.com> MemRegion:
- Have 'TypedRegion::getRValueType()' return a null QualType for 'id<...>'
instead of aborting.
- Change 'TypedRegion::isBoundable()' to return true for all objects with a
non-null RValueType (this may not be the final behavior).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66093 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
6d6bcec9007af667c8760d214c388e886056a874 04-Mar-2009 Ted Kremenek <kremenek@apple.com> Add an optional "tag" to conjured symbols that allows us to distinguish between
multiple symbols conjured at the same location. All that is required of the tag
is that it is a fixed void* value that points to an memory address that remains
valid throughout the remainder of the lifetime of the SymbolManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66092 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
a880b66d6e0e446501fcbc27b87a1ec0e4ecde4c 04-Mar-2009 Ted Kremenek <kremenek@apple.com> Add an optional "tag" to conjured symbols that allows us to distinguish between
multiple symbols conjured at the same location. All that is required of the tag
is that it is a fixed void* value that points to an memory address that remains
valid throughout the remainder of the lifetime of the SymbolManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66092 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
36a43f8d678ae5fe291c7b95fa946ae4a34c0438 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add OptTable::ParseOneArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66090 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
70a0dbbfbd933c80722549fef2d56de85c32d752 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add OptTable::ParseOneArg.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66090 91177308-0d34-0410-b5e6-96231b3b80d8
river/Options.h
12d474a91d360191f28134c96627213170f69f57 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::{append, getArgString}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66089 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
9358dc8d1edae6f9279647084e768c6da5715f73 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList::{append, getArgString}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66089 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
866fc41172773bfd04f688fcab5af85eafe187a5 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out Arg implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66088 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
fb36caee244b9954caf9d4dda73608980e9c45b8 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Stub out Arg implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66088 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
0cc2ac1a06a920ac92d88f0376a0f379277792a6 04-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Implemented access check for ivars accessed inside
c-style functions declared inside objc @implementations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66087 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a6e3ac514c924879699c6b0b1201028f0091044f 04-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Implemented access check for ivars accessed inside
c-style functions declared inside objc @implementations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66087 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0d96a83bcbb5a0f53c6ffb70dcac86c1cac0e781 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Option's need to know their ID.
- Also, add Input and Unknown opts to OptTable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66079 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.h
30b055f553ffa50ae5413ecf0f0ac8061c58f475 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Option's need to know their ID.
- Also, add Input and Unknown opts to OptTable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66079 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.h
3ac95838d63dcd8098bd1e3cafe6aede7a016b7d 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pull intrusive list out of Arg; this isn't going to suffice. I
will make this efficient later (if it even matters)...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66071 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
3e894bc92c3f7e6eaaa49c2ea3871be8ee43a100 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Pull intrusive list out of Arg; this isn't going to suffice. I
will make this efficient later (if it even matters)...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66071 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
a33adb7c7892e4ad440186a953cbf3359052632b 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Return reference for Arg::getOption().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66070 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
eec991a7041ce0142dc326c3ebe627119e3cae2e 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Return reference for Arg::getOption().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66070 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
ec0f2fa749b5c1a2d681aed9f185d28fdba46734 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66067 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
0f9098e093089e935066729ea06bc86c23d9a432 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66067 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
0119ee4ba9c6fd8f423afd506e9740c053a394a0 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak Option::accept interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66066 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
3c9cc6bfe933766a8b4177a3f69841b2344ec48a 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Tweak Option::accept interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66066 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
b25c25c942bc8e8462a6e64f380f19ed89a3a2f0 04-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> The basic representation of diagnostics information in tablegen format, plus (uncommented and incomplete) test conversions of the existing def files to this format.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66064 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
4b1c875351958a765339850cfb98e332435f847b 04-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> The basic representation of diagnostics information in tablegen format, plus (uncommented and incomplete) test conversions of the existing def files to this format.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66064 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.td
asic/DiagnosticASTKinds.td
asic/DiagnosticAnalysisKinds.td
asic/DiagnosticCommonKinds.td
asic/DiagnosticLexKinds.td
asic/DiagnosticParseKinds.td
asic/DiagnosticSemaKinds.td
d6f0e37e654ace04dcefa70af2c12d0c302004d6 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sink Driver/Compilation into clang::driver namespace.
- Add OptTable instance to Driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66063 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
1b3bb6efc59a21f794b534078f9ae7e95393f510 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sink Driver/Compilation into clang::driver namespace.
- Add OptTable instance to Driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66063 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
9e4b3be7a1e0aac6702a5580fb1af61a7701d5c7 04-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix typo in diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
3a084b6093d67a00fa4bb0ab6a988f0e5a6770b0 04-Mar-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Fix typo in diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66059 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
d77aac9273ca922a06aeabd1c6b431ec23bc9312 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66037 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
6ac1e2252b1a16fd8841c4b1af8fe41b820aa41d 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Add ArgList implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66037 91177308-0d34-0410-b5e6-96231b3b80d8
river/ArgList.h
ff6c8029fd774de17d64b83fa522955fe00015dd 04-Mar-2009 Steve Naroff <snaroff@apple.com> Finish up some fixes related to <rdar://problem/6497631> Message lookup is sometimes different than gcc's.

- Disallow casting 'super'. GCC allows this, however it doesn't make sense (super isn't an expression and the cast won't alter lookup/dispatch).
- Tighten up lookup when messaging 'self'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
6b9dfd4257b85c388a9e3cd345cf28acb7351006 04-Mar-2009 Steve Naroff <snaroff@apple.com> Finish up some fixes related to <rdar://problem/6497631> Message lookup is sometimes different than gcc's.

- Disallow casting 'super'. GCC allows this, however it doesn't make sense (super isn't an expression and the cast won't alter lookup/dispatch).
- Tighten up lookup when messaging 'self'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
a5aa4b0cb5b37f3afef3b1da4c394987c21c6598 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: More Option implementation.
- Add Options.def file, collects option information.

- Actual option instantiation is handled lazily by OptTable to allow
the driver to not need to instantiate all options.

- cast<> support for Option, other minor tweaks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66028 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.def
river/Options.h
2c6f6f3c170502c5b810102cf85f05732a2aa9d0 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: More Option implementation.
- Add Options.def file, collects option information.

- Actual option instantiation is handled lazily by OptTable to allow
the driver to not need to instantiate all options.

- cast<> support for Option, other minor tweaks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66028 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
river/Options.def
river/Options.h
c003cb20921831dbee63d498475975d54353870e 04-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Check that the return type for function definitions is complete.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7f0f5dce3adcfce88d5c9a0ad0146a33c01a1e8f 04-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Check that the return type for function definitions is complete.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66027 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
5990afdc890dc289a902761c83959fb9399a339d 04-Mar-2009 Chris Lattner <sabre@nondot.org> make the token lexer allocate its temporary token buffers for
preexpanded macro arguments from the preprocessor's bump pointer.
This reduces # mallocs from 12444 to 11792.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66025 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/TokenLexer.h
32fca722dd974b8202d0fb9c71b6c185c0767da6 04-Mar-2009 Chris Lattner <sabre@nondot.org> make the token lexer allocate its temporary token buffers for
preexpanded macro arguments from the preprocessor's bump pointer.
This reduces # mallocs from 12444 to 11792.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66025 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/TokenLexer.h
16ded577897389958dd317b6c743b046ecad77fd 04-Mar-2009 Chris Lattner <sabre@nondot.org> Switch attributes to be allocated from the declcontext bump pointer just like
decls. This reduces the number of calls to malloc on cocoa.h with pth and
-disable-free from 15958 to 12444 times (down ~3500).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
0b2b6e1cb1573bb295c0a65813dc4df8d57f305b 04-Mar-2009 Chris Lattner <sabre@nondot.org> Switch attributes to be allocated from the declcontext bump pointer just like
decls. This reduces the number of calls to malloc on cocoa.h with pth and
-disable-free from 15958 to 12444 times (down ~3500).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
0fc6d64bb2d40359557cf2ba7dc1c19aeb39ca02 04-Mar-2009 Chris Lattner <sabre@nondot.org> add an a Attr::Destroy method and force clients to go through it. As part of
this, make DeclBase::Destroy destroy attributes instead of the DeclBase dtor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
cc5814732edc0c382d0136ab57ec6149566043e2 04-Mar-2009 Chris Lattner <sabre@nondot.org> add an a Attr::Destroy method and force clients to go through it. As part of
this, make DeclBase::Destroy destroy attributes instead of the DeclBase dtor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
d540c115b24af3e5bd17f1b49b0b8bd9af2c6b33 04-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanup for choose expressions: add a helper that returns the
chosen sub-expression, rather than just evaluating the condition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7976932a1c256d447316ffac58e9821417725e34 04-Mar-2009 Eli Friedman <eli.friedman@gmail.com> Minor cleanup for choose expressions: add a helper that returns the
chosen sub-expression, rather than just evaluating the condition.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66018 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c96f3d932df38c85a3d2589f756fd0ed2643f3f8 04-Mar-2009 Chris Lattner <sabre@nondot.org> allocate MultiKeywordSelector's out of a bump pointer allocator instead of malloc.
This has two advantages 1) no more leaking them, 2) fewer calls to malloc.

This changes us from calling malloc 3685/1390/883/2974/1185 times respectively on
16/20/24/28/32 byte objects when parsing cocoa.h with pth and -disable-free to
calling it 2816/1020/702/2903/1168 times each respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
5f7d2284c4b2f08d155732454002e68dc40c33ef 04-Mar-2009 Chris Lattner <sabre@nondot.org> allocate MultiKeywordSelector's out of a bump pointer allocator instead of malloc.
This has two advantages 1) no more leaking them, 2) fewer calls to malloc.

This changes us from calling malloc 3685/1390/883/2974/1185 times respectively on
16/20/24/28/32 byte objects when parsing cocoa.h with pth and -disable-free to
calling it 2816/1020/702/2903/1168 times each respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66017 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
4db0f9a68d8b980b3d08afc3120bd373252aaa30 04-Mar-2009 Chris Lattner <sabre@nondot.org> fix infinite recursion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
91ee0140ecb60b5c1402edc9e577257636c4ca60 04-Mar-2009 Chris Lattner <sabre@nondot.org> fix infinite recursion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
edde56f5dab14ff4678e633a25323ba35782d891 04-Mar-2009 Chris Lattner <sabre@nondot.org> make CaseStmt::getSourceRange() iterative for deeply
nested cases instead of recursive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
3fb94a4918bd427fdb12df997dd87fd1017f0388 04-Mar-2009 Chris Lattner <sabre@nondot.org> make CaseStmt::getSourceRange() iterative for deeply
nested cases instead of recursive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
daac694b37c04664d2626d708c1faf3458cf4fce 04-Mar-2009 Chris Lattner <sabre@nondot.org> Change Parser::ParseCaseStatement to use an iterative approach to parsing
multiple sequential case statements instead of doing it with recursion. This
fixes a problem where we run out of stack space parsing 100K directly nested
cases.

There are a couple other problems that prevent this from being useful in
practice (right now the example only parses correctly with -disable-free and
doesn't work with -emit-llvm), but this is a start.

I'm not including a testcase because it is large and uninteresting for
regtesting.

Sebastian, I would appreciate it if you could scrutinize the smart pointer
gymnastics I do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66011 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
24e1e707b4c362f18e371e2bbf054a8345b57bfa 04-Mar-2009 Chris Lattner <sabre@nondot.org> Change Parser::ParseCaseStatement to use an iterative approach to parsing
multiple sequential case statements instead of doing it with recursion. This
fixes a problem where we run out of stack space parsing 100K directly nested
cases.

There are a couple other problems that prevent this from being useful in
practice (right now the example only parses correctly with -disable-free and
doesn't work with -emit-llvm), but this is a start.

I'm not including a testcase because it is large and uninteresting for
regtesting.

Sebastian, I would appreciate it if you could scrutinize the smart pointer
gymnastics I do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66011 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
e74bf07f0f8f1be620c57e656e72f27ca1b43ce2 04-Mar-2009 Ted Kremenek <kremenek@apple.com> Added the notion of a "boundable region", which is a region that can have a direct binding in the StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66005 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
41168eac256fed59ec5406a75fce91c59cd5dd91 04-Mar-2009 Ted Kremenek <kremenek@apple.com> Added the notion of a "boundable region", which is a region that can have a direct binding in the StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66005 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
1fb145b96e5e004c5b7b1cc4e6e55f7dead47c57 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add some more FIXME's about bits we could pack better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
fe133d98fd003db818dcc2a0f0dbf7416a01aaed 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Add some more FIXME's about bits we could pack better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d6e68cdd168e321986126f6c52c9cd15e7370842 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Woot, save 8 bytes in Decl on 64-bit by reordering fields. This
reduces allocated Decl size by ~8% on Cocoa.h (~700k).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
39d7650656fdd1be879ed7d0c722cfeae95e56d5 04-Mar-2009 Daniel Dunbar <daniel@zuster.org> Woot, save 8 bytes in Decl on 64-bit by reordering fields. This
reduces allocated Decl size by ~8% on Cocoa.h (~700k).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66002 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
fa92f34ed590a147cd14ff066c78bc5073a95f91 04-Mar-2009 Ted Kremenek <kremenek@apple.com> Add "GetSValAsScalarOrLoc" methods to GRState/GRStateRef that only perform a
retrieval from the store/environment for locations or scalar types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65982 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
1cb151eadee0ef1944bd9a16aa4348ead7160259 04-Mar-2009 Ted Kremenek <kremenek@apple.com> Add "GetSValAsScalarOrLoc" methods to GRState/GRStateRef that only perform a
retrieval from the store/environment for locations or scalar types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65982 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
e54d4eb6ca0d137b7f8a5c6978c5e6425eb619dc 04-Mar-2009 Steve Naroff <snaroff@apple.com> Change a warning to an error...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
d198abae5938262e501a409e833bf01ca8b8253e 04-Mar-2009 Steve Naroff <snaroff@apple.com> Change a warning to an error...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
ba0041b18b99fc8deb1f98292ff0fd8db65a5995 03-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Implement an important missing warning when a selector
is searched for in the global pool. It already uncovered
a clang bug in message selection.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
268bc8c1f3a27d2fbd73c3115e4d633d31422ca5 03-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Implement an important missing warning when a selector
is searched for in the global pool. It already uncovered
a clang bug in message selection.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
9577c1e1137a8dfe4ded7e058fa7d319c76158f2 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Rework use of loc::SymbolVal in the retain/release checker to use the new method
SVal::getAsLocSymbol(). This simplifies the code and allows the retain/release
checker to (I believe) also correctly reason about location symbols wrapped in
SymbolicRegions.

Along the way I cleaned up SymbolRef a little, disallowing implicit casts to
'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65972 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
94c969804b1f98650316a8f75434b2d24dbe94ea 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Rework use of loc::SymbolVal in the retain/release checker to use the new method
SVal::getAsLocSymbol(). This simplifies the code and allows the retain/release
checker to (I believe) also correctly reason about location symbols wrapped in
SymbolicRegions.

Along the way I cleaned up SymbolRef a little, disallowing implicit casts to
'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65972 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
30db0042513e2bdd3690e6491ac855fe1ee7d9d2 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
9d40ee50f8a013e5253101648092cf0daa76c335 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
45c237da51b90936307eefdd5a276649800c9995 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
f50cb369273c6bd26c9629df92ee53f1d8af4149 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
f6790a803435e05567812367280879268a962157 03-Mar-2009 Chris Lattner <sabre@nondot.org> implement support for propagating *features* down to the code generator
and defining target-specific macros based on them (like __SSE3__ and
friends). After extensive discussion with Daniel, this work will need
driver support, which will translate things like -msse3 into a -mattr
feature. Until this work is done, the code in clang.cpp is disabled and
the X86TargetInfo ctor still defaults to SSE2. With these two things
changed, this code will work. PR3634


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65966 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6328cc316d7032517399da9230a197cd29f2664d 03-Mar-2009 Chris Lattner <sabre@nondot.org> implement support for propagating *features* down to the code generator
and defining target-specific macros based on them (like __SSE3__ and
friends). After extensive discussion with Daniel, this work will need
driver support, which will translate things like -msse3 into a -mattr
feature. Until this work is done, the code in clang.cpp is disabled and
the X86TargetInfo ctor still defaults to SSE2. With these two things
changed, this code will work. PR3634


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65966 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0e8b96abd2515a746cefe47cbc92feacc8c5b841 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6640991> Exception handling executes wrong clause (Daniel, please verify).

Also necessary to fix:

<rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements
<rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
7ba138abd329e591a8f6d5001f60dd7082f71b3b 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6640991> Exception handling executes wrong clause (Daniel, please verify).

Also necessary to fix:

<rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements
<rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
b004b1d1cc85b9a7b287bfbc7d6c2e5572f4eca8 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Don't use std::auto_ptr with getSubRegionMap().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65957 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
14453bf723c025034823e4d4005a98ee176753a0 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Don't use std::auto_ptr with getSubRegionMap().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65957 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
247049d634ebac44f1edc3641e4d7c59b3347239 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Hush gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65952 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
d35e63106d7b4b76275c85c88ee715c4356f2a6b 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Hush gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65952 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
2567c9e9d0b0a12f1e8436a9d7b895877569f9be 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6497242> Inherited overridden protocol declared objects don't work.

Change Sema::DiagnosePropertyMismatch() to check for type compatibility (rather than type equivalence, which is too strict).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65949 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
15edf0de6b5bc9ae227bcc9658a157ac30efd92e 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6497242> Inherited overridden protocol declared objects don't work.

Change Sema::DiagnosePropertyMismatch() to check for type compatibility (rather than type equivalence, which is too strict).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65949 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
58d0d6f5e9f0bfcc00a756946c5898a7e028c558 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6497608> clang does not catch ivar type mismatches in @implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65948 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
ca33129bb28b05938c3e6c9f8a66165b5cceb4dd 03-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6497608> clang does not catch ivar type mismatches in @implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65948 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
eae6c9e77c4bc7e136e3d9ab1a7c2d189e3ae30f 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch Arg & ArgList classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65937 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/Util.h
0258eeeac5ecbc67b6a09e3497f3d593db01903b 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Driver: Sketch Arg & ArgList classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65937 91177308-0d34-0410-b5e6-96231b3b80d8
river/Arg.h
river/ArgList.h
river/Util.h
16090d46b3b9bd2fd97d7278f62755553c0ff9bd 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Sketch Driver Option classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65933 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
1eb4e64eed08837b85a375d6a953503daa844f07 03-Mar-2009 Daniel Dunbar <daniel@zuster.org> Sketch Driver Option classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65933 91177308-0d34-0410-b5e6-96231b3b80d8
river/Option.h
ed3a398adc9a7745c2acc3fa0ad4a906149ef2de 03-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Implement the basics of implicit instantiation of class templates, in
response to attempts to diagnose an "incomplete" type. This will force
us to use DiagnoseIncompleteType more regularly (rather than looking at
isIncompleteType), but that's also a good thing.

Implicit instantiation is still very simplistic, and will create a new
definition for the class template specialization (as it should) but it
only actually instantiates the base classes and attaches
those. Actually instantiating class members will follow.

Also, instantiate the types of non-type template parameters before
checking them, allowing, e.g.,

template<typename T, T Value> struct Constant;

to work properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
2943aed177b33ae3f14273b11a7b398e5276ec62 03-Mar-2009 Douglas Gregor <dgregor@apple.com> Implement the basics of implicit instantiation of class templates, in
response to attempts to diagnose an "incomplete" type. This will force
us to use DiagnoseIncompleteType more regularly (rather than looking at
isIncompleteType), but that's also a good thing.

Implicit instantiation is still very simplistic, and will create a new
definition for the class template specialization (as it should) but it
only actually instantiates the base classes and attaches
those. Actually instantiating class members will follow.

Also, instantiate the types of non-type template parameters before
checking them, allowing, e.g.,

template<typename T, T Value> struct Constant;

to work properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
fe2e9fabd43740c389ad01eb913f9f0ea0787054 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Implement FIXME: GRStateManager::scanReachableSymbols now supports scanning MemRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65919 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
5dc2746b6c759d2fdab050d3d41ba60ad141a0a3 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Implement FIXME: GRStateManager::scanReachableSymbols now supports scanning MemRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65919 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
6f718475d17f7b275e268b7bc2b0f4d037715da0 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Add StoreManager::getSubRegionMap(). This method returns an opaque mapping for clients of StoreManagers from MemRegions to their subregions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65914 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
59e8f1128019aef95f45c6fa09cc0f8bfea99f13 03-Mar-2009 Ted Kremenek <kremenek@apple.com> Add StoreManager::getSubRegionMap(). This method returns an opaque mapping for clients of StoreManagers from MemRegions to their subregions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65914 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
dd71e75bc6811906b458ee93b18a350fa758b00e 03-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Check of ivar access access control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
935fd768f95edc21f03c6c61f8b48ee99ff8bab6 03-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Check of ivar access access control.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65912 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7d6220ca4a53b38673473fd461ff8e983d22225e 02-Mar-2009 Chris Lattner <sabre@nondot.org> improve compatibility with GCC 4.4, patch by Michel Salim (PR3697)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
3daed52a57d03765223021f5f921bdc280c8f3cc 02-Mar-2009 Chris Lattner <sabre@nondot.org> improve compatibility with GCC 4.4, patch by Michel Salim (PR3697)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
738d3f647b8423495cb77a76819f3257ba61a5eb 02-Mar-2009 Chris Lattner <sabre@nondot.org> start wiring up support for target-specific -mfoo options like -msse


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65881 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
16167a6e3f7dfb7ed0babc5e0baab9fd140e959d 02-Mar-2009 Chris Lattner <sabre@nondot.org> start wiring up support for target-specific -mfoo options like -msse


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65881 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
67502dbd17bc68146a47cbb1db745d047bafac8a 02-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose a variety of access of ivars when they conflict with
local or global variables in instance/class methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
077c1e7377edeef3438ba59cd8151177868b62d4 02-Mar-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose a variety of access of ivars when they conflict with
local or global variables in instance/class methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
63c4da9ac2c5683bf6b6a12db8f4772a5748e4ae 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Stub out some structure for C++ driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65867 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
3ede8d0a7d1813f678ccc6011a99a0834b1b6116 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Stub out some structure for C++ driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65867 91177308-0d34-0410-b5e6-96231b3b80d8
river/Compilation.h
river/Driver.h
c327eb06e5b43d416f7157f25ee03f9b6f964fdd 02-Mar-2009 Ted Kremenek <kremenek@apple.com> Add a 'kind' field to PathDiagnosticPieces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65862 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
d0feed6224d70ed7b1483342ddef4437b80beef2 02-Mar-2009 Ted Kremenek <kremenek@apple.com> Add a 'kind' field to PathDiagnosticPieces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65862 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
8dd73e7b7e0b9d41fe5a05be641a85d1d892bf26 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Normalize .h guards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65853 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
rontend/InitHeaderSearch.h
rontend/ManagerRegistry.h
rontend/PathDiagnosticClients.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
d37ee16367bbf8058799148d958cbf4fbabc9fb7 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Normalize .h guards.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65853 91177308-0d34-0410-b5e6-96231b3b80d8
rontend/CompileOptions.h
rontend/InitHeaderSearch.h
rontend/ManagerRegistry.h
rontend/PathDiagnosticClients.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
7ab4b4cb8730789a55bce6941117e99abc72555c 02-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> Initial support for pointer arithmetic. Only support concrete indexes and
offsets for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65814 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
94aa6c16e7404b2ff83a6f0ae7db8a758d389fc4 02-Mar-2009 Zhongxing Xu <xuzhongxing@gmail.com> Initial support for pointer arithmetic. Only support concrete indexes and
offsets for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65814 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
68952de6d75d9d1fad97e67eea6deeaeddd2cd6b 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Rename lib/Driver (etc) to lib/Frontend in prep for the *actual*
driver taking lib/Driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65811 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
river/InitHeaderSearch.h
river/ManagerRegistry.h
river/PathDiagnosticClients.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
rontend/CompileOptions.h
rontend/InitHeaderSearch.h
rontend/ManagerRegistry.h
rontend/PathDiagnosticClients.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
e1bd4e6d7c5b13462f83245865f7d9e9b6ea8486 02-Mar-2009 Daniel Dunbar <daniel@zuster.org> Rename lib/Driver (etc) to lib/Frontend in prep for the *actual*
driver taking lib/Driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65811 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
river/InitHeaderSearch.h
river/ManagerRegistry.h
river/PathDiagnosticClients.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
rontend/CompileOptions.h
rontend/InitHeaderSearch.h
rontend/ManagerRegistry.h
rontend/PathDiagnosticClients.h
rontend/TextDiagnosticBuffer.h
rontend/TextDiagnosticPrinter.h
e6b5d1d42712aaf3652b84e433c0488abe2cc193 02-Mar-2009 Douglas Gregor <doug.gregor@gmail.com> Rework the way we find locally-scoped external declarations when we
need them to evaluate redeclarations or call a function that hasn't
already been declared. We now keep a DenseMap of these locally-scoped
declarations so that they are not visible but can be quickly found,
e.g., when we're looking for previous declarations or before we go
ahead and implicitly declare a function that's being called. Fixes
PR3672.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6393519272ce727f4d26e71bbefb5de712274d0e 02-Mar-2009 Douglas Gregor <dgregor@apple.com> Rework the way we find locally-scoped external declarations when we
need them to evaluate redeclarations or call a function that hasn't
already been declared. We now keep a DenseMap of these locally-scoped
declarations so that they are not visible but can be quickly found,
e.g., when we're looking for previous declarations or before we go
ahead and implicitly declare a function that's being called. Fixes
PR3672.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
aa3ee07f675338d1618dba1a7947a84fa5130a4c 01-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6248764> parser rejects: bad receiver type 'CFStringRef'.

Downgrade an error to a warning (for GCC compatibility).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65779 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
8e2945ad9104f0ce4928c386faf458b6b83d9060 01-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6248764> parser rejects: bad receiver type 'CFStringRef'.

Downgrade an error to a warning (for GCC compatibility).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65779 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
98e71b8a4d881646713af99a63c610544ae0b517 01-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6619539> incompatible pointer types sending 'XCElementSpacer *', expected 'XCElement *' (not handling protocol signatures correctly?).

- Reworked ASTContext::canAssignObjCInterfaces().
- Added ObjCProtocolDecl::lookupProtocolNamed().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
91b0b0cf6b537cbcbca0038c7032f87161a41d31 01-Mar-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6619539> incompatible pointer types sending 'XCElementSpacer *', expected 'XCElement *' (not handling protocol signatures correctly?).

- Reworked ASTContext::canAssignObjCInterfaces().
- Added ObjCProtocolDecl::lookupProtocolNamed().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6a9b535ba340bf043b41b6c627c88d27affd6a11 01-Mar-2009 Ted Kremenek <kremenek@apple.com> Rename AnonTypedRegion to TypedViewRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65764 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0312c0e09c9de480d78607972ac64a88f4e94a33 01-Mar-2009 Ted Kremenek <kremenek@apple.com> Rename AnonTypedRegion to TypedViewRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65764 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
d23d9922e00dd86aab5349208a00c8ea52b556a7 01-Mar-2009 Daniel Dunbar <daniel@zuster.org> ObjCAtCatchStmt's ParamStmt is always a DeclStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65759 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
93b2bdb866d49e3dab4623a822db281042e87382 01-Mar-2009 Daniel Dunbar <daniel@zuster.org> ObjCAtCatchStmt's ParamStmt is always a DeclStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65759 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7cc13bfd6c8f6b0ea1f0989fe87fc3e8428b1c8c 01-Mar-2009 Chris Lattner <sabre@nondot.org> "This patch uses the new ObjCImplDecl class to merge Sema::ImplMethodsVsClassMethods and Sema::ImplCategoryMethodsVsIntfMethods methods.
And now, when clang check a class implementation to find unimplemented methods, it also checks all methods from the class extensions (unnamed categories).

There is also a test case to check this warning.

This patch contains also a minor update for ObjCImplDecl . getNameAsCString and getNameAsString now returns an empty string instead of crashing for unnamed categories."

Patch by Jean-Daniel Dupas!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cddc88800bbd1213ec70ae5153c6a7f2e380fd8d 01-Mar-2009 Chris Lattner <sabre@nondot.org> "This patch uses the new ObjCImplDecl class to merge Sema::ImplMethodsVsClassMethods and Sema::ImplCategoryMethodsVsIntfMethods methods.
And now, when clang check a class implementation to find unimplemented methods, it also checks all methods from the class extensions (unnamed categories).

There is also a test case to check this warning.

This patch contains also a minor update for ObjCImplDecl . getNameAsCString and getNameAsString now returns an empty string instead of crashing for unnamed categories."

Patch by Jean-Daniel Dupas!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
649b3da43473314f383e8dc091905f287e54c59f 28-Feb-2009 Chris Lattner <sabre@nondot.org> "This patch addresses two FIXME on ObjCCategoryImplDecl:

/// FIXME: Like ObjCImplementationDecl, this should not be a NamedDecl!
/// FIXME: Introduce a new common base class for ObjCImplementationDecl and ObjCCategoryImplDecl

It adds an IndentifierInfo ivar to the ObjCCategoryImplDecl, so it can inherits from Decl and not NamedDecl (I'm not sure about the memory management of this ivar).

And now that both ObjCImplementationDecl and ObjCCategoryImplDecl have the same super classes, it allow creation of a common base class: ObjCImplDecl"

Patch by Jean-Daniel Dupas!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3aa1861bd8b5121e53379b1a00f9d6ad8dead4f6 28-Feb-2009 Chris Lattner <sabre@nondot.org> "This patch addresses two FIXME on ObjCCategoryImplDecl:

/// FIXME: Like ObjCImplementationDecl, this should not be a NamedDecl!
/// FIXME: Introduce a new common base class for ObjCImplementationDecl and ObjCCategoryImplDecl

It adds an IndentifierInfo ivar to the ObjCCategoryImplDecl, so it can inherits from Decl and not NamedDecl (I'm not sure about the memory management of this ivar).

And now that both ObjCImplementationDecl and ObjCCategoryImplDecl have the same super classes, it allow creation of a common base class: ObjCImplDecl"

Patch by Jean-Daniel Dupas!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
36834a75d9a3daaf87b6ef25a06ccf084eb43561 28-Feb-2009 Anders Carlsson <andersca@mac.com> TargetInfo::validateAsmConstraint now takes a reference to the full constraints string. This will make it possible to support multi-character constraints. No functionality change (for now).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65696 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
066d2ea7521896efc05cce7aa46fdd3a7ba96c28 28-Feb-2009 Anders Carlsson <andersca@mac.com> TargetInfo::validateAsmConstraint now takes a reference to the full constraints string. This will make it possible to support multi-character constraints. No functionality change (for now).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65696 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8df46020beb7d40a80fecedc59c8435df261ecd1 28-Feb-2009 Steve Naroff <snaroff@apple.com> Minor name change (move the ObjC prefix to a more appropriate place).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65695 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ebf6443a4f493233f7e8d92b3a991848c8b1c00d 28-Feb-2009 Steve Naroff <snaroff@apple.com> Minor name change (move the ObjC prefix to a more appropriate place).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65695 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
313c41696f1ab0f4ed13398c2f425eec421c304c 28-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6451399> problems with labels and blocks.

- Move the 'LabelMap' from Sema to Scope. To avoid layering problems, the second element is now a 'StmtTy *', which makes the LabelMap a bit more verbose to deal with.
- Add 'ActiveScope' to Sema. Managed by ActOnStartOfFunctionDef(), ObjCActOnStartOfMethodDef(), ActOnBlockStmtExpr().
- Changed ActOnLabelStmt(), ActOnGotoStmt(), ActOnAddrLabel(), and ActOnFinishFunctionBody() to use the new ActiveScope.
- Added FIXME to workaround in ActOnFinishFunctionBody() (for dealing with C++ nested functions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65694 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
f3cf89737965352ee02026992e2dc735824e185e 28-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6451399> problems with labels and blocks.

- Move the 'LabelMap' from Sema to Scope. To avoid layering problems, the second element is now a 'StmtTy *', which makes the LabelMap a bit more verbose to deal with.
- Add 'ActiveScope' to Sema. Managed by ActOnStartOfFunctionDef(), ObjCActOnStartOfMethodDef(), ActOnBlockStmtExpr().
- Changed ActOnLabelStmt(), ActOnGotoStmt(), ActOnAddrLabel(), and ActOnFinishFunctionBody() to use the new ActiveScope.
- Added FIXME to workaround in ActOnFinishFunctionBody() (for dealing with C++ nested functions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65694 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
9c0e6f93e60bc4cd6e43cb0cdf65bc49b1740dc3 28-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Start of checking for gotos which jump to an illegal destination.
As far as I know, this catches all cases of jumping into the scope of a
variable with a variably modified type (excluding statement
expressions) in C. This is missing some stuff we probably want to check
(other kinds of variably modified declarations, statement expressions,
indirect gotos/addresses of labels in a scope, ObjC @try/@finally, cleanup
attribute), the diagnostics aren't very good, and it's not particularly
efficient, but it's a decent start.

This patch is a slightly modified version of the patch I attached to
PR3259, and it fixes that bug. I was sort of planning on improving
it, but I think it's okay as-is, especially since it looks like CodeGen
doesn't have any use for this sort of data structure. The only
significant change I can think of from the version I attached to PR3259
is that this version skips running the checking code when a function
doesn't contain any labels.

This patch doesn't cover case statements, which also need similar
checking; I'm not sure how we should deal with that. Extending the goto
checking to also check case statements wouldn't be too hard; it's just a
matter of keeping track of the scope of the closest switch and checking that
the scope of every case is the same as the scope of the switch. That said,
it would likely be a performance hit to run this check on every
function (it's an extra pass over the entire function), so we probably want
some other solution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65678 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
8f17b66c8d383d458e04cada4c9e2452139b0b39 28-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Start of checking for gotos which jump to an illegal destination.
As far as I know, this catches all cases of jumping into the scope of a
variable with a variably modified type (excluding statement
expressions) in C. This is missing some stuff we probably want to check
(other kinds of variably modified declarations, statement expressions,
indirect gotos/addresses of labels in a scope, ObjC @try/@finally, cleanup
attribute), the diagnostics aren't very good, and it's not particularly
efficient, but it's a decent start.

This patch is a slightly modified version of the patch I attached to
PR3259, and it fixes that bug. I was sort of planning on improving
it, but I think it's okay as-is, especially since it looks like CodeGen
doesn't have any use for this sort of data structure. The only
significant change I can think of from the version I attached to PR3259
is that this version skips running the checking code when a function
doesn't contain any labels.

This patch doesn't cover case statements, which also need similar
checking; I'm not sure how we should deal with that. Extending the goto
checking to also check case statements wouldn't be too hard; it's just a
matter of keeping track of the scope of the closest switch and checking that
the scope of every case is the same as the scope of the switch. That said,
it would likely be a performance hit to run this check on every
function (it's an extra pass over the entire function), so we probably want
some other solution.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65678 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
2e0475984442f3da3e8359ca453d430ba7b2b2d1 28-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate CXXRecordType

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65671 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
c1efaecf0373f1a55c5ef4c234357cf726fc0600 28-Feb-2009 Douglas Gregor <dgregor@apple.com> Eliminate CXXRecordType

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65671 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeNodes.def
50956e4675a87c2f9f81b6f8367146e066e8f8eb 27-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose gc attribute mismatch of property and its ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
9bc77b2423e75b9361f597d6fa7c024a53e504cd 27-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose gc attribute mismatch of property and its ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
bab9de8fa320b9ec4f6537006f0628d2c98d1491 27-Feb-2009 Chris Lattner <sabre@nondot.org> upgrade various 'implicit int' warnings from an ext-warn to warning when not
in C89 mode. This makes it enabled by default instead of only enabled with
-pedantic. Clang defaults to c99 mode, so people will see this more often
than with GCC, but they can always use -std=c89 if they really want c89.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
35d276f443462249b436951c1c663820569e1768 27-Feb-2009 Chris Lattner <sabre@nondot.org> upgrade various 'implicit int' warnings from an ext-warn to warning when not
in C89 mode. This makes it enabled by default instead of only enabled with
-pedantic. Clang defaults to c99 mode, so people will see this more often
than with GCC, but they can always use -std=c89 if they really want c89.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65647 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
92eca3e7583fc2eca996308a460a8a496efbf3bd 27-Feb-2009 Chris Lattner <sabre@nondot.org> cleanup


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65645 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
2a327d11a07dfbdf20910cebbae38910eda111fd 27-Feb-2009 Chris Lattner <sabre@nondot.org> cleanup


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65645 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
61be3601335d62fc5bd59ea89d6efff7576bf58d 27-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Clean up and document code modification hints.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/TokenKinds.h
ex/Preprocessor.h
b2fb6de9070fea9abc56c8e8d5469066e964cefe 27-Feb-2009 Douglas Gregor <dgregor@apple.com> Clean up and document code modification hints.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/TokenKinds.h
ex/Preprocessor.h
c6f830c804fb291d5fd5bfe63d3099c9b0950908 27-Feb-2009 Chris Lattner <sabre@nondot.org> change a diagnostic message from something pedantically correct but
useless to something more vague but hopefully more clear.
rdar://6624173


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
51a75d0cc7651753399efdc3176feaee6214c3ca 27-Feb-2009 Chris Lattner <sabre@nondot.org> change a diagnostic message from something pedantically correct but
useless to something more vague but hopefully more clear.
rdar://6624173


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
342d943fa54d78948ac52237dafdba3629618f42 27-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Change the AST generated for offsetof a bit so that it looks like a
normal expression, and change Evaluate and IRGen to evaluate it like a
normal expression. This simplifies the code significantly, and fixes
PR3396.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
35183aca180a2b9b2c637cd625a40a7e147d6a32 27-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Change the AST generated for offsetof a bit so that it looks like a
normal expression, and change Evaluate and IRGen to evaluate it like a
normal expression. This simplifies the code significantly, and fixes
PR3396.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4fa58905062efa6a12137b1983a1367220182a20 27-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Create a new TypeNodes.def file that enumerates all of the types,
giving them rough classifications (normal types, never-canonical
types, always-dependent types, abstract type representations) and
making it far easier to make sure that we've hit all of the cases when
decoding types.

Switched some switch() statements on the type class over to using this
mechanism, and filtering out those things we don't care about. For
example, CodeGen should never see always-dependent or non-canonical
types, while debug info generation should never see always-dependent
types. More switch() statements on the type class need to be moved
over to using this approach, so that we'll get warnings when we add a
new type then fail to account for it somewhere in the compiler.

As part of this, some types have been renamed:

TypeOfExpr -> TypeOfExprType
FunctionTypeProto -> FunctionProtoType
FunctionTypeNoProto -> FunctionNoProtoType

There shouldn't be any functionality change...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/Type.h
ST/TypeNodes.def
nalysis/PathSensitive/GRExprEngine.h
72564e73277e29f6db3305d1f27ba408abb7ed88 27-Feb-2009 Douglas Gregor <dgregor@apple.com> Create a new TypeNodes.def file that enumerates all of the types,
giving them rough classifications (normal types, never-canonical
types, always-dependent types, abstract type representations) and
making it far easier to make sure that we've hit all of the cases when
decoding types.

Switched some switch() statements on the type class over to using this
mechanism, and filtering out those things we don't care about. For
example, CodeGen should never see always-dependent or non-canonical
types, while debug info generation should never see always-dependent
types. More switch() statements on the type class need to be moved
over to using this approach, so that we'll get warnings when we add a
new type then fail to account for it somewhere in the compiler.

As part of this, some types have been renamed:

TypeOfExpr -> TypeOfExprType
FunctionTypeProto -> FunctionProtoType
FunctionTypeNoProto -> FunctionNoProtoType

There shouldn't be any functionality change...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65591 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/Type.h
ST/TypeNodes.def
nalysis/PathSensitive/GRExprEngine.h
e1dafe76b68e5bf05446411b7edb71b0ccb6f126 27-Feb-2009 Chris Lattner <sabre@nondot.org> make ASTContext::WCharTy a bit more sensical. In C++, it is a disctint type,
but in C99 it is just another int type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3a2503227c3db04a3619735127483263c1075ef7 27-Feb-2009 Chris Lattner <sabre@nondot.org> make ASTContext::WCharTy a bit more sensical. In C++, it is a disctint type,
but in C99 it is just another int type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65590 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
14032226751d936ceec4d385eb61853ee9861ff4 27-Feb-2009 Chris Lattner <sabre@nondot.org> fix some sema problems with wide strings and hook up basic codegen for them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65582 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
dbb1ecc32ca122b07b7c98fd0a8f6f53985adacc 27-Feb-2009 Chris Lattner <sabre@nondot.org> fix some sema problems with wide strings and hook up basic codegen for them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65582 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
9c7825b737617339724d43bd04960852271f08e2 26-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Make the type associated with a ClassTemplateSpecializationDecl be a
nicely sugared type that shows how the user wrote the actual
specialization. This sugared type won't actually show up until we
start doing instantiations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
fc705b84347e6fb4746a1a7e26949f64c2f2f358 26-Feb-2009 Douglas Gregor <dgregor@apple.com> Make the type associated with a ClassTemplateSpecializationDecl be a
nicely sugared type that shows how the user wrote the actual
specialization. This sugared type won't actually show up until we
start doing instantiations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
951a421c3a18d5425644d182c1f6e28932f5812c 26-Feb-2009 Ted Kremenek <kremenek@apple.com> PathDiagnosticPiece now automatically strips off trailing periods in diagnostic messages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65574 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
8af2975d50270813ae6366d007e9e1f5b65ddc68 26-Feb-2009 Ted Kremenek <kremenek@apple.com> PathDiagnosticPiece now automatically strips off trailing periods in diagnostic messages.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65574 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
3bb3000049dd841d51cfad730bd056d1467f92f0 26-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce code modification hints into the diagnostics system. When we
know how to recover from an error, we can attach a hint to the
diagnostic that states how to modify the code, which can be one of:

- Insert some new code (a text string) at a particular source
location
- Remove the code within a given range
- Replace the code within a given range with some new code (a text
string)

Right now, we use these hints to annotate diagnostic information. For
example, if one uses the '>>' in a template argument in C++98, as in
this code:

template<int I> class B { };
B<1000 >> 2> *b1;

we'll warn that the behavior will change in C++0x. The fix is to
insert parenthese, so we use code insertion annotations to illustrate
where the parentheses go:

test.cpp:10:10: warning: use of right-shift operator ('>>') in template
argument will require parentheses in C++0x
B<1000 >> 2> *b1;
^
( )


Use of these annotations is partially implemented for HTML
diagnostics, but it's not (yet) producing valid HTML, which may be
related to PR2386, so it has been #if 0'd out.

In this future, we could consider hooking this mechanism up to the
rewriter to actually try to fix these problems during compilation (or,
after a compilation whose only errors have fixes). For now, however, I
suggest that we use these code modification hints whenever we can, so
that we get better diagnostics now and will have better coverage when
we find better ways to use this information.

This also fixes PR3410 by placing the complaint about missing tokens
just after the previous token (rather than at the location of the next
token).




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65570 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
asic/Diagnostic.h
asic/DiagnosticParseKinds.def
asic/TokenKinds.h
river/TextDiagnosticPrinter.h
arse/Action.h
arse/Parser.h
4b2d3f7bcc4df31157df443af1b80bcaa9b58bba 26-Feb-2009 Douglas Gregor <dgregor@apple.com> Introduce code modification hints into the diagnostics system. When we
know how to recover from an error, we can attach a hint to the
diagnostic that states how to modify the code, which can be one of:

- Insert some new code (a text string) at a particular source
location
- Remove the code within a given range
- Replace the code within a given range with some new code (a text
string)

Right now, we use these hints to annotate diagnostic information. For
example, if one uses the '>>' in a template argument in C++98, as in
this code:

template<int I> class B { };
B<1000 >> 2> *b1;

we'll warn that the behavior will change in C++0x. The fix is to
insert parenthese, so we use code insertion annotations to illustrate
where the parentheses go:

test.cpp:10:10: warning: use of right-shift operator ('>>') in template
argument will require parentheses in C++0x
B<1000 >> 2> *b1;
^
( )


Use of these annotations is partially implemented for HTML
diagnostics, but it's not (yet) producing valid HTML, which may be
related to PR2386, so it has been #if 0'd out.

In this future, we could consider hooking this mechanism up to the
rewriter to actually try to fix these problems during compilation (or,
after a compilation whose only errors have fixes). For now, however, I
suggest that we use these code modification hints whenever we can, so
that we get better diagnostics now and will have better coverage when
we find better ways to use this information.

This also fixes PR3410 by placing the complaint about missing tokens
just after the previous token (rather than at the location of the next
token).




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65570 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
asic/Diagnostic.h
asic/DiagnosticParseKinds.def
asic/TokenKinds.h
river/TextDiagnosticPrinter.h
arse/Action.h
arse/Parser.h
fc096bf9d87834466e82482f99b1f6fe7e02bf2a 26-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add Type::hasPointerRepresentation predicate.
- For types whose native representation is a pointer.

- Use to replace ExprConstant.cpp:HasPointerEvalType,
CodeGenFunction::isObjCPointerType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65569 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8958891f5fa1e593c4519a36b3df427ee019d70b 26-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add Type::hasPointerRepresentation predicate.
- For types whose native representation is a pointer.

- Use to replace ExprConstant.cpp:HasPointerEvalType,
CodeGenFunction::isObjCPointerType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65569 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
554af94c53e3a182233fc4fb0f374a9eb3ae6bf6 26-Feb-2009 Daniel Dunbar <daniel@zuster.org> Remove PointerLikeType.
- Having pointers and references share a base was not a useful
notion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
68694ada8f4d8f6c4b00ea5b900df96428b28fc8 26-Feb-2009 Daniel Dunbar <daniel@zuster.org> Remove PointerLikeType.
- Having pointers and references share a base was not a useful
notion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6fdb28daa0eec6739149b82c275c5720009d628f 26-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Make more AST nodes and semantic checkers dependent-expression-aware.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
2850784bda09416fc7e9d57f5baa36c9351c757c 26-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Make more AST nodes and semantic checkers dependent-expression-aware.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
1db12931d4f1d1815e80ced651c5ca6a86c1d990 26-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Use RecordFirst/RecordLast range checks in DeclContext

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
65100792a69a16895bd80f1d639b99e7ad903386 26-Feb-2009 Douglas Gregor <dgregor@apple.com> Use RecordFirst/RecordLast range checks in DeclContext

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
7bbed2a11d8fb6537efa17da658ed3e4fa9ea851 26-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implementing parsing of template-ids as class-names, so that we can
derive from a class template specialization, e.g.,

class B : public A<int> { };



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65488 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7f43d6764797ab21216421aeb00f4ec314d503d1 26-Feb-2009 Douglas Gregor <dgregor@apple.com> Implementing parsing of template-ids as class-names, so that we can
derive from a class template specialization, e.g.,

class B : public A<int> { };



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65488 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
34a611ba9a97ec8decdb625710654b5d26b28517 26-Feb-2009 Ted Kremenek <kremenek@apple.com> Fix subtle bug in EvalEagerlyAssume: Check if the previous node was at the same statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65486 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b293902c5cfa18365ffb0e00763849c9808a2ad1 26-Feb-2009 Ted Kremenek <kremenek@apple.com> Fix subtle bug in EvalEagerlyAssume: Check if the previous node was at the same statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65486 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f2d873958e15fc87bcb297650176c973e96007fb 26-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Cope with use of the token '>>' inside a template argument list, e.g.,

vector<vector<double>> Matrix;

In C++98/03, this token always means "right shift". However, if we're in
a context where we know that it can't mean "right shift", provide a
friendly reminder to put a space between the two >'s and then treat it
as two >'s as part of recovery.

In C++0x, this token is always broken into two '>' tokens.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
3965b7be250de002d8744331631b9901941666a0 26-Feb-2009 Douglas Gregor <dgregor@apple.com> Cope with use of the token '>>' inside a template argument list, e.g.,

vector<vector<double>> Matrix;

In C++98/03, this token always means "right shift". However, if we're in
a context where we know that it can't mean "right shift", provide a
friendly reminder to put a space between the two >'s and then treat it
as two >'s as part of recovery.

In C++0x, this token is always broken into two '>' tokens.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
8f52097b620db03836c1d23748327b607da4b72e 25-Feb-2009 Ted Kremenek <kremenek@apple.com> Add experimental logic in GRExprEngine::EvalEagerlyAssume() to handle
expressions of the form: 'short x = (y != 10);' While we handle 'int x = (y !=
10)' lazily, the cast to another integer type currently loses the symbolic
constraint. Eager evaluation of the constraint causes the paths to bifurcate and
eagerly evaluate 'y != 10' to a constant of 1 or 0. This should address
<rdar://problem/6619921> until we have a better (more lazy approach) for
handling promotions/truncations of symbolic integer values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65480 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
48af2a9c1ed3259512f2d1431720add1fbe8fb5f 25-Feb-2009 Ted Kremenek <kremenek@apple.com> Add experimental logic in GRExprEngine::EvalEagerlyAssume() to handle
expressions of the form: 'short x = (y != 10);' While we handle 'int x = (y !=
10)' lazily, the cast to another integer type currently loses the symbolic
constraint. Eager evaluation of the constraint causes the paths to bifurcate and
eagerly evaluate 'y != 10' to a constant of 1 or 0. This should address
<rdar://problem/6619921> until we have a better (more lazy approach) for
handling promotions/truncations of symbolic integer values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65480 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
0d93f69b8f742e1172f65b5843c15c51216d89f0 25-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Perform additional semantic checking of class template
specializations. In particular:

- Make sure class template specializations have a "template<>"
header, and complain if they don't.
- Make sure class template specializations are declared/defined
within a valid context. (e.g., you can't declare a specialization
std::vector<MyType> in the global namespace).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.def
88b7094185b9d4fe9820c731b6936d8d37f6143e 25-Feb-2009 Douglas Gregor <dgregor@apple.com> Perform additional semantic checking of class template
specializations. In particular:

- Make sure class template specializations have a "template<>"
header, and complain if they don't.
- Make sure class template specializations are declared/defined
within a valid context. (e.g., you can't declare a specialization
std::vector<MyType> in the global namespace).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticSemaKinds.def
849196f2754a3460dcc48d7b86d273f18d325189 25-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Include the appropriate header for malloc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65471 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
ac1afdc58e6ad5c969f45fd2ff6d140d3b4dd862 25-Feb-2009 Douglas Gregor <dgregor@apple.com> Include the appropriate header for malloc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65471 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
0c281a89b43f1e71e906d8b9733c2eb0303e87dc 25-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implement parsing of nested-name-specifiers that involve template-ids, e.g.,

std::vector<int>::allocator_type

When we parse a template-id that names a type, it will become either a
template-id annotation (which is a parsed representation of a
template-id that has not yet been through semantic analysis) or a
typename annotation (where semantic analysis has resolved the
template-id to an actual type), depending on the context. We only
produce a type in contexts where we know that we only need type
information, e.g., in a type specifier. Otherwise, we create a
template-id annotation that can later be "upgraded" by transforming it
into a typename annotation when the parser needs a type. This occurs,
for example, when we've parsed "std::vector<int>" above and then see
the '::' after it. However, it means that when writing something like
this:

template<> class Outer::Inner<int> { ... };

We have two tokens to represent Outer::Inner<int>: one token for the
nested name specifier Outer::, and one template-id annotation token
for Inner<int>, which will be passed to semantic analysis to define
the class template specialization.

Most of the churn in the template tests in this patch come from an
improvement in our error recovery from ill-formed template-ids.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65467 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
asic/TemplateKinds.h
ex/Preprocessor.h
ex/Token.h
arse/Action.h
arse/Ownership.h
arse/Parser.h
39a8de10c18365bde7062d8959b7ed525449c561 25-Feb-2009 Douglas Gregor <dgregor@apple.com> Implement parsing of nested-name-specifiers that involve template-ids, e.g.,

std::vector<int>::allocator_type

When we parse a template-id that names a type, it will become either a
template-id annotation (which is a parsed representation of a
template-id that has not yet been through semantic analysis) or a
typename annotation (where semantic analysis has resolved the
template-id to an actual type), depending on the context. We only
produce a type in contexts where we know that we only need type
information, e.g., in a type specifier. Otherwise, we create a
template-id annotation that can later be "upgraded" by transforming it
into a typename annotation when the parser needs a type. This occurs,
for example, when we've parsed "std::vector<int>" above and then see
the '::' after it. However, it means that when writing something like
this:

template<> class Outer::Inner<int> { ... };

We have two tokens to represent Outer::Inner<int>: one token for the
nested name specifier Outer::, and one template-id annotation token
for Inner<int>, which will be passed to semantic analysis to define
the class template specialization.

Most of the churn in the template tests in this patch come from an
improvement in our error recovery from ill-formed template-ids.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65467 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
asic/TemplateKinds.h
ex/Preprocessor.h
ex/Token.h
arse/Action.h
arse/Ownership.h
arse/Parser.h
a6860dddc9656aa27b367cc70b2329d7dd2a3492 25-Feb-2009 Anders Carlsson <andersca@mac.com> Use CheckAssignmentConstraints for checking the cleanup attr function. Fixes PR3656.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
b90052a8cc4745126f7bb2e6573f07e22f24b840 25-Feb-2009 Anders Carlsson <andersca@mac.com> Use CheckAssignmentConstraints for checking the cleanup attr function. Fixes PR3656.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
1f88aa7eb94035348cc67f3071d5882ae4853a3f 25-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> C99 DR #316 implies that the function parameter types that are known
only from a function definition (that does not have a prototype) are
only used to determine the compatible with other declarations of that
same function. In particular, when referencing the function we pretend
as if it does not have a prototype. Implement this behavior, which
fixes PR3626.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65460 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2224f84658fb9b3725a31f2680edb64ae73bf705 25-Feb-2009 Douglas Gregor <dgregor@apple.com> C99 DR #316 implies that the function parameter types that are known
only from a function definition (that does not have a prototype) are
only used to determine the compatible with other declarations of that
same function. In particular, when referencing the function we pretend
as if it does not have a prototype. Implement this behavior, which
fixes PR3626.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65460 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c218108d946cdb865e2aae2eef9482e4ce21c422 25-Feb-2009 Ted Kremenek <kremenek@apple.com> Implement 'Add' method for GRStatePartialTrait<ImmutableList<T>>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65424 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
22017911050544b923302c2bc66563f8f4d32de5 25-Feb-2009 Ted Kremenek <kremenek@apple.com> Implement 'Add' method for GRStatePartialTrait<ImmutableList<T>>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65424 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
c5d3263682ab5aa9d7f0b7cb3a46200f6ea23287 24-Feb-2009 Chris Lattner <sabre@nondot.org> first wave of fixes for @encode sema support. This is part of PR3648.

The big difference here is that (like string literal) @encode has
array type, not pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
eaf2bb89eb2aad3b80673de30febe52df43c10ec 24-Feb-2009 Chris Lattner <sabre@nondot.org> first wave of fixes for @encode sema support. This is part of PR3648.

The big difference here is that (like string literal) @encode has
array type, not pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
155f9ce171714305166913e68f4a4fdcb313a214 24-Feb-2009 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c4a09c189981b4561428e4b56fd250718e2717bb 24-Feb-2009 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1c52c63c8a4d5e809b76299d201f8bd4dda392d4 24-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> When we're declaring an object or function with linkage, teach name
lookup to skip over names without linkage. This finishes
<rdar://problem/6127293>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d6f7e9dccd0fa8a5a15d7478324c0ae229fc5e1e 24-Feb-2009 Douglas Gregor <dgregor@apple.com> When we're declaring an object or function with linkage, teach name
lookup to skip over names without linkage. This finishes
<rdar://problem/6127293>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6f8c368336189b34ac8d53373d8a9efda44fc0c2 24-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> In C, when we see a function declaration within a local scope, export
that declaration to global scope so that it can be found from other
scopes. This allows us to diagnose redeclaration errors for external
declarations across scopes. We also warn when name lookup finds such
an out-of-scope declaration. This is part of <rdar://problem/6127293>;
we'll also need to do the same thing for variables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
25d944af5d8d665611e09956954f10896c1071f6 24-Feb-2009 Douglas Gregor <dgregor@apple.com> In C, when we see a function declaration within a local scope, export
that declaration to global scope so that it can be found from other
scopes. This allows us to diagnose redeclaration errors for external
declarations across scopes. We also warn when name lookup finds such
an out-of-scope declaration. This is part of <rdar://problem/6127293>;
we'll also need to do the same thing for variables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65373 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
af6820210f1dcee448b3a0edfdd3d5717d0f5953 24-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Improve merging of function declarations. Specifically:

- When we are declaring a function in local scope, we can merge with
a visible declaration from an outer scope if that declaration
refers to an entity with linkage. This behavior now works in C++
and properly ignores entities without linkage.
- Diagnose the use of "static" on a function declaration in local
scope.
- Diagnose the declaration of a static function after a non-static
declaration of the same function.
- Propagate the storage specifier to a function declaration from a
prior declaration (PR3425)
- Don't name-mangle "main"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65360 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
04495c859f81e440748a9b86baa2913461652bb0 24-Feb-2009 Douglas Gregor <dgregor@apple.com> Improve merging of function declarations. Specifically:

- When we are declaring a function in local scope, we can merge with
a visible declaration from an outer scope if that declaration
refers to an entity with linkage. This behavior now works in C++
and properly ignores entities without linkage.
- Diagnose the use of "static" on a function declaration in local
scope.
- Diagnose the declaration of a static function after a non-static
declaration of the same function.
- Propagate the storage specifier to a function declaration from a
prior declaration (PR3425)
- Don't name-mangle "main"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65360 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
5fd818bec0c21e3072679d1a9a522be2649405d8 23-Feb-2009 Steve Naroff <snaroff@apple.com> - Generate error for protocol qualifiers on 'Class'.
- Generate error for protocol qualifiers on non-ObjC types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4262a07621043c19292f5fd90b1e426d65cd366c 23-Feb-2009 Steve Naroff <snaroff@apple.com> - Generate error for protocol qualifiers on 'Class'.
- Generate error for protocol qualifiers on non-ObjC types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65333 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
6805fc44a1b5179f6390a160c807dfb4480d7138 23-Feb-2009 Steve Naroff <snaroff@apple.com> Revert http://llvm.org/viewvc/llvm-project?view=rev&revision=65244.

Remove support for "Class<P>". Will be making this an error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d461777e23204fe8c480302d8ff76f5847605da6 23-Feb-2009 Steve Naroff <snaroff@apple.com> Revert http://llvm.org/viewvc/llvm-project?view=rev&revision=65244.

Remove support for "Class<P>". Will be making this an error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65332 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d85ba92f4127367a1d025f50089ae8e1d464dcc0 22-Feb-2009 Steve Naroff <snaroff@apple.com> Contains the following (related to problems found while investigting <rdar://problem/6497631> Message lookup is sometimes different than gcc's).

- Implement instance/class overloading in ObjCContainerDecl (removing a FIXME). This involved hacking NamedDecl::declarationReplaces(), which took awhile to figure out (didn't realize replace was the default).
- Changed Sema::ActOnInstanceMessage() to remove redundant warnings when dealing with protocols. For now, I've omitted the "protocol" term in the diagnostic. It simplifies the code flow and wan't always 100% accurate (e.g. "Foo<Prot>" looks in the class interface, not just the protocol).
- Changed several test cases to jive with the above changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65292 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
0de21fd85d79bccd32f04256f5b3328ab5ed7c95 22-Feb-2009 Steve Naroff <snaroff@apple.com> Contains the following (related to problems found while investigting <rdar://problem/6497631> Message lookup is sometimes different than gcc's).

- Implement instance/class overloading in ObjCContainerDecl (removing a FIXME). This involved hacking NamedDecl::declarationReplaces(), which took awhile to figure out (didn't realize replace was the default).
- Changed Sema::ActOnInstanceMessage() to remove redundant warnings when dealing with protocols. For now, I've omitted the "protocol" term in the diagnostic. It simplifies the code flow and wan't always 100% accurate (e.g. "Foo<Prot>" looks in the class interface, not just the protocol).
- Changed several test cases to jive with the above changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65292 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
0c195b98f48e29dd5bc19747d9736769b9585e43 22-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> More objc gc work. Match gcc's treatment of ivar access
true a local pointer to objective-c object in generating
write barriers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65290 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
44baa8abba2a1552b6b50bf750a8750ab9da9f76 22-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> More objc gc work. Match gcc's treatment of ivar access
true a local pointer to objective-c object in generating
write barriers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65290 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ec93a395562e5657b247c80a6a6ee1d61f615e15 22-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Sanity fix for PR3642: if we're treating a diagnostic as an error, it's
required to actually be an error for correctness. The attached testcase
now gives an error instead of mysteriously crashing.

Now, it's possible we actually want to support the given usage, but I
haven't looked at the relevant code closely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65253 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
85c351551688a101c5ce918e5d60dea5177d72e7 22-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Sanity fix for PR3642: if we're treating a diagnostic as an error, it's
required to actually be an error for correctness. The attached testcase
now gives an error instead of mysteriously crashing.

Now, it's possible we actually want to support the given usage, but I
haven't looked at the relevant code closely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65253 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
d305a86f087fd359cf0f033eba0c968e55a61ff4 21-Feb-2009 Steve Naroff <snaroff@apple.com> More work to integrate newly added ObjCQualifiedClassType into the type system.

This is necessary 'plumbing' to fix <rdar://problem/6497631> Message lookup is sometimes different than gcc's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f7f52e7bf5a4dc36d45b98531e0b21e343fc19de 21-Feb-2009 Steve Naroff <snaroff@apple.com> More work to integrate newly added ObjCQualifiedClassType into the type system.

This is necessary 'plumbing' to fix <rdar://problem/6497631> Message lookup is sometimes different than gcc's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
262a5dd7735667460dc4fcf0bef0b5df0ef5335e 21-Feb-2009 Steve Naroff <snaroff@apple.com> Add support for GCC ObjC extension "Class<protocol>". Sigh.

Found while researching <rdar://problem/6497631> Message lookup is sometimes different than gcc's.

Will never be seen in user code. Needed to pass dejagnu testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
15509f4fe73f0e11a8cec602bce4d99d9454b7f6 21-Feb-2009 Steve Naroff <snaroff@apple.com> Add support for GCC ObjC extension "Class<protocol>". Sigh.

Found while researching <rdar://problem/6497631> Message lookup is sometimes different than gcc's.

Will never be seen in user code. Needed to pass dejagnu testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c84582b18e31a5eb250c93935e654fc8daebe1cb 21-Feb-2009 Steve Naroff <snaroff@apple.com> Warn about bogus protocol qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65241 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
8dfb0c57ddb700b163afa89e3ab160f1de26753d 21-Feb-2009 Steve Naroff <snaroff@apple.com> Warn about bogus protocol qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65241 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
235e0bb2f79c241e48480447301a7e0d19f9ccb8 21-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Warn on use of __weak attribute on local
variable (objc2 gc specific).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7b5b3170d9be39f462194d456051a7ca81babe28 21-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Warn on use of __weak attribute on local
variable (objc2 gc specific).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
184541a6a7d218583d79d408534f77c27b7b8c6e 21-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a bug whereby a pointer to a __weak was not recognized
as __weak (objc2 gc specific).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4ae1f058902ffd92207af678e1c62e43258127c6 21-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Fix a bug whereby a pointer to a __weak was not recognized
as __weak (objc2 gc specific).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a442ad9937af48010e6d1716a497c9de5e49c96a 20-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6500554> missing objc error message.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
ccef371a67756233aa97770e4fccdfa868b3e2d0 20-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6500554> missing objc error message.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65198 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
89188b2ef0361a97ef5d52761d52068191f49c8d 20-Feb-2009 Chris Lattner <sabre@nondot.org> switch the macroinfo argument lists from being allocated off the heap
to being allocated from the same bumpptr that the MacroInfo objects
themselves are.

This speeds up -Eonly cocoa.h pth by ~4%, fsyntax-only is barely measurable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65195 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
685befeb5f6472585bae473a6389e47cab9eac67 20-Feb-2009 Chris Lattner <sabre@nondot.org> switch the macroinfo argument lists from being allocated off the heap
to being allocated from the same bumpptr that the MacroInfo objects
themselves are.

This speeds up -Eonly cocoa.h pth by ~4%, fsyntax-only is barely measurable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65195 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
1c9b6b81a3a3cac0ab7afc80674e56584d15915d 20-Feb-2009 Chris Lattner <sabre@nondot.org> detemplatify setArgumentList and some other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65187 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
cf29e0716bb3ecbbc15b74cd648367d6b075fdf0 20-Feb-2009 Chris Lattner <sabre@nondot.org> detemplatify setArgumentList and some other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65187 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
f75665630c47f2c50fc8dd6b38a2b15338492b9f 20-Feb-2009 Chris Lattner <sabre@nondot.org> require the MAcroInfo objects are explcitly destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65179 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
0301b3ff132a4d986c092d161cb77d74b04cd2a6 20-Feb-2009 Chris Lattner <sabre@nondot.org> require the MAcroInfo objects are explcitly destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65179 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
ex/Preprocessor.h
df6133ba4bc02ffe030dc3941c67514aa837b773 20-Feb-2009 Chris Lattner <sabre@nondot.org> add plumbing to get ASTContext& down to allocation/deallocation points in ObjCList,
but don't start using it yet. Renamed some methods to be more consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
38af2deb27cdfa1a95bde96e30dab15dce53fcef 20-Feb-2009 Chris Lattner <sabre@nondot.org> add plumbing to get ASTContext& down to allocation/deallocation points in ObjCList,
but don't start using it yet. Renamed some methods to be more consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
217eb8c5fedfc5d09f1bae91231beae4751d75cd 20-Feb-2009 Chris Lattner <sabre@nondot.org> newly factored, we can now move the set and destroy methods out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
11e1e1af2641affb378080a4f3d1a30da1cad082 20-Feb-2009 Chris Lattner <sabre@nondot.org> newly factored, we can now move the set and destroy methods out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
206d79e37a1aeece613d1563c151186c0ebc734c 20-Feb-2009 Chris Lattner <sabre@nondot.org> factor a bunch of common code out of the ObjCList template class
into a new shared ObjCListBase class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
793ccfd646d0388e06c587e962a18fa723b72f02 20-Feb-2009 Chris Lattner <sabre@nondot.org> factor a bunch of common code out of the ObjCList template class
into a new shared ObjCListBase class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
fb15fbfbf66b4d26a0778a4f76cf3f765cb8842e 20-Feb-2009 Chris Lattner <sabre@nondot.org> prune #includes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
68835718c4125f2f66740cd04de7088645ec695d 20-Feb-2009 Chris Lattner <sabre@nondot.org> prune #includes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
c3e7268152d8ca4380bda809e0b833b6c5f82138 20-Feb-2009 Chris Lattner <sabre@nondot.org> rename ObjCList::clear() -> ObjCList::Destroy(). Require that destroy is called
before the dtor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
88cf7a16902a9189d16653e1061cfda333187b58 20-Feb-2009 Chris Lattner <sabre@nondot.org> rename ObjCList::clear() -> ObjCList::Destroy(). Require that destroy is called
before the dtor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
47a5771bb3f71086fa10d8893122d9521266047e 20-Feb-2009 Chris Lattner <sabre@nondot.org> more random cleanups, add some fixme's. ObjCCategoryImplDecl really
shouldn't be a NamedDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a8ff9f455d94d9609766cfd5186b6e21dc2102f1 20-Feb-2009 Chris Lattner <sabre@nondot.org> more random cleanups, add some fixme's. ObjCCategoryImplDecl really
shouldn't be a NamedDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
97e84d6d5c44ee7fbe193b3b2d514e8c0375dfa8 20-Feb-2009 Chris Lattner <sabre@nondot.org> move the @implementation ivar list to being an ObjCList, which prevents
it from being leaked, among other things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7a21bd046fe57629ab074980cf8193f5e0c15735 20-Feb-2009 Chris Lattner <sabre@nondot.org> move the @implementation ivar list to being an ObjCList, which prevents
it from being leaked, among other things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a0fbce253bf7ebbb80cc88915476d91b65d36714 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove dead list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2f0fe337f499c78710b718324b25510670d885b1 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove dead list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5c6b2c638375da5002f93373e5e0f890d300aeb9 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove some more methods from objc decls, using the iterator
interfaces more consistently.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
89951a86b594513c2a013532ed45d197413b1087 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove some more methods from objc decls, using the iterator
interfaces more consistently.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
179fd52ebca8c731636da35184ab2dc7954b1aeb 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove some slow O(n) methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cafeb35117578585dbbfef0bc79d8aa27712bc0e 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove some slow O(n) methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ad446cf86babeb52874440c55bb76cdce97d6259 20-Feb-2009 Chris Lattner <sabre@nondot.org> Change ObjCForwardProtocolDecl to use an ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65131 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
07fa7749da805969f2ed467a4eb5b405a4ff9a23 20-Feb-2009 Chris Lattner <sabre@nondot.org> Change ObjCForwardProtocolDecl to use an ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65131 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6a02874b20e4b3e5a23f4550a5fa782ffab357b5 20-Feb-2009 Chris Lattner <sabre@nondot.org> move the interace list of @class to use ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
67956052ea5fb0cd7f443de96a11f9a0176dc681 20-Feb-2009 Chris Lattner <sabre@nondot.org> move the interace list of @class to use ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
38d2ff2bf79635fefb284bf95ab93dd249786b2a 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove a dead list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4a323d94e50c8f570cbfaf0392e68215b8ca87bf 20-Feb-2009 Chris Lattner <sabre@nondot.org> remove a dead list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e73c1d5d4193081bf658c8fb56ec2b3fcdf8223a 20-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add some stdlib builtins


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
f8ebb4154e261e34a0c77338fa1faa100ecfb28d 20-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add some stdlib builtins


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
9408eb1b33ae4bef17163a644df6fad8624de469 20-Feb-2009 Chris Lattner <sabre@nondot.org> switch ObjCMethodDecl's parameter list from being explicitly managed to an ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2073216a1075767b5d25c23d1462b7034686d94d 20-Feb-2009 Chris Lattner <sabre@nondot.org> switch ObjCMethodDecl's parameter list from being explicitly managed to an ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
922132e4500f7bc481ea95a00de8355074b30621 20-Feb-2009 Chris Lattner <sabre@nondot.org> switch the interface ivar list from being explicitly managed to using ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e881483a3bc22ffad62367501aa09ad8508fe363 20-Feb-2009 Chris Lattner <sabre@nondot.org> switch the interface ivar list from being explicitly managed to using ObjCList.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3e27e63d1253ab116c7ef19e0191c1d8af5b8231 20-Feb-2009 Chris Lattner <sabre@nondot.org> move more objc destruction out of dtors into Destroy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0b7ebb3dba0df0a6cbf221e5edbc6a4b8848478c 20-Feb-2009 Chris Lattner <sabre@nondot.org> move more objc destruction out of dtors into Destroy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ae53888f057b48a4a51bf1f496bdcc05ebf461cf 20-Feb-2009 Chris Lattner <sabre@nondot.org> move some objc decl destruction out of dtors into Destroy method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
411280e5b25ba7dcd7c8a82a5c23880fe7632a3c 20-Feb-2009 Chris Lattner <sabre@nondot.org> move some objc decl destruction out of dtors into Destroy method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65111 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3272e92d52342b3724bfdde0eddc7836f57d6b3c 20-Feb-2009 Chris Lattner <sabre@nondot.org> map source ranges through macro expansions. Before:

t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float'))
MAX(P, F);
^~~~~~~~~
t.m:1:78: note: instantiated from:
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
^

(no ranges on the second diagnostics)

After:

t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float'))
MAX(P, F);
^~~~~~~~~
t.m:1:78: note: instantiated from:
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
~~~ ^ ~~~

(ranges!)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65090 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
676f0242a86d7652de586cff360c07c4e752035b 20-Feb-2009 Chris Lattner <sabre@nondot.org> map source ranges through macro expansions. Before:

t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float'))
MAX(P, F);
^~~~~~~~~
t.m:1:78: note: instantiated from:
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
^

(no ranges on the second diagnostics)

After:

t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float'))
MAX(P, F);
^~~~~~~~~
t.m:1:78: note: instantiated from:
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
~~~ ^ ~~~

(ranges!)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65090 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
ec52b7d478efc5b1d55614c006c196ccbb1aa3b5 20-Feb-2009 Chris Lattner <sabre@nondot.org> refactor, pass ranges down instead of the whole
DiagnosticInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65088 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
ebbbb1b211119e13229c487dfc1713e8d1e77a41 20-Feb-2009 Chris Lattner <sabre@nondot.org> refactor, pass ranges down instead of the whole
DiagnosticInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65088 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
0b53af20d4a56a5ec3bc5072aaa3a14f6d6fecd1 20-Feb-2009 Chris Lattner <sabre@nondot.org> replace a dirty hack with a clean solution. Too bad we can't
use Blocks for our callbacks ;-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
92dd386e3f05d176b45a638199d51f536bd9d1c4 20-Feb-2009 Chris Lattner <sabre@nondot.org> replace a dirty hack with a clean solution. Too bad we can't
use Blocks for our callbacks ;-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
a11044e5275d0939762526b87677d74e68c496f5 20-Feb-2009 Ted Kremenek <kremenek@apple.com> Added a new method to GRStmtNodeBuilder to build nodes using an arbitrary
PostStmt program point. This allows clients to pass in PostStmtCustom program
points.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65080 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
58e899b336c63fa25d4cc8986d97a40933cded9b 20-Feb-2009 Ted Kremenek <kremenek@apple.com> Added a new method to GRStmtNodeBuilder to build nodes using an arbitrary
PostStmt program point. This allows clients to pass in PostStmtCustom program
points.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65080 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
cf2da48dae7578d39252d3aae878e9eadd30efb5 20-Feb-2009 Ted Kremenek <kremenek@apple.com> ProgramPoint::Profile now specially handles PostStmtCustom (hashes on tag and data) so that clients don't need a unique address for the pair itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65079 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
2680b5f926fad29c1a2b2723a70d189f4b637979 20-Feb-2009 Ted Kremenek <kremenek@apple.com> ProgramPoint::Profile now specially handles PostStmtCustom (hashes on tag and data) so that clients don't need a unique address for the pair itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65079 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
ae93d65fa7478040fffc73e3fa11181b527c7aa2 19-Feb-2009 Mike Stump <mrs@apple.com> Add enough checking to ensure that non-constant block literals don't
appear to be constant. I'll probably redo this and throw it all away
later once we have codegen for BlockDeclRefExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b83d287bc7f47d36fb0751a481e2ef9308b37252 19-Feb-2009 Mike Stump <mrs@apple.com> Add enough checking to ensure that non-constant block literals don't
appear to be constant. I'll probably redo this and throw it all away
later once we have codegen for BlockDeclRefExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
eb12e78ddbe63baed47cb92fb281d6d1aa689b1c 19-Feb-2009 Anders Carlsson <andersca@mac.com> Add sema support for the noinline attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
5bab788d40026ad6e932a3cd9b86bc13f8a27661 19-Feb-2009 Anders Carlsson <andersca@mac.com> Add sema support for the noinline attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
adcfb6d8a4235056423b452cef3cecf0d6a2f76a 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix PR3609, emit:

t.c:1:10: error: missing terminating '>' character
#include <stdio.h
^

instead of:

t.c:1:10: error: missing terminating " character
#include <stdio.h
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.def
b66158c299786042cd6277b163a2c20fd3d11da5 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix PR3609, emit:

t.c:1:10: error: missing terminating '>' character
#include <stdio.h
^

instead of:

t.c:1:10: error: missing terminating " character
#include <stdio.h
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.def
3f7a8f19e231b74ff3d94754b420ea4eb2107afd 19-Feb-2009 Chris Lattner <sabre@nondot.org> Fix PR3619 by properly considering size modifiers and type quals when
uniquing array types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0be2ef2321b1283ead38ebeb83b451335d90e0fe 19-Feb-2009 Chris Lattner <sabre@nondot.org> Fix PR3619 by properly considering size modifiers and type quals when
uniquing array types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
126949ecf2a1051fa3271b42936129ea0299be99 19-Feb-2009 Gabor Greif <ggreif@gmail.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4b5d486a0a2cb535d8c7e3f5c258eb3cba8cad29 19-Feb-2009 Gabor Greif <ggreif@gmail.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
11a31c902ba609eec9991a48eb7a86b13e65d77f 19-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add Type::getAsFunctionNoProto


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
afa74448a07a16c3146accbe0ff03e9c8b0995e5 19-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add Type::getAsFunctionNoProto


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65031 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e2c201b52fb16631676135ba3f93d2ea6464edc1 19-Feb-2009 Chris Lattner <sabre@nondot.org> standardise on bastardised american spelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65027 91177308-0d34-0410-b5e6-96231b3b80d8
river/InitHeaderSearch.h
d000c9ec6e1562e5e1eed2236a67fa9848bf8201 19-Feb-2009 Chris Lattner <sabre@nondot.org> standardise on bastardised american spelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65027 91177308-0d34-0410-b5e6-96231b3b80d8
river/InitHeaderSearch.h
99a72657754d99f74b5bdcc5c145ce4785d850ae 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix a bug introduced in my previous patch: moving clang headers to the
"after" group instead of the system group makes it so #include <limits.h>
picks up the *system* limits.h file before clang's. This causes a failure
on linux and is definitely not what we want.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65026 91177308-0d34-0410-b5e6-96231b3b80d8
river/InitHeaderSearch.h
6858dd3fcc2d3ac6a706a0294be1d3ac51849022 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix a bug introduced in my previous patch: moving clang headers to the
"after" group instead of the system group makes it so #include <limits.h>
picks up the *system* limits.h file before clang's. This causes a failure
on linux and is definitely not what we want.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65026 91177308-0d34-0410-b5e6-96231b3b80d8
river/InitHeaderSearch.h
acf1649b370eb3eaea3b83d0523a1d8dfeb21688 19-Feb-2009 Chris Lattner <sabre@nondot.org> disable copying and assignment of AttributeList


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65025 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
60b2837ba2335b13fc5aaaa6826b1a4710944d92 19-Feb-2009 Chris Lattner <sabre@nondot.org> disable copying and assignment of AttributeList


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65025 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
05c9b5f51a43211afcfcb86530a94fa935045cdd 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix a typo gabor noticed


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8bea7c0ee44c71c817de7dc2be932b73bec90c9f 19-Feb-2009 Chris Lattner <sabre@nondot.org> fix a typo gabor noticed


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
95a9825310648bb817deae2bf614ace85a65e265 19-Feb-2009 Ted Kremenek <kremenek@apple.com> Implemented simple check in <rdar://problem/6600344>: When the receiver of a
message expression is nil and the return type is struct then the returned value
is undefined or potentially garbage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65003 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
21fe8370f660a30e3a0493c74728dcb369b9c58b 19-Feb-2009 Ted Kremenek <kremenek@apple.com> Implemented simple check in <rdar://problem/6600344>: When the receiver of a
message expression is nil and the return type is struct then the returned value
is undefined or potentially garbage.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65003 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
85534581967bd50a73c25ae76c96d39b05854a05 19-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Couple of helpers for objc's gc attributes.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f6123ca578eb8aabb76ecce7df6857482017f502 19-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Couple of helpers for objc's gc attributes.
No change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
18b5a9a3396fa4bb6630c5bea19399b101aa3043 18-Feb-2009 Chris Lattner <sabre@nondot.org> fix some subtle bugs handling the mix of cvr qualifiers, addr spaces,
and gc attrs. Add an assert to check that we never
get ExtQualType(ExtQualType(T)).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b7d2553edd2532d29b98b9e76bcf6a62bc48b417 18-Feb-2009 Chris Lattner <sabre@nondot.org> fix some subtle bugs handling the mix of cvr qualifiers, addr spaces,
and gc attrs. Add an assert to check that we never
get ExtQualType(ExtQualType(T)).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7029ee3fdeee514a79eafb2508723d27c97fe158 18-Feb-2009 Chris Lattner <sabre@nondot.org> minor spacing changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
bc5e150b6d94cf131f7d01bc715571b741c5b408 18-Feb-2009 Chris Lattner <sabre@nondot.org> minor spacing changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c25bf6d949f81d248750b1d2289a4b5905e39500 18-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Downgrade the "excess elements in initializer" errors to warnings *in
C*. They're required errors in C++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7c53ca6e03833adab4465462b7d5c888741b715d 18-Feb-2009 Douglas Gregor <dgregor@apple.com> Downgrade the "excess elements in initializer" errors to warnings *in
C*. They're required errors in C++.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64964 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
1fc4791c3be994d661401a4ce134831ba442ebc2 18-Feb-2009 Chris Lattner <sabre@nondot.org> rip out __builtin_overload


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/TokenKinds.def
arse/Action.h
1e4db7c468c002c58f07e059ff7925384f053e85 18-Feb-2009 Chris Lattner <sabre@nondot.org> rip out __builtin_overload


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/TokenKinds.def
arse/Action.h
aa57e866832a9a31351214c33de9b40a49510d84 18-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Downgrade complaints about calling unavailable functions to a warning
(as GCC does), except when we've performed overload resolution and
found an unavailable function: in this case, we actually error.

Merge the checking of unavailable functions with the checking for
deprecated functions. This unifies a bit of code, and makes sure that
we're checking for unavailable functions in the right places. Also,
this check can cause an error. We may, eventually, want an option to
make "unavailable" warnings into errors.

Implement much of the logic needed for C++0x deleted functions, which
are effectively the same as "unavailable" functions (but always cause
an error when referenced). However, we don't have the syntax to
specify deleted functions yet :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
48f3bb9f780f6e64ab71ba0202ca04b07473805a 18-Feb-2009 Douglas Gregor <dgregor@apple.com> Downgrade complaints about calling unavailable functions to a warning
(as GCC does), except when we've performed overload resolution and
found an unavailable function: in this case, we actually error.

Merge the checking of unavailable functions with the checking for
deprecated functions. This unifies a bit of code, and makes sure that
we're checking for unavailable functions in the right places. Also,
this check can cause an error. We may, eventually, want an option to
make "unavailable" warnings into errors.

Implement much of the logic needed for C++0x deleted functions, which
are effectively the same as "unavailable" functions (but always cause
an error when referenced). However, we don't have the syntax to
specify deleted functions yet :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticSemaKinds.def
b8ca6ff810e0131a6d6c5cc9875ec10c416e9970 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Some refactoring and simplificaiotn of objc's gc
ir gen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4fd83ea566f4a0c083001c84b75da6cc8c99c1d6 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Some refactoring and simplificaiotn of objc's gc
ir gen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c61a8003b2c69add9fca0ec5064b47251f47c90c 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add Type::isSpecificBuiltinType as a shortcut.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64946 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e00d5c00f35163308a18ec1d3d2b9dfa1ecaf234 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add Type::isSpecificBuiltinType as a shortcut.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64946 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
be93e79e38e89e164a40892ecee7c22665e79023 18-Feb-2009 Chris Lattner <sabre@nondot.org> Next step toward making string diagnostics correct: handle
escapes in the string for subtoken positioning. This gives
us working examples like:

t.m:5:16: warning: field width should have type 'int', but argument has type 'unsigned int'
printf("\n\n%*d", (unsigned) 1, 1);
^ ~~~~~~~~~~~~

where before the caret pointed two spaces to the left.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64940 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
719e61573f27c11057ecfe0dd8f141621602c571 18-Feb-2009 Chris Lattner <sabre@nondot.org> Next step toward making string diagnostics correct: handle
escapes in the string for subtoken positioning. This gives
us working examples like:

t.m:5:16: warning: field width should have type 'int', but argument has type 'unsigned int'
printf("\n\n%*d", (unsigned) 1, 1);
^ ~~~~~~~~~~~~

where before the caret pointed two spaces to the left.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64940 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
31804e14ac2c60f459c42367c7c6a1a7424392bb 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Start generating gc'able code using the new
objc gc type attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64935 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
5934e75d98d99374f72722a69c5eefe026f35c74 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Start generating gc'able code using the new
objc gc type attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64935 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
80ff83cc9136a4737632dc84ad8d124e82f45b76 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Cleanup objc's gc attributes code no longer needed.
This make warn-weak-field.m to fail (subject of
a followup patch).
attr-objc-gc.m no passes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Type.h
ba372b85524f712e5b97a176f6ce0197d365835d 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Cleanup objc's gc attributes code no longer needed.
This make warn-weak-field.m to fail (subject of
a followup patch).
attr-objc-gc.m no passes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64925 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Type.h
f17cb369ac6ed77e876f0b0a3996a12ffb48921a 18-Feb-2009 Chris Lattner <sabre@nondot.org> Start improving diagnostics that relate to subcharacters of string literals.
First step, handle diagnostics in StringLiteral's that are due to token pasting.

For example, we now handle:
id str2 = @"foo"
"bar"
@"baz"
" b\0larg"; // expected-warning {{literal contains NUL character}}

Correctly:

test/SemaObjC/exprs.m:17:15: warning: CFString literal contains NUL character
" b\0larg"; // expected-warning {{literal contains NUL character}}
~~~^~~~~~~

There are several other related issues still to be done.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
60800081361b0ffc114877b8abbc81cb57b4edf6 18-Feb-2009 Chris Lattner <sabre@nondot.org> Start improving diagnostics that relate to subcharacters of string literals.
First step, handle diagnostics in StringLiteral's that are due to token pasting.

For example, we now handle:
id str2 = @"foo"
"bar"
@"baz"
" b\0larg"; // expected-warning {{literal contains NUL character}}

Correctly:

test/SemaObjC/exprs.m:17:15: warning: CFString literal contains NUL character
" b\0larg"; // expected-warning {{literal contains NUL character}}
~~~^~~~~~~

There are several other related issues still to be done.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6c0f406617091070a4a29ff14883057964f8549c 18-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Update Parser::ParseTypeName to return a TypeResult, which also tells
us whether there was an error in trying to parse a type-name (type-id
in C++). This allows propagation of errors further in the compiler,
suppressing more bogus error messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64922 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
809070a886684cb5b92eb0e00a6581ab1fa6b17a 18-Feb-2009 Douglas Gregor <dgregor@apple.com> Update Parser::ParseTypeName to return a TypeResult, which also tells
us whether there was an error in trying to parse a type-name (type-id
in C++). This allows propagation of errors further in the compiler,
suppressing more bogus error messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64922 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
88a25f851e1fa531a65919ca37abe31b7fb564c8 18-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Allow "overloadable" functions in C to be declared as variadic without
any named parameters, e.g., this is accepted in C:

void f(...) __attribute__((overloadable));

although this would be rejected:

void f(...);

To do this, moved the checking of the "ellipsis without any named
arguments" condition from the parser into Sema (where it belongs anyway).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64902 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
arse/DeclSpec.h
965acbb321e94e36aa5365126eee46b97745fdbb 18-Feb-2009 Douglas Gregor <dgregor@apple.com> Allow "overloadable" functions in C to be declared as variadic without
any named parameters, e.g., this is accepted in C:

void f(...) __attribute__((overloadable));

although this would be rejected:

void f(...);

To do this, moved the checking of the "ellipsis without any named
arguments" condition from the parser into Sema (where it belongs anyway).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64902 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
arse/DeclSpec.h
2c49963298fba3836a81bfa77b348e67e340a4ee 18-Feb-2009 Chris Lattner <sabre@nondot.org> teach child iterators to walk into the child string of an ObjCStringLiteral,
so it shows up in -ast-dump.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
c6c16af963eddc3e9b75b5d2614d069e1162fe27 18-Feb-2009 Chris Lattner <sabre@nondot.org> teach child iterators to walk into the child string of an ObjCStringLiteral,
so it shows up in -ast-dump.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
8d8199bd0c34741bfdf73349da780c195279838d 18-Feb-2009 Chris Lattner <sabre@nondot.org> add iterators for string token locations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b137299ce5bb6c36fbba651858600857fda4dd50 18-Feb-2009 Chris Lattner <sabre@nondot.org> add iterators for string token locations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
aa491196c84d3707be32ad06f19c18bfcfbef21a 18-Feb-2009 Chris Lattner <sabre@nondot.org> privatize all of the string literal memory allocation/creation
stuff behind a private static function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64898 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2085fd6cd22ec5c268175251db10d7c60caf7aaa 18-Feb-2009 Chris Lattner <sabre@nondot.org> privatize all of the string literal memory allocation/creation
stuff behind a private static function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64898 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7f49ea29f8bfec0a3df9eba324f72127880bf496 18-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Don't allow calls to functions marked "unavailable". There's more work
to do in this area, since there are other places that reference
FunctionDecls.

Don't allow "overloadable" functions (in C) to be declared without a
prototype.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
c6666f8e9bbb7f31bf2e52f97137e738c4ca01d0 18-Feb-2009 Douglas Gregor <dgregor@apple.com> Don't allow calls to functions marked "unavailable". There's more work
to do in this area, since there are other places that reference
FunctionDecls.

Don't allow "overloadable" functions (in C) to be declared without a
prototype.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
81f5be228ed67e67c6f74e7678de8f21c27dd447 18-Feb-2009 Chris Lattner <sabre@nondot.org> rename CheckBuiltinCFStringArgument -> CheckObjCString


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
690398188ea5b428f06aa13c7d4ce6eb741ad4f9 18-Feb-2009 Chris Lattner <sabre@nondot.org> rename CheckBuiltinCFStringArgument -> CheckObjCString


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c314474f0e1eb9b9e3c541dbc068b6cc95c74e2c 18-Feb-2009 Chris Lattner <sabre@nondot.org> change the StringLiteral AST node to track all of the SourceLocations of
the various PPTokens that are pasted together to make it. In the course
of working on this, I discovered ParseObjCStringLiteral which needs some
work. I'll tackle it next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
726e168dc09fb23f53c7b004f8e919421ee91806 18-Feb-2009 Chris Lattner <sabre@nondot.org> change the StringLiteral AST node to track all of the SourceLocations of
the various PPTokens that are pasted together to make it. In the course
of working on this, I discovered ParseObjCStringLiteral which needs some
work. I'll tackle it next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
af23809cb5b961cd4624785e94f339e0a0f5f49e 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Representation of objc gc's attribute using ExtQualType.
Note that one test attr-objc-gc.m fails. I will fix this
after removing these attributes from the Decl nodes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d33d9c0cc0cfdcd0b10f35a6acdfb25da4a64f19 18-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Representation of objc gc's attribute using ExtQualType.
Note that one test attr-objc-gc.m fails. I will fix this
after removing these attributes from the Decl nodes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64889 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c26c46997544fe29588e23d9147c75638ccbdf35 18-Feb-2009 Ted Kremenek <kremenek@apple.com> Hooked up the necessary machinery to allow the retain/release checker reference
back to the summary used when evaluating the statement associated with a
simulation node. This is now being used to help improve the checker's
diagnostics. To get things started, the checker now emits a path diagnostic
indicating that 'autorelease' is a no-op in GC mode.

Some of these changes are exposing further grossness in the interface between
BugReporter and the ExplodedGraph::Trim facilities. These really need to be
cleaned up one day.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64881 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
fe9e543a2a363df7fcaa899367d3b2580b63b27c 18-Feb-2009 Ted Kremenek <kremenek@apple.com> Hooked up the necessary machinery to allow the retain/release checker reference
back to the summary used when evaluating the statement associated with a
simulation node. This is now being used to help improve the checker's
diagnostics. To get things started, the checker now emits a path diagnostic
indicating that 'autorelease' is a no-op in GC mode.

Some of these changes are exposing further grossness in the interface between
BugReporter and the ExplodedGraph::Trim facilities. These really need to be
cleaned up one day.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64881 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
e8f7071435acbd96d6471a0298cfe6ca9a57a49b 18-Feb-2009 Chris Lattner <sabre@nondot.org> move llvm backend specific #includes into Backend.cpp instead of Clang.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64872 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
445026698ca8f97ee7320464dedbe0d077b32d16 18-Feb-2009 Chris Lattner <sabre@nondot.org> move llvm backend specific #includes into Backend.cpp instead of Clang.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64872 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
168b20c6e43a58ef05e68201766d293ea9d1af95 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> isICE was evaluating ?: incorrectly with missing-gcc-LHS extension.

Add assert to isICE that, on success, result must be the same as
EvaluateAsInt()... this enforces a minimum level of sanity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64865 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2d6744ff04c1690a1485178d550d2fab84a0270b 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> isICE was evaluating ?: incorrectly with missing-gcc-LHS extension.

Add assert to isICE that, on success, result must be the same as
EvaluateAsInt()... this enforces a minimum level of sanity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64865 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
51f06af4822090f4936e0cb08a6254175c0d6fe2 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add ASTContext::MakeIntValue
- Makes an APSInt given a uint64_t and a type, with the appropriate
width and signedness to match the type. Yay for functional over
imperative.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64863 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0cd7fc28d4f69b281522b1bc96decd2b92cfd812 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add ASTContext::MakeIntValue
- Makes an APSInt given a uint64_t and a type, with the appropriate
width and signedness to match the type. Yay for functional over
imperative.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64863 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8360a9cbcf4054a8fb43bde1e50951e1e4b48f73 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> Rename UnaryTypeTraitExpr::Evaluate to EvaluateTrait to not collide
with Expr::Evaluate().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
c87a282e7b80c055088fc51bdbe8fc73da64d4f8 18-Feb-2009 Daniel Dunbar <daniel@zuster.org> Rename UnaryTypeTraitExpr::Evaluate to EvaluateTrait to not collide
with Expr::Evaluate().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
a08b6c79bf6fc9efef2ae2db8b747bac60ee0fae 18-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implement basic parsing and semantic analysis for explicit
specialization of class templates, e.g.,

template<typename T> class X;

template<> class X<int> { /* blah */ };

Each specialization is a different *Decl node (naturally), and can
have different members. We keep track of forward declarations and
definitions as for other class/struct/union types.

This is only the basic framework: we still have to deal with checking
the template headers properly, improving recovery when there are
failures, handling nested name specifiers, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
ST/DeclTemplate.h
asic/DiagnosticParseKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Ownership.h
arse/Parser.h
cc636688c4fd10b1732ce3e33b2b106024d545ca 18-Feb-2009 Douglas Gregor <dgregor@apple.com> Implement basic parsing and semantic analysis for explicit
specialization of class templates, e.g.,

template<typename T> class X;

template<> class X<int> { /* blah */ };

Each specialization is a different *Decl node (naturally), and can
have different members. We keep track of forward declarations and
definitions as for other class/struct/union types.

This is only the basic framework: we still have to deal with checking
the template headers properly, improving recovery when there are
failures, handling nested name specifiers, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
ST/DeclTemplate.h
asic/DiagnosticParseKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Ownership.h
arse/Parser.h
a26c9fa26354ff2f04f65679368c0e649746f921 17-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: getMinValue/getMaxValue can be applied to any location type as specified by Loc::IsLocType().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64832 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
63eb5878c3d97b002139b7da8ba449592bdef717 17-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: getMinValue/getMaxValue can be applied to any location type as specified by Loc::IsLocType().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64832 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
3ccaa82ee88c3c6078539775c63720b820b41e29 17-Feb-2009 Ted Kremenek <kremenek@apple.com> Attribute 'iboutlet' can be applied to Objective-C property declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
327426076e1acc8217307cb236269ccf08c18fe6 17-Feb-2009 Ted Kremenek <kremenek@apple.com> Attribute 'iboutlet' can be applied to Objective-C property declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
96d1f1b90da45ccb875227429c26f85728c7e4c6 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Eek! getDeclAlign sometimes returned alignment in bits.
- Renamed to getDeclAlignInBytes since most other query functions
work in bits.

- Fun to track down as isIntegerConstantExpr was getting it right,
but Evaluate() was getting it wrong. Maybe we should assert they
compute the same thing when they succeed?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b7d0844c887a72064b624dc6df12cbe1441f69d0 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Eek! getDeclAlign sometimes returned alignment in bits.
- Renamed to getDeclAlignInBytes since most other query functions
work in bits.

- Fun to track down as isIntegerConstantExpr was getting it right,
but Evaluate() was getting it wrong. Maybe we should assert they
compute the same thing when they succeed?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1e124fe3e31ab37c45b6fbe6a8075e987fc04408 17-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Simplified ExtQualType per Chris's feedback.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4886a4204ff2b20bc226ce70d837de5fcd4a79ab 17-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Simplified ExtQualType per Chris's feedback.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64820 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
bc1f2a636fb123de01a3b158f0c74d416ef681cf 17-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Move DeclContext::getParent and getLexicalParent in-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64806 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
305ec42f971a2b3e114eb35256c23e955c497a1c 17-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move DeclContext::getParent and getLexicalParent in-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64806 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
b50464f6665ba9e50579bb5edc2abc573107dbfc 17-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Remove some redundant Decl -> Decl castings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d311f376c364e5a6c88b63b1d5c53f560ea5e650 17-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove some redundant Decl -> Decl castings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
96e79bfae502212f22148a4ae4fae85244373245 17-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> All Decls have a DeclContext now, hooray! Fans of consistency rejoice.

Pass the DeclContext to ObjCIvarDecls as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0c00aac5d618f39afc406c5b2e07642930af1d56 17-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> All Decls have a DeclContext now, hooray! Fans of consistency rejoice.

Pass the DeclContext to ObjCIvarDecls as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dae66edc49dc2ebbb32377e33012fc3a168c5a4e 17-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Added support for objc's gc attribute in ExtQualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
59d16d1402d76a298ab7fc5f362e9d3dfd744aa5 17-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Added support for objc's gc attribute in ExtQualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9101a6356b807dab260e600241a56f22a19dca7f 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Backend: Accept -mcpu and -mattr for use by TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64798 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
a034ba807be38d9166998d68af71226c64c5c8dd 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Backend: Accept -mcpu and -mattr for use by TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64798 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
aecbac1ad7b9c4b90a007491789c3be592bcaacb 17-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: getMaxValue and getMinValue now also handle 'block' pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
eca69623c2c942fdb995cecc92a275a189fd731c 17-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: getMaxValue and getMinValue now also handle 'block' pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
b60352aa80d17026f445267940db558ab9cfb92e 17-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed ASQualType to ExtQualType to reflect its more
general use; as for, objc2's gc type attributes. No
change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
f11284ac87daa613bc7b30db9f54bd716d123222 17-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Renamed ASQualType to ExtQualType to reflect its more
general use; as for, objc2's gc type attributes. No
change in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
fe3ccfa91de59de8cd51a6dc063cd72316c2c4fc 17-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Remove the error about redefining library functions. It's causing too
much pain when compiling the Linux kernel (PR3592).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
655753a757b3eae4306cf59e84a63b78ebb2b9a7 17-Feb-2009 Douglas Gregor <dgregor@apple.com> Remove the error about redefining library functions. It's causing too
much pain when compiling the Linux kernel (PR3592).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64767 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
f1790ca8a7ece12dcdc11cd91f66bb601c0813f4 17-Feb-2009 Chris Lattner <sabre@nondot.org> add an accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
bff5c512af8ca7ac92e974e04c06ff4f820e4ee1 17-Feb-2009 Chris Lattner <sabre@nondot.org> add an accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64760 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
57e5f7e45f23d176cbd610bb2ff16cc307c3df2c 17-Feb-2009 Chris Lattner <sabre@nondot.org> emit:
t.c:4:9: error: invalid type 'short *' to __real operator
__tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)),
^
instead of:
t.c:4:9: error: invalid type 'short *' to __real or __imag operator
__tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)),
^

fixing a fixme. It would be even fancier to get the spelling of the token, but I
don't care *that* much :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
ba27e2a5c2ba49c0f3d84118508f761bf8fb762d 17-Feb-2009 Chris Lattner <sabre@nondot.org> emit:
t.c:4:9: error: invalid type 'short *' to __real operator
__tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)),
^
instead of:
t.c:4:9: error: invalid type 'short *' to __real or __imag operator
__tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)),
^

fixing a fixme. It would be even fancier to get the spelling of the token, but I
don't care *that* much :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64759 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
bf9a0e34c7c718081ffeafb79cd510341b2c2927 17-Feb-2009 Chris Lattner <sabre@nondot.org> add an accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
387616edf98739f4a0dd234c907e2b913e6a535d 17-Feb-2009 Chris Lattner <sabre@nondot.org> add an accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64758 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
34e6c266ddc055960bc0fcf584fd8ae6e2205ca3 17-Feb-2009 Chris Lattner <sabre@nondot.org> break down EmitCaretDiagnostic to use more primitive calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64754 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
b88af81958b4438a04175ea46d3b4c109ad4625e 17-Feb-2009 Chris Lattner <sabre@nondot.org> break down EmitCaretDiagnostic to use more primitive calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64754 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
c1303fb99a7b48bc87e6647a27d9fbc924060c57 17-Feb-2009 Chris Lattner <sabre@nondot.org> split caret diagnostic printing out into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64751 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
94f55784145e7e3f1414b5368d715fa43ca3b273 17-Feb-2009 Chris Lattner <sabre@nondot.org> split caret diagnostic printing out into its own function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64751 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
4a52611fac19ce74b42ba052d332b67f11116cc2 17-Feb-2009 Chris Lattner <sabre@nondot.org> remove "; candidates are/is:" from various ambiguity diagnostics.
2 out of 2 people on irc prefer them gone :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4330d65797e10618e39817ca59e8772671c3de59 17-Feb-2009 Chris Lattner <sabre@nondot.org> remove "; candidates are/is:" from various ambiguity diagnostics.
2 out of 2 people on irc prefer them gone :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64749 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
44b39837bbe5f6543afbe42245eff6957f4fe7c3 17-Feb-2009 Chris Lattner <sabre@nondot.org> fix notes so that they are always filtered with the same logic
as the last non-note diagnostic that preceeded them. This ensures
that diagnostics in main files which have notes with locations in
system headers get all the bits and pieces emitted or not in a
unit. This fixes PR3215.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
f5d2328fc849288c3a62e43d065685f516d57091 17-Feb-2009 Chris Lattner <sabre@nondot.org> fix notes so that they are always filtered with the same logic
as the last non-note diagnostic that preceeded them. This ensures
that diagnostics in main files which have notes with locations in
system headers get all the bits and pieces emitted or not in a
unit. This fixes PR3215.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ad964b3c41f4fc5fb7e19a0ce28b200e137bab84 17-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Added ClassTemplateSpecializationDecl, which is a subclass of
CXXRecordDecl that is used to represent class template
specializations. These are canonical declarations that can refer to
either an actual class template specialization in the code, e.g.,

template<> class vector<bool> { };

or to a template instantiation. However, neither of these features is
actually implemented yet, so really we're just using (and uniqing) the
declarations to make sure that, e.g., A<int> is a different type from
A<float>. Note that we carefully distinguish between what the user
wrote in the source code (e.g., "A<FLOAT>") and the semantic entity it
represents (e.g., "A<float, int>"); the former is in the sugared Type,
the latter is an actual Decl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclTemplate.h
ST/Type.h
3e00bad490f1bae8a2c60f934e7eb5dbb9752c5d 17-Feb-2009 Douglas Gregor <dgregor@apple.com> Added ClassTemplateSpecializationDecl, which is a subclass of
CXXRecordDecl that is used to represent class template
specializations. These are canonical declarations that can refer to
either an actual class template specialization in the code, e.g.,

template<> class vector<bool> { };

or to a template instantiation. However, neither of these features is
actually implemented yet, so really we're just using (and uniqing) the
declarations to make sure that, e.g., A<int> is a different type from
A<float>. Note that we carefully distinguish between what the user
wrote in the source code (e.g., "A<FLOAT>") and the semantic entity it
represents (e.g., "A<float, int>"); the former is in the sugared Type,
the latter is an actual Decl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclTemplate.h
ST/Type.h
3ed413a52fa22c13b72a2be1986f0cfc2400274e 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Diagnose non-power-of-2 arguments to attribute aligned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
396b2a22788b0134018760d6a476de1e20f81334 17-Feb-2009 Daniel Dunbar <daniel@zuster.org> Diagnose non-power-of-2 arguments to attribute aligned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
fd46ea2d06cfd25a032c1202d129b8f86f740f66 16-Feb-2009 Daniel Dunbar <daniel@zuster.org> Support IRgen of sqrt -> llvm.sqrt, pow -> llvm.pow.

- Define pow[lf]?, sqrt[lf]? as builtins.

- Add -fmath-errno option which binds to LangOptions.MathErrno

- Add new builtin flag Builtin::Context::isConstWithoutErrno for
functions which can be marked as const if errno isn't respected for
math functions. Sema automatically marks these functions as const
when they are defined, if MathErrno=0.

- IRgen uses const attribute on sqrt and pow library functions to
decide if it can use the llvm intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
asic/LangOptions.h
ef2abfee3ea16ec74942dc09e9e425f46aeb2582 16-Feb-2009 Daniel Dunbar <daniel@zuster.org> Support IRgen of sqrt -> llvm.sqrt, pow -> llvm.pow.

- Define pow[lf]?, sqrt[lf]? as builtins.

- Add -fmath-errno option which binds to LangOptions.MathErrno

- Add new builtin flag Builtin::Context::isConstWithoutErrno for
functions which can be marked as const if errno isn't respected for
math functions. Sema automatically marks these functions as const
when they are defined, if MathErrno=0.

- IRgen uses const attribute on sqrt and pow library functions to
decide if it can use the llvm intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
asic/LangOptions.h
ae17c7aa7f431e4c797133f272d47bbd027a957d 16-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Make "implicit int" an error in C++ (unless we're allowing Microsoft
extensions). This caught a couple bugs in our test suite :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4310f4ee260e6c7ceeaf299e240f4d789ecc730d 16-Feb-2009 Douglas Gregor <dgregor@apple.com> Make "implicit int" an error in C++ (unless we're allowing Microsoft
extensions). This caught a couple bugs in our test suite :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
8b23485d71cc505cd36e6e2dae6ca2c5ce4fefd4 16-Feb-2009 Ted Kremenek <kremenek@apple.com> Modify getMaxValue/getMinValue to take pointer values as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64682 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
4b441f057688cf0d3e6d74ac530ce3eb2d965c5e 16-Feb-2009 Ted Kremenek <kremenek@apple.com> Modify getMaxValue/getMinValue to take pointer values as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64682 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
98e7fcc0d68043d6f132afcdf4783682b30e42f2 16-Feb-2009 Chris Lattner <sabre@nondot.org> introduce and use a new ExtVectorElementExpr::isArrow method, at Eli's suggestion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2140e904dbe53657339cb5b1cc13de563ca0d1fc 16-Feb-2009 Chris Lattner <sabre@nondot.org> introduce and use a new ExtVectorElementExpr::isArrow method, at Eli's suggestion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7788ab913adcb97e8dff09fb21f35af504ff75e9 16-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: Add utility methods 'Add1' and 'Sub1' to get a persistent APSInt value that is 1 greater or 1 less than the provided value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64678 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
6175dc676c515a74e5f41afb4ac2b44cc2367a24 16-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: Add utility methods 'Add1' and 'Sub1' to get a persistent APSInt value that is 1 greater or 1 less than the provided value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64678 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
55815e6d3c3a7bdc7b61fb070af634d492ffd6bb 16-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: Add getMaxValue and getMinValue variants that take QualTypes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64677 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
0d3aeae8bf09fb9cdc536cfa5fefa983bd900dfc 16-Feb-2009 Ted Kremenek <kremenek@apple.com> BasicValueFactory: Add getMaxValue and getMinValue variants that take QualTypes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64677 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
2e8a7aa7c15274813f876f4b2ca6ce38382c56c4 16-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Supply the header corresponding to a library builtin as a separate argument to the LIBBUILTIN macro

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
b1152d842c6599e41581302a85a0f53928253add 16-Feb-2009 Douglas Gregor <dgregor@apple.com> Supply the header corresponding to a library builtin as a separate argument to the LIBBUILTIN macro

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
aab249137e72bacb5b489879e516c727af1d56c8 16-Feb-2009 Ted Kremenek <kremenek@apple.com> Add getSymbolManager() and getBasicVals() accessors to GRStateRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64675 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
f81895f963f0910c7df422709f7f1668eb9f7c4f 16-Feb-2009 Ted Kremenek <kremenek@apple.com> Add getSymbolManager() and getBasicVals() accessors to GRStateRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64675 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
09020eed49ea73a177a1ff116c2736065bb000de 16-Feb-2009 Chris Lattner <sabre@nondot.org> enhance ExtVectorElementExpr to allow V->xxyy to work like (*V).xxyy


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
73525de7fd9bdd534382dc89a24f1f76db3e04b9 16-Feb-2009 Chris Lattner <sabre@nondot.org> enhance ExtVectorElementExpr to allow V->xxyy to work like (*V).xxyy


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64667 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
beae78eb8dac8bc954e89d17f9c7fe55faba8981 16-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Remove FindIvarDeclaration. Use lookupInstanceVariable is is functionally
the same.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a5afdd0ef9ff4a7a3f26145b6536a84dd340c897 16-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Remove FindIvarDeclaration. Use lookupInstanceVariable is is functionally
the same.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64657 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e86e3e470060401ec4fe1ab984e4da6ae7adf003 16-Feb-2009 Chris Lattner <sabre@nondot.org> cleanup, add a getMethod() that takes a bool to indicate whether
the caller wants class or instance methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
53df12d1ba68dbd071d067f8236c16fba815aad5 16-Feb-2009 Chris Lattner <sabre@nondot.org> cleanup, add a getMethod() that takes a bool to indicate whether
the caller wants class or instance methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f119670d2ac5fb343b6adf4fdf2544e160f2f747 16-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> When a function with a prototype is redeclared without a prototype,
merge the prototype into the redeclaration (and make a note in the
declaration). Fixes PR3588.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6871981fbccba9e8a63997d58245ec0add114f49 16-Feb-2009 Douglas Gregor <dgregor@apple.com> When a function with a prototype is redeclared without a prototype,
merge the prototype into the redeclaration (and make a note in the
declaration). Fixes PR3588.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
083c23e9acbb8322201e8a318f0fe00823b5d181 16-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Adopt a more principled approach to invalid declarations:
- If a declaration is an invalid redeclaration of an existing name,
complain about the invalid redeclaration then avoid adding it to
the AST (we can still parse the definition or initializer, if any).
- If the declaration is invalid but there is no prior declaration
with that name, introduce the invalid declaration into the AST
(for later error recovery).
- If the declaration is an invalid redeclaration of a builtin that
starts with __builtin_, we produce an error and drop the
redeclaration. If it is an invalid redeclaration of a library
builtin (e.g., malloc, printf), warn (don't error!) and drop the
redeclaration.

If a user attempts to define a builtin, produce an error and (if it's
a library builtin like malloc) suggest -ffreestanding.

This addresses <rdar://problem/6097585> and PR2892. However, PR3588 is
still going to cause some problems when builtins are redeclared
without a prototype.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticSemaKinds.def
cda9c674998aedeb9319e95a0284f4d266dcef32 16-Feb-2009 Douglas Gregor <dgregor@apple.com> Adopt a more principled approach to invalid declarations:
- If a declaration is an invalid redeclaration of an existing name,
complain about the invalid redeclaration then avoid adding it to
the AST (we can still parse the definition or initializer, if any).
- If the declaration is invalid but there is no prior declaration
with that name, introduce the invalid declaration into the AST
(for later error recovery).
- If the declaration is an invalid redeclaration of a builtin that
starts with __builtin_, we produce an error and drop the
redeclaration. If it is an invalid redeclaration of a library
builtin (e.g., malloc, printf), warn (don't error!) and drop the
redeclaration.

If a user attempts to define a builtin, produce an error and (if it's
a library builtin like malloc) suggest -ffreestanding.

This addresses <rdar://problem/6097585> and PR2892. However, PR3588 is
still going to cause some problems when builtins are redeclared
without a prototype.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticSemaKinds.def
d948978fa2ffdc6b014447c17e10d8b88eca73cf 16-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> castToDeclContext/castFromDeclContext are only required to be included in the class of decls that directly derive from DeclContext.
Their subclasses don't need them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
005f6b222dfddc12ada571e479ff2d7a58114d07 16-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> castToDeclContext/castFromDeclContext are only required to be included in the class of decls that directly derive from DeclContext.
Their subclasses don't need them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64632 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclObjC.h
981aa13b401965bcfa5c0d052d07d15e379fd90d 16-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> DeclContext had its "casting machinery" inside the class definition so that if a new declaration context Decl appeared, the necessary changes
would be in one place. Since, now, only DeclNodes.def needs to be modified, move things out-of-line and simplify the DeclContext class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64630 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3d7641e090cf113dec64306a1597d3e4523e2a55 16-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> DeclContext had its "casting machinery" inside the class definition so that if a new declaration context Decl appeared, the necessary changes
would be in one place. Since, now, only DeclNodes.def needs to be modified, move things out-of-line and simplify the DeclContext class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64630 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
2d9b76174a00679c24428d95893c993b445bb067 16-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Make DeclContexts maintenance a bit easier.

-In DeclNodes.def, only mark as DeclContexts the top classes that directly derive from DeclContext. If the Decl has subclasses,
it should be marked with DECL_CONTEXT_BASE.

-Use DeclNodes.def to automate the DeclContext::classof and DeclContext::CastTo definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
1ad4dd78ec53c24ea9e752b216035d7aa666fe49 16-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make DeclContexts maintenance a bit easier.

-In DeclNodes.def, only mark as DeclContexts the top classes that directly derive from DeclContext. If the Decl has subclasses,
it should be marked with DECL_CONTEXT_BASE.

-Use DeclNodes.def to automate the DeclContext::classof and DeclContext::CastTo definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclNodes.def
2cb744bafa562600ca2142a262a97a90febe4041 15-Feb-2009 Chris Lattner <sabre@nondot.org> Refactor the deprecated and unavailable checks into a new
DiagnoseUseOfDeprecatedDecl method. This ensures that they
are treated consistently. This gets us 'unavailable' support
on a few new types of decls, and makes sure we consistently
silence deprecated when the caller is also deprecated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
76a642ff4fce7a0648c79a1f01324a8c3880e251 15-Feb-2009 Chris Lattner <sabre@nondot.org> Refactor the deprecated and unavailable checks into a new
DiagnoseUseOfDeprecatedDecl method. This ensures that they
are treated consistently. This gets us 'unavailable' support
on a few new types of decls, and makes sure we consistently
silence deprecated when the caller is also deprecated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1f442bea60ffda36a2403fbbbd0fac33a5cbabf4 15-Feb-2009 Chris Lattner <sabre@nondot.org> don't pass a random english string in as a string argument to Diag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
7b4192c558268fd9007c671e72b4aa59d4f75daa 15-Feb-2009 Chris Lattner <sabre@nondot.org> don't pass a random english string in as a string argument to Diag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64608 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticParseKinds.def
46558bfca05fd9ff0e4aaddb23f51ca6e199524a 15-Feb-2009 Chris Lattner <sabre@nondot.org> add a new SourceManager::getInstantiationRange helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
6678133b8ce642f93e5141f056fa643112041ad0 15-Feb-2009 Chris Lattner <sabre@nondot.org> add a new SourceManager::getInstantiationRange helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
bc7a3cb00cca3dd84c1009ea74df12545747e99c 15-Feb-2009 Chris Lattner <sabre@nondot.org> track "just a little more" location information for macro instantiations.
Now instead of just tracking the expansion history, also track the full
range of the macro that got replaced. For object-like macros, this doesn't
change anything. For _Pragma and function-like macros, this means we track
the locations of the ')'.

This is required for PR3579 because apparently GCC uses the line of the ')'
of a function-like macro as the location to expand __LINE__ to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64601 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Lexer.h
ex/Preprocessor.h
ex/TokenLexer.h
e7fb48466afcbf2c4ccdfa658824282fdc3c512c 15-Feb-2009 Chris Lattner <sabre@nondot.org> track "just a little more" location information for macro instantiations.
Now instead of just tracking the expansion history, also track the full
range of the macro that got replaced. For object-like macros, this doesn't
change anything. For _Pragma and function-like macros, this means we track
the locations of the ')'.

This is required for PR3579 because apparently GCC uses the line of the ')'
of a function-like macro as the location to expand __LINE__ to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64601 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Lexer.h
ex/Preprocessor.h
ex/TokenLexer.h
91ca7f0bdda2f93b56a94f0f1cf9ac917bc06cd7 14-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add a test case for -ffreestanding that redefines malloc.

Warn that complex numbers are an extension in a freestanding C99
implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
f244cd7e54753caf6edb76df430dea2f43bb82a8 14-Feb-2009 Douglas Gregor <dgregor@apple.com> Add a test case for -ffreestanding that redefines malloc.

Warn that complex numbers are an extension in a freestanding C99
implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64568 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
23d232614940858972080d808959f0645318f74e 14-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add -ffreestanding to suppress the implicit declaration of library builtins like printf and malloc. Fixes PR3586

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
asic/LangOptions.h
3573c0c0b44a1ac8f76a00af1bc75e94ca03d704 14-Feb-2009 Douglas Gregor <dgregor@apple.com> Add -ffreestanding to suppress the implicit declaration of library builtins like printf and malloc. Fixes PR3586

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
asic/LangOptions.h
27ecc6736fbd9a91a710a40719d68934370a700f 14-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a problem caused by foreward @class use
which consequently caused a Seg fault. during meta-data
generation. It also addresses an issue related to
late binding of newly synthesize ivars (when we support it).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f3710babc1ba40779c0fc64e6657cfc84dee7545 14-Feb-2009 Fariborz Jahanian <fjahanian@apple.com> Fixed a problem caused by foreward @class use
which consequently caused a Seg fault. during meta-data
generation. It also addresses an issue related to
late binding of newly synthesize ivars (when we support it).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b5af738b7338a799a7885b1fe2eebdba858b96cb 14-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add hook to add attributes to function declarations that we know
about, whether they are builtins or not. Use this to add the
appropriate "format" attribute to NSLog, NSLogv, asprintf, and
vasprintf, and to translate builtin attributes (from Builtins.def)
into actual attributes on the function declaration.

Use the "printf" format attribute on function declarations to
determine whether we should do format string checking, rather than
looking at an ad hoc list of builtins and "known" function names.

Be a bit more careful about when we consider a function a "builtin" in
C++.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
ST/Expr.h
3c385e5f8d9008fff18597ca302be19fa86e51f6 14-Feb-2009 Douglas Gregor <dgregor@apple.com> Add hook to add attributes to function declarations that we know
about, whether they are builtins or not. Use this to add the
appropriate "format" attribute to NSLog, NSLogv, asprintf, and
vasprintf, and to translate builtin attributes (from Builtins.def)
into actual attributes on the function declaration.

Use the "printf" format attribute on function declarations to
determine whether we should do format string checking, rather than
looking at an ad hoc list of builtins and "known" function names.

Be a bit more careful about when we consider a function a "builtin" in
C++.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
ST/Expr.h
b42900d8e7cb447efb9cb7e275a251f2fd345dac 14-Feb-2009 Anders Carlsson <andersca@mac.com> Pass the location of the start of the selector to ActOnClassMessage/ActOnInstanceMessage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64560 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ff975cfab9ada27df86038286d1678084aeb3428 14-Feb-2009 Anders Carlsson <andersca@mac.com> Pass the location of the start of the selector to ActOnClassMessage/ActOnInstanceMessage.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64560 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
dd98483d9b12fbe8d8847f019f5b2efef3bcd4f2 14-Feb-2009 Ted Kremenek <kremenek@apple.com> Patch by Ben Laurie:

ConstraintManager:
- constify getSymVal()

BasicConstraintManager:
- Pull out logic that would be common to ConstraintManagers of a similar nature
and put them in a parent class called 'SimpleConstraintManager'.

RangeConstraintManager:
- Added a new prototype ConstraintManager to track ranges of variables! This
ConstraintManager keeps tracks of ranges of concrete integers that a symbolic
integer may have.

AnalysisConsumer:
- Add driver option to use RangeConstraintManager with GRExprEngine-based
analyses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64558 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
4502195fecf399fdbbb9ee2393ad08148c394179 14-Feb-2009 Ted Kremenek <kremenek@apple.com> Patch by Ben Laurie:

ConstraintManager:
- constify getSymVal()

BasicConstraintManager:
- Pull out logic that would be common to ConstraintManagers of a similar nature
and put them in a parent class called 'SimpleConstraintManager'.

RangeConstraintManager:
- Added a new prototype ConstraintManager to track ranges of variables! This
ConstraintManager keeps tracks of ranges of concrete integers that a symbolic
integer may have.

AnalysisConsumer:
- Add driver option to use RangeConstraintManager with GRExprEngine-based
analyses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64558 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
c47ed4ab909515b4ba1d3630b8327e8d98743b4a 14-Feb-2009 Cédric Venet <cedric.venet@laposte.net> Fix the build on win32.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/SourceManager.h
ea684e699ea84e61711e279f5fa7a1b9f3d46bc2 14-Feb-2009 Cedric Venet <cedric.venet@laposte.net> Fix the build on win32.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/SourceManager.h
a9b9846bc55c2ec1f776a553f6e20e588acdebcc 14-Feb-2009 Chris Lattner <sabre@nondot.org> add parser and type checking support for attribute((objc_exception)).
We don't have "zero cost" exceptions for ObjC yet, so there is no codegen
support required.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
0db29ece81d360dcefbe912339c34abe5917f6a9 14-Feb-2009 Chris Lattner <sabre@nondot.org> add parser and type checking support for attribute((objc_exception)).
We don't have "zero cost" exceptions for ObjC yet, so there is no codegen
support required.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64546 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
d2c6655c7ca33f6985a6b73db0ad7c65d1cf5fae 14-Feb-2009 Chris Lattner <sabre@nondot.org> Several related changes:
1) implement parser and sema support for reading and verifying attribute(warnunusedresult).
2) rename hasLocalSideEffect to isUnusedResultAWarning, inverting the sense
of its result.
3) extend isUnusedResultAWarning to directly return the loc and range
info that should be reported to the user. Make it substantially more
precise in some cases than what was previously reported.
4) teach isUnusedResultAWarning about CallExpr to decls that are
pure/const/warnunusedresult, fixing a fixme.
5) change warn_attribute_wrong_decl_type to not pass in english strings, instead,
pass in integers and use %select.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Expr.h
ST/Stmt.h
asic/DiagnosticSemaKinds.def
026dc96ac6ece60da5e1b98e2a71bd0ff0939fd8 14-Feb-2009 Chris Lattner <sabre@nondot.org> Several related changes:
1) implement parser and sema support for reading and verifying attribute(warnunusedresult).
2) rename hasLocalSideEffect to isUnusedResultAWarning, inverting the sense
of its result.
3) extend isUnusedResultAWarning to directly return the loc and range
info that should be reported to the user. Make it substantially more
precise in some cases than what was previously reported.
4) teach isUnusedResultAWarning about CallExpr to decls that are
pure/const/warnunusedresult, fixing a fixme.
5) change warn_attribute_wrong_decl_type to not pass in english strings, instead,
pass in integers and use %select.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Expr.h
ST/Stmt.h
asic/DiagnosticSemaKinds.def
a9aa1204965584023840f9e77a4a4da94b1bae2e 14-Feb-2009 Anders Carlsson <andersca@mac.com> Don't ignore the const attribute - we even have CG support for that. Do ignore the malloc attribute however.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64538 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
c41ec23d9f8ef80b8c62df978013c22dcdcbdbe3 14-Feb-2009 Anders Carlsson <andersca@mac.com> Don't ignore the const attribute - we even have CG support for that. Do ignore the malloc attribute however.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64538 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
2ddb4b27313b8a0b9b0ad011667e23e556cbabb5 14-Feb-2009 Ted Kremenek <kremenek@apple.com> Added GRStateManager::scanReachableSymbols(), a method which scans the reachable
symbols from an SVal.

- Fixed a bug in EnvironmentManager::RemoveDeadBindings() where it did not mark
live all the symbols reachable from a live block-level expression.

- Fixed a bug in the retain/release checker where it did not stop tracking
symbols that 'escaped' via compound literals being assigned to something the
BasicStoreManager didn't reason about.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64534 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SymbolManager.h
5216ad7e095873f19e535ad1efba91973f05d8e8 14-Feb-2009 Ted Kremenek <kremenek@apple.com> Added GRStateManager::scanReachableSymbols(), a method which scans the reachable
symbols from an SVal.

- Fixed a bug in EnvironmentManager::RemoveDeadBindings() where it did not mark
live all the symbols reachable from a live block-level expression.

- Fixed a bug in the retain/release checker where it did not stop tracking
symbols that 'escaped' via compound literals being assigned to something the
BasicStoreManager didn't reason about.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64534 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SymbolManager.h
1fa246d43b7a24a18ac4f37e83b962277e6ebbb3 14-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Make it possible for builtins to expression FILE* arguments, so that
we can define builtins such as fprintf, vfprintf, and
__builtin___fprintf_chk. Give a nice error message when we need to
implicitly declare a function like fprintf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
asic/DiagnosticSemaKinds.def
370ab3f1373841d70582feac9e35c3c6b3489f63 14-Feb-2009 Douglas Gregor <dgregor@apple.com> Make it possible for builtins to expression FILE* arguments, so that
we can define builtins such as fprintf, vfprintf, and
__builtin___fprintf_chk. Give a nice error message when we need to
implicitly declare a function like fprintf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
asic/DiagnosticSemaKinds.def
a42be30ac6ecacc33d63ca16c3bb6d50f4bd818c 14-Feb-2009 Ted Kremenek <kremenek@apple.com> Static analyzer:
- Added a new 'node builder' class called GRStmtNodeBuilderRef (name may
change). This is essentially a smart reference to a GRStmtNodeBuilder object
that keeps track of the current context (predecessor node, GRExprEngine
object, etc.) The idea is to gradually simplify the interface between
GRExprEngine and GRTransferFuncs using this new builder (i.e., passing 1
argument instead of 5). It also handles some of the "auto-transition" for node
creation, simplifying some of the logic in GRExprEngine itself.

- Used GRStmtBuilderRef to replace GRTransferFuncs::EvalStore with
GRTransferFuncs::EvalBind. The new EvalBind method will be used at any
arbitrary places where a binding between a location and value takes place.
Moreover, GRTransferFuncs no longer has the responsibility to request
StoreManager to do the binding; this is now in GRExprEngine::EvalBind. All
GRTransferFuncs::EvalBind does is checker-specific logic (which can be a
no-op).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64525 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRTransferFuncs.h
41573ebf8fb971f40fa8a3e20648362c359b4916 14-Feb-2009 Ted Kremenek <kremenek@apple.com> Static analyzer:
- Added a new 'node builder' class called GRStmtNodeBuilderRef (name may
change). This is essentially a smart reference to a GRStmtNodeBuilder object
that keeps track of the current context (predecessor node, GRExprEngine
object, etc.) The idea is to gradually simplify the interface between
GRExprEngine and GRTransferFuncs using this new builder (i.e., passing 1
argument instead of 5). It also handles some of the "auto-transition" for node
creation, simplifying some of the logic in GRExprEngine itself.

- Used GRStmtBuilderRef to replace GRTransferFuncs::EvalStore with
GRTransferFuncs::EvalBind. The new EvalBind method will be used at any
arbitrary places where a binding between a location and value takes place.
Moreover, GRTransferFuncs no longer has the responsibility to request
StoreManager to do the binding; this is now in GRExprEngine::EvalBind. All
GRTransferFuncs::EvalBind does is checker-specific logic (which can be a
no-op).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64525 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRExprEngineBuilders.h
nalysis/PathSensitive/GRTransferFuncs.h
17429039570353adb36354bd873240d037f09343 14-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Extend builtin "attribute" syntax to include a notation for
printf-like functions, both builtin functions and those in the
C library. The function-call checker now queries this attribute do
determine if we have a printf-like function, rather than scanning
through the list of "known functions IDs". However, there are 5
functions they are not yet "builtins", so the function-call checker
handles them specifically still:

- fprintf and vfprintf: the builtins mechanism cannot (yet)
express FILE* arguments, so these can't be encoded.
- NSLog: the builtins mechanism cannot (yet) express NSString*
arguments, so this (and NSLogv) can't be encoded.
- asprintf and vasprintf: these aren't part of the C99 standard
library, so we really shouldn't be defining them as builtins in
the general case (and we don't seem to have the machinery to make
them builtins only on certain targets and depending on whether
extensions are enabled).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
a316e7b735b12ce6b34961a9dcfaae34f4b08d29 14-Feb-2009 Douglas Gregor <dgregor@apple.com> Extend builtin "attribute" syntax to include a notation for
printf-like functions, both builtin functions and those in the
C library. The function-call checker now queries this attribute do
determine if we have a printf-like function, rather than scanning
through the list of "known functions IDs". However, there are 5
functions they are not yet "builtins", so the function-call checker
handles them specifically still:

- fprintf and vfprintf: the builtins mechanism cannot (yet)
express FILE* arguments, so these can't be encoded.
- NSLog: the builtins mechanism cannot (yet) express NSString*
arguments, so this (and NSLogv) can't be encoded.
- asprintf and vasprintf: these aren't part of the C99 standard
library, so we really shouldn't be defining them as builtins in
the general case (and we don't seem to have the machinery to make
them builtins only on certain targets and depending on whether
extensions are enabled).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64512 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
411889e15e0335f6951d2410c5bd67839c4fff66 14-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implicitly declare certain C library functions (malloc, strcpy, memmove,
etc.) when we perform name lookup on them. This ensures that we
produce the correct signature for these functions, which has two
practical impacts:

1) When we're supporting the "implicit function declaration" feature
of C99, these functions will be implicitly declared with the right
signature rather than as a function returning "int" with no
prototype. See PR3541 for the reason why this is important (hint:
GCC always predeclares these functions).

2) If users attempt to redeclare one of these library functions with
an incompatible signature, we produce a hard error.

This patch does a little bit of work to give reasonable error
messages. For example, when we hit case #1 we complain that we're
implicitly declaring this function with a specific signature, and then
we give a note that asks the user to include the appropriate header
(e.g., "please include <stdlib.h> or explicitly declare 'malloc'"). In
case #2, we show the type of the implicit builtin that was incorrectly
declared, so the user can see the problem. We could do better here:
for example, when displaying this latter error message we say
something like:

'strcpy' was implicitly declared here with type 'char *(char *, char
const *)'

but we should really print out a fake code line showing the
declaration, like this:

'strcpy' was implicitly declared here as:

char *strcpy(char *, char const *)

This would also be good for printing built-in candidates with C++
operator overloading.

The set of C library functions supported by this patch includes all
functions from the C99 specification's <stdlib.h> and <string.h> that
(a) are predefined by GCC and (b) have signatures that could cause
codegen issues if they are treated as functions with no prototype
returning and int. Future work could extend this set of functions to
other C library functions that we know about.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
ST/Decl.h
asic/DiagnosticSemaKinds.def
3e41d60eb627dc227c770f1c1c87d06909cf05fd 14-Feb-2009 Douglas Gregor <dgregor@apple.com> Implicitly declare certain C library functions (malloc, strcpy, memmove,
etc.) when we perform name lookup on them. This ensures that we
produce the correct signature for these functions, which has two
practical impacts:

1) When we're supporting the "implicit function declaration" feature
of C99, these functions will be implicitly declared with the right
signature rather than as a function returning "int" with no
prototype. See PR3541 for the reason why this is important (hint:
GCC always predeclares these functions).

2) If users attempt to redeclare one of these library functions with
an incompatible signature, we produce a hard error.

This patch does a little bit of work to give reasonable error
messages. For example, when we hit case #1 we complain that we're
implicitly declaring this function with a specific signature, and then
we give a note that asks the user to include the appropriate header
(e.g., "please include <stdlib.h> or explicitly declare 'malloc'"). In
case #2, we show the type of the implicit builtin that was incorrectly
declared, so the user can see the problem. We could do better here:
for example, when displaying this latter error message we say
something like:

'strcpy' was implicitly declared here with type 'char *(char *, char
const *)'

but we should really print out a fake code line showing the
declaration, like this:

'strcpy' was implicitly declared here as:

char *strcpy(char *, char const *)

This would also be good for printing built-in candidates with C++
operator overloading.

The set of C library functions supported by this patch includes all
functions from the C99 specification's <stdlib.h> and <string.h> that
(a) are predefined by GCC and (b) have signatures that could cause
codegen issues if they are treated as functions with no prototype
returning and int. Future work could extend this set of functions to
other C library functions that we know about.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
ST/Decl.h
asic/DiagnosticSemaKinds.def
cfd596f9bb31b5325354d7a453455c299a619e06 13-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add VarDecl::hasExternalStorage (no functionality change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1dd467a111794453e4d97af9907cb29ea72c44e5 13-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add VarDecl::hasExternalStorage (no functionality change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64498 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d9ef724225b3f0edf54a76aae0eda4f5447d5eeb 13-Feb-2009 Chris Lattner <sabre@nondot.org> Give TargetInfo a new IntPtrType to hold the intptr_t type for
a target.

Make Preprocessor.cpp define a new __INTPTR_TYPE__ macro based on this.

On linux/32, set intptr_t to int, instead of long. This fixes PR3563.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6ad474f82f0cf32e13128d89fa5ad3a37ae73530 13-Feb-2009 Chris Lattner <sabre@nondot.org> Give TargetInfo a new IntPtrType to hold the intptr_t type for
a target.

Make Preprocessor.cpp define a new __INTPTR_TYPE__ macro based on this.

On linux/32, set intptr_t to int, instead of long. This fixes PR3563.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
61e2a2a705ee13282449227c34448c28fe7ac7a8 13-Feb-2009 Chris Lattner <sabre@nondot.org> improve wording in a diagnostic to make it clear that we never intend to support
the vla-in-structure extension that GCC does. PR3562
Also wrap some long lines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
ab0517e6e50f0c01f6acf47954c1d0fa893e0da1 13-Feb-2009 Chris Lattner <sabre@nondot.org> improve wording in a diagnostic to make it clear that we never intend to support
the vla-in-structure extension that GCC does. PR3562
Also wrap some long lines.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
b88b4f7a2b97817fe9937dcf1226ca1f5796ecaf 13-Feb-2009 Daniel Dunbar <daniel@zuster.org> Sema/AST support for attribute used. Patch by Anders Johnson (with small tweaks & test case)!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64478 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
b805dad4aa386aeae0f72512895bd238678d37a5 13-Feb-2009 Daniel Dunbar <daniel@zuster.org> Sema/AST support for attribute used. Patch by Anders Johnson (with small tweaks & test case)!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64478 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
792b2c4243f1fa4b35a303c925356974ee730d89 13-Feb-2009 Ted Kremenek <kremenek@apple.com> Add some boilerplate to the PTH file to prepare for the caching of stats for directories (and negative stats too).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64477 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
a4b44dd9d30929a35c44d85102e5241ee847b2f2 13-Feb-2009 Ted Kremenek <kremenek@apple.com> Add some boilerplate to the PTH file to prepare for the caching of stats for directories (and negative stats too).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64477 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
fb0cac21679fcc724c2c0c1f67fe4deed77e3639 13-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Remove DeclGroupOwningRef, since we intend for declarations to be owned
by DeclContexts (always) rather than by statements.

DeclContext currently goes out of its way to avoid destroying any
Decls that might be owned by a DeclGroupOwningRef. However, in an
error-recovery situation, a failure in a declaration statement can
cause all of the decls in a DeclGroupOwningRef to be destroyed after
they've already be added into the DeclContext. Hence, DeclContext is
left with already-destroyed declarations, and bad things happen. This
problem was causing failures that showed up as assertions on x86 Linux
in test/Parser/objc-forcollection-neg-2.m.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/Stmt.h
9653db7bd0e3665b955a0445859285f2e1e7dacd 13-Feb-2009 Douglas Gregor <dgregor@apple.com> Remove DeclGroupOwningRef, since we intend for declarations to be owned
by DeclContexts (always) rather than by statements.

DeclContext currently goes out of its way to avoid destroying any
Decls that might be owned by a DeclGroupOwningRef. However, in an
error-recovery situation, a failure in a declaration statement can
cause all of the decls in a DeclGroupOwningRef to be destroyed after
they've already be added into the DeclContext. Hence, DeclContext is
left with already-destroyed declarations, and bad things happen. This
problem was causing failures that showed up as assertions on x86 Linux
in test/Parser/objc-forcollection-neg-2.m.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
ST/Stmt.h
4c1fac8c5fa4b894589e285efd5fe6c739c18264 13-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Fix capitalization in a diagnostic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
c1ced28c0262698de9877afa74589038c7aad0df 13-Feb-2009 Douglas Gregor <dgregor@apple.com> Fix capitalization in a diagnostic

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
402735d4fb6e296334ba1e0a448fd786374db9ce 13-Feb-2009 Anders Carlsson <andersca@mac.com> Add a new Ignored attribute type, and use it for may_alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64446 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
05f8e471aae971c9867dbac148eba1275a570814 13-Feb-2009 Anders Carlsson <andersca@mac.com> Add a new Ignored attribute type, and use it for may_alias.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64446 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
f607f531905e9df9f6907cd81fe97a96fb7956c5 13-Feb-2009 Anders Carlsson <andersca@mac.com> Add sema support for the nodebug attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64441 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
d87df37e0adaba0d5e33da7b1a14d7f1d94c5eef 13-Feb-2009 Anders Carlsson <andersca@mac.com> Add sema support for the nodebug attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64441 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
ff3fcdf47370a4577d971a2adefd259807152078 13-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Initial implementation of arbitrary fixed-width integer types.
Currently only used for 128-bit integers.

Note that we can't use the fixed-width integer types for other integer
modes without other changes because glibc headers redefines (u)int*_t
and friends using the mode attribute. For example, this means that uint64_t
has to be compatible with unsigned __attribute((mode(DI))), and
uint64_t is currently defined to long long. And I have a feeling we'll
run into issues if we try to define uint64_t as something which isn't
either long or long long.

This doesn't get the alignment right in most cases, including
the 128-bit integer case; I'll file a PR shortly. The gist of the issue
is that the targets don't really expose the information necessary to
figure out the alignment outside of the target description, so there's a
non-trivial amount of work involved in getting it working right. That
said, the alignment used is conservative, so the only issue with the
current implementation is ABI compatibility.

This makes it trivial to add some sort of "bitwidth" attribute to make
arbitrary-width integers; I'll do that in a followup.

We could also use this for stuff like the following for compatibility
with gcc, but I have a feeling it would be a better idea for clang to be
consistent between C and C++ modes rather than follow gcc's example for
C mode.
struct {unsigned long long x : 33;} x;
unsigned long long a(void) {return x.x+1;}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
f98aba35e6c3da5aae61843fc01334939e4e12ec 13-Feb-2009 Eli Friedman <eli.friedman@gmail.com> Initial implementation of arbitrary fixed-width integer types.
Currently only used for 128-bit integers.

Note that we can't use the fixed-width integer types for other integer
modes without other changes because glibc headers redefines (u)int*_t
and friends using the mode attribute. For example, this means that uint64_t
has to be compatible with unsigned __attribute((mode(DI))), and
uint64_t is currently defined to long long. And I have a feeling we'll
run into issues if we try to define uint64_t as something which isn't
either long or long long.

This doesn't get the alignment right in most cases, including
the 128-bit integer case; I'll file a PR shortly. The gist of the issue
is that the targets don't really expose the information necessary to
figure out the alignment outside of the target description, so there's a
non-trivial amount of work involved in getting it working right. That
said, the alignment used is conservative, so the only issue with the
current implementation is ABI compatibility.

This makes it trivial to add some sort of "bitwidth" attribute to make
arbitrary-width integers; I'll do that in a followup.

We could also use this for stuff like the following for compatibility
with gcc, but I have a feeling it would be a better idea for clang to be
consistent between C and C++ modes rather than follow gcc's example for
C mode.
struct {unsigned long long x : 33;} x;
unsigned long long a(void) {return x.x+1;}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
e66ba680dc0cff6648b52cceb6f402cf8d01b20b 13-Feb-2009 Ted Kremenek <kremenek@apple.com> GRExprEngine:
- Add 'EvalBind', which will be used by 'EvalStore' to pull much of the value binding logic out of GRTransferFuncs.
- Rename many cases of 'St' to 'state'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64426 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
a8538d902fce9cfec20f39b34492268b51643819 13-Feb-2009 Ted Kremenek <kremenek@apple.com> GRExprEngine:
- Add 'EvalBind', which will be used by 'EvalStore' to pull much of the value binding logic out of GRTransferFuncs.
- Rename many cases of 'St' to 'state'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64426 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
0eb7cd8d46dd144b6e3d9fdaa02997967f0ad585 13-Feb-2009 Chris Lattner <sabre@nondot.org> factor token concatenation avoidance logic out of
PrintPreprocessedOutput into its own file. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64418 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenConcatenation.h
d7038e18ef540a78fe6ce2a43125ce9b08fdbbc5 13-Feb-2009 Chris Lattner <sabre@nondot.org> factor token concatenation avoidance logic out of
PrintPreprocessedOutput into its own file. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64418 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenConcatenation.h
fa3a832f26a79b56599f9d304c2d9ac8bbdff86a 13-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Tighten checking of the "overloadable" attribute. If any function by a
given name in a given scope is marked as "overloadable", every
function declaration and definition with that same name and in that
same scope needs to have the "overloadable" attribute. Essentially,
the "overloadable" attribute is not part of attribute merging, so it
must be specified even for redeclarations. This keeps users from
trying to be too sneaky for their own good:

double sin(double) __attribute__((overloadable)); // too sneaky
#include <math.h>

Previously, this would have made "sin" overloadable, and therefore
given it a mangled name. Now, we get an error inside math.h when we
see a (re)declaration of "sin" that doesn't have the "overloadable"
attribute.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
ae17094c001972a5949944a0a77ef6adf2a92c8f 13-Feb-2009 Douglas Gregor <dgregor@apple.com> Tighten checking of the "overloadable" attribute. If any function by a
given name in a given scope is marked as "overloadable", every
function declaration and definition with that same name and in that
same scope needs to have the "overloadable" attribute. Essentially,
the "overloadable" attribute is not part of attribute merging, so it
must be specified even for redeclarations. This keeps users from
trying to be too sneaky for their own good:

double sin(double) __attribute__((overloadable)); // too sneaky
#include <math.h>

Previously, this would have made "sin" overloadable, and therefore
given it a mangled name. Now, we get an error inside math.h when we
see a (re)declaration of "sin" that doesn't have the "overloadable"
attribute.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
3556bc72a4c38332a94becb05a4e8ff1f9917ef9 13-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add basic support for C++ name mangling according to the Itanium C++
ABI to the CodeGen library. Since C++ code-generation is so
incomplete, we can't exercise much of this mangling code. However, a
few smoke tests show that it's doing the same thing as GCC. When C++
codegen matures, we'll extend the ABI tester to verify name-mangling
as well, and complete the implementation here.

At this point, the major client of name mangling is in the uses of the
new "overloadable" attribute in C, which allows overloading. Any
"overloadable" function in C (or in an extern "C" block in C++) will
be mangled the same way that the corresponding C++ function would be
mangled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
5f2bfd4811996abb783aa6c7254c56baa6930e8c 13-Feb-2009 Douglas Gregor <dgregor@apple.com> Add basic support for C++ name mangling according to the Itanium C++
ABI to the CodeGen library. Since C++ code-generation is so
incomplete, we can't exercise much of this mangling code. However, a
few smoke tests show that it's doing the same thing as GCC. When C++
codegen matures, we'll extend the ABI tester to verify name-mangling
as well, and complete the implementation here.

At this point, the major client of name mangling is in the uses of the
new "overloadable" attribute in C, which allows overloading. Any
"overloadable" function in C (or in an extern "C" block in C++) will
be mangled the same way that the corresponding C++ function would be
mangled.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1f1cd39d71dadad454d96ec5eafb9b7450c832e4 12-Feb-2009 Anders Carlsson <andersca@mac.com> Add a very basic implemenation of global blocks. This needs to be cleaned up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64387 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d5cab5435371b8cc74a9e05ebd40b5995ebad149 12-Feb-2009 Anders Carlsson <andersca@mac.com> Add a very basic implemenation of global blocks. This needs to be cleaned up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64387 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
17c0382b4b42417de088ae2ce467aa74b16fca65 12-Feb-2009 Steve Naroff <snaroff@apple.com> Several cleanups:
- rename isObjCIdType/isObjCClassType -> isObjCIdStructType/isObjCClassStructType. The previous name didn't do what you would expect.
- add back isObjCIdType/isObjCClassType to do what you would expect. Not currently used, however many of the isObjCIdStructType/isObjCClassStructType clients could be converted over time.
- move static Sema function areComparableObjCInterfaces to ASTContext (renamed to areComparableObjCPointerTypes, since it now operates on pointer types).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
389bf46ae41241a656ed71b00ac2177d7f385651 12-Feb-2009 Steve Naroff <snaroff@apple.com> Several cleanups:
- rename isObjCIdType/isObjCClassType -> isObjCIdStructType/isObjCClassStructType. The previous name didn't do what you would expect.
- add back isObjCIdType/isObjCClassType to do what you would expect. Not currently used, however many of the isObjCIdStructType/isObjCClassStructType clients could be converted over time.
- move static Sema function areComparableObjCInterfaces to ASTContext (renamed to areComparableObjCPointerTypes, since it now operates on pointer types).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9750972322487f439c511244b303ad3e849b193d 12-Feb-2009 Daniel Dunbar <daniel@zuster.org> Support __attribute__(section(<name>))


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64380 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
17f194f4393a67fd28ad822c06d32b8cb99bad3f 12-Feb-2009 Daniel Dunbar <daniel@zuster.org> Support __attribute__(section(<name>))


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64380 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
9a8739a03fe76229de9a460f2512fffb4e53f0a9 12-Feb-2009 Steve Naroff <snaroff@apple.com> Turn warning into error. Minor incompatibility with GCC (for scalar types, GCC only produces a warning).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
3dcfe10a6801eb52f4c20f1242bea0a3a98aa146 12-Feb-2009 Steve Naroff <snaroff@apple.com> Turn warning into error. Minor incompatibility with GCC (for scalar types, GCC only produces a warning).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
40003a7c7f5127b74a45c93e5dedb7228c6f2bf4 12-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Cache stat information for files in the PTH file. Hook up FileManager
to use this stat information in the PTH file using a 'StatSysCallCache' object.

Performance impact (Cocoa.h, PTH):
- number of stat calls reduces from 1230 to 425
- fsyntax-only: time improves by 4.2%

We can reduce the number of stat calls to almost zero by caching negative stat
calls and directory stat calls in the PTH file as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64353 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
ex/Preprocessor.h
337edcdbec05316b407d0d64865c88ff8597d910 12-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Cache stat information for files in the PTH file. Hook up FileManager
to use this stat information in the PTH file using a 'StatSysCallCache' object.

Performance impact (Cocoa.h, PTH):
- number of stat calls reduces from 1230 to 425
- fsyntax-only: time improves by 4.2%

We can reduce the number of stat calls to almost zero by caching negative stat
calls and directory stat calls in the PTH file as well.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64353 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
ex/Preprocessor.h
358123c2e3098540c8c9b124a70a82785ffaf0e7 12-Feb-2009 Ted Kremenek <kremenek@apple.com> FileManager:
- set the 'StatSysCallCache' object using a setter method instead of
FileManager's constructor. This allows the cache to be installed after the
FileManager object is created.
- Add 'file mode' to FileEntry (useful for stat caching)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64351 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
96438f319bb07d9a40564b5e01333f82c0c8a61e 12-Feb-2009 Ted Kremenek <kremenek@apple.com> FileManager:
- set the 'StatSysCallCache' object using a setter method instead of
FileManager's constructor. This allows the cache to be installed after the
FileManager object is created.
- Add 'file mode' to FileEntry (useful for stat caching)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64351 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
5830b773c03657c0a53f68dee9ea8985b884aa4d 12-Feb-2009 Ted Kremenek <kremenek@apple.com> Add lightweight shim "clang::StatSysCallCache" that caches 'stat' system calls
for use by FileManager. FileManager now takes a StatSysCallCache* in its
constructor (which defaults to NULL). This will be used for evaluating whether
or not caching 'stat' system calls in PTH is a performance win. This shim adds
no observable performance impact in the case where the 'StatSysCallCache*' is
null.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64345 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
fc7052d4a241ee6fc70afea7c1c9560147f0a49c 12-Feb-2009 Ted Kremenek <kremenek@apple.com> Add lightweight shim "clang::StatSysCallCache" that caches 'stat' system calls
for use by FileManager. FileManager now takes a StatSysCallCache* in its
constructor (which defaults to NULL). This will be used for evaluating whether
or not caching 'stat' system calls in PTH is a performance win. This shim adds
no observable performance impact in the case where the 'StatSysCallCache*' is
null.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64345 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
be3f078bcca50d4266c4d6f645594c3eb4aefef4 12-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Have meta data be at the beginning of the PTH file, not the end.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64338 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
a4bd8eb4d6d4b625f6bbb62fc180b02eab6433ed 12-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Have meta data be at the beginning of the PTH file, not the end.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64338 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
fcb1919cf2625e2fd209dabd7bba8b06fff94821 12-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of function overloading in C.

This commit adds a new attribute, "overloadable", that enables C++
function overloading in C. The attribute can only be added to function
declarations, e.g.,

int *f(int) __attribute__((overloadable));

If the "overloadable" attribute exists on a function with a given
name, *all* functions with that name (and in that scope) must have the
"overloadable" attribute. Sets of overloaded functions with the
"overloadable" attribute then follow the normal C++ rules for
overloaded functions, e.g., overloads must have different
parameter-type-lists from each other.

When calling an overloaded function in C, we follow the same
overloading rules as C++, with three extensions to the set of standard
conversions:

- A value of a given struct or union type T can be converted to the
type T. This is just the identity conversion. (In C++, this would
go through a copy constructor).
- A value of pointer type T* can be converted to a value of type U*
if T and U are compatible types. This conversion has Conversion
rank (it's considered a pointer conversion in C).
- A value of type T can be converted to a value of type U if T and U
are compatible (and are not both pointer types). This conversion
has Conversion rank (it's considered to be a new kind of
conversion unique to C, a "compatible" conversion).

Known defects (and, therefore, next steps):
1) The standard-conversion handling does not understand conversions
involving _Complex or vector extensions, so it is likely to get
these wrong. We need to add these conversions.
2) All overloadable functions with the same name will have the same
linkage name, which means we'll get a collision in the linker (if
not sooner). We'll need to mangle the names of these functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
f9201e0ff1779567150b70856753d9f2c6a91467 12-Feb-2009 Douglas Gregor <dgregor@apple.com> Initial implementation of function overloading in C.

This commit adds a new attribute, "overloadable", that enables C++
function overloading in C. The attribute can only be added to function
declarations, e.g.,

int *f(int) __attribute__((overloadable));

If the "overloadable" attribute exists on a function with a given
name, *all* functions with that name (and in that scope) must have the
"overloadable" attribute. Sets of overloaded functions with the
"overloadable" attribute then follow the normal C++ rules for
overloaded functions, e.g., overloads must have different
parameter-type-lists from each other.

When calling an overloaded function in C, we follow the same
overloading rules as C++, with three extensions to the set of standard
conversions:

- A value of a given struct or union type T can be converted to the
type T. This is just the identity conversion. (In C++, this would
go through a copy constructor).
- A value of pointer type T* can be converted to a value of type U*
if T and U are compatible types. This conversion has Conversion
rank (it's considered a pointer conversion in C).
- A value of type T can be converted to a value of type U if T and U
are compatible (and are not both pointer types). This conversion
has Conversion rank (it's considered to be a new kind of
conversion unique to C, a "compatible" conversion).

Known defects (and, therefore, next steps):
1) The standard-conversion handling does not understand conversions
involving _Complex or vector extensions, so it is likely to get
these wrong. We need to add these conversions.
2) All overloadable functions with the same name will have the same
linkage name, which means we'll get a collision in the linker (if
not sooner). We'll need to mangle the names of these functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64336 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
9f18e4da493c56c9e5b0da2a61c9edec646bcae5 11-Feb-2009 Steve Naroff <snaroff@apple.com> Remove some non-ascii characters. Thanks Gabor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
fea2511665fcadc7f6c6d87b4f2ab9d3d5e2d308 11-Feb-2009 Steve Naroff <snaroff@apple.com> Remove some non-ascii characters. Thanks Gabor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64330 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
bd5374bac28411e380b71fccc9efc6c4f7b1870a 11-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Replace string identifier to persistent ID lookup with a hashtable. This is
actually *slightly* slower than the binary search. Since this is algorithmically
better, further performance tuning should be able to make this faster.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64326 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/PTHManager.h
7e3a004c6ed1fe87912203b9c5a113f8da89d261 11-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Replace string identifier to persistent ID lookup with a hashtable. This is
actually *slightly* slower than the binary search. Since this is algorithmically
better, further performance tuning should be able to make this faster.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64326 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/PTHManager.h
590fe48c82027cd363976db2eec0c797a052ee41 11-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6243503> [sema] @throw; accepted outside catch block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
arse/Action.h
arse/Scope.h
e21dd6ffef4585fa43cd3586ed971217d65bf56c 11-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6243503> [sema] @throw; accepted outside catch block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64318 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
arse/Action.h
arse/Scope.h
6b3a0baf1fc45cd404d99a297de38c2945d4f37e 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Finished semantic analysis of non-type template arguments, to check
for non-external names whose address becomes the template
argument. This completes C++ [temp.arg.nontype]p1.

Note that our interpretation of C++ [temp.arg.nontype]p1b3 differs
from EDG's interpretation (we're stricter, and GCC agrees with
us). They're opening a core issue about the matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
cc45cb3630b42c5245e26593e385097c220bc859 11-Feb-2009 Douglas Gregor <dgregor@apple.com> Finished semantic analysis of non-type template arguments, to check
for non-external names whose address becomes the template
argument. This completes C++ [temp.arg.nontype]p1.

Note that our interpretation of C++ [temp.arg.nontype]p1b3 differs
from EDG's interpretation (we're stricter, and GCC agrees with
us). They're opening a core issue about the matter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
0ea4e306c61cdf9896f4c943ae44241659bbc0a3 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Reverted r64307. Moved hasSameType and hasSameUnqualifiedType from
Sema to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64312 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
8e6563ba097732dc1fffcfc85f8dbbceac899a80 11-Feb-2009 Douglas Gregor <dgregor@apple.com> Reverted r64307. Moved hasSameType and hasSameUnqualifiedType from
Sema to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64312 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c347d8e05699f9d50ce23c16487c99f9a049fd41 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Allow the use of default template arguments when forming a class
template specialization (e.g., std::vector<int> would now be
well-formed, since it relies on a default argument for the Allocator
template parameter).

This is much less interesting than one might expect, since (1) we're
not actually using the default arguments for anything important, such
as naming an actual Decl, and (2) we'll often need to instantiate the
default arguments to check their well-formedness. The real fun will
come later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64310 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
62cb18dd11472965e03374d40bc27d650bc331b6 11-Feb-2009 Douglas Gregor <dgregor@apple.com> Allow the use of default template arguments when forming a class
template specialization (e.g., std::vector<int> would now be
well-formed, since it relies on a default argument for the Allocator
template parameter).

This is much less interesting than one might expect, since (1) we're
not actually using the default arguments for anything important, such
as naming an actual Decl, and (2) we'll often need to instantiate the
default arguments to check their well-formedness. The real fun will
come later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64310 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
677f401a7e4ef827e24152d8a7423644f8c17dab 11-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6206858> [sema] type check @throw statements.

Added a FIXME to handle 'rethrow' check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7151bbb55c8a437073e42f74348c3fd5f1d5b410 11-Feb-2009 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6206858> [sema] type check @throw statements.

Added a FIXME to handle 'rethrow' check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
29b3d302e726e76bf5368bd1261509191ea0bdc4 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Rename Sema::hasSameType to QualType::isSameAs
Rename Sema::hasSameUnqualifiedType to QualType::isSameIgnoringQalifiers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
26a0bdb810681e2514b9ddc2d9779ce6c9a79409 11-Feb-2009 Douglas Gregor <dgregor@apple.com> Rename Sema::hasSameType to QualType::isSameAs
Rename Sema::hasSameUnqualifiedType to QualType::isSameIgnoringQalifiers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c4a1cf66cafa2d01c566d44f1ed418c24641870e 11-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Don't emit the PTH offset of the IdentifierInfo string data as that data is
referenced by other tables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64304 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
f1de4649e917f891d24e0718d02ee904b9edbe9d 11-Feb-2009 Ted Kremenek <kremenek@apple.com> PTH: Don't emit the PTH offset of the IdentifierInfo string data as that data is
referenced by other tables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64304 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
e3c19c3cce2d8bdbbb174eff1f887e80b964a18e 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> CHAR_BIT == 8

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dedb84afce2cf2e52a6360e200c2c40822022235 11-Feb-2009 Douglas Gregor <dgregor@apple.com> CHAR_BIT == 8

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d8c8c0991a09d7d1697b44b0342a48701bfd054c 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Semantic checking for template arguments that correspond to non-type
template parameters that have reference type. Effectively, we're doing
a very limited form of reference binding here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64270 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
f684e6e793a336f52138a2609b207e6eef3c3022 11-Feb-2009 Douglas Gregor <dgregor@apple.com> Semantic checking for template arguments that correspond to non-type
template parameters that have reference type. Effectively, we're doing
a very limited form of reference binding here.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64270 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
79e5c9cb09c1a188435d60328b060b9883f631e1 11-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add type-checking and implicit conversions for template parameters of
integral or enumeration type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
6ae5e6649f5d01a1b593f4db755bfcb42e095700 11-Feb-2009 Douglas Gregor <dgregor@apple.com> Add type-checking and implicit conversions for template parameters of
integral or enumeration type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64256 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
bb4bf18c8a7941bfb7c43f5fbf6ddd897c61c19a 10-Feb-2009 Ted Kremenek <kremenek@apple.com> Bump PTH version.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64249 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
b99b0c0e292544eb1f4feeaf9c2664d12329d558 10-Feb-2009 Ted Kremenek <kremenek@apple.com> Bump PTH version.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64249 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
ec793e82537a1e7743bfa1eccf9b7b1186c8451f 10-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> GNU allows structs with flexible array members to be placed inside
arrays and other structs/unions as an extension. Downgrade our error
to a warning. Fixes PR3540.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
0bfe54fdc83b7b4e37c40e652d86d15aa89885b2 10-Feb-2009 Douglas Gregor <dgregor@apple.com> GNU allows structs with flexible array members to be placed inside
arrays and other structs/unions as an extension. Downgrade our error
to a warning. Fixes PR3540.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
c43f4fc3f18e9ca88ae6a7ea15cfabd110dc2146 10-Feb-2009 Mike Stump <mrs@apple.com> Fixup -ast-print so that:

We handle indentation of decls better.
We Indent extern "C" { } stuff better.
We print out structure contents more often.
We handle pass indentation information into the statement printer, so that
nested things come out more indented.
We print out FieldDecls.
We print out Vars.
We print out namespaces.
We indent functions better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
071e4da10b07ca5278a7ce9dcabd853e0d57e5a4 10-Feb-2009 Mike Stump <mrs@apple.com> Fixup -ast-print so that:

We handle indentation of decls better.
We Indent extern "C" { } stuff better.
We print out structure contents more often.
We handle pass indentation information into the statement printer, so that
nested things come out more indented.
We print out FieldDecls.
We print out Vars.
We print out namespaces.
We indent functions better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
fc7dad4a92de30d1b9035761391c58e9f735aa01 10-Feb-2009 Mike Stump <mrs@apple.com> Refactor FieldDecls to be ValueDecls instead of NamedDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclNodes.def
080cc35364d5bc03885ab0920528e9880f6b439d 10-Feb-2009 Mike Stump <mrs@apple.com> Refactor FieldDecls to be ValueDecls instead of NamedDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclNodes.def
9225a7e7e87fc7cb22260ae16d5f42ed82f08314 10-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implement parsing, semantic analysis and ASTs for default template
arguments. This commit covers checking and merging default template
arguments from previous declarations, but it does not cover the actual
use of default template arguments when naming class template
specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
arse/Action.h
d684b0027e16163c4bdba3e2f8bfadda7d62a0d3 10-Feb-2009 Douglas Gregor <dgregor@apple.com> Implement parsing, semantic analysis and ASTs for default template
arguments. This commit covers checking and merging default template
arguments from previous declarations, but it does not cover the actual
use of default template arguments when naming class template
specializations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
arse/Action.h
62cdc79b9449bb634771e2b70ec8831fb02ea319 10-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Semantic analysis for non-type template parameter declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
5d290d584a82bb1cbfffa1b9a9a278538970e1b9 10-Feb-2009 Douglas Gregor <dgregor@apple.com> Semantic analysis for non-type template parameter declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64223 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
2fe2456e91294adb648ba55601b326ec61a908cc 10-Feb-2009 Argiris Kirtzidis <akyrtzi@gmail.com> Bring in 'CHAR_BIT' for GCC 4.3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64196 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4004226773ac4a3070a940199be01ed6bdf1cf23 10-Feb-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Bring in 'CHAR_BIT' for GCC 4.3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64196 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
341ac795fdda52b74de7ba824b15ea51d77ae2fb 10-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Teach the type-id/expression disambiguator about different
disambiguation contexts, so that we properly parse template arguments
such as

A<int()>

as type-ids rather than as expressions. Since this can be confusing
(especially when the template parameter is a non-type template
parameter), we try to give a friendly error message.

Almost, eliminate a redundant error message (that should have been a
note) and add some ultra-basic checks for non-type template
arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
arse/Parser.h
8b642592a35167a3780074e78674e0bece87c40c 10-Feb-2009 Douglas Gregor <dgregor@apple.com> Teach the type-id/expression disambiguator about different
disambiguation contexts, so that we properly parse template arguments
such as

A<int()>

as type-ids rather than as expressions. Since this can be confusing
(especially when the template parameter is a non-type template
parameter), we try to give a friendly error message.

Almost, eliminate a redundant error message (that should have been a
note) and add some ultra-basic checks for non-type template
arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64189 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
arse/Parser.h
e8e367f393e9d1d81754d252f24f1f04600f6de6 10-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Check template template arguments against their corresponding template
template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
dd0574e76439f31c02ba54bd7708725176f9531f 10-Feb-2009 Douglas Gregor <dgregor@apple.com> Check template template arguments against their corresponding template
template parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
35d81bb3324970c340d63aa9e17c39694dfe2891 10-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Rudimentary checking of template arguments against their corresponding
template parameters when performing semantic analysis of a template-id
naming a class template specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
arse/Action.h
arse/Ownership.h
arse/Parser.h
c15cb38a4ff717097b32532fbf761c71b1376a02 10-Feb-2009 Douglas Gregor <dgregor@apple.com> Rudimentary checking of template arguments against their corresponding
template parameters when performing semantic analysis of a template-id
naming a class template specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64185 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
arse/Action.h
arse/Ownership.h
arse/Parser.h
af0d009634442c51877d20b5a961326a5d29ed05 09-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implement Sebastian's idea for simplifying our handling of the greater-than operator/delimiter. Also, clean up after ourselves following a failed parse of a template-argument-list

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64166 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f02da89d7bddc319be52605d36442518647116b4 09-Feb-2009 Douglas Gregor <dgregor@apple.com> Implement Sebastian's idea for simplifying our handling of the greater-than operator/delimiter. Also, clean up after ourselves following a failed parse of a template-argument-list

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64166 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
362abcd61aeb05a1decfedd6b10f77cfe42034ae 09-Feb-2009 Ted Kremenek <kremenek@apple.com> CallExpr now uses ASTContext's allocate to allocate/delete its array of subexpressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
668bf91d31265b6ea8c3eb854ba450857701f269 09-Feb-2009 Ted Kremenek <kremenek@apple.com> CallExpr now uses ASTContext's allocate to allocate/delete its array of subexpressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
6f37b58716e89420c13ac067fe605c3b6d5821d0 09-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate TemplateArg so that we only have a single kind of
representation for template arguments. Also simplifies the interface
for ActOnClassTemplateSpecialization and eliminates some annoying
allocations of TemplateArgs.

My attempt at smart pointers for template arguments lists is
relatively lame. We can improve it once we're sure that we have the
right representation for template arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64154 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/Type.h
arse/Action.h
arse/Ownership.h
arse/Parser.h
5908e9f25bc9a334c99c095e0b1e6a515445be2d 09-Feb-2009 Douglas Gregor <dgregor@apple.com> Eliminate TemplateArg so that we only have a single kind of
representation for template arguments. Also simplifies the interface
for ActOnClassTemplateSpecialization and eliminates some annoying
allocations of TemplateArgs.

My attempt at smart pointers for template arguments lists is
relatively lame. We can improve it once we're sure that we have the
right representation for template arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64154 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
ST/Type.h
arse/Action.h
arse/Ownership.h
arse/Parser.h
8e458f48f07276fe279a3d02e709e7ce15b2f9c3 09-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Start processing template-ids as types when the template-name refers
to a class template. For example, the template-id 'vector<int>' now
has a nice, sugary type in the type system. What we can do now:

- Parse template-ids like 'vector<int>' (where 'vector' names a
class template) and form proper types for them in the type system.
- Parse icky template-ids like 'A<5>' and 'A<(5 > 0)>' properly,
using (sadly) a bool in the parser to tell it whether '>' should
be treated as an operator or not.

This is a baby-step, with major problems and limitations:
- There are currently two ways that we handle template arguments
(whether they are types or expressions). These will be merged, and,
most likely, TemplateArg will disappear.
- We don't have any notion of the declaration of class template
specializations or of template instantiations, so all template-ids
are fancy names for 'int' :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Type.h
arse/Action.h
arse/Parser.h
55f6b14230c94272efbbcdd89a92224c8db9f225 09-Feb-2009 Douglas Gregor <dgregor@apple.com> Start processing template-ids as types when the template-name refers
to a class template. For example, the template-id 'vector<int>' now
has a nice, sugary type in the type system. What we can do now:

- Parse template-ids like 'vector<int>' (where 'vector' names a
class template) and form proper types for them in the type system.
- Parse icky template-ids like 'A<5>' and 'A<(5 > 0)>' properly,
using (sadly) a bool in the parser to tell it whether '>' should
be treated as an operator or not.

This is a baby-step, with major problems and limitations:
- There are currently two ways that we handle template arguments
(whether they are types or expressions). These will be merged, and,
most likely, TemplateArg will disappear.
- We don't have any notion of the declaration of class template
specializations or of template instantiations, so all template-ids
are fancy names for 'int' :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclTemplate.h
ST/Type.h
arse/Action.h
arse/Parser.h
0c9860319952458cc02ef5cbba3dd0b5be55c9a3 09-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement Declarator::getSourceRange().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64151 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
ab197baec16bacade82325fb274cf6b992ac5d8a 09-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement Declarator::getSourceRange().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64151 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
f1a6712a280fcb40f12117717f58a4ded5fc8649 09-Feb-2009 Ted Kremenek <kremenek@apple.com> Allocate the subexpression array for OberloadExpr from ASTContext's allocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fb7413f12636cefa9ebec9abf95804f82c305b11 09-Feb-2009 Ted Kremenek <kremenek@apple.com> Allocate the subexpression array for OberloadExpr from ASTContext's allocator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64145 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
436d1a1dbda901be6e234e88d29a423ab39cbe2b 09-Feb-2009 Ted Kremenek <kremenek@apple.com> Refine PostStmtCustom to reference a tagged data pair with the tag to indicate the checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
59753441b6391a9843eff287f0adb2614153b7c8 09-Feb-2009 Ted Kremenek <kremenek@apple.com> Refine PostStmtCustom to reference a tagged data pair with the tag to indicate the checker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
accd85e0c377484e17403d764eb58f6c3cc00493 09-Feb-2009 Ted Kremenek <kremenek@apple.com> Added a new ProgramPoint 'PostStmtCustom' to enable checker-specific ProgramPoints.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64143 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
f4be8ee748831bc23e35b542e6c1bb6d1eb49baa 09-Feb-2009 Ted Kremenek <kremenek@apple.com> Added a new ProgramPoint 'PostStmtCustom' to enable checker-specific ProgramPoints.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64143 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
a60c62ed9466364782369cb165f9392651a43a64 09-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Make Sema::getTypeName return the opaque pointer of a QualType rather
than a Decl, which gives us some more flexibility to express the
results with the type system. There are no clients using this
flexibility yet, but it's meant to be able to describe qualified names
as written in the source (e.g., "foo::type") or template-ids that name
a class template specialization (e.g., "std::vector<INT>").

DeclSpec's TST_typedef has become TST_typename, to reflect its use to
describe types found by name (that may or may not be typedefs). The
type representation of a DeclSpec with TST_typename is an opaque
QualType pointer. All users of TST_typedef, both direct and indirect,
have been updated for these changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/DeclSpec.h
1a51b4a11b7db25cac2134249711ecaaf9d1c0a8 09-Feb-2009 Douglas Gregor <dgregor@apple.com> Make Sema::getTypeName return the opaque pointer of a QualType rather
than a Decl, which gives us some more flexibility to express the
results with the type system. There are no clients using this
flexibility yet, but it's meant to be able to describe qualified names
as written in the source (e.g., "foo::type") or template-ids that name
a class template specialization (e.g., "std::vector<INT>").

DeclSpec's TST_typedef has become TST_typename, to reflect its use to
describe types found by name (that may or may not be typedefs). The
type representation of a DeclSpec with TST_typename is an opaque
QualType pointer. All users of TST_typedef, both direct and indirect,
have been updated for these changes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/DeclSpec.h
7fc6184d3eec638fdf75938a54a1937212a5f5af 08-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add public placement-delete operators. These are automatically used if the allocation throws

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64056 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e2dedf8f61b8f306f704781456b482eb61871e8e 08-Feb-2009 Douglas Gregor <dgregor@apple.com> Add public placement-delete operators. These are automatically used if the allocation throws

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64056 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9b3264d1cbb3bf7bebe90afe9cee8946788ad9ae 08-Feb-2009 Anders Carlsson <andersca@mac.com> Improve Sema of the cleanup attribute somewhat.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
89941c1c68d8e4eec3c8ea8ee68e34d9e3c7b083 08-Feb-2009 Anders Carlsson <andersca@mac.com> Improve Sema of the cleanup attribute somewhat.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64047 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
a390a1dd4f43d58e2143f85ed370808a521871c7 07-Feb-2009 Ted Kremenek <kremenek@apple.com> Commit header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64042 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
7a9bb52171f962d51ab13c1e012d2236feb9558d 07-Feb-2009 Ted Kremenek <kremenek@apple.com> Commit header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64042 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
0c97e0460148daf132d6623af5b6ff1bc41db649 07-Feb-2009 Ted Kremenek <kremenek@apple.com> Overhaul of Stmt allocation:
- Made allocation of Stmt objects using vanilla new/delete a *compiler
error* by making this new/delete "protected" within class Stmt.
- Now the only way to allocate Stmt objects is by using the new
operator that takes ASTContext& as an argument. This ensures that
all Stmt nodes are allocated from the same (pool) allocator.
- Naturally, these two changes required that *all* creation sites for
AST nodes use new (ASTContext&). This is a large patch, but the
majority of the changes are just this mechanical adjustment.
- The above changes also mean that AST nodes can no longer be
deallocated using 'delete'. Instead, one most do
StmtObject->Destroy(ASTContext&) or do
ASTContextObject.Deallocate(StmtObject) (the latter not running the
'Destroy' method).

Along the way I also...
- Made CompoundStmt allocate its array of Stmt* using the allocator in
ASTContext (previously it used std::vector). There are a whole
bunch of other Stmt classes that need to be similarly changed to
ensure that all memory allocated for ASTs comes from the allocator
in ASTContext.
- Added a new smart pointer ExprOwningPtr to Sema.h. This replaces
the uses of llvm::OwningPtr within Sema, as llvm::OwningPtr used
'delete' to free memory instead of a Stmt's 'Destroy' method.

Big thanks to Doug Gregor for helping with the acrobatics of making
'new/delete' private and the new smart pointer ExprOwningPtr!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63997 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
8189cde56b4f6f938cd65f53c932fe1860d0204c 07-Feb-2009 Ted Kremenek <kremenek@apple.com> Overhaul of Stmt allocation:
- Made allocation of Stmt objects using vanilla new/delete a *compiler
error* by making this new/delete "protected" within class Stmt.
- Now the only way to allocate Stmt objects is by using the new
operator that takes ASTContext& as an argument. This ensures that
all Stmt nodes are allocated from the same (pool) allocator.
- Naturally, these two changes required that *all* creation sites for
AST nodes use new (ASTContext&). This is a large patch, but the
majority of the changes are just this mechanical adjustment.
- The above changes also mean that AST nodes can no longer be
deallocated using 'delete'. Instead, one most do
StmtObject->Destroy(ASTContext&) or do
ASTContextObject.Deallocate(StmtObject) (the latter not running the
'Destroy' method).

Along the way I also...
- Made CompoundStmt allocate its array of Stmt* using the allocator in
ASTContext (previously it used std::vector). There are a whole
bunch of other Stmt classes that need to be similarly changed to
ensure that all memory allocated for ASTs comes from the allocator
in ASTContext.
- Added a new smart pointer ExprOwningPtr to Sema.h. This replaces
the uses of llvm::OwningPtr within Sema, as llvm::OwningPtr used
'delete' to free memory instead of a Stmt's 'Destroy' method.

Big thanks to Doug Gregor for helping with the acrobatics of making
'new/delete' private and the new smart pointer ExprOwningPtr!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63997 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
34e58bdd13e516bf1df52fec1d3cdf05d2dca766 07-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add negative test cases and fix diagnostics for member pointer dereferencing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
7878ffde0c48a33a8fd3819be1b797d52f7b3849 07-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add negative test cases and fix diagnostics for member pointer dereferencing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
95216a67cc6db599f50a8617f882396396ab07c9 07-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement dereferencing of pointers-to-member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
asic/DiagnosticSemaKinds.def
224605064a4ef87d1c3d35ad1cb363f8b534012b 07-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement dereferencing of pointers-to-member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
asic/DiagnosticSemaKinds.def
d406b034f9f50836d756e3f977845fdb8beaebee 06-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Semantic checking for class template declarations and
redeclarations. For example, checks that a class template
redeclaration has the same template parameters as previous
declarations.

Detangled class-template checking from ActOnTag, whose logic was
getting rather convoluted because it tried to handle C, C++, and C++
template semantics in one shot.

Made some inroads toward eliminating extraneous "declaration does not
declare anything" errors by adding an "error" type specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
arse/Action.h
arse/DeclSpec.h
ddc29e116db3c3f4144355e67a0137b38b6bb6d1 06-Feb-2009 Douglas Gregor <dgregor@apple.com> Semantic checking for class template declarations and
redeclarations. For example, checks that a class template
redeclaration has the same template parameters as previous
declarations.

Detangled class-template checking from ActOnTag, whose logic was
getting rather convoluted because it tried to handle C, C++, and C++
template semantics in one shot.

Made some inroads toward eliminating extraneous "declaration does not
declare anything" errors by adding an "error" type specifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63973 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclTemplate.h
asic/DiagnosticSemaKinds.def
arse/Action.h
arse/DeclSpec.h
76650bfc9c9b7008a746fc78fb38d459608ef35e 06-Feb-2009 Ted Kremenek <kremenek@apple.com> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4398a78095cd05a3be702fbab25bfe324a5d7946 06-Feb-2009 Ted Kremenek <kremenek@apple.com> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4f530a9d984c94de4fa6ccf330885f6d05b564a2 06-Feb-2009 Ted Kremenek <kremenek@apple.com> Move StringLiteral to allocate its internal string data using the allocator in
ASTContext. This required changing all clients to pass in the ASTContext& to the
constructor of StringLiteral. I also changed all allocations of StringLiteral to
use new(ASTContext&).

Along the way, I updated a bunch of new()'s in StmtSerialization.cpp to use the
allocator from ASTContext& (not complete).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6e94ef5696cfb005d3fc7bbac8dcf7690b64f0a5 06-Feb-2009 Ted Kremenek <kremenek@apple.com> Move StringLiteral to allocate its internal string data using the allocator in
ASTContext. This required changing all clients to pass in the ASTContext& to the
constructor of StringLiteral. I also changed all allocations of StringLiteral to
use new(ASTContext&).

Along the way, I updated a bunch of new()'s in StmtSerialization.cpp to use the
allocator from ASTContext& (not complete).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63958 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c2f979be169d0691d0446e76d4d364b4b1551e60 06-Feb-2009 Ted Kremenek <kremenek@apple.com> Added special versions of new[]/delete[] to complement the new/delete which uses ASTContext's allocator. Updated some comments along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63949 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
42542c6a4b3c60f63820e6177a8938443831492c 06-Feb-2009 Ted Kremenek <kremenek@apple.com> Added special versions of new[]/delete[] to complement the new/delete which uses ASTContext's allocator. Updated some comments along the way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63949 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
46cfe45a10c6d35c1a502fb7949dac4874c09562 06-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose attempts to define a namespace member out-of-line when no
matching member exists. Thanks to Piotr Rak for reporting the problem!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
4ce205f94c984ddc4776ba0c3de7e398d251653a 06-Feb-2009 Douglas Gregor <dgregor@apple.com> Diagnose attempts to define a namespace member out-of-line when no
matching member exists. Thanks to Piotr Rak for reporting the problem!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63939 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
133db8ac89444b20c1fa2dc42dad6f3e188d5903 06-Feb-2009 Chris Lattner <sabre@nondot.org> Add an implementation of -dM that follows GCC closely enough to permit
diffing the output of:
clang -dM -o - -E -x c foo.c | sort


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63926 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
f73903a1ded46748e1dfda151f5d037b7b3d31f9 06-Feb-2009 Chris Lattner <sabre@nondot.org> Add an implementation of -dM that follows GCC closely enough to permit
diffing the output of:
clang -dM -o - -E -x c foo.c | sort


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63926 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
51fb422de9a76c85e90d7f0e7ba6176aac73da5e 06-Feb-2009 Chris Lattner <sabre@nondot.org> add interface for walking macro table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63925 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
09b5c1d08a33ecf5d9c61b922fbe679867336684 06-Feb-2009 Chris Lattner <sabre@nondot.org> add interface for walking macro table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63925 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
534234c87a201b20f496a37855b30510a5f5595d 06-Feb-2009 Chris Lattner <sabre@nondot.org> simplify and refactor a bunch of type definition code in Preprocessor
predefines buffer initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
2b5abf515f9696912452f431c7738691cf97f4f1 06-Feb-2009 Chris Lattner <sabre@nondot.org> simplify and refactor a bunch of type definition code in Preprocessor
predefines buffer initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
aab419ad381794352f65a94fe054b0cf40438617 06-Feb-2009 Chris Lattner <sabre@nondot.org> don't emit any diagnostics after a fatal one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
15221422eda7bac679e38b07512feda49715ef66 06-Feb-2009 Chris Lattner <sabre@nondot.org> don't emit any diagnostics after a fatal one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
a491877807202cfb1812f6dcdbb7b992c41ca634 06-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Improve the representation of template type parameters. We now
canonicalize by template parameter depth, index, and name, and the
unnamed version of a template parameter serves as the canonical.

TemplateTypeParmDecl no longer needs to inherit from
TemplateParmPosition, since depth and index information is present
within the type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
fab9d67cebb87be968e7ae31a3b549a5279b5d51 06-Feb-2009 Douglas Gregor <dgregor@apple.com> Improve the representation of template type parameters. We now
canonicalize by template parameter depth, index, and name, and the
unnamed version of a template parameter serves as the canonical.

TemplateTypeParmDecl no longer needs to inherit from
TemplateParmPosition, since depth and index information is present
within the type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63899 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclTemplate.h
ST/Type.h
195f0908bfeaaeb52a38dcf141ed442e7087e904 05-Feb-2009 Chris Lattner <sabre@nondot.org> allow mapping errors to fatal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
7fc24e2d47e1cdf03e655ed212d282635d755591 05-Feb-2009 Chris Lattner <sabre@nondot.org> allow mapping errors to fatal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63896 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6d6f11ffb540320e1d04b1ef745aaee01404a8c5 05-Feb-2009 Chris Lattner <sabre@nondot.org> add support to the diagnostics machinery for mapping warnings and
errors to 'fatal' error severity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
da0cbc1ad4a553c4de111c1181ec7b42c5ddefce 05-Feb-2009 Chris Lattner <sabre@nondot.org> add support to the diagnostics machinery for mapping warnings and
errors to 'fatal' error severity.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63894 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b96b92d2b8965ff7078ad9a2823d27f1411fb559 05-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Improvements and fixes for name lookup with using directives, from Piotr Rak!

Also, put Objective-C protocols into their own identifier
namespace. Otherwise, we find protocols when we don't want to in C++
(but not in C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
7dda67d8decef1b3621a151488c4b83bd8372d6a 05-Feb-2009 Douglas Gregor <dgregor@apple.com> Improvements and fixes for name lookup with using directives, from Piotr Rak!

Also, put Objective-C protocols into their own identifier
namespace. Otherwise, we find protocols when we don't want to in C++
(but not in C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63877 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
81db668b90f7af40781ed60aaca80f2c5ade4dbf 05-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Put the invalid flag of OwningResult into the Action pointer.
This shrinks OwningResult by one pointer. Since it is no longer larger than OwningPtr, merge the two.
This leads to simpler client code and speeds up my benchmark by 2.7%.
For some reason, this exposes a previously hidden bug, causing a regression in SemaCXX/condition.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63867 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
76ad2e85575722e8a38a2bd4648ab4304d9fcd24 05-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Put the invalid flag of OwningResult into the Action pointer.
This shrinks OwningResult by one pointer. Since it is no longer larger than OwningPtr, merge the two.
This leads to simpler client code and speeds up my benchmark by 2.7%.
For some reason, this exposes a previously hidden bug, causing a regression in SemaCXX/condition.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63867 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
1fb51a06b101dfd896688e1fd7cbccd6ad9e17d7 05-Feb-2009 Chris Lattner <sabre@nondot.org> privatize some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63847 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3fa8f7491a6a6c1445768ea23ec85d3554c3ba98 05-Feb-2009 Chris Lattner <sabre@nondot.org> privatize some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63847 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
93b8066f61fe40f4604d2b1a443300fb10f04e4e 05-Feb-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make SymbolicRegion subclass TypedRegion, for symbols usually have types, so
do the symblic regions associated with them and we need them to be typed.

Current SymbolicRegion::getRValueType() method is very restricting. It may be
modified when we are more clear about what could be the types of symblic
regions.

BasicConstraintManager::Assume() is changed due to that now SymblicRegion is a
subclass of SubRegion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63844 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
026c66395b88a09437319139a43b090093f7e1dd 05-Feb-2009 Zhongxing Xu <xuzhongxing@gmail.com> Make SymbolicRegion subclass TypedRegion, for symbols usually have types, so
do the symblic regions associated with them and we need them to be typed.

Current SymbolicRegion::getRValueType() method is very restricting. It may be
modified when we are more clear about what could be the types of symblic
regions.

BasicConstraintManager::Assume() is changed due to that now SymblicRegion is a
subclass of SubRegion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63844 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
bf6babf68cb2dab554b035442b3a398ff410176b 05-Feb-2009 Ted Kremenek <kremenek@apple.com> Overhaul BugReporter interface and implementation. The new interface cleans up
the ownership of BugTypes and BugReports. Now BugReports are owned by BugTypes,
and BugTypes are owned by the BugReporter object.

The major functionality change in this patch is that reports are not immediately
emitted by a call to BugReporter::EmitWarning (now called EmitReport), but
instead of queued up in report "equivalence classes". When
BugReporter::FlushReports() is called, it emits one diagnostic per report
equivalence class. This provides a nice cleanup with the caching of reports as
well as enables the BugReporter engine to select the "best" path for reporting a
path-sensitive bug based on all the locations in the ExplodedGraph that the same
bug could occur.

Along with this patch, Leaks are now coalesced into a common equivalence class
by their allocation site, and the "summary" diagnostic for leaks now reports the
allocation site as the location of the bug (this may later be augmented to also
provide an example location where the leak occurs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63796 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
cf118d41f7930a18dce97416ef7834a62642f587 05-Feb-2009 Ted Kremenek <kremenek@apple.com> Overhaul BugReporter interface and implementation. The new interface cleans up
the ownership of BugTypes and BugReports. Now BugReports are owned by BugTypes,
and BugTypes are owned by the BugReporter object.

The major functionality change in this patch is that reports are not immediately
emitted by a call to BugReporter::EmitWarning (now called EmitReport), but
instead of queued up in report "equivalence classes". When
BugReporter::FlushReports() is called, it emits one diagnostic per report
equivalence class. This provides a nice cleanup with the caching of reports as
well as enables the BugReporter engine to select the "best" path for reporting a
path-sensitive bug based on all the locations in the ExplodedGraph that the same
bug could occur.

Along with this patch, Leaks are now coalesced into a common equivalence class
by their allocation site, and the "summary" diagnostic for leaks now reports the
allocation site as the location of the bug (this may later be augmented to also
provide an example location where the leak occurs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63796 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
be69b166be4822c1477e60a0529ab39846ee152e 04-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Implement semantic analysis for the GNU flexible array initialization
extension. The interaction with designated initializers is a
bit... interesting... but we follow GNU's lead and don't permit too
much crazy code in this area.

Also, make the "excess initializers" error message a bit more
informative.

Addresses PR2561: http://llvm.org/bugs/show_bug.cgi?id=2561


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
eeb15d499f032bb89773ddaca2d17475122a37bb 04-Feb-2009 Douglas Gregor <dgregor@apple.com> Implement semantic analysis for the GNU flexible array initialization
extension. The interaction with designated initializers is a
bit... interesting... but we follow GNU's lead and don't permit too
much crazy code in this area.

Also, make the "excess initializers" error message a bit more
informative.

Addresses PR2561: http://llvm.org/bugs/show_bug.cgi?id=2561


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63785 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
c1fddffe2f78fc59d6d872ed14c50fba8110c0c0 04-Feb-2009 Mike Stump <mrs@apple.com> Add support for blocks with explicit return types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63784 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
98eb8a7a702b95183ed015706b1f1c66f5cb27a4 04-Feb-2009 Mike Stump <mrs@apple.com> Add support for blocks with explicit return types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63784 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
9bae865d5640b2b3c2e73126433e1aed27aa2965 04-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add -femit-all-decls codegen option.
- Emits all declarations, even unused (static) ones.
- Useful when doing minimization of codegen problems (otherwise
problems localized to a static function aren't minimized well).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63776 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
d604c40e933c445ff33ac83d62cc6b1adcf7014c 04-Feb-2009 Daniel Dunbar <daniel@zuster.org> Add -femit-all-decls codegen option.
- Emits all declarations, even unused (static) ones.
- Useful when doing minimization of codegen problems (otherwise
problems localized to a static function aren't minimized well).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63776 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
f2dbdca4da38b43c06606f81bd6f5f1d384218a7 04-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Improve documentation for Sema::getTypeName. Also, it's return type is
DeclTy*, not TypeTy*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63756 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d6efafa5144a3e9942d1b09a246b118b1ba77a48 04-Feb-2009 Douglas Gregor <dgregor@apple.com> Improve documentation for Sema::getTypeName. Also, it's return type is
DeclTy*, not TypeTy*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63756 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
279272e63b321f89c8fa0bb198acd3a834459aeb 04-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Basic representation of C++ class templates, from Andrew Sutton.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63750 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclTemplate.h
ST/Type.h
arse/Action.h
aaba5e346dffdbad5d1c42765a89e4a7afb0da67 04-Feb-2009 Douglas Gregor <dgregor@apple.com> Basic representation of C++ class templates, from Andrew Sutton.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63750 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclTemplate.h
ST/Type.h
arse/Action.h
09be81b04e4e5f8c4c57f952fb6d82dcdbb56b85 04-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Some name-lookup-related fixes, from Piotr Rak!

- Changes Lookup*Name functions to return NamedDecls, instead of
Decls. Unfortunately my recent statement that it will simplify lot of
code, was not quite right, but it simplifies some...
- Makes MergeLookupResult SmallPtrSet instead of vector, following
Douglas suggestions.
- Adds %qN format for printing qualified names to Diagnostic.
- Avoids searching for using-directives in Scopes, which are not
DeclScope, during unqualified name lookup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Diagnostic.h
asic/DiagnosticSemaKinds.def
47b9a1ca55e61e37f5a368740e29de190345acc6 04-Feb-2009 Douglas Gregor <dgregor@apple.com> Some name-lookup-related fixes, from Piotr Rak!

- Changes Lookup*Name functions to return NamedDecls, instead of
Decls. Unfortunately my recent statement that it will simplify lot of
code, was not quite right, but it simplifies some...
- Makes MergeLookupResult SmallPtrSet instead of vector, following
Douglas suggestions.
- Adds %qN format for printing qualified names to Diagnostic.
- Avoids searching for using-directives in Scopes, which are not
DeclScope, during unqualified name lookup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63739 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/Diagnostic.h
asic/DiagnosticSemaKinds.def
1075a169d1dab0e6f5bed69440efec387d58af51 04-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Diagnose ambiguities in getTypeName. Fixes http://llvm.org/bugs/show_bug.cgi?id=3475

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63737 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
b696ea3a0693798daeafd896d77f0b8f1fec3cc5 04-Feb-2009 Douglas Gregor <dgregor@apple.com> Diagnose ambiguities in getTypeName. Fixes http://llvm.org/bugs/show_bug.cgi?id=3475

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63737 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
4646f9c5bcd9e45228412daa99c9fcee58db9676 04-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Fix our semantic analysis of

unqualified-id '('

in C++. The unqualified-id might not refer to any declaration in our
current scope, but declarations by that name might be found via
argument-dependent lookup. We now do so properly.

As part of this change, CXXDependentNameExpr, which was previously
designed to express the unqualified-id in the above constructor within
templates, has become UnresolvedFunctionNameExpr, which does
effectively the same thing but will work for both templates and
non-templates.

Additionally, we cope with all unqualified-ids, since ADL also applies
in cases like

operator+(x, y)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
17330019f05966762bc952840ef1926b9becb145 04-Feb-2009 Douglas Gregor <dgregor@apple.com> Fix our semantic analysis of

unqualified-id '('

in C++. The unqualified-id might not refer to any declaration in our
current scope, but declarations by that name might be found via
argument-dependent lookup. We now do so properly.

As part of this change, CXXDependentNameExpr, which was previously
designed to express the unqualified-id in the above constructor within
templates, has become UnresolvedFunctionNameExpr, which does
effectively the same thing but will work for both templates and
non-templates.

Additionally, we cope with all unqualified-ids, since ADL also applies
in cases like

operator+(x, y)




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63733 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
778ae2186a65d7dfd0defd8e2740dd03e32b6b3e 04-Feb-2009 Chris Lattner <sabre@nondot.org> Implement handling of file entry/exit notifications from GNU
line markers, including maintenance of the virtual include stack.

For something like this:

# 42 "bar.c" 1
# 142 "bar2.c" 1

#warning zappa
# 92 "bar.c" 2
#warning gonzo
# 102 "foo.c" 2
#warning bonkta


we now produce these three warnings:

#1:
In file included from foo.c:3:
In file included from bar.c:42:
bar2.c:143:2: warning: #warning zappa
#warning zappa
^

#2:
In file included from foo.c:3:
bar.c:92:2: warning: #warning gonzo
#warning gonzo
^

#3:
foo.c:102:2: warning: #warning bonkta
#warning bonkta
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63722 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.def
137b6a6149c53dbbcb8fba98e524d9ad0f3c8736 04-Feb-2009 Chris Lattner <sabre@nondot.org> Implement handling of file entry/exit notifications from GNU
line markers, including maintenance of the virtual include stack.

For something like this:

# 42 "bar.c" 1
# 142 "bar2.c" 1

#warning zappa
# 92 "bar.c" 2
#warning gonzo
# 102 "foo.c" 2
#warning bonkta


we now produce these three warnings:

#1:
In file included from foo.c:3:
In file included from bar.c:42:
bar2.c:143:2: warning: #warning zappa
#warning zappa
^

#2:
In file included from foo.c:3:
bar.c:92:2: warning: #warning gonzo
#warning gonzo
^

#3:
foo.c:102:2: warning: #warning bonkta
#warning bonkta
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63722 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticLexKinds.def
d0ff602b3059f07f9fea574482b81952884eec44 04-Feb-2009 Chris Lattner <sabre@nondot.org> make getFileCharacteristic linetable aware. line markers that
play around with the 'is system header' bit now function correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63720 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
6b3066780bda02e3117d71a18ca2f430ed1454af 04-Feb-2009 Chris Lattner <sabre@nondot.org> make getFileCharacteristic linetable aware. line markers that
play around with the 'is system header' bit now function correctly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63720 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
7bf7851dcecf9384ac67b082617ad2c49042ee4a 04-Feb-2009 Chris Lattner <sabre@nondot.org> propagate linemarker flags down into the the line table, currently
ignoring include stack push/pop info though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63719 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9d79ebac47ffde6a1cb312f4c09b66b1b9a397fb 04-Feb-2009 Chris Lattner <sabre@nondot.org> propagate linemarker flags down into the the line table, currently
ignoring include stack push/pop info though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63719 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a8884e854e9d7f9609094e4775e0baa5f2991ece 04-Feb-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63715 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
97c4d4759da403bccaaccdadb513164c84c85bef 04-Feb-2009 Zhongxing Xu <xuzhongxing@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63715 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
94270f3471fe86735f9eef254b5e1efc7958cfc7 04-Feb-2009 Chris Lattner <sabre@nondot.org> simplify.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
a3824c6348794788094f8afa44dc1d2cf67ba440 04-Feb-2009 Chris Lattner <sabre@nondot.org> simplify.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
2d89c564719b2f812cafbe0d4a39d914001ff21e 04-Feb-2009 Chris Lattner <sabre@nondot.org> lower the interface to getLineNumber like we did for
getColumnNumber. This fixes a FIXME in
SourceManager::getPresumedLoc because we now just decompose
the sloc once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
30fc933e5fbbb5f0ea60c47976d435254e378536 04-Feb-2009 Chris Lattner <sabre@nondot.org> lower the interface to getLineNumber like we did for
getColumnNumber. This fixes a FIXME in
SourceManager::getPresumedLoc because we now just decompose
the sloc once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63701 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
e79fc8576f1d0937a6343ed438be9ed0cb0a88d6 04-Feb-2009 Chris Lattner <sabre@nondot.org> make SM::getColumnNumber take a predecomposed FileID/offset, which
makes it clear to clients that they have to pick an instantiation
or spelling location before calling it and allows optimization based
on that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63698 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
7da5aea7669e6db3e593162b8a123aef06a04d07 04-Feb-2009 Chris Lattner <sabre@nondot.org> make SM::getColumnNumber take a predecomposed FileID/offset, which
makes it clear to clients that they have to pick an instantiation
or spelling location before calling it and allows optimization based
on that.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63698 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
6256b2bb3fd39020fee719410b295962c8397e4e 03-Feb-2009 Chris Lattner <sabre@nondot.org> more plumbing for #line propagation. Use happy bit #3
out of FileInfo :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ac50e3427cb9eb3dc9f13f29a78f00ef3122433d 03-Feb-2009 Chris Lattner <sabre@nondot.org> more plumbing for #line propagation. Use happy bit #3
out of FileInfo :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b06739c6ba693c7f71adf420e4152a6e2183e48d 03-Feb-2009 Chris Lattner <sabre@nondot.org> stub out basic #line handling calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
4c4ea17d7f991516c37a871dfa4bbe5723fa85f0 03-Feb-2009 Chris Lattner <sabre@nondot.org> stub out basic #line handling calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0c9da2196c86e33dba390b4f52280e2a0803a1e8 03-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Allow taking the address of data members, resulting in a member pointer.
Pointers to functions don't work yet, and pointers to overloaded functions even less. Also, far too much illegal code is accepted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63655 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
ebc07d57be9e0722b4b9c66625e1fca43dcc2ee0 03-Feb-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Allow taking the address of data members, resulting in a member pointer.
Pointers to functions don't work yet, and pointers to overloaded functions even less. Also, far too much illegal code is accepted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63655 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
7a7be65a7801addae8205fd68323cecd70df1635 03-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Semantic analysis, ASTs, and unqualified name lookup support for C++
using directives, from Piotr Rak!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclarationName.h
asic/DiagnosticSemaKinds.def
asic/IdentifierTable.h
arse/Scope.h
2a3009a432bdcec59e6383d7b2b17494d6f91649 03-Feb-2009 Douglas Gregor <dgregor@apple.com> Semantic analysis, ASTs, and unqualified name lookup support for C++
using directives, from Piotr Rak!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclNodes.def
ST/DeclarationName.h
asic/DiagnosticSemaKinds.def
asic/IdentifierTable.h
arse/Scope.h
917d7c62453ae45d1a7913116a08fbdc581a39bd 03-Feb-2009 Chris Lattner <sabre@nondot.org> reclaim my precious bit in FileInfo by ensuring that ContentCache objects
are 8-byte aligned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
00282d6e1194655a2e89f940bd6fa8484b52e666 03-Feb-2009 Chris Lattner <sabre@nondot.org> reclaim my precious bit in FileInfo by ensuring that ContentCache objects
are 8-byte aligned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8dedb840b73e0c969d2cb2e2095be9795850ef39 03-Feb-2009 Chris Lattner <sabre@nondot.org> switch SourceManager from using an std::map and std::list of
ContentCache objects to using a densemap and list, and allocating
the ContentCache objects from a bump pointer. This does not speed
up or slow down things substantially, but gives us control over
their alignment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63628 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0d0bf8cf58b35302312cc155287fde3e81eb25a7 03-Feb-2009 Chris Lattner <sabre@nondot.org> switch SourceManager from using an std::map and std::list of
ContentCache objects to using a densemap and list, and allocating
the ContentCache objects from a bump pointer. This does not speed
up or slow down things substantially, but gives us control over
their alignment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63628 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
46e93a7ada4f101131c748f908b1e13778b4e425 03-Feb-2009 Chris Lattner <sabre@nondot.org> add #include to make more self-contained.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63624 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1100258c19dd8967ba078c0bc81fc06cea9d033f 03-Feb-2009 Chris Lattner <sabre@nondot.org> add #include to make more self-contained.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63624 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
df83754cd131bebfddc9b24d3e369b68d0a55302 03-Feb-2009 Chris Lattner <sabre@nondot.org> Content Cache only needs to be 4-byte aligned. Since it is stored in
an std::set, we can't make a strong guarantee about what its alignment
will be. Since I don't need the 3rd bit anyway yet, just change the
assertion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
90f255356e4abc03287d35d323a1af0127dfcfd2 03-Feb-2009 Chris Lattner <sabre@nondot.org> Content Cache only needs to be 4-byte aligned. Since it is stored in
an std::set, we can't make a strong guarantee about what its alignment
will be. Since I don't need the 3rd bit anyway yet, just change the
assertion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63588 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
469fc9a3a0e2278cec1d6ad67f690498ea189475 03-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Add a macro-based enumeration of all of the Decl nodes (like we do
with Stmt/Expr nodes), and convert some of the more mundane
switch-on-all-decl-kinds uses over to use this new file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclNodes.def
nalysis/Visitors/CFGRecStmtDeclVisitor.h
64650af7cc4352c6c67b9bd1bf8ef3ce7471b910 03-Feb-2009 Douglas Gregor <dgregor@apple.com> Add a macro-based enumeration of all of the Decl nodes (like we do
with Stmt/Expr nodes), and convert some of the more mundane
switch-on-all-decl-kinds uses over to use this new file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclNodes.def
nalysis/Visitors/CFGRecStmtDeclVisitor.h
67f2cef5687a340f953ef93f53ab242c3407d1fe 02-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Split specific_decl_iterator, which had a run-time field for
determining what decls are acceptable, into specific_decl_iterator
(in which all decls matching the SpecificDecl type requirements are
acceptable) and filtered_decl_iterator (which also does a run-time
check via a member pointer non-type template parameter). This saves
some space in the iterators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
669c9a28fa4be35e6b6322aa7f2f3b2968189b80 02-Feb-2009 Douglas Gregor <dgregor@apple.com> Split specific_decl_iterator, which had a run-time field for
determining what decls are acceptable, into specific_decl_iterator
(in which all decls matching the SpecificDecl type requirements are
acceptable) and filtered_decl_iterator (which also does a run-time
check via a member pointer non-type template parameter). This saves
some space in the iterators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
d08a62ce5e76bccf4441dee48fa24bd02f25793e 02-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Slim down the specific_decl_iterator, since NULL denotes the end of the range. Good eyes, Chris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
d6f0b4e97e681ea5d165125960f34b3b8c19e1dc 02-Feb-2009 Douglas Gregor <dgregor@apple.com> Slim down the specific_decl_iterator, since NULL denotes the end of the range. Good eyes, Chris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
538a4c24fd066b19d85fe24add5fb9bdbbe971ab 02-Feb-2009 Douglas Gregor <doug.gregor@gmail.com> Check value-initializations that occur when an initializer list
provides too few elements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
87fd703e097c27d63479cb83b687d4000a22bbb1 02-Feb-2009 Douglas Gregor <dgregor@apple.com> Check value-initializations that occur when an initializer list
provides too few elements.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
677e38ffb695d3963143a4ced265248bcc2332dd 31-Jan-2009 Anders Carlsson <andersca@mac.com> Add sema support for the cleanup attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
f6e35d0b9f1e9f1b4c5d3ef924415fa5e7c89849 31-Jan-2009 Anders Carlsson <andersca@mac.com> Add sema support for the cleanup attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticSemaKinds.def
arse/AttributeList.h
355ed05df6da9484f1f9b1148b6541230f737169 31-Jan-2009 Anders Carlsson <andersca@mac.com> Turn on -flax-vector-conversions by default, issue a warning whenever one is done. Add a -fnolax-vector-conversions option. Fixes PR2862.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63447 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/LangOptions.h
b0f90ccbc1079bb054071b836aa6dd265f33f3a2 31-Jan-2009 Anders Carlsson <andersca@mac.com> Turn on -flax-vector-conversions by default, issue a warning whenever one is done. Add a -fnolax-vector-conversions option. Fixes PR2862.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63447 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
asic/LangOptions.h
09f078ce215f423c1b8c794fe83c13e3b5370a83 30-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Upgrade the "excess elements in array initializer" warning to an
error, since both C99 and C++ consider it an error. For reference, GCC
makes this a warning while G++ makes it an error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
b574e5630d66629ccc8f2432e60b59ae42f1f363 30-Jan-2009 Douglas Gregor <dgregor@apple.com> Upgrade the "excess elements in array initializer" warning to an
error, since both C99 and C++ consider it an error. For reference, GCC
makes this a warning while G++ makes it an error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63435 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
d45210dac6500ab9a0d9ee7edc423a183bf7d13a 30-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Implement and test aggregate initialization in C++. Major changes:

- Support initialization of reference members; complain if any
reference members are left uninitialized.
- Use C++ copy-initialization for initializing each element (falls
back to constraint checking in C)
- Make sure we diagnose when one tries to provide an initializer
list for a non-aggregate.
- Don't complain about empty initializers in C++ (they are permitted)
- Unrelated but necessary: don't bother trying to convert the
decl-specifier-seq to a type when we're dealing with a C++
constructor, destructor, or conversion operator; it results in
spurious warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
930d8b5ecc074cca01ecd9a522a55f55f3b72396 30-Jan-2009 Douglas Gregor <dgregor@apple.com> Implement and test aggregate initialization in C++. Major changes:

- Support initialization of reference members; complain if any
reference members are left uninitialized.
- Use C++ copy-initialization for initializing each element (falls
back to constraint checking in C)
- Make sure we diagnose when one tries to provide an initializer
list for a non-aggregate.
- Don't complain about empty initializers in C++ (they are permitted)
- Unrelated but necessary: don't bother trying to convert the
decl-specifier-seq to a type when we're dealing with a C++
constructor, destructor, or conversion operator; it results in
spurious warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
b79cdbe00e67f0d8de29a9cd38c6a6924bf6007b 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix horrible non-termination bug in LiveVariables. The issue was that
the liveness state of block-level expressions could oscillate because
of two issues:
- The initial value before a merge was not always set to "Top"
- The set of live block-level expressions is a union, not an intersection

This fixes <rdar://problem/650084>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63421 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/Support/BlkExprDeclBitVector.h
bf98c99600017bfcdde2a7966c47a6beb15a96dc 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix horrible non-termination bug in LiveVariables. The issue was that
the liveness state of block-level expressions could oscillate because
of two issues:
- The initial value before a merge was not always set to "Top"
- The set of live block-level expressions is a union, not an intersection

This fixes <rdar://problem/650084>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63421 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/Support/BlkExprDeclBitVector.h
0abb34b3250462874bcde8d86fc548ea10cb4240 30-Jan-2009 Chris Lattner <sabre@nondot.org> memset takes an int, not a char.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
3f17f31479cfc2be2543e3e48f79d68dc2f2c41c 30-Jan-2009 Chris Lattner <sabre@nondot.org> memset takes an int, not a char.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
4281e62da4604c1b0187d3fe925973940016515e 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Move method out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1e2b1fc4c4ae775adb2b236a8190f5a93b09ea12 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Move method out-of-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
882d81c0098e4bb7be2dc232a066bf5009bbf53e 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix inverted logic in ParentMap::hasParent()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
e4173c25c28bee676cfa02aa8ecbf8db3517ef70 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix inverted logic in ParentMap::hasParent()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
68c1e19d20a9e0cc375f6d87f11e770a5fa216ee 30-Jan-2009 Chris Lattner <sabre@nondot.org> " Attached is a patch for TextDiagnosticPrinter that adds an optional
parameter that allows users to omit the printing of the source
location on a diagnostic. So basically it would omit the "abc.c:5:1: "
at the beginning of the line."

Patch by Alexei Svitkine!




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63396 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
b8bf65e342d0872222f7ac10007d2837d7df437f 30-Jan-2009 Chris Lattner <sabre@nondot.org> " Attached is a patch for TextDiagnosticPrinter that adds an optional
parameter that allows users to omit the printing of the source
location on a diagnostic. So basically it would omit the "abc.c:5:1: "
at the beginning of the line."

Patch by Alexei Svitkine!




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63396 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
e7ef500151147ba851db502fc4d36319f863db80 30-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Switch Type::isAggregateType to use the C++ definition of "aggregate
type" rather than the C definition. We do this because both C99 and
Clang always use "aggregate type" as "aggregate or union type", and
the C++ definition includes union types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d7eb846aaf5ee4a8d22c3cd0796d1e7229d46013 30-Jan-2009 Douglas Gregor <dgregor@apple.com> Switch Type::isAggregateType to use the C++ definition of "aggregate
type" rather than the C definition. We do this because both C99 and
Clang always use "aggregate type" as "aggregate or union type", and
the C++ definition includes union types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a25cb0568ef29b58acce80a142819801be5afe66 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix a couple bugs:
- NonLoc::MakeVal() would use sizeof(unsigned) (literally) instead of consulting
ASTContext for the size (in bits) of 'int'. While it worked, it was a
conflation of concepts and using ASTContext.IntTy is 100% correct.
- RegionStore::getSizeInElements() no longer assumes that a VarRegion has the
type "ConstantArray", and handles the case when uses use ordinary variables
as if they were arrays.
- Fixed ElementRegion::getRValueType() to just return the rvalue type of its
"array region" in the case the array didn't have ArrayType.
- All of this fixes <rdar://problem/6541136>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63347 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
14553abd17d303b0b310b3ab1523eb0d30d8121c 30-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix a couple bugs:
- NonLoc::MakeVal() would use sizeof(unsigned) (literally) instead of consulting
ASTContext for the size (in bits) of 'int'. While it worked, it was a
conflation of concepts and using ASTContext.IntTy is 100% correct.
- RegionStore::getSizeInElements() no longer assumes that a VarRegion has the
type "ConstantArray", and handles the case when uses use ordinary variables
as if they were arrays.
- Fixed ElementRegion::getRValueType() to just return the rvalue type of its
"array region" in the case the array didn't have ArrayType.
- All of this fixes <rdar://problem/6541136>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63347 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
9fdddeddf7db0becc807298410fa5da31063e525 29-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Make CodeGen produce an error if we come across a non-constant initializer list that involves the GNU array-range designator extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.def
a9c878086036de36482cc21e35a33cabe9699b0a 29-Jan-2009 Douglas Gregor <dgregor@apple.com> Make CodeGen produce an error if we come across a non-constant initializer list that involves the GNU array-range designator extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63327 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticSemaKinds.def
c0503affe458c2c2c933f8fbc584b27d9c92d07e 29-Jan-2009 Chris Lattner <sabre@nondot.org> remove two empty files


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
river/DriverDiagnostic.h
95effa1e2df6db814add998b0495a12bc58b621e 29-Jan-2009 Chris Lattner <sabre@nondot.org> remove two empty files


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
river/DriverDiagnostic.h
8d9b1d84416ce012517da473bd37ec995f897266 29-Jan-2009 Chris Lattner <sabre@nondot.org> next round of diagnostics cleanups, moving some
diags around, eliminating #defines, etc. Patch by
Anders Johnsen!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
asic/DiagnosticCommonKinds.def
asic/DiagnosticKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticSemaKinds.def
river/DriverDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
19e8e2cffc19606d0f44e7c2897cd126ffd3f9b0 29-Jan-2009 Chris Lattner <sabre@nondot.org> next round of diagnostics cleanups, moving some
diags around, eliminating #defines, etc. Patch by
Anders Johnsen!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
asic/DiagnosticCommonKinds.def
asic/DiagnosticKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticSemaKinds.def
river/DriverDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
c9e012a1d1737f355ff5cf65d691ee58c4143d5a 29-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce a new expression node, ImplicitValueInitExpr, that
represents an implicit value-initialization of a subobject of a
particular type. This replaces the (ab)use of CXXZeroValueInitExpr
within initializer lists for the "holes" that occur due to the use of
C99 designated initializers.

The new test case is currently XFAIL'd, because CodeGen's
ConstExprEmitter (in lib/CodeGen/CGExprConstant.cpp) needs to be
taught to value-initialize when it sees ImplicitValueInitExprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63317 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
3498bdb9e9cb300de74c7b51c92608e2902b2348 29-Jan-2009 Douglas Gregor <dgregor@apple.com> Introduce a new expression node, ImplicitValueInitExpr, that
represents an implicit value-initialization of a subobject of a
particular type. This replaces the (ab)use of CXXZeroValueInitExpr
within initializer lists for the "holes" that occur due to the use of
C99 designated initializers.

The new test case is currently XFAIL'd, because CodeGen's
ConstExprEmitter (in lib/CodeGen/CGExprConstant.cpp) needs to be
taught to value-initialize when it sees ImplicitValueInitExprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63317 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
82462767a344858f1ec4913cc5a1b974bbd92af0 29-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Clean up designated initialization of unions, so that CodeGen doesn't
have to try to guess which member is being initialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0bb76897bedb8b747efc6523efb432fc24966118 29-Jan-2009 Douglas Gregor <dgregor@apple.com> Clean up designated initialization of unions, so that CodeGen doesn't
have to try to guess which member is being initialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63315 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
86a2484a87df299b1eeb17d379337eb073394f5d 29-Jan-2009 Chris Lattner <sabre@nondot.org> Fix -Wimplicit-function-declaration, which required some refactoring and
changes in various diagnostics code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63282 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
88eccaf06f9d88191723e71bdf5ca68409393be6 29-Jan-2009 Chris Lattner <sabre@nondot.org> Fix -Wimplicit-function-declaration, which required some refactoring and
changes in various diagnostics code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63282 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/Diagnostic.h
river/DriverDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
f687dacfc60f56ee6b3576191b793a4dca015819 29-Jan-2009 Chris Lattner <sabre@nondot.org> Fix a wart that existed from before we had EXTWARN.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.def
1a360896d790ccb0b8dc393097ceea6a4b5e2436 29-Jan-2009 Chris Lattner <sabre@nondot.org> Fix a wart that existed from before we had EXTWARN.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63272 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticCommonKinds.def
545f39ee63c227cadd091f8ee163ef80aaee0700 29-Jan-2009 Chris Lattner <sabre@nondot.org> move library-specific diagnostic headers into library private dirs. Reduce
redundant #includes. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63271 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/DiagnosticAST.h
asic/DiagnosticAnalysis.h
asic/DiagnosticDriver.h
asic/DiagnosticLex.h
asic/DiagnosticParse.h
asic/DiagnosticSema.h
river/DriverDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
500d3297d2a21edeac4d46cbcbe21bc2352c2a28 29-Jan-2009 Chris Lattner <sabre@nondot.org> move library-specific diagnostic headers into library private dirs. Reduce
redundant #includes. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63271 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTDiagnostic.h
nalysis/AnalysisDiagnostic.h
asic/DiagnosticAST.h
asic/DiagnosticAnalysis.h
asic/DiagnosticDriver.h
asic/DiagnosticLex.h
asic/DiagnosticParse.h
asic/DiagnosticSema.h
river/DriverDiagnostic.h
ex/LexDiagnostic.h
arse/ParseDiagnostic.h
ema/SemaDiagnostic.h
756283be81be486a58ecde773b0c7e876358c58e 29-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Remove Expr::hasSideEffects. It doesn't work anyway

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
54f0728c2ab0f967e976300478b2f5cdfed78415 29-Jan-2009 Douglas Gregor <dgregor@apple.com> Remove Expr::hasSideEffects. It doesn't work anyway

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
36dd0c55546d02d19186caf889230755776d0601 29-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Improvements to code-generation and semantic analysis of designated
initializers.

- We now initialize unions properly when a member other than the
first is named by a designated initializer.
- We now provide proper semantic analysis and code generation for
GNU array-range designators *except* that side effects will occur
more than once. We warn about this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63253 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
34e7946831a63f96d3ba3478c74ca8e25ee52d7e 29-Jan-2009 Douglas Gregor <dgregor@apple.com> Improvements to code-generation and semantic analysis of designated
initializers.

- We now initialize unions properly when a member other than the
first is named by a designated initializer.
- We now provide proper semantic analysis and code generation for
GNU array-range designators *except* that side effects will occur
more than once. We warn about this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63253 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
e62fd058b83ab527b68759db4db790225f4ee6f4 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Remove method 'AddNE' from the public interface of ConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63249 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
b2bf7cda4661c54510e6cbb96ba6ea9b5ddafca9 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Remove method 'AddNE' from the public interface of ConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63249 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
58b1ffe562c29b0379df3faa2cff9f67aaa50226 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Add some comments to GRStateManager. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63243 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
679f4981e33643d3bc459b8208803ad2925cf282 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Add some comments to GRStateManager. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63243 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
f603b47aec06841368ddb1a36925c57976794c24 28-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Code generation support for C99 designated initializers.

The approach I've taken in this patch is relatively straightforward,
although the code itself is non-trivial. Essentially, as we process
an initializer list we build up a fully-explicit representation of the
initializer list, where each of the subobject initializations occurs
in order. Designators serve to "fill in" subobject initializations in
a non-linear way. The fully-explicit representation makes initializer
lists (both with and without designators) easy to grok for codegen and
later semantic analyses. We keep the syntactic form of the initializer
list linked into the AST for those clients interested in exactly what
the user wrote.

Known limitations:
- Designating a member of a union that isn't the first member may
result in bogus initialization (we warn about this)
- GNU array-range designators are not supported (we warn about this)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/ExprCXX.h
asic/DiagnosticSemaKinds.def
4c67834407ca6ab344dcf44fc599ad4938cfa96d 28-Jan-2009 Douglas Gregor <dgregor@apple.com> Code generation support for C99 designated initializers.

The approach I've taken in this patch is relatively straightforward,
although the code itself is non-trivial. Essentially, as we process
an initializer list we build up a fully-explicit representation of the
initializer list, where each of the subobject initializations occurs
in order. Designators serve to "fill in" subobject initializations in
a non-linear way. The fully-explicit representation makes initializer
lists (both with and without designators) easy to grok for codegen and
later semantic analyses. We keep the syntactic form of the initializer
list linked into the AST for those clients interested in exactly what
the user wrote.

Known limitations:
- Designating a member of a union that isn't the first member may
result in bogus initialization (we warn about this)
- GNU array-range designators are not supported (we warn about this)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/ExprCXX.h
asic/DiagnosticSemaKinds.def
3d1455547c82213d3f0bff04551dcadc52f89c13 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Enhance PTHManager::Create() to take an optional Diagnostic* argument that can be used to report issues such as a missing PTH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63231 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
8a6aec620dbec1f292fe4116c0373ac81ab90234 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Enhance PTHManager::Create() to take an optional Diagnostic* argument that can be used to report issues such as a missing PTH file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63231 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
9f69c91bc412a14c251525702871eeed90a355da 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Add method FullSourceLoc::getBufferData().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63229 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
3632a35e811096da86d957c3e6ba0e73d75782f5 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Add method FullSourceLoc::getBufferData().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63229 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
6a80ecbba17a8cf5193d3b9ce6054d0790ae654f 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Tweak doxygen comment. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63228 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
509355e982d15da4f8f3939493516379665f6275 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Tweak doxygen comment. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63228 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
7b36a1b4b741fdd0db13e287316ee190c0064fb3 28-Jan-2009 Steve Naroff <snaroff@apple.com> Name change (isTypeName->getTypeName).
Since it doesn't return a bool, is shouldn't be prefixed with 'is'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63226 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
b43a50ff1b0b171ece84425b0ad83a9a31f038fa 28-Jan-2009 Steve Naroff <snaroff@apple.com> Name change (isTypeName->getTypeName).
Since it doesn't return a bool, is shouldn't be prefixed with 'is'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63226 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
f41a58c5777154baefbdaee8472dffce998c065b 28-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement pointer to member handling in static_cast.
Fix a stupid mistake in UnwrapSimilarPointers that made any two member pointers compatible as long as the pointee was the same.
Make a few style corrections as suggested by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
21593acb933324b439bc68b68e7cc7d1c3e3484d 28-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement pointer to member handling in static_cast.
Fix a stupid mistake in UnwrapSimilarPointers that made any two member pointers compatible as long as the pointee was the same.
Make a few style corrections as suggested by Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
b31f2940afc74f79cdb11add308be85c52de2426 28-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Complete semantic checking for typedef redeclarations in C++. The
rules are slightly different than in C, and now we handle both
dialects properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
66973121788ca645fe3d4a66179b9cfb6f2bce08 28-Jan-2009 Douglas Gregor <dgregor@apple.com> Complete semantic checking for typedef redeclarations in C++. The
rules are slightly different than in C, and now we handle both
dialects properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63211 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticSemaKinds.def
513b2aab31db7d5587e9495758f6eee4fdd13e1a 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
40b9b50b16e4728389bca78ded783d18d3adc1c9 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
d9d3e262922058a9c4b239af9ad656fdae8a94ac 28-Jan-2009 Chris Lattner <sabre@nondot.org> add some basic file headers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticAST.h
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysis.h
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriver.h
asic/DiagnosticLex.h
asic/DiagnosticLexKinds.def
asic/DiagnosticParse.h
asic/DiagnosticParseKinds.def
asic/DiagnosticSema.h
asic/DiagnosticSemaKinds.def
47354ed151fe0543e138ccebd3dfe7acfcb291d1 28-Jan-2009 Chris Lattner <sabre@nondot.org> add some basic file headers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticAST.h
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysis.h
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticDriver.h
asic/DiagnosticLex.h
asic/DiagnosticLexKinds.def
asic/DiagnosticParse.h
asic/DiagnosticParseKinds.def
asic/DiagnosticSema.h
asic/DiagnosticSemaKinds.def
88eebed66eb871cdc7de031cccfb59f445680cc4 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Patch by Alexei Svitkine: Refactor Sema::ParseAST API to allow clients to pass as an argument a TranslationUnit object whose contents live beyond the call to ParseAST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63175 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
46157b59646e3fd4252747c679fda529b8bf46af 28-Jan-2009 Ted Kremenek <kremenek@apple.com> Patch by Alexei Svitkine: Refactor Sema::ParseAST API to allow clients to pass as an argument a TranslationUnit object whose contents live beyond the call to ParseAST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63175 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
abe189e738c71097d14b8657ffeff3cebce6aa29 28-Jan-2009 Ted Kremenek <kremenek@apple.com> FileManager: Use a BumpPtrAllocator for the StringMaps DirEntries and FileEntries.

Performance impact (clang -fsyntax-only INPUTS/Cocoa_h.m):
non-PTH: 0.4% improvement
PTH: 0.8% improvement



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63159 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
f3eb9219cf4b4e80c377d37aed72d5d6d840b7bc 28-Jan-2009 Ted Kremenek <kremenek@apple.com> FileManager: Use a BumpPtrAllocator for the StringMaps DirEntries and FileEntries.

Performance impact (clang -fsyntax-only INPUTS/Cocoa_h.m):
non-PTH: 0.4% improvement
PTH: 0.8% improvement



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63159 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
207b9ecb6031b79bd9cbacc2f6108d49dd941679 28-Jan-2009 Steve Naroff <snaroff@apple.com> Finish making AST BumpPtrAllocation runtime configurable (based on -disable-free).

snaroff% time ../../Release-Asserts/bin/clang INPUTS/Cocoa_h.m
0.179u 0.051s 0:00.23 95.6% 0+0k 0+0io 0pf+0w
snaroff% time ../../Release-Asserts/bin/clang INPUTS/Cocoa_h.m -disable-free
0.169u 0.052s 0:00.22 95.4% 0+0k 0+0io 0pf+0w


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c0ac4923f08b25ae973a8ee7942cf3eb89da57b7 28-Jan-2009 Steve Naroff <snaroff@apple.com> Finish making AST BumpPtrAllocation runtime configurable (based on -disable-free).

snaroff% time ../../Release-Asserts/bin/clang INPUTS/Cocoa_h.m
0.179u 0.051s 0:00.23 95.6% 0+0k 0+0io 0pf+0w
snaroff% time ../../Release-Asserts/bin/clang INPUTS/Cocoa_h.m -disable-free
0.169u 0.052s 0:00.22 95.4% 0+0k 0+0io 0pf+0w


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5abb028e7b9be23c921207c097dcdc237cbf0f26 27-Jan-2009 Steve Naroff <snaroff@apple.com> Remove many references to ASTContext::getAllocator(), replacing them with calls to the recently added placement new (which uses ASTContext's allocator for memory). Also added ASTContext::Deallocate().

This will simplify runtime replacement of ASTContext's allocator. Keeping the allocator private (and removing getAllocator() entirely) is also goodness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63135 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3e9704981d7691fdd44913bf1786e8d760d8a627 27-Jan-2009 Steve Naroff <snaroff@apple.com> Remove many references to ASTContext::getAllocator(), replacing them with calls to the recently added placement new (which uses ASTContext's allocator for memory). Also added ASTContext::Deallocate().

This will simplify runtime replacement of ASTContext's allocator. Keeping the allocator private (and removing getAllocator() entirely) is also goodness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63135 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
dd3a4fe10568b3eb4f0f24b9a51b4d70b87a0d5f 27-Jan-2009 Anders Carlsson <andersca@mac.com> If an input constraint refers to an output constraint, it should have the same constraint info as the output constraint. Fixes PR3417

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
03eb543cf7ebee463b33b5802b83ac92c21770cf 27-Jan-2009 Anders Carlsson <andersca@mac.com> If an input constraint refers to an output constraint, it should have the same constraint info as the output constraint. Fixes PR3417

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3f1cc56852a88fe7b956b30c5676b97ba9dc7c00 27-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> ivar meta-data generation for nonfragile-abi.
Still more work to do in this area.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
98abf4bd3526a00a0e5cf71a9462c181f97b1c81 27-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> ivar meta-data generation for nonfragile-abi.
Still more work to do in this area.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8b673aec4a2c02cb8172f7e8fdc8c741c343e29c 27-Jan-2009 Chris Lattner <sabre@nondot.org> add new headers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63113 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticAST.h
asic/DiagnosticAnalysis.h
asic/DiagnosticDriver.h
asic/DiagnosticLex.h
asic/DiagnosticParse.h
asic/DiagnosticSema.h
132b5beaf31da1213bb95b4631ae390f5e1052c1 27-Jan-2009 Chris Lattner <sabre@nondot.org> add new headers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63113 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticAST.h
asic/DiagnosticAnalysis.h
asic/DiagnosticDriver.h
asic/DiagnosticLex.h
asic/DiagnosticParse.h
asic/DiagnosticSema.h
f00be2e3da5fbb616a9368b7b6a2f1e23810fa3f 27-Jan-2009 Chris Lattner <sabre@nondot.org> Add the new .def files



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
39ad9c9343ced5cee3c6faa5504c6ea123f4b27a 27-Jan-2009 Chris Lattner <sabre@nondot.org> Add the new .def files



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticASTKinds.def
asic/DiagnosticAnalysisKinds.def
asic/DiagnosticCommonKinds.def
asic/DiagnosticLexKinds.def
asic/DiagnosticParseKinds.def
asic/DiagnosticSemaKinds.def
52a425b852e4641d46073a697a48a457c8f655e2 27-Jan-2009 Chris Lattner <sabre@nondot.org> Split the single monolithic DiagnosticKinds.def file into one
.def file for each library. This means that adding a diagnostic
to sema doesn't require all the other libraries to be rebuilt.

Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63111 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticKinds.def
20c6b3b85e186cd52d5d99489132d71d498159eb 27-Jan-2009 Chris Lattner <sabre@nondot.org> Split the single monolithic DiagnosticKinds.def file into one
.def file for each library. This means that adding a diagnostic
to sema doesn't require all the other libraries to be rebuilt.

Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63111 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticKinds.def
83165b59c3bfc492b23bfcf65c24156b20f3f77f 27-Jan-2009 Chris Lattner <sabre@nondot.org> add a new "getPreferredTypeAlign" method to return the preferred alignment
of a type. The implementation is currently something of a hack, but is
sufficient for now and allows clients to be built on it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63108 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
34ebde404dc17d89487b07e6daaf1b47d5dfee39 27-Jan-2009 Chris Lattner <sabre@nondot.org> add a new "getPreferredTypeAlign" method to return the preferred alignment
of a type. The implementation is currently something of a hack, but is
sufficient for now and allows clients to be built on it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63108 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c477207d6b3dc21ad8882e9fe6a82bde767cb254 27-Jan-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR3418: make sure to handle the RHS of expressions starting with
__extension__. This sort of construct shows up in the gcc source code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63100 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
adf077f46ba5cddcd801a647a5e9a3eb97060df4 27-Jan-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR3418: make sure to handle the RHS of expressions starting with
__extension__. This sort of construct shows up in the gcc source code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63100 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
836774b81b2a48a2cde1e08abb1f5f5e0b21ae97 27-Jan-2009 Chris Lattner <sabre@nondot.org> Introduce a new PresumedLoc class to represent the concept of a location
as reported to the user and as manipulated by #line. This is what __FILE__,
__INCLUDE_LEVEL__, diagnostics and other things should follow (but not
dependency generation!).

This patch also includes several cleanups along the way:

- SourceLocation now has a dump method, and several other places
that did similar things now use it.
- I cleaned up some code in AnalysisConsumer, but it should probably be
simplified further now that NamedDecl is better.
- TextDiagnosticPrinter is now simplified and cleaned up a bit.

This patch is a prerequisite for #line, but does not actually provide
any #line functionality.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
river/TextDiagnosticPrinter.h
b9c3f966b103f7cfe8e5e60007c4c8b38f7298eb 27-Jan-2009 Chris Lattner <sabre@nondot.org> Introduce a new PresumedLoc class to represent the concept of a location
as reported to the user and as manipulated by #line. This is what __FILE__,
__INCLUDE_LEVEL__, diagnostics and other things should follow (but not
dependency generation!).

This patch also includes several cleanups along the way:

- SourceLocation now has a dump method, and several other places
that did similar things now use it.
- I cleaned up some code in AnalysisConsumer, but it should probably be
simplified further now that NamedDecl is better.
- TextDiagnosticPrinter is now simplified and cleaned up a bit.

This patch is a prerequisite for #line, but does not actually provide
any #line functionality.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63098 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
river/TextDiagnosticPrinter.h
cbb2bd4e8d906e04fea40151e677c10c9b3f3d33 27-Jan-2009 Chris Lattner <sabre@nondot.org> rename getFullFilePos -> getFileOffset.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63097 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
52c29081281955d3db9e11d10573b2d38f709099 27-Jan-2009 Chris Lattner <sabre@nondot.org> rename getFullFilePos -> getFileOffset.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63097 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2c3258f28772cbdab116f947068fd3f34232de8f 27-Jan-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostics:
- Add the distinction between the 'bug type' and the 'bug description'

HTMLDiagnostics:
- Output the bug type field as HTML comments

scan-build:
- Use the bug type field instead of the bug description for the HTML table.
- Radar filing now automatically picks up the bug description in the title (addresses <rdar://problem/6265970>)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63084 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
a26ddabc0eb8cf8ea4de1878f84d3b920fc2349f 27-Jan-2009 Ted Kremenek <kremenek@apple.com> PathDiagnostics:
- Add the distinction between the 'bug type' and the 'bug description'

HTMLDiagnostics:
- Output the bug type field as HTML comments

scan-build:
- Use the bug type field instead of the bug description for the HTML table.
- Radar filing now automatically picks up the bug description in the title (addresses <rdar://problem/6265970>)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63084 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
562db7f75a13815ea938f2c3be700bdb42af32b1 27-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH: Use Token::setLiteralData() to directly store a pointer to cached spelling data in the PTH file. This removes a ton of code for looking up spellings using sourcelocations in the PTH file. This simplifies both PTH-generation and reading.

Performance impact for -fsyntax-only on Cocoa.h (with Cocoa.h in the PTH file):
- PTH generation time improves by 5%
- PTH reading improves by 0.3%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63072 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
ex/Preprocessor.h
277faca30c9f8f72b79f55695cbe3395ec246e7c 27-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH: Use Token::setLiteralData() to directly store a pointer to cached spelling data in the PTH file. This removes a ton of code for looking up spellings using sourcelocations in the PTH file. This simplifies both PTH-generation and reading.

Performance impact for -fsyntax-only on Cocoa.h (with Cocoa.h in the PTH file):
- PTH generation time improves by 5%
- PTH reading improves by 0.3%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63072 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
ex/Preprocessor.h
b4c9d6c890a42aa6930a89089ada1a6e628f4f4a 27-Jan-2009 Daniel Dunbar <daniel@zuster.org> Fix definition of __builtin_ia32_vec_set_v2di and de-XFAIL
builtins-x86.c.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63069 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
2e2558ec5f5f70ec7f7a8a7e31d0c6be9e1f567e 27-Jan-2009 Daniel Dunbar <daniel@zuster.org> Fix definition of __builtin_ia32_vec_set_v2di and de-XFAIL
builtins-x86.c.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63069 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
10a18fcb2dd34772d0b3a5a9013b13c40a6e9afc 26-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Some micro-optimizations for DISABLE_SMART_POINTERS:
- When it's safe, ActionResult uses the low bit of the pointer for
the "invalid" flag rather than a separate "bool" value. This keeps
GCC from generating some truly awful code, for a > 3x speedup in the
result-passing microbenchmark.
- When DISABLE_SMART_POINTERS is defined, store an ActionResult
within ASTOwningResult rather than an ASTOwningPtr. Brings the
performance benefits of the above to smart pointers with
DISABLE_SMART_POINTERS defined.

Sadly, these micro-benchmark performance improvements don't seem to
make much of a difference on Cocoa.h right now. However, they're
harmless and might help with future optimizations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63061 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
5ac8aff3d7431dc7e4d64d960574a10c9f7e0078 26-Jan-2009 Douglas Gregor <dgregor@apple.com> Some micro-optimizations for DISABLE_SMART_POINTERS:
- When it's safe, ActionResult uses the low bit of the pointer for
the "invalid" flag rather than a separate "bool" value. This keeps
GCC from generating some truly awful code, for a > 3x speedup in the
result-passing microbenchmark.
- When DISABLE_SMART_POINTERS is defined, store an ActionResult
within ASTOwningResult rather than an ASTOwningPtr. Brings the
performance benefits of the above to smart pointers with
DISABLE_SMART_POINTERS defined.

Sadly, these micro-benchmark performance improvements don't seem to
make much of a difference on Cocoa.h right now. However, they're
harmless and might help with future optimizations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63061 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
c374f8b15500a5de12c68b8c2a339154b1efff97 26-Jan-2009 Chris Lattner <sabre@nondot.org> rename getSpelledCharacterAt to getSpellingOfSingleCharacterNumericConstant,
optimize it to use the LiteralData when possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63060 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7216dc9cb49f47254595120cf15a737cee53f0bd 26-Jan-2009 Chris Lattner <sabre@nondot.org> rename getSpelledCharacterAt to getSpellingOfSingleCharacterNumericConstant,
optimize it to use the LiteralData when possible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63060 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
afc8ad50ff0aa91bf8a6106beef2c33cc320c28b 26-Jan-2009 Ted Kremenek <kremenek@apple.com> Add version number to PTH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63052 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
468edb509346e00a3228536b9f81064eb3baba19 26-Jan-2009 Ted Kremenek <kremenek@apple.com> Add version number to PTH files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63052 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
8d92c1a4b0b12b12accec6b736b49140e4722875 26-Jan-2009 Chris Lattner <sabre@nondot.org> make getInstantiationLoc and getSpellingLoc handle multiply instantiated
locations, and move the slow case out of line. No perf change on cocoa.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
addb797ca2b5afc1a1e82fd8d5d6eb2a592e75a9 26-Jan-2009 Chris Lattner <sabre@nondot.org> make getInstantiationLoc and getSpellingLoc handle multiply instantiated
locations, and move the slow case out of line. No perf change on cocoa.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63033 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
6ad1f50668c95632599b09d3a0ddcb5c73b1f6a9 26-Jan-2009 Chris Lattner <sabre@nondot.org> This change refactors some of the low-level lexer interfaces a bit.
Token now has a class of kinds for "literals", which include
numeric constants, strings, etc. These tokens can optionally have
a pointer to the start of the token in the lexer buffer. This
makes it faster to get spelling and do other gymnastics, because we
don't have to go through source locations.

This change is performance neutral, but will make other changes
more feasible down the road.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63028 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/ScratchBuffer.h
ex/Token.h
arse/Parser.h
47246be8ac5b0ddde6c402b8fc6946b6135487b5 26-Jan-2009 Chris Lattner <sabre@nondot.org> This change refactors some of the low-level lexer interfaces a bit.
Token now has a class of kinds for "literals", which include
numeric constants, strings, etc. These tokens can optionally have
a pointer to the start of the token in the lexer buffer. This
makes it faster to get spelling and do other gymnastics, because we
don't have to go through source locations.

This change is performance neutral, but will make other changes
more feasible down the road.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63028 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/ScratchBuffer.h
ex/Token.h
arse/Parser.h
c28b1f70e0cb58aeff82f47b6dd29463e874563e 26-Jan-2009 Chris Lattner <sabre@nondot.org> make sure we have a definition of uintptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
464c4b3fdd473c9722cc00e7ef5f9929578f9c46 26-Jan-2009 Chris Lattner <sabre@nondot.org> make sure we have a definition of uintptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63019 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
d2051b43cbbcb5a549ffd24134bf0a33f83469a9 26-Jan-2009 Chris Lattner <sabre@nondot.org> start plumbing together the line table information. So far we just
unique the Filenames in #line directives, assigning them UIDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63010 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5b9a504720fb52594ca3686e10eb6c0cfa2e7d62 26-Jan-2009 Chris Lattner <sabre@nondot.org> start plumbing together the line table information. So far we just
unique the Filenames in #line directives, assigning them UIDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63010 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e0b8f7697e7b6c8f39b7bdcaf5c8d7ec90a6fea8 26-Jan-2009 Chris Lattner <sabre@nondot.org> Bitmangle file characteristic bits into the low bits of
the content cache pointer. This saves 105876 bytes on
cocoa.h because it shrinks the SLocEntry union, which
we have a big array of. It would be nice to use
PointerIntPair here, but we can't because it is in a
union.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
6e1aff2f586025f2d385ee49239f626b0fc63fd7 26-Jan-2009 Chris Lattner <sabre@nondot.org> Bitmangle file characteristic bits into the low bits of
the content cache pointer. This saves 105876 bytes on
cocoa.h because it shrinks the SLocEntry union, which
we have a big array of. It would be nice to use
PointerIntPair here, but we can't because it is in a
union.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63004 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
10f8e6bf59ef94ae2184463c33b6706dbd73f482 26-Jan-2009 Chris Lattner <sabre@nondot.org> add parsing and constraint enforcement for GNU line marker directives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
478a18ec47fdb7e0e580a2635648456e9db9ad4f 26-Jan-2009 Chris Lattner <sabre@nondot.org> add parsing and constraint enforcement for GNU line marker directives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
13c110288fc2c8bdf8b34187464184aef1864889 26-Jan-2009 Chris Lattner <sabre@nondot.org> parse and enforce required constraints on #line directives. Right now
we just discard them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
359cc4475487ea0a660b3e8918334a2866e71c66 26-Jan-2009 Chris Lattner <sabre@nondot.org> parse and enforce required constraints on #line directives. Right now
we just discard them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62999 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
27c0ced6e7af1b40d1e26a366eee2f95089edb47 26-Jan-2009 Chris Lattner <sabre@nondot.org> Check in the long promised SourceLocation rewrite. This lays the
ground work for implementing #line, and fixes the "out of macro ID's"
problem.

There is nothing particularly tricky about the code, other than the
very performance sensitive SourceManager::getFileID() method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Lexer.h
de7aeefc5573d669ed476d7bda7a8940d3bcadb7 26-Jan-2009 Chris Lattner <sabre@nondot.org> Check in the long promised SourceLocation rewrite. This lays the
ground work for implementing #line, and fixes the "out of macro ID's"
problem.

There is nothing particularly tricky about the code, other than the
very performance sensitive SourceManager::getFileID() method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62978 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Lexer.h
743345196e54ad7287cccbe16e438d5a156f22d2 26-Jan-2009 Chris Lattner <sabre@nondot.org> improve ASTContext::getDeclAlign comment, as suggested by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f65dd5681b34f195a29ddd6ee134b7743ed78cdd 26-Jan-2009 Chris Lattner <sabre@nondot.org> improve ASTContext::getDeclAlign comment, as suggested by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ba3875684baa207e083260c44958fc8361ad9710 25-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement implicit conversions for pointers-to-member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62971 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4433aafbc2591b82e4ea2fc39c723b21d2497f4d 25-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Implement implicit conversions for pointers-to-member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62971 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
dee41127decfb12910825d42a396b25eb25ac168 25-Jan-2009 Eli Friedman <eli.friedman@gmail.com> Rename Expr::isConstantExpr to Expr::isConstantInitializer; this more
accurately states what the function is trying to do and how it is
different from Expr::isEvaluatable. Also get rid of a parameter that is both
unused and inaccurate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c9e8f606787b0bc0c3b08e566b87cc1751694168 25-Jan-2009 Eli Friedman <eli.friedman@gmail.com> Rename Expr::isConstantExpr to Expr::isConstantInitializer; this more
accurately states what the function is trying to do and how it is
different from Expr::isEvaluatable. Also get rid of a parameter that is both
unused and inaccurate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bc941e1d1fd6d89c10905e1ab0be0fa1ef279668 25-Jan-2009 Eli Friedman <eli.friedman@gmail.com> PR3062: statement expressions should be illegal at file scope. I don't
think this has any significant effects at the moment, but it could
matter if we start constant-folding statement expressions like gcc does.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
dca2b7314f73fbb1e897befdc4f0ddaa9905d72c 25-Jan-2009 Eli Friedman <eli.friedman@gmail.com> PR3062: statement expressions should be illegal at file scope. I don't
think this has any significant effects at the moment, but it could
matter if we start constant-folding statement expressions like gcc does.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bd3153edf9096e49a03c782d9768232213a41733 24-Jan-2009 Chris Lattner <sabre@nondot.org> add initial support for the gcc "alignof(decl) is the alignment of the decl
not the type" semantics. This can definitely be improved, but is better than
what we had.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
af707ab8fbb9451e8febb8d766f6c043628125c4 24-Jan-2009 Chris Lattner <sabre@nondot.org> add initial support for the gcc "alignof(decl) is the alignment of the decl
not the type" semantics. This can definitely be improved, but is better than
what we had.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
302d2316005ee585c0a1ad73acf49f17684a7a53 24-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Undo accidental disabling of smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62937 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
b9037594f5e02f66c4fa697d9dec2359faba1bc3 24-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Undo accidental disabling of smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62937 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
364a42d5359bec37c089b9839c8ce4d33dc1434a 24-Jan-2009 Chris Lattner <sabre@nondot.org> Implement C99 6.5.3.4p1, rejecting sizeof(bitfield)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62936 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
da0274725667d1168867dc404417f2c68c8dc0c5 24-Jan-2009 Chris Lattner <sabre@nondot.org> Implement C99 6.5.3.4p1, rejecting sizeof(bitfield)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62936 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7555503bb5f08651638f269c44c15bb425d10c5e 24-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add support for declaring pointers to members.
Add serialization support for ReferenceType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
arse/Ownership.h
f30208ad5b334e93582e846a2a0c92f38a607b8a 24-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add support for declaring pointers to members.
Add serialization support for ReferenceType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
arse/Ownership.h
ecddc57ef650e1bc7b836d512fd2df17cf6ec81b 24-Jan-2009 Chris Lattner <sabre@nondot.org> fix some const-correctness issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
caae7b099a0324b7c15dc89a9b70969d5d7ce996 24-Jan-2009 Chris Lattner <sabre@nondot.org> fix some const-correctness issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8d9f7966e67ffdde467b84b187c782f3e1b08556 24-Jan-2009 Chris Lattner <sabre@nondot.org> Fix PR3386 by handling GCC's rules for alignof, which are substantially
different than those for sizeof. Reject alignof(bitfield) like gcc does.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
31e21e05623ce9d11b1a893fecb87ad349df6c7d 24-Jan-2009 Chris Lattner <sabre@nondot.org> Fix PR3386 by handling GCC's rules for alignof, which are substantially
different than those for sizeof. Reject alignof(bitfield) like gcc does.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f8abb94c2c5b0f3bc8d2d5199fa21f93310f761f 24-Jan-2009 Daniel Dunbar <daniel@zuster.org> Fix invalid evaluation of _Complex float (real & imaginary parts had
mismatched semantics).
- Enforce this in APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
8f826f0e0c90b05ab04e84c29157d2e965713288 24-Jan-2009 Daniel Dunbar <daniel@zuster.org> Fix invalid evaluation of _Complex float (real & imaginary parts had
mismatched semantics).
- Enforce this in APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62924 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
3f6c680cfadd12074d68acddcf5e0ef0a2d6b7af 24-Jan-2009 Ted Kremenek <kremenek@apple.com> More hacking on static analyzer diagnostics. When emitting summary diagnostics the code paths for diagnostics involving paths or single locations are now unified. This patch also constifies many arguments/methods that are touched by this logic, leading to a nice overall code cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62903 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
3148eb4a75f70f2636075c364d03104223f004d3 24-Jan-2009 Ted Kremenek <kremenek@apple.com> More hacking on static analyzer diagnostics. When emitting summary diagnostics the code paths for diagnostics involving paths or single locations are now unified. This patch also constifies many arguments/methods that are touched by this logic, leading to a nice overall code cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62903 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
d8a7adf951f5a13305374eb63baec09e8c695508 23-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a small regression in warning about template type parameter redeclarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
efe38bdea21953f89c1504cfd1c63bee5f15b1b6 23-Jan-2009 Douglas Gregor <dgregor@apple.com> Fix a small regression in warning about template type parameter redeclarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
4ac887b57a1bdccee7ad58170b6892c7f0d8a563 23-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that all NamedDecls have an identifier namespace.
Make sure that we know a call is invalid if we dropped arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
3fd56d755aa74f01fbe963195c95c963ea1fee91 23-Jan-2009 Douglas Gregor <dgregor@apple.com> Make sure that all NamedDecls have an identifier namespace.
Make sure that we know a call is invalid if we dropped arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1e1a34ba17b133e3476506c3e2f2c4524e71be61 23-Jan-2009 Ted Kremenek <kremenek@apple.com> Added virtual method DiagnosticClient::IncludeInDiagnosticCounts(). This is used by Diagnostics to determine if a diagnostic sent to a given DiagnosticClient should be included in the count of diagnostics. The default implementation of this method returns 'true'.

Implemented DiagCollector::IncludeInDiagnosticCounts() to return 'false' so that the batching of diagnostics for use with BugReporter doesn't mess up the count of real diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
cabe66811fe43835b8c5a0854552768fc53261e3 23-Jan-2009 Ted Kremenek <kremenek@apple.com> Added virtual method DiagnosticClient::IncludeInDiagnosticCounts(). This is used by Diagnostics to determine if a diagnostic sent to a given DiagnosticClient should be included in the count of diagnostics. The default implementation of this method returns 'true'.

Implemented DiagCollector::IncludeInDiagnosticCounts() to return 'false' so that the batching of diagnostics for use with BugReporter doesn't mess up the count of real diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
9ac3dd9ab915849404dab0aeda1155f3b8aa1841 23-Jan-2009 Chris Lattner <sabre@nondot.org> This is a follow-up to r62675:

Refactor how the preprocessor changes a token from being an tok::identifier to a
keyword (e.g. tok::kw_for). Instead of doing this in HandleIdentifier, hoist this
common case out into the caller, so that every keyword doesn't have to go through
HandleIdentifier. This drops time in HandleIdentifier from 1.25ms to .62ms, and
speeds up clang -Eonly with PTH by about 1%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
863c486fcb6162495a94fddf7ac8409de2638995 23-Jan-2009 Chris Lattner <sabre@nondot.org> This is a follow-up to r62675:

Refactor how the preprocessor changes a token from being an tok::identifier to a
keyword (e.g. tok::kw_for). Instead of doing this in HandleIdentifier, hoist this
common case out into the caller, so that every keyword doesn't have to go through
HandleIdentifier. This drops time in HandleIdentifier from 1.25ms to .62ms, and
speeds up clang -Eonly with PTH by about 1%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
8d583065d15af01e4e803e2088f3fc3b5f567b67 23-Jan-2009 Chris Lattner <sabre@nondot.org> Preprocessor doesn't require and IdentifierInfoLookup object.
Patch by Axel Naumann!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62854 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
17d527b051fbc3927b8a1b4ce4607a9b2ed445ee 23-Jan-2009 Chris Lattner <sabre@nondot.org> Preprocessor doesn't require and IdentifierInfoLookup object.
Patch by Axel Naumann!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62854 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
65075ec8e35729afc6ff55e45eb653688666de1b 23-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Handle any undeclared parameters in a K&R-style function with a
special action, inside function prototype scope. This avoids confusion
when we try to inject these parameters into the scope of the function
body before the function itself has been added to the surrounding
scope. Fixes <rdar://problem/6097326>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62849 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
be109b3e768b70f9efb106d25d6b5a2c72c5a9b8 23-Jan-2009 Douglas Gregor <dgregor@apple.com> Handle any undeclared parameters in a K&R-style function with a
special action, inside function prototype scope. This avoids confusion
when we try to inject these parameters into the scope of the function
body before the function itself has been added to the surrounding
scope. Fixes <rdar://problem/6097326>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62849 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b3193246902562ea8ab8d2c3214f02b3e711927c 23-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Support arithmetic on pointer-to-function types as a GNU
extension. Addresses clang PR/3371.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62823 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c983b86514d14dd4b30147bf6791dde9487d2c3f 23-Jan-2009 Douglas Gregor <dgregor@apple.com> Support arithmetic on pointer-to-function types as a GNU
extension. Addresses clang PR/3371.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62823 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
710f6d41708bc34c39b75a00d9cc91cee68cf4d8 23-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Reimplement the handling of the "current object" in designator
initializers, so that we are within the appropriate subobject after
we've processed a multi-designator designation. We're matching GCC and
EDG's behavior on all examples I've found thus far.

*Huge* thanks to Eli Friedman for pointing out my fundamental
misunderstanding of "current object" in the C99 spec.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62812 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
87f55cf59e82f246d8605733e9300d0c5f6830a6 23-Jan-2009 Douglas Gregor <dgregor@apple.com> Reimplement the handling of the "current object" in designator
initializers, so that we are within the appropriate subobject after
we've processed a multi-designator designation. We're matching GCC and
EDG's behavior on all examples I've found thus far.

*Huge* thanks to Eli Friedman for pointing out my fundamental
misunderstanding of "current object" in the C99 spec.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62812 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d03748117b5ed1b627e6cc5095ab509a722671ec 23-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Use NonFragileABI as name of new Next abi. More comments
for the new meta-data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
30bc57187be7535c57ef1ca8ff3e765653e94332 23-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Use NonFragileABI as name of new Next abi. More comments
for the new meta-data.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
65865a082fc539f5256d58f835efc0fa0876028e 22-Jan-2009 Ted Kremenek <kremenek@apple.com> Static analyzer: Remove a bunch of outdated SymbolData objects and
their associated APIs. We no longer need separate SymbolData objects
for fields, variables, etc. Instead, we now associated symbols with
the "rvalue" of a MemRegion (i.e., the value stored at that region).
Now we only have two kinds of SymbolData objects: SymbolRegionRValue
and SymbolConjured.

This cleanup also makes the distinction between a SymbolicRegion and a
symbolic value that is a location much clearer. A SymbolicRegion
represents a chunk of symbolic memory, while a symbolic location is
just a "pointer" with different possible values. Without any specific
knowledge, a symbolic location resolves (i.e., via a dereference) to a
SymbolicRegion. In the future, when we do better alias reasoning, a
symbolic location can become an alias for another location, thus
merging the constraints on the referred SymbolicRegion with the other
region.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62769 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
9ab6b9cfb76ee56a61829e2bdb08e5cdc288726e 22-Jan-2009 Ted Kremenek <kremenek@apple.com> Static analyzer: Remove a bunch of outdated SymbolData objects and
their associated APIs. We no longer need separate SymbolData objects
for fields, variables, etc. Instead, we now associated symbols with
the "rvalue" of a MemRegion (i.e., the value stored at that region).
Now we only have two kinds of SymbolData objects: SymbolRegionRValue
and SymbolConjured.

This cleanup also makes the distinction between a SymbolicRegion and a
symbolic value that is a location much clearer. A SymbolicRegion
represents a chunk of symbolic memory, while a symbolic location is
just a "pointer" with different possible values. Without any specific
knowledge, a symbolic location resolves (i.e., via a dereference) to a
SymbolicRegion. In the future, when we do better alias reasoning, a
symbolic location can become an alias for another location, thus
merging the constraints on the referred SymbolicRegion with the other
region.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62769 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
274ff49bf032abb013b7e59ecd370698c91d48a9 22-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add a switch that allows disabling the smart pointers.
Uncomment the define in Ownership.h to disable the smart pointers.
Disabled, the smart pointers no longer contain a pointer
to the action, and no longer have special destruction or
copying semantics. They are, compiler willing, raw
pointers or ActionResult equivalents.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62767 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
07c487e5f73c3e6ea47a03b674a4a0f753adf90f 22-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add a switch that allows disabling the smart pointers.
Uncomment the define in Ownership.h to disable the smart pointers.
Disabled, the smart pointers no longer contain a pointer
to the action, and no longer have special destruction or
copying semantics. They are, compiler willing, raw
pointers or ActionResult equivalents.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62767 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
edd94e9726e3e222711cb49809b5bb33d134d3f7 22-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> EXTWARNify the warning about unnamed typedefs of enums

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
21282df53bd86f737f84c4ae6d2dea7ef32f0895 22-Jan-2009 Douglas Gregor <dgregor@apple.com> EXTWARNify the warning about unnamed typedefs of enums

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62766 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c5a6bdc2f783e75a434e1e230dac17b946822976 22-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of semantic analysis and ASTs for C99
designated initializers. This implementation should cover all of the
constraints in C99 6.7.8, including long, complex designations and
computing the size of incomplete array types initialized with a
designated initializer. Please see the new test-case and holler if you
find cases where this doesn't work.

There are still some wrinkles with GNU's anonymous structs and
anonymous unions (it isn't clear how these should work; we'll just
follow GCC's lead) and with designated initializers for the members of a
union. I'll tackle those very soon.

CodeGen is still nonexistent, and there's some leftover code in the
parser's representation of designators that I'll also need to clean up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Designator.h
05c13a3411782108d65aab3c77b1a231a4963bc0 22-Jan-2009 Douglas Gregor <dgregor@apple.com> Initial implementation of semantic analysis and ASTs for C99
designated initializers. This implementation should cover all of the
constraints in C99 6.7.8, including long, complex designations and
computing the size of incomplete array types initialized with a
designated initializer. Please see the new test-case and holler if you
find cases where this doesn't work.

There are still some wrinkles with GNU's anonymous structs and
anonymous unions (it isn't clear how these should work; we'll just
follow GCC's lead) and with designated initializers for the members of a
union. I'll tackle those very soon.

CodeGen is still nonexistent, and there's some leftover code in the
parser's representation of designators that I'll also need to clean up.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62737 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Designator.h
5c0729b2e87c1e56799278fb54abbd1765709e7c 21-Jan-2009 Ted Kremenek <kremenek@apple.com> Static Analyzer: Replace LiveSymbols/DeadSymbols sets with a new object called "SymbolReaper". Right now it just consolidates the two and cleans up some client code, but shortly it will be used to enable "lazy computation" of live symbols for use with RegionStore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
241677a13cc46647a8f5098b3e3239bd9480dca2 21-Jan-2009 Ted Kremenek <kremenek@apple.com> Static Analyzer: Replace LiveSymbols/DeadSymbols sets with a new object called "SymbolReaper". Right now it just consolidates the two and cleans up some client code, but shortly it will be used to enable "lazy computation" of live symbols for use with RegionStore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
48543f59f28dafeff95a33e17539fc7936ee0334 21-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Refactoring ObjC Next's runtime classes in preparation for
the new ObjC's abi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62721 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
ee0af74d1e0990c7b66d32657f3e4e54b8691552 21-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Refactoring ObjC Next's runtime classes in preparation for
the new ObjC's abi.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62721 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
1c71ca4d2386caf0f4da7413aec49239de710e10 21-Jan-2009 Steve Naroff <snaroff@apple.com> Removed alignment argument to delete operator. It isn't needed and Visual Studio is offended by it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7106a3aea3cdbf409aed3e32235d909a47e25501 21-Jan-2009 Steve Naroff <snaroff@apple.com> Removed alignment argument to delete operator. It isn't needed and Visual Studio is offended by it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62707 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5868db58aa9c7d60f985f7f5163f9f976884675a 21-Jan-2009 Chris Lattner <sabre@nondot.org> initialialize some ivars in ctor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
fd52fc7cb1405f05d48f2bef284ca76df00b6649 21-Jan-2009 Chris Lattner <sabre@nondot.org> initialialize some ivars in ctor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
5b747d00f5b116bb9764242c51d2a90ba7307f6f 21-Jan-2009 Chris Lattner <sabre@nondot.org> Add a bit to IdentifierInfo that acts as a simple predicate which
tells us whether Preprocessor::HandleIdentifier needs to be called.
Because this method is only rarely needed, this saves a call and a
bunch of random checks. This drops the time in HandleIdentifier
from 3.52ms to .98ms on cocoa.h on my machine.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62675 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
6a170eb3ea6d6319277becabef68eb1a26bf8766 21-Jan-2009 Chris Lattner <sabre@nondot.org> Add a bit to IdentifierInfo that acts as a simple predicate which
tells us whether Preprocessor::HandleIdentifier needs to be called.
Because this method is only rarely needed, this saves a call and a
bunch of random checks. This drops the time in HandleIdentifier
from 3.52ms to .98ms on cocoa.h on my machine.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62675 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
e807f8520de8e3bdf61a1f0b74891aebd88539f0 21-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/6510344> [pth] PTH slows down regular lexer considerably (when it has substantial work)

Changes to IdentifierTable:
- High-level summary: StringMap never owns IdentifierInfos. It just
references them.
- The string map now has StringMapEntry<IdentifierInfo*> instead of
StringMapEntry<IdentifierInfo>. The IdentifierInfo object is
allocated using the same bump pointer allocator as used by the
StringMap.

Changes to IdentifierInfo:
- Added an extra pointer to point to the
StringMapEntry<IdentifierInfo*> in the string map. This pointer
will be null if the IdentifierInfo* is *only* used by the PTHLexer
(that is it isn't in the StringMap).

Algorithmic changes:
- Non-PTH case:
IdentifierInfo::get() will always consult the StringMap first to
see if we have an IdentifierInfo object. If that StringMapEntry
references a null pointer, we allocate a new one from the BumpPtrAllocator
and update the reference in the StringMapEntry.
- PTH case:
We do the same lookup as with the non-PTH case, but if we don't get
a hit in the StringMap we do a secondary lookup in the PTHManager for
the IdentifierInfo. If we don't find an IdentifierInfo we create a
new one as in the non-PTH case. If we do find and IdentifierInfo
in the PTHManager, we update the StringMapEntry to refer to it so
that the IdentifierInfo will be found on the next StringMap lookup.
This way we only do a binary search in the PTH file at most once
for a given IdentifierInfo. This greatly speeds things up for source
files containing a non-trivial amount of code.

Performance impact:
While these changes do add some extra indirection in
IdentifierTable to access an IdentifierInfo*, I saw speedups even
in the non-PTH case as well.

Non-PTH: For -fsyntax-only on Cocoa.h, we see a 6% speedup.
PTH (with Cocoa.h in token cache): 11% speedup.

I also did an experiment where we did -fsyntax-only on a source file
including a large header and Cocoa.h, but the token cache did not
contain the larger header. For this file, we were seeing a performance
*regression* when using PTH of 3% over non-PTH. Now we are seeing
a performance improvement of 9%!

Tests:
The serialization tests are now failing. I looked at this extensively,
and I my belief is that this change is unmasking a bug rather than
introducing a new one. I have disabled the serialization tests for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62636 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ea9c26b3dbd74a1497f5609ae6e19a85f42b6073 21-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix: <rdar://problem/6510344> [pth] PTH slows down regular lexer considerably (when it has substantial work)

Changes to IdentifierTable:
- High-level summary: StringMap never owns IdentifierInfos. It just
references them.
- The string map now has StringMapEntry<IdentifierInfo*> instead of
StringMapEntry<IdentifierInfo>. The IdentifierInfo object is
allocated using the same bump pointer allocator as used by the
StringMap.

Changes to IdentifierInfo:
- Added an extra pointer to point to the
StringMapEntry<IdentifierInfo*> in the string map. This pointer
will be null if the IdentifierInfo* is *only* used by the PTHLexer
(that is it isn't in the StringMap).

Algorithmic changes:
- Non-PTH case:
IdentifierInfo::get() will always consult the StringMap first to
see if we have an IdentifierInfo object. If that StringMapEntry
references a null pointer, we allocate a new one from the BumpPtrAllocator
and update the reference in the StringMapEntry.
- PTH case:
We do the same lookup as with the non-PTH case, but if we don't get
a hit in the StringMap we do a secondary lookup in the PTHManager for
the IdentifierInfo. If we don't find an IdentifierInfo we create a
new one as in the non-PTH case. If we do find and IdentifierInfo
in the PTHManager, we update the StringMapEntry to refer to it so
that the IdentifierInfo will be found on the next StringMap lookup.
This way we only do a binary search in the PTH file at most once
for a given IdentifierInfo. This greatly speeds things up for source
files containing a non-trivial amount of code.

Performance impact:
While these changes do add some extra indirection in
IdentifierTable to access an IdentifierInfo*, I saw speedups even
in the non-PTH case as well.

Non-PTH: For -fsyntax-only on Cocoa.h, we see a 6% speedup.
PTH (with Cocoa.h in token cache): 11% speedup.

I also did an experiment where we did -fsyntax-only on a source file
including a large header and Cocoa.h, but the token cache did not
contain the larger header. For this file, we were seeing a performance
*regression* when using PTH of 3% over non-PTH. Now we are seeing
a performance improvement of 9%!

Tests:
The serialization tests are now failing. I looked at this extensively,
and I my belief is that this change is unmasking a bug rather than
introducing a new one. I have disabled the serialization tests for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62636 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
75324939f58f0e711da23b15297d06049b42864f 20-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Provide a placement new taking an ASTContext argument.
This allows more concise syntax when allocating an object using the ASTContext's allocator.
Convert a few allocations to this operator to for test purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e91b3bc1624ec877862e5d276f1b6f5026fe71e3 20-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Provide a placement new taking an ASTContext argument.
This allows more concise syntax when allocating an object using the ASTContext's allocator.
Convert a few allocations to this operator to for test purposes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5c6139b3e9f4efa272ac9da4ec8200bc064975ba 20-Jan-2009 Chris Lattner <sabre@nondot.org> Fix a crash Anders' was seeing due to free'ing an invalid pointer
caused by my previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62613 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
1833a83368bda46b76388069e52b27f12e60dc9c 20-Jan-2009 Chris Lattner <sabre@nondot.org> Fix a crash Anders' was seeing due to free'ing an invalid pointer
caused by my previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62613 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e7d9270833ec75befe87f19ea54d238fc0ca3088 20-Jan-2009 Anders Carlsson <andersca@mac.com> Improvements to Sema of asm statements. Fixes <rdar://problem/6156893>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d9fca6e3950346ea503f92f27ed0f9d8edde9feb 20-Jan-2009 Anders Carlsson <andersca@mac.com> Improvements to Sema of asm statements. Fixes <rdar://problem/6156893>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e5f128a410e2779c528616a76e7cd4559ecd1249 20-Jan-2009 Steve Naroff <snaroff@apple.com> Allocate expresssions through ASTContext (still more work to do).
Add debug hook to DeclContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
0a4739305a984ef9b821cedad5f4fe235eb6ef7d 20-Jan-2009 Steve Naroff <snaroff@apple.com> Allocate expresssions through ASTContext (still more work to do).
Add debug hook to DeclContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
892d5db7ee1e942aa7fcdf441b7e0e23ff996cf2 20-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Improving on encoding of objective-c's property types. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
090b3f71702c5626d8520f9608d77c6f26dcfa15 20-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Improving on encoding of objective-c's property types. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
defaf41313d7f08484ccca659c500722ba5a8f2a 20-Jan-2009 Chris Lattner <sabre@nondot.org> Optimize Declarator to avoid malloc/free traffic for the argument list of a
function DeclaratorChunk in common cases. This uses a fixed array in
Declarator when it is small enough for the first function declarator chunk
in a declarator.

This eliminates all malloc/free traffic from DeclaratorChunk::getFunction
when running on Cocoa.h except for five functions: signal/bsd_signal/sigset,
which have multiple Function DeclChunk's, and
CFUUIDCreateWithBytes/CFUUIDGetConstantUUIDWithBytes, which take more than
16 arguments.

This patch was pair programmed with Steve.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62599 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
5af2f35c6ad1cb78b2aed3705d221954d1689b8a 20-Jan-2009 Chris Lattner <sabre@nondot.org> Optimize Declarator to avoid malloc/free traffic for the argument list of a
function DeclaratorChunk in common cases. This uses a fixed array in
Declarator when it is small enough for the first function declarator chunk
in a declarator.

This eliminates all malloc/free traffic from DeclaratorChunk::getFunction
when running on Cocoa.h except for five functions: signal/bsd_signal/sigset,
which have multiple Function DeclChunk's, and
CFUUIDCreateWithBytes/CFUUIDGetConstantUUIDWithBytes, which take more than
16 arguments.

This patch was pair programmed with Steve.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62599 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
9ac66d25bcaeb7594368dfe20def4174032d1c49 20-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Rename DeclContext::insert to DeclContext::makeDeclVisibleInContext and document both it and DeclContext::addDecl properly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62581 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
40f4e69002af9623a1f959bd57b99afda186a6a7 20-Jan-2009 Douglas Gregor <dgregor@apple.com> Rename DeclContext::insert to DeclContext::makeDeclVisibleInContext and document both it and DeclContext::addDecl properly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62581 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1d411123bee0cc2e08394f32a24c986a93424e65 20-Jan-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR3350: add special-casing for "references" to va_lists in
builtins.

Also, a minor tweak to va_copy for consistency.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
6597f985156b3a24c0a9db1e01eeec85714c4a8d 20-Jan-2009 Eli Friedman <eli.friedman@gmail.com> Fix for PR3350: add special-casing for "references" to va_lists in
builtins.

Also, a minor tweak to va_copy for consistency.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
f4006be67e6e90617340c7317831a803d006e443 20-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Remove the TopLevelDecls from TranslationUnit, since all of those decls are owned by the ASTContext's TranslationUnitDecl. There are definitely some leaking Decls now that I'll tackle tomorrow

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
00ad0ef8369ee65337ff29c8db3c1841a01102c4 20-Jan-2009 Douglas Gregor <dgregor@apple.com> Remove the TopLevelDecls from TranslationUnit, since all of those decls are owned by the ASTContext's TranslationUnitDecl. There are definitely some leaking Decls now that I'll tackle tomorrow

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
ff662f1910e027b708db1e6b3c21d0294e405d5b 20-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Fix Decl::NextDeclInScope access issue

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
0cba85577ae613bce5768f3089003629a46b0e7f 20-Jan-2009 Douglas Gregor <dgregor@apple.com> Fix Decl::NextDeclInScope access issue

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
af8ad2b4dcc1d03fec720ab2c20d9eaf4754e496 20-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Remove ScopedDecl, collapsing all of its functionality into Decl, so
that every declaration lives inside a DeclContext.

Moved several things that don't have names but were ScopedDecls (and,
therefore, NamedDecls) to inherit from Decl rather than NamedDecl,
including ObjCImplementationDecl and LinkageSpecDecl. Now, we don't
store empty DeclarationNames for these things, nor do we try to insert
them into DeclContext's lookup structure.

The serialization tests are temporarily disabled. We'll re-enable them
once we've sorted out the remaining ownership/serialiazation issues
between DeclContexts and TranslationUnion, DeclGroups, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/Stmt.h
ST/StmtIterator.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
4afa39deaa245592977136d367251ee2c173dd8d 20-Jan-2009 Douglas Gregor <dgregor@apple.com> Remove ScopedDecl, collapsing all of its functionality into Decl, so
that every declaration lives inside a DeclContext.

Moved several things that don't have names but were ScopedDecls (and,
therefore, NamedDecls) to inherit from Decl rather than NamedDecl,
including ObjCImplementationDecl and LinkageSpecDecl. Now, we don't
store empty DeclarationNames for these things, nor do we try to insert
them into DeclContext's lookup structure.

The serialization tests are temporarily disabled. We'll re-enable them
once we've sorted out the remaining ownership/serialiazation issues
between DeclContexts and TranslationUnion, DeclGroups, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62562 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/Stmt.h
ST/StmtIterator.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
f8e62a683f3ca1c571cb8a4c6b35b8e246fd0d16 20-Jan-2009 Ted Kremenek <kremenek@apple.com> Dead stores checker: Fix <rdar://problem/6506065> by being more selective when say that a store is dead even though the computed value is used in the enclosing expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
7f5fce7200fdbf03f7d70134a57271e584fcb766 20-Jan-2009 Ted Kremenek <kremenek@apple.com> Dead stores checker: Fix <rdar://problem/6506065> by being more selective when say that a store is dead even though the computed value is used in the enclosing expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
5457c5e9eb67e6f2974499ecd60f814456f15886 19-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert more expression actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62537 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b8a6aca87d07b22b257153ce0dfc92f78c8f8c1f 19-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert more expression actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62537 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c70e7d095b3944cb38f2e522c352e9f6a46faff3 19-Jan-2009 Ted Kremenek <kremenek@apple.com> Allocate Types using ASTContext's 'Allocator' object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62530 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
566c2ba743065ec090f5154d5c30cf593aa12a6e 19-Jan-2009 Ted Kremenek <kremenek@apple.com> Allocate Types using ASTContext's 'Allocator' object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62530 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
46fe06e7544e7cbe79b893fb028c3ecd45feec00 19-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Centralize error reporting of improper uses of incomplete types in the
new DiagnoseIncompleteType. It provides additional information about
struct/class/union/enum types when possible, either by pointing to the
forward declaration of that type or by pointing to the definition (if
we're in the process of defining that type).
Fixes <rdar://problem/6500531>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62521 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4ec339f43c0cae2678334850c90926bea10999c7 19-Jan-2009 Douglas Gregor <dgregor@apple.com> Centralize error reporting of improper uses of incomplete types in the
new DiagnoseIncompleteType. It provides additional information about
struct/class/union/enum types when possible, either by pointing to the
forward declaration of that type or by pointing to the definition (if
we're in the process of defining that type).
Fixes <rdar://problem/6500531>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62521 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d2e00178ab1c484976e339e3d0c2eab5a6e6f5a1 19-Jan-2009 Chris Lattner <sabre@nondot.org> rearrange SourceManager methods to group them by kind. Remove the
SourceManager::getFileCharacteristic(FileID) method: we need a
full location to know if it is a system header etc in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
06a062dc784c609b75dca15fd97f468d0d846596 19-Jan-2009 Chris Lattner <sabre@nondot.org> rearrange SourceManager methods to group them by kind. Remove the
SourceManager::getFileCharacteristic(FileID) method: we need a
full location to know if it is a system header etc in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62503 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
1737bd5b2ae87c2fe2d50868c2158f7f91516cf4 19-Jan-2009 Chris Lattner <sabre@nondot.org> Rename SourceManager::getCanonicalFileID -> getFileID. There is
no longer such thing as a non-canonical FileID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a11d61793341fea195c29a0dab3fbd74f2b39a8c 19-Jan-2009 Chris Lattner <sabre@nondot.org> Rename SourceManager::getCanonicalFileID -> getFileID. There is
no longer such thing as a non-canonical FileID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c69327fe19231ce503fb14100c4f79759aed9435 19-Jan-2009 Chris Lattner <sabre@nondot.org> remove the public SourceManager::getContentCacheForLoc method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2fa3ec888a980bf09e3d68435e227d3c4280bf70 19-Jan-2009 Chris Lattner <sabre@nondot.org> remove the public SourceManager::getContentCacheForLoc method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62497 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9b94e1bc3596363efdc356e70648efb92048f6ef 19-Jan-2009 Chris Lattner <sabre@nondot.org> remove the SourceManager:: and FullSourceLoc::getFileEntryForLoc methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62496 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
b21e5a0fdd9bd6e6c6885428798070f0a9f71295 19-Jan-2009 Chris Lattner <sabre@nondot.org> remove the SourceManager:: and FullSourceLoc::getFileEntryForLoc methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62496 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
71e443ac92dfcabc34e8c1a9ac12a7ab602b9d37 19-Jan-2009 Chris Lattner <sabre@nondot.org> SourceManager::getBufferData(SourceLocation) is dead, delete it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
31530bae788dea5c79e72a1f99a56c3f5c6aa36f 19-Jan-2009 Chris Lattner <sabre@nondot.org> SourceManager::getBufferData(SourceLocation) is dead, delete it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
10ea72bafb85f8f60f3547db54c7f9f990e821a3 19-Jan-2009 Chris Lattner <sabre@nondot.org> some minor cleanups to SourceManager, and eliminate the
SourceManager::getBuffer(SourceLocation) method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a90a4d4a0a365f991b92e925436ec63ef4969839 19-Jan-2009 Chris Lattner <sabre@nondot.org> some minor cleanups to SourceManager, and eliminate the
SourceManager::getBuffer(SourceLocation) method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62494 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a7ba6be203ba913685b68e20b44881f29ad5d8a1 19-Jan-2009 Chris Lattner <sabre@nondot.org> privatize getChunkID/getMacroID, and move operator< out of the class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
6fda54c19321673965536b0a8f7236f635cf9730 19-Jan-2009 Chris Lattner <sabre@nondot.org> privatize getChunkID/getMacroID, and move operator< out of the class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62493 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
c94da86aaca6deb9a1f4df716742b07c706159ea 19-Jan-2009 Chris Lattner <sabre@nondot.org> Make some enums in SourceLocation private, remove a useless assertion from ScratchBuffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
9ebac5e0dab6f99717e3ff169c45048966146b2e 19-Jan-2009 Chris Lattner <sabre@nondot.org> Make some enums in SourceLocation private, remove a useless assertion from ScratchBuffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62492 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
dd15342a0cf65ec7d208f5e54a0c9b0715e44800 19-Jan-2009 Chris Lattner <sabre@nondot.org> make a bunch of more SourceLocation methods private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62491 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
4d10ef18c32eae35be07e0d8d18b5ff485b4c5f9 19-Jan-2009 Chris Lattner <sabre@nondot.org> make a bunch of more SourceLocation methods private.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62491 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
e805eac7695261a12e342baeba4f8c0838369902 19-Jan-2009 Chris Lattner <sabre@nondot.org> Make SourceLocation::getFileLoc private to reduce the API exposure of
SourceLocation. This requires making some cleanups to token pasting
and _Pragma expansion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Lexer.h
bcc2a67e5180612417727cbdd8afd0f79fdf726d 19-Jan-2009 Chris Lattner <sabre@nondot.org> Make SourceLocation::getFileLoc private to reduce the API exposure of
SourceLocation. This requires making some cleanups to token pasting
and _Pragma expansion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62490 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Lexer.h
beae72d7a7e768056671c306300cf619d85a0c33 19-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ec0d7a6f4b0699cc9960e6d9fee0f957c64d1cf9 19-Jan-2009 Douglas Gregor <dgregor@apple.com> Fix a typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8b76997ec19a90aa0db4e90d50710cef86bf09f5 19-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert more expression actions to smart pointers.
Fix type of logical negation for C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62475 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0eb23307222bda7ad95d968eac4e1ab30864b213 19-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert more expression actions to smart pointers.
Fix type of logical negation for C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62475 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
cb8cc5b95fed5f810fe5e6a8e7ee31781ec81ddd 18-Jan-2009 Nuno Lopes <nunoplopes@sapo.pt> fix deallocation of FunctionDecl::ParamInfo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
460b0ac80382fa73337d21dd052c1f18b27435d8 18-Jan-2009 Nuno Lopes <nunoplopes@sapo.pt> fix deallocation of FunctionDecl::ParamInfo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cd883f7c200bba826ed89a41c89b1a125dd3f524 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a few expression actions to smart pointers.
These actions are extremely widely used (identifier expressions and literals); still no performance regression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62468 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
cd965b97cfac7b7a53a835810ec2bc2ac7a9dd1a 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a few expression actions to smart pointers.
These actions are extremely widely used (identifier expressions and literals); still no performance regression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62468 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6619aa5526772df85680044149a5b4f877a797ca 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Rename move_convert to move_arg and move_res. The new names are less misleading (and shorter).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62466 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
f512e82f56671b695a32d019103e62a302838b7e 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Rename move_convert to move_arg and move_res. The new names are less misleading (and shorter).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62466 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
b3860a7d4a4dae7a599dbd8ea6c4490b78cb3c01 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert ObjC statement actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62465 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
431e90e887c21c0d0d56fc12a2d359df8d53ea66 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert ObjC statement actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62465 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c6b86338be45f235c01f42bed1170b68a8c82bb7 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert asm statement action to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62464 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3037ed0a27dba62e522304183718efc149e8b6d9 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert asm statement action to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62464 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
539eb571e81a65adfb664dc712accc82afead0ae 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert more statement actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62463 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
4cffe2fd5c23168bc08f0453c684cbd3f79471d3 18-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert more statement actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62463 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c5583730748dda677bc22fdb6605fac1f235edbf 18-Jan-2009 Chris Lattner <sabre@nondot.org> Switch MinimalAction from new/delete'ing its TypeNameInfo to
allocating them from a recycling bump pointer allocator. This
reduces malloc/free traffic of parse-noop (but no other mode),
which makes sharking -parse-noop more meaningful.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62460 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e1ae1e910a169b62731be5019eab7e396f953fc4 18-Jan-2009 Chris Lattner <sabre@nondot.org> Switch MinimalAction from new/delete'ing its TypeNameInfo to
allocating them from a recycling bump pointer allocator. This
reduces malloc/free traffic of parse-noop (but no other mode),
which makes sharking -parse-noop more meaningful.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62460 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
cbcd26cd20950deadbf94383560b7f474ae239c1 18-Jan-2009 Chris Lattner <sabre@nondot.org> rearrange GetIdentifierInfo so that the fast path can be partially inlined into PTHLexer::Lex. This speeds up the user time of PTH -Eonly by another 2ms (4.4%)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62454 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
77ecb3a28f21496ecfdbb3d5f5b66b0d2abf48c9 18-Jan-2009 Chris Lattner <sabre@nondot.org> rearrange GetIdentifierInfo so that the fast path can be partially inlined into PTHLexer::Lex. This speeds up the user time of PTH -Eonly by another 2ms (4.4%)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62454 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
b2bbf06c67cea8cf482cd6bbabf5175d0b15a93b 18-Jan-2009 Chris Lattner <sabre@nondot.org> Avoid malloc thrashing on the std::vector for ConditionalStack. Because
there is one of these per header, this almost always gets alloc/free'd for
each #ifdef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62451 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
3a874a405d1913b132e4ecfa52e22c4e2264b05d 18-Jan-2009 Chris Lattner <sabre@nondot.org> Avoid malloc thrashing on the std::vector for ConditionalStack. Because
there is one of these per header, this almost always gets alloc/free'd for
each #ifdef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62451 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
f1791b0a471cd61641eca7f4c0815cdce2f105ea 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Eliminate tabs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62449 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/Action.h
4b4218f48fef71a179c5a8287dae281580faf52f 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Eliminate tabs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62449 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/Action.h
efb353440d5661ba924c82adfdbb38d2106d1b70 18-Jan-2009 Chris Lattner <sabre@nondot.org> switch PTH lexer from using "const char*"s to "const unsigned char*"s
internally. This is just a cleanup that reduces the need to cast to
unsigned char before assembling a larger integer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62442 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
da9d61c96c412f6babc7f824152609562f302388 18-Jan-2009 Chris Lattner <sabre@nondot.org> switch PTH lexer from using "const char*"s to "const unsigned char*"s
internally. This is just a cleanup that reduces the need to cast to
unsigned char before assembling a larger integer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62442 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
b5c856952c206e629257552bc453cfa3975eb800 18-Jan-2009 Anders Carlsson <andersca@mac.com> Add sema support for symbolic names in inline asm statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
42e1ee0702d8267d632df0fdb5c479a582877c6f 18-Jan-2009 Anders Carlsson <andersca@mac.com> Add sema support for symbolic names in inline asm statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62441 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1486b507eb8b13d3cc77b42a32395a811c5c962e 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Update support for vector component access on ExtVectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62440 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
353417af9d254d4fd0eb7d0a3ff71c4d8594ac58 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Update support for vector component access on ExtVectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62440 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c45d4e8bd9e99916f106b901a74f3c56c71b6c50 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Add support for vectors to APValue. Vector constant evaluator and tests coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62438 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
3d309f9d62a6f9f634b869937139d533ccd7265b 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Add support for vectors to APValue. Vector constant evaluator and tests coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62438 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
5738547dc1aee87a6f35c0f83daf861826222fb6 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Remove outdated diagnostic. Tests are coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
334a802eeb5acb959f99b8227ee995725b2624aa 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Remove outdated diagnostic. Tests are coming.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62437 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2aaa0a0c99d5288309144eee09e9247cea6c3df5 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Allow targets to override IntMaxTWidth


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
22b9d5a1fd9067785b62d9237bae6ee2a9b40afc 18-Jan-2009 Nate Begeman <natebegeman@mac.com> Allow targets to override IntMaxTWidth


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62434 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
7b49cec50220b69d83616aea2d5da3ce049611a0 18-Jan-2009 Anders Carlsson <andersca@mac.com> Change TargetInfo::validateInputConstraint to take begin/end name iterators instead of the number of outputs. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/TargetInfo.h
45b050e72d058131e6f169fe54888bb91a003fb5 18-Jan-2009 Anders Carlsson <andersca@mac.com> Change TargetInfo::validateInputConstraint to take begin/end name iterators instead of the number of outputs. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/TargetInfo.h
8f314559e532befc799289ab9b554af1f92baf29 18-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose that property name cannot be a bitfield


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62432 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
573acde1db5cb3e216e3d63fee173230834093d8 18-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose that property name cannot be a bitfield


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62432 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7b4695fff245e34f9503e1654b8310f788c1bb41 17-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose when method parameter is an object.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
9bae5e7af04e44b4d333a2c7ba22608d0594ff9f 17-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Diagnose when method parameter is an object.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
10aaf53ac6464331d773706c1c66f5cc00e44817 17-Jan-2009 Chris Lattner <sabre@nondot.org> Rename SourceLocation::getFileID to getChunkID, because it returns
the chunk ID not the file ID. This exposes problems in
TextDiagnosticPrinter where it should have been using the canonical
file ID but wasn't. Fix these along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62427 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
river/TextDiagnosticPrinter.h
3b4d5e955e819dd3a4bed37ea2e47d6e4cb05274 17-Jan-2009 Chris Lattner <sabre@nondot.org> Rename SourceLocation::getFileID to getChunkID, because it returns
the chunk ID not the file ID. This exposes problems in
TextDiagnosticPrinter where it should have been using the canonical
file ID but wasn't. Fix these along the way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62427 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
river/TextDiagnosticPrinter.h
cef77824d56ba0b02ab010076b03ebe2be938b40 17-Jan-2009 Chris Lattner <sabre@nondot.org> Change the Lexer ctor used to lex _Pragma directives into a static factory
method. This lets us clean up the interface and make it more obvious that
this method is *really really* _Pragma specific.

Note that _Pragma handling uglifies the Lexer in the critical path. It would
be very interesting to consider making _Pragma remapping be a new special
lexer class of its own.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62425 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
42e00d19b0dac64732eb5449d52a076282fcbf77 17-Jan-2009 Chris Lattner <sabre@nondot.org> Change the Lexer ctor used to lex _Pragma directives into a static factory
method. This lets us clean up the interface and make it more obvious that
this method is *really really* _Pragma specific.

Note that _Pragma handling uglifies the Lexer in the critical path. It would
be very interesting to consider making _Pragma remapping be a new special
lexer class of its own.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62425 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
3c727d6a1cb1d4fd85e362d5fcbf93e0c2460930 17-Jan-2009 Chris Lattner <sabre@nondot.org> simplify PTHManager::CreateLexer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62424 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
f056d92e182cbe4f62c8d14102544dc38066dabc 17-Jan-2009 Chris Lattner <sabre@nondot.org> simplify PTHManager::CreateLexer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62424 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
5df086fdd364e7223773f719d1a02475d5360c53 17-Jan-2009 Chris Lattner <sabre@nondot.org> Change the Lexer ctor used in the non _Pragma case to take a FileID instead
of a SourceLocation. This should speed it up and definitely simplifies it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62422 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
88d3ac1341aa016cabd966c5b113a95ac05ea43f 17-Jan-2009 Chris Lattner <sabre@nondot.org> Change the Lexer ctor used in the non _Pragma case to take a FileID instead
of a SourceLocation. This should speed it up and definitely simplifies it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62422 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
54edb96eae5fcd6c09fe5a869ea24ca2b7e75f0c 17-Jan-2009 Chris Lattner <sabre@nondot.org> More simplifications to the lexer ctors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62419 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
0770dabb1ae81a2a9c2e7199262067103062a0b3 17-Jan-2009 Chris Lattner <sabre@nondot.org> More simplifications to the lexer ctors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62419 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ded7b32788c1093191fd4e14b3c073de6c6e8a45 17-Jan-2009 Chris Lattner <sabre@nondot.org> make the verbose raw-lexer ctor fully explicit instead of having
embedded magic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62417 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
de96c0f29c4cacabe6ea577c61db87c2a85aea6c 17-Jan-2009 Chris Lattner <sabre@nondot.org> make the verbose raw-lexer ctor fully explicit instead of having
embedded magic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62417 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
c7b23595cb9ffc38bc2490f85e9f5d1df6bf9d97 17-Jan-2009 Chris Lattner <sabre@nondot.org> add a simplified lexer ctor that sets up the lexer to raw-lex an
entire file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62414 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
025c3a66402fb713c2d9bf5dc174ff264765379a 17-Jan-2009 Chris Lattner <sabre@nondot.org> add a simplified lexer ctor that sets up the lexer to raw-lex an
entire file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62414 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9bb53675aa4bf7c9a7ba29485df081558b6bd796 17-Jan-2009 Chris Lattner <sabre@nondot.org> refactor some common initialization code out of the two lexer ctors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62411 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
22d91ca8d7c134eac5cc6a4869e6a84c461ad624 17-Jan-2009 Chris Lattner <sabre@nondot.org> refactor some common initialization code out of the two lexer ctors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62411 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
e7fc9627348711f86b0392f3201f5d7e7c1e6c55 17-Jan-2009 Chris Lattner <sabre@nondot.org> suck the call to "getSpellingLoc" that all clients do into
the implementation of PTHManager::getSpelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62408 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6b7b84036126a8f2a3e312cfec0a9a4f8ae9d8ed 17-Jan-2009 Chris Lattner <sabre@nondot.org> suck the call to "getSpellingLoc" that all clients do into
the implementation of PTHManager::getSpelling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62408 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f4f776a489cfcf4fda9a8c6a16329c7a1f726561 17-Jan-2009 Chris Lattner <sabre@nondot.org> this massive patch introduces a simple new abstraction: it makes
"FileID" a concept that is now enforced by the compiler's type checker
instead of yet-another-random-unsigned floating around.

This is an important distinction from the "FileID" currently tracked by
SourceLocation. *That* FileID may refer to the start of a file or to a
chunk within it. The new FileID *only* refers to the file (and its
#include stack and eventually #line data), it cannot refer to a chunk.

FileID is a completely opaque datatype to all clients, only SourceManager
is allowed to poke and prod it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ewrite/HTMLRewrite.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
2b2453a7d8fe732561795431f39ceb2b2a832d84 17-Jan-2009 Chris Lattner <sabre@nondot.org> this massive patch introduces a simple new abstraction: it makes
"FileID" a concept that is now enforced by the compiler's type checker
instead of yet-another-random-unsigned floating around.

This is an important distinction from the "FileID" currently tracked by
SourceLocation. *That* FileID may refer to the start of a file or to a
chunk within it. The new FileID *only* refers to the file (and its
#include stack and eventually #line data), it cannot refer to a chunk.

FileID is a completely opaque datatype to all clients, only SourceManager
is allowed to poke and prod it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/PTHLexer.h
ex/PTHManager.h
ex/Preprocessor.h
ex/PreprocessorLexer.h
ex/ScratchBuffer.h
ewrite/HTMLRewrite.h
ewrite/Rewriter.h
ewrite/TokenRewriter.h
ac49bb4836894b75d0dc2f6fb2703ed7a8d9ff35 17-Jan-2009 Chris Lattner <sabre@nondot.org> make "ContentCache::Buffer" mutable to avoid a const_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
05816591ec488a933dfecc9ff9f3cbf3c32767c2 17-Jan-2009 Chris Lattner <sabre@nondot.org> make "ContentCache::Buffer" mutable to avoid a const_cast.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62403 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ef63fd52b67e83143de8c6f48d1571deff360ced 17-Jan-2009 Chris Lattner <sabre@nondot.org> Instead of iterating over FileID's, have PTH generation iterate over the
content cache directly. Content cache has a 1-1 mapping with fileentries,
whereas multiple FileIDs can be the same FileEntry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62401 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c6fe32a91c7372caf09152ee31a24c4b5d24deed 17-Jan-2009 Chris Lattner <sabre@nondot.org> Instead of iterating over FileID's, have PTH generation iterate over the
content cache directly. Content cache has a 1-1 mapping with fileentries,
whereas multiple FileIDs can be the same FileEntry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62401 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
72de8493647493a81b3d73d39369e5231393a1d5 17-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Warn about typedefs of enums without any declarator name. Fixes rdar://problem/6503878

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62397 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8158f692571ba5eaae19e086b76d19319ac503c5 17-Jan-2009 Douglas Gregor <dgregor@apple.com> Warn about typedefs of enums without any declarator name. Fixes rdar://problem/6503878

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62397 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
98b275417eab0af35ba0bf0d7dbd89253c710f3c 17-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Teach DeclContext how to find the primary declaration for any TagDecl
even when we are still defining the TagDecl. This is required so that
qualified name lookup of a class name within its definition works (see
the new bits in test/SemaCXX/qualified-id-lookup.cpp).

As part of this, move the nested redefinition checking code into
ActOnTag. This gives us diagnostics earlier (when we try to perform
the nested redefinition, rather than when we try to complete the 2nd
definition) and removes some code duplication.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Type.h
asic/SourceLocation.h
arse/Action.h
0b7a158d120ac8d78c114a823e17eedfec6b6658 17-Jan-2009 Douglas Gregor <dgregor@apple.com> Teach DeclContext how to find the primary declaration for any TagDecl
even when we are still defining the TagDecl. This is required so that
qualified name lookup of a class name within its definition works (see
the new bits in test/SemaCXX/qualified-id-lookup.cpp).

As part of this, move the nested redefinition checking code into
ActOnTag. This gives us diagnostics earlier (when we try to perform
the nested redefinition, rather than when we try to complete the 2nd
definition) and removes some code duplication.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Type.h
asic/SourceLocation.h
arse/Action.h
19c74d3a0fb0dfe747c2d03f5d48f8c17ac8d927 17-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more statement actions to smart pointers.
Fix a type error; parser wanted to pass the third part of a for-statement as a statement; should be expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62380 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f05b1520d6f175acbfc3913489f4dfa842875ec4 17-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more statement actions to smart pointers.
Fix a type error; parser wanted to pass the third part of a for-statement as a statement; should be expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62380 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a9bf63bb775d21abbc74e908b48dab32c00219b4 17-Jan-2009 Chris Lattner <sabre@nondot.org> eliminate FullSourceLoc::getLocation() now that FullSourceLoc
*is* the location. This eliminates some weird X.getLocation().getLocation()'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
59ddeabc4c0aa2fdeef5a9183e8af69db07b5e74 17-Jan-2009 Chris Lattner <sabre@nondot.org> eliminate FullSourceLoc::getLocation() now that FullSourceLoc
*is* the location. This eliminates some weird X.getLocation().getLocation()'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62376 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
438f939575eadda9724fe897c03328cdad1f0f81 17-Jan-2009 Chris Lattner <sabre@nondot.org> Make FullSourceLoc derive from SourceLocation instead of
containing one. Containment is generally better than derivation,
but in this case FullSourceLoc really 'isa' SourceLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
a50bd54164393ca3cd08016e7099bdeb531b5014 17-Jan-2009 Chris Lattner <sabre@nondot.org> Make FullSourceLoc derive from SourceLocation instead of
containing one. Containment is generally better than derivation,
but in this case FullSourceLoc really 'isa' SourceLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62375 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
6bca88b965b3d7a96bb97a86d93d8fdefa1d90c2 16-Jan-2009 Chris Lattner <sabre@nondot.org> elimiante FullSourceLoc::getCanonicalFileID



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62374 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
4abb87ef149b98b5762eadaaf10c1ccf35dc7c41 16-Jan-2009 Chris Lattner <sabre@nondot.org> elimiante FullSourceLoc::getCanonicalFileID



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62374 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
eccf95e552de02358e391977821137c3ecdba0d3 16-Jan-2009 Chris Lattner <sabre@nondot.org> remove FullSourceLoc::isFileID


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
0cf7bb937d5ed21118eeb45a93eb916723cc75a1 16-Jan-2009 Chris Lattner <sabre@nondot.org> remove FullSourceLoc::isFileID


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62371 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
5ac8ffadad9f47686a75f8014cc389d1409bed96 16-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Fix <rdar://problem/6502934>. We were creating an ImplicitCastExpr
with reference type (it should be an lvalue with non-reference type).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62345 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
66b947fdf9104b53d7e8caa8f71ee0c0e3fe1521 16-Jan-2009 Douglas Gregor <dgregor@apple.com> Fix <rdar://problem/6502934>. We were creating an ImplicitCastExpr
with reference type (it should be an lvalue with non-reference type).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62345 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1055b4fa2aa68e11ab80e0f907d41ab971f88d56 16-Jan-2009 Chris Lattner <sabre@nondot.org> Improve #pragma comment support by building the string argument and
notifying PPCallbacks about it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62333 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
a9d9145741ef77db45890911674705b81605b10b 16-Jan-2009 Chris Lattner <sabre@nondot.org> Improve #pragma comment support by building the string argument and
notifying PPCallbacks about it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62333 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PPCallbacks.h
9eaf2b7d18d5ebf778dcd478c051e1a9b7edd137 16-Jan-2009 Chris Lattner <sabre@nondot.org> minor cleanups to StringLiteralParser: no need to pass target info
into its ctor. Also, make it handle validity checking of pascal
strings instead of making clients do it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62332 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
bbee00b6456e90a09f63c83c20233e6c5ad6000a 16-Jan-2009 Chris Lattner <sabre@nondot.org> minor cleanups to StringLiteralParser: no need to pass target info
into its ctor. Also, make it handle validity checking of pascal
strings instead of making clients do it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62332 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
861e79049d4d463c4c5d04a422a7eaf50243ea7d 16-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Part one of handling C++ functional casts. This handles semantic
analysis and AST-building for the cases where we have N != 1
arguments. For N == 1 arguments, we need to finish the C++
implementation of explicit type casts (C++ [expr.cast]).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
506ae418eb171d072f2fb4f6bc46d258b52cbf97 16-Jan-2009 Douglas Gregor <dgregor@apple.com> Part one of handling C++ functional casts. This handles semantic
analysis and AST-building for the cases where we have N != 1
arguments. For N == 1 arguments, we need to finish the C++
implementation of explicit type casts (C++ [expr.cast]).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
146c567ca7dea1044931a781ccf3c5234a253398 16-Jan-2009 Chris Lattner <sabre@nondot.org> Implement basic support for parsing #pragma comment, a microsoft extension
documented here:
http://msdn.microsoft.com/en-us/library/7f0aews7(VS.80).aspx

This is according to my understanding reading the docs, I don't know if it
really agrees fully with what VC++ allows.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
636c5ef6572e899d36cec1b0023fb28ba65189e1 16-Jan-2009 Chris Lattner <sabre@nondot.org> Implement basic support for parsing #pragma comment, a microsoft extension
documented here:
http://msdn.microsoft.com/en-us/library/7f0aews7(VS.80).aspx

This is according to my understanding reading the docs, I don't know if it
really agrees fully with what VC++ allows.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62317 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
18c8dc0eedcdf7c81028c1e29d001fd331a99a4c 16-Jan-2009 Chris Lattner <sabre@nondot.org> more SourceLocation lexicon change: instead of referring to the
"logical" location, refer to the "instantiation" location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
f7cf85b330bedd2877e1371fb0a83e99751ae162 16-Jan-2009 Chris Lattner <sabre@nondot.org> more SourceLocation lexicon change: instead of referring to the
"logical" location, refer to the "instantiation" location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
74f6701b77493fb60c98ac036e8a24eddaa6219b 16-Jan-2009 Chris Lattner <sabre@nondot.org> rename "virtual location" of a macro to "instantiation location".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
88054dee0402e4d3c1f64e6b697acc47195c0d72 16-Jan-2009 Chris Lattner <sabre@nondot.org> rename "virtual location" of a macro to "instantiation location".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
fd5f14340189da032be0af550199c039c8709ff3 16-Jan-2009 Chris Lattner <sabre@nondot.org> rename PP::getPhysicalCharacterAt -> PP::getSpelledCharacterAt.
Slightly speed up sema of numbers like '1' by going directly to
TargetInfo instead of through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62314 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0c21e84b82191ae1c4d04444a84008c464433868 16-Jan-2009 Chris Lattner <sabre@nondot.org> rename PP::getPhysicalCharacterAt -> PP::getSpelledCharacterAt.
Slightly speed up sema of numbers like '1' by going directly to
TargetInfo instead of through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62314 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
cdf600ee2c48a0299a0bc15da479b6a818c997ed 16-Jan-2009 Chris Lattner <sabre@nondot.org> Change some terminology in SourceLocation: instead of referring to
the "physical" location of tokens, refer to the "spelling" location.
This is more concrete and useful, tokens aren't really physical objects!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62309 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Preprocessor.h
df7c17a8d02fe09a3466786bae3e40fc3252687a 16-Jan-2009 Chris Lattner <sabre@nondot.org> Change some terminology in SourceLocation: instead of referring to
the "physical" location of tokens, refer to the "spelling" location.
This is more concrete and useful, tokens aren't really physical objects!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62309 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Preprocessor.h
b9ef055f4db55de642f2873343654efb6eaaaf9e 16-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Improve diagnostics for ambiguous name lookup results

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4dc6b1c81c5efbaf68b868df10b18466b5e14b34 16-Jan-2009 Douglas Gregor <dgregor@apple.com> Improve diagnostics for ambiguous name lookup results

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62287 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d976c3d889dc90b684c4a3fbdbe975e525db6c4f 15-Jan-2009 Ted Kremenek <kremenek@apple.com> IdentifierInfo:
- IdentifierInfo can now (optionally) have its string data not be
co-located with itself. This is for use with PTH. This aspect is a
little gross, as getName() and getLength() now make assumptions
about a possible alternate representation of IdentifierInfo.
Perhaps we should make IdentifierInfo have virtual methods?

IdentifierTable:
- Added class "IdentifierInfoLookup" that can be used by
IdentifierTable to perform "string -> IdentifierInfo" lookups using
an auxilliary data structure. This is used by PTH.
- Perform tests show that IdentifierTable::get() does not slow down
because of the extra check for the IdentiferInfoLookup object (the
regular StringMap lookup does enough work to mitigate the impact of
an extra null pointer check).
- The upshot is that now that some IdentifierInfo objects might be
owned by the IdentiferInfoLookup object. This should be reviewed.

PTH:
- Modified PTHManager::GetIdentifierInfo to *not* insert entries in
IdentifierTable's string map, and instead create IdentifierInfo
objects on the fly when mapping from persistent IDs to
IdentifierInfos. This saves a ton of work with string copies,
hashing, and StringMap lookup and resizing. This change was
motivated because when processing source files in the PTH cache we
don't need to do any string -> IdentifierInfo lookups.
- PTHManager now subclasses IdentifierInfoLookup, allowing clients of
IdentifierTable to transparently use IdentifierInfo objects managed
by the PTH file. PTHManager resolves "string -> IdentifierInfo"
queries by doing a binary search over a sorted table of identifier
strings in the PTH file (the exact algorithm we use can be changed
as needed).

These changes lead to the following performance changes when using PTH on Cocoa.h:
- fsyntax-only: 10% performance improvement
- Eonly: 30% performance improvement


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/PTHManager.h
ex/Preprocessor.h
72b1b15ee88aac0a63e2c1dc53fe22f5ab297b20 15-Jan-2009 Ted Kremenek <kremenek@apple.com> IdentifierInfo:
- IdentifierInfo can now (optionally) have its string data not be
co-located with itself. This is for use with PTH. This aspect is a
little gross, as getName() and getLength() now make assumptions
about a possible alternate representation of IdentifierInfo.
Perhaps we should make IdentifierInfo have virtual methods?

IdentifierTable:
- Added class "IdentifierInfoLookup" that can be used by
IdentifierTable to perform "string -> IdentifierInfo" lookups using
an auxilliary data structure. This is used by PTH.
- Perform tests show that IdentifierTable::get() does not slow down
because of the extra check for the IdentiferInfoLookup object (the
regular StringMap lookup does enough work to mitigate the impact of
an extra null pointer check).
- The upshot is that now that some IdentifierInfo objects might be
owned by the IdentiferInfoLookup object. This should be reviewed.

PTH:
- Modified PTHManager::GetIdentifierInfo to *not* insert entries in
IdentifierTable's string map, and instead create IdentifierInfo
objects on the fly when mapping from persistent IDs to
IdentifierInfos. This saves a ton of work with string copies,
hashing, and StringMap lookup and resizing. This change was
motivated because when processing source files in the PTH cache we
don't need to do any string -> IdentifierInfo lookups.
- PTHManager now subclasses IdentifierInfoLookup, allowing clients of
IdentifierTable to transparently use IdentifierInfo objects managed
by the PTH file. PTHManager resolves "string -> IdentifierInfo"
queries by doing a binary search over a sorted table of identifier
strings in the PTH file (the exact algorithm we use can be changed
as needed).

These changes lead to the following performance changes when using PTH on Cocoa.h:
- fsyntax-only: 10% performance improvement
- Eonly: 30% performance improvement


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62273 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/PTHManager.h
ex/Preprocessor.h
27b33952a3df9f60f9de6a2c6d20ccebc0d0149e 15-Jan-2009 Seo Sanghyeon <sanxiyn@gmail.com> PR2746: Implement GCC cast to union extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
eff2cd58a897379c7fc46e83447d4619d6f6e9ca 15-Jan-2009 Seo Sanghyeon <sanxiyn@gmail.com> PR2746: Implement GCC cast to union extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62255 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
29dfa2f9174742d4ca1a4bfbb74e615eeddb497c 15-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of member name lookup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7176fff961e04c4dff61efb967b1d344d41335a7 15-Jan-2009 Douglas Gregor <dgregor@apple.com> Initial implementation of member name lookup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62247 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6214d8a05f448cccc9aa9dd7b3b00c274013d75d 14-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce support for C++0x explicit conversion operators (N2437)

Small cleanup in the handling of user-defined conversions.

Also, implement an optimization when constructing a call. We avoid
recomputing implicit conversion sequences and instead use those
conversion sequences that we computed as part of overload resolution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
09f41cf63f4df0bf4e98ee473e44e9a95b68f0ff 14-Jan-2009 Douglas Gregor <dgregor@apple.com> Introduce support for C++0x explicit conversion operators (N2437)

Small cleanup in the handling of user-defined conversions.

Also, implement an optimization when constructing a call. We avoid
recomputing implicit conversion sequences and instead use those
conversion sequences that we computed as part of overload resolution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
172e06da3e1af52c97069c81acb08ce4592e1ba9 14-Jan-2009 Steve Naroff <snaroff@apple.com> Add a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
be63802d1efe52697f49aafea49a5028b30b0aff 14-Jan-2009 Steve Naroff <snaroff@apple.com> Add a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8494c967ba170c792681ba6b64ffe8ad61a8b6ff 14-Jan-2009 Ted Kremenek <kremenek@apple.com> FunctionDecl::setParams() now uses the allocator associated with ASTContext to allocate the array of ParmVarDecl*'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
fc767615bc67d3a7587b1fb2e0494c32c9dbd7a5 14-Jan-2009 Ted Kremenek <kremenek@apple.com> FunctionDecl::setParams() now uses the allocator associated with ASTContext to allocate the array of ParmVarDecl*'s.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
82f549690d7edcdffe624a166bea4357df78dfe4 14-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Implemenent objective-c's NSObject attribute as a way of ddeclaraing c-type
objects as an objective-c object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62197 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
fa23c1d9adc99c662c1c0e192817185809d95614 14-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Implemenent objective-c's NSObject attribute as a way of ddeclaraing c-type
objects as an objective-c object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62197 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
dbde2284818a4085a59ef1a45ece0709f81c04e5 14-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH:
- Use canonical FileID when using getSpelling() caching. This
addresses some cache misses we were seeing with -fsyntax-only on
Cocoa.h
- Added Preprocessor::getPhysicalCharacterAt() utility method for
clients to grab the first character at a specified sourcelocation.
This uses the PTH spelling cache.
- Modified Sema::ActOnNumericConstant() to use
Preprocessor::getPhysicalCharacterAt() instead of
SourceManager::getCharacterData() (to get PTH hits).

These changes cause -fsyntax-only to not page in any sources from
Cocoa.h. We see a speedup of 27%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62193 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
28396608ec20d44e9d1470e1ea51689bb504d0de 14-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH:
- Use canonical FileID when using getSpelling() caching. This
addresses some cache misses we were seeing with -fsyntax-only on
Cocoa.h
- Added Preprocessor::getPhysicalCharacterAt() utility method for
clients to grab the first character at a specified sourcelocation.
This uses the PTH spelling cache.
- Modified Sema::ActOnNumericConstant() to use
Preprocessor::getPhysicalCharacterAt() instead of
SourceManager::getCharacterData() (to get PTH hits).

These changes cause -fsyntax-only to not page in any sources from
Cocoa.h. We see a speedup of 27%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62193 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
80c720e111fb7c3e9f939bde477bccced7a77a23 14-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Permitting typedefs without a name is a Microsoft/GNU extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ee159c14c1ac99d7944645e2b111b04dca089855 14-Jan-2009 Douglas Gregor <dgregor@apple.com> Permitting typedefs without a name is a Microsoft/GNU extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62192 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2106942de5a260754e5aa1161e82143b456a3f71 13-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH: Fix remaining cases where the spelling cache in the PTH file was being missed when it shouldn't. This shaves another 7% off PTH time for -Eonly on Cocoa.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62186 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
f02f6f0ee3e05b958bcf67f00f4503671d67eccd 13-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH: Fix remaining cases where the spelling cache in the PTH file was being missed when it shouldn't. This shaves another 7% off PTH time for -Eonly on Cocoa.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62186 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
f18783ed9d00b74377fd9e9d3fb642ae16e187d8 13-Jan-2009 Chris Lattner <sabre@nondot.org> use a slightly more sensible position for an array ref's "getExprLoc"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62182 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5cd9d6daf3acd4cc87fecebd81d9495b9e4ba9cd 13-Jan-2009 Chris Lattner <sabre@nondot.org> use a slightly more sensible position for an array ref's "getExprLoc"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62182 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
62da645073b2cd56a17a033d2dc52d645bc0b840 13-Jan-2009 Argiris Kirtzidis <akyrtzi@gmail.com> DeclContext::KindTrait was not meant to be used outside of DeclContext::CastTo (causes compilation error on MSVC).
Add DeclContext::getDeclKind() and use that instead of DeclContext::KindTrait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
9b9ca01ff3136a7539dc08a4c4e1a3dd8c8d3a7d 13-Jan-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> DeclContext::KindTrait was not meant to be used outside of DeclContext::CastTo (causes compilation error on MSVC).
Add DeclContext::getDeclKind() and use that instead of DeclContext::KindTrait.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
fde627e5a8988f8b26ee651d893416814fec5134 13-Jan-2009 Anders Carlsson <andersca@mac.com> Warn when someone tries to pass a variable with a non-POD type to a varargs function/method/block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
906fed0fb54a338961aba3aa54802b7d68de94c7 13-Jan-2009 Anders Carlsson <andersca@mac.com> Warn when someone tries to pass a variable with a non-POD type to a varargs function/method/block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
16354a40c20182c2c174aeb65f3a1605f5941e88 13-Jan-2009 Ted Kremenek <kremenek@apple.com> static analyzer: Handle casts from arrays to integers. This fixes PR 3297.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62130 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
e1c2a675e0c089e1f53cbd55d2197a8beaa852ae 13-Jan-2009 Ted Kremenek <kremenek@apple.com> static analyzer: Handle casts from arrays to integers. This fixes PR 3297.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62130 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
03b2ad28d67ed14e2203eb1e92ce042f63182bcd 13-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Cleanup DeclContext::addDecl and DeclContext::insert interface, from Piotr Rak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
482b77d1cb4ca08391d1f749436f092a4cc24427 13-Jan-2009 Douglas Gregor <dgregor@apple.com> Cleanup DeclContext::addDecl and DeclContext::insert interface, from Piotr Rak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62122 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
0d64d359d6024259a8703990ac6c0e1afa53e7e3 12-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix crasher due to use-after-release: DeclContext now owns all ObjCMethodDecls, and shouldn't be released elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ee49d0496bb8ff2bbf479bb7fbcfbdc71eed7461 12-Jan-2009 Ted Kremenek <kremenek@apple.com> Fix crasher due to use-after-release: DeclContext now owns all ObjCMethodDecls, and shouldn't be released elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b748fc51475dd9336219fb05401ac936edaa8c58 12-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Implement support for anonymous structs and unions in C. Both C and
C++ handle anonymous structs/unions in the same way. Addresses several
bugs:

<rdar://problem/6259534>
<rdar://problem/6481130>
<rdar://problem/6483159>

The test case in PR clang/1750 now passes with -fsyntax-only, but
CodeGen for inline assembler still fails.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4920f1ffb62b13b88e579476803c093f97f3e17f 12-Jan-2009 Douglas Gregor <dgregor@apple.com> Implement support for anonymous structs and unions in C. Both C and
C++ handle anonymous structs/unions in the same way. Addresses several
bugs:

<rdar://problem/6259534>
<rdar://problem/6481130>
<rdar://problem/6483159>

The test case in PR clang/1750 now passes with -fsyntax-only, but
CodeGen for inline assembler still fails.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62112 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f96ee9e9b146493eb2fcc55ba45dfeebe8241ac7 12-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to supprt case of readonly property being
assigned to when it has user declared setter method
defined in the class implementation (but no declaration in
the class itself).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d1fa6449e9dbdd667466e9e1e971aa17c9793e8a 12-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Patch to supprt case of readonly property being
assigned to when it has user declared setter method
defined in the class implementation (but no declaration in
the class itself).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dcf1e8426517ad33f1f849708ae5c95d4040e4a7 11-Jan-2009 Steve Naroff <snaroff@apple.com> Convert property implementation to DeclContext::addDecl().
This completes the ObjCContainerDecl AST cleanup (for now).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
93983f8fa120330bf212bfde7e65da2709fb3be8 11-Jan-2009 Steve Naroff <snaroff@apple.com> Convert property implementation to DeclContext::addDecl().
This completes the ObjCContainerDecl AST cleanup (for now).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
56af200f216eac5e1e4ac579fa3321c4b20f404f 11-Jan-2009 Steve Naroff <snaroff@apple.com> A few property related cleanups to ObjCContainerDecl AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6327e0d55c590b3c2766fa76ef1db241a0467df2 11-Jan-2009 Steve Naroff <snaroff@apple.com> A few property related cleanups to ObjCContainerDecl AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2437ec62d40cbe0d3a48f5219a2ecddeb3dae89f 11-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more actions to smart pointers.
No performance regression in my basic test.
Also fixed a type error in ActOnFinishSwitchStmt's arguments (body is a stmt).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62032 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
de307473448fb3cebcb4c10090728300b53bca03 11-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more actions to smart pointers.
No performance regression in my basic test.
Also fixed a type error in ActOnFinishSwitchStmt's arguments (body is a stmt).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62032 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a2d4d283094987b494293c04b3066eaa4dc0cf83 10-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> add a bunch of castToDeclContext/castFromDeclContext methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d2685209293a54fc2d888353c1fb839dcde616ef 10-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> add a bunch of castToDeclContext/castFromDeclContext methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
e575b0e2cc586417b53cdc04205f52a9a440fd1a 10-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> add castToDeclContext/castFromDeclContext methods to RecordDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62026 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e58336400c9bea6daa4e4038ec71a61bf430dd0b 10-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> add castToDeclContext/castFromDeclContext methods to RecordDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62026 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cab994dc1257be8fa17ed928f58cd85bc5af93a7 09-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> When we see a reference to a struct, class, or union like "struct X"
that is neither a definition nor a forward declaration and where X has
not yet been declared as a tag, introduce a declaration
into the appropriate scope (which is likely *not* to be the current
scope). The rules for the placement of the declaration differ slightly
in C and C++, so we implement both and test the various corner
cases. This implementation isn't 100% correct due to some lingering
issues with the function prototype scope (for a function parameter
list) not being the same scope as the scope of the function
definition. Testcase is FIXME'd; this probably isn't an important issue.

Addresses <rdar://problem/6484805>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Scope.h
3218c4bb3b5d7250f12420de6db7ef3e3f805a75 09-Jan-2009 Douglas Gregor <dgregor@apple.com> When we see a reference to a struct, class, or union like "struct X"
that is neither a definition nor a forward declaration and where X has
not yet been declared as a tag, introduce a declaration
into the appropriate scope (which is likely *not* to be the current
scope). The rules for the placement of the declaration differ slightly
in C and C++, so we implement both and test the various corner
cases. This implementation isn't 100% correct due to some lingering
issues with the function prototype scope (for a function parameter
list) not being the same scope as the scope of the function
definition. Testcase is FIXME'd; this probably isn't an important issue.

Addresses <rdar://problem/6484805>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62014 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Scope.h
54e4be99d5aeccb434916d8ae1bbc339c4969208 09-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add some comments to the virtual work. Thanks to Doug Gregor for the review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62012 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c9b580a4de1824b3155048d31aaa153316e150c2 09-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Add some comments to the virtual work. Thanks to Doug Gregor for the review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62012 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d310fde11d4b0c64b788e18c785d9f432f597d9c 09-Jan-2009 Ted Kremenek <kremenek@apple.com> Enhance PTH 'getSpelling' caching:
- Refactor caching logic into a helper class PTHSpellingSearch
- Allow "random accesses" in the spelling cache, thus catching the remaining
cases where 'getSpelling' wasn't hitting the PTH cache

For -Eonly, PTH, Cocoa.h:
- This reduces wall time by 3% (user time unchanged, sys time reduced)
- This reduces the amount of paged source by 1112K.
The remaining 1112K still being paged in is from somewhere else
(investigating).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62009 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
5f074266cc59563036c40516c814d63825723e20 09-Jan-2009 Ted Kremenek <kremenek@apple.com> Enhance PTH 'getSpelling' caching:
- Refactor caching logic into a helper class PTHSpellingSearch
- Allow "random accesses" in the spelling cache, thus catching the remaining
cases where 'getSpelling' wasn't hitting the PTH cache

For -Eonly, PTH, Cocoa.h:
- This reduces wall time by 3% (user time unchanged, sys time reduced)
- This reduces the amount of paged source by 1112K.
The remaining 1112K still being paged in is from somewhere else
(investigating).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62009 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
faca5e2c497659869be8a0647ea589e209a06931 09-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> This patch removes mergeProperties and does the property lookup
in designated protocols lazily.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a66793ee8d2589ead81739d9b8a968650db3d452 09-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> This patch removes mergeProperties and does the property lookup
in designated protocols lazily.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
83faa29958e9a74b83445f2cf462dbaff46abb94 09-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Very basic support for pure virtual functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
9ba73ad65446f6bc876f40cced866d85dff754da 09-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Very basic support for pure virtual functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
d16753817a047f96670d084d3146c0e495604586 09-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Replace DeclContext's vector of ScopedDecl pointers with a linked list
of ScopedDecls (using the new ScopedDecl::NextDeclInScope
pointer). Performance-wise:

- It's a net win in memory utilization, since DeclContext is now one
pointer smaller than it used to be (std::vectors are typically 3
pointers; we now use 2 pointers) and
- Parsing Cocoa.h with -fsyntax-only (with a Release-Asserts Clang)
is about 1.9% faster than before, most likely because we no longer
have the memory allocations and copying associated with the
std::vector.

I'll re-enable serialization of DeclContexts once I've sorted out the
NextDeclarator/NextDeclInScope question.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/DiagnosticKinds.def
6037fcba3431b47de1a994c9b286feac17894eff 09-Jan-2009 Douglas Gregor <dgregor@apple.com> Replace DeclContext's vector of ScopedDecl pointers with a linked list
of ScopedDecls (using the new ScopedDecl::NextDeclInScope
pointer). Performance-wise:

- It's a net win in memory utilization, since DeclContext is now one
pointer smaller than it used to be (std::vectors are typically 3
pointers; we now use 2 pointers) and
- Parsing Cocoa.h with -fsyntax-only (with a Release-Asserts Clang)
is about 1.9% faster than before, most likely because we no longer
have the memory allocations and copying associated with the
std::vector.

I'll re-enable serialization of DeclContexts once I've sorted out the
NextDeclarator/NextDeclInScope question.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/DiagnosticKinds.def
d394a2793850cf65f2f7a99f089603cf34405dec 09-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Make sure that ScopedDecls passed to DeclContext::addDecl are added into their lexical context

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a8cc8ce044e5d2589128f0c1a84e586cce743b27 09-Jan-2009 Douglas Gregor <dgregor@apple.com> Make sure that ScopedDecls passed to DeclContext::addDecl are added into their lexical context

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5d7648449392dccee2deb7920c2e5facbe1a63f5 09-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Provide a new kind of iterator, the specific_decl_iterator, that
filters the decls seen by decl_iterator with two criteria: the dynamic
type of the declaration and a run-time predicate described by a member
function. This simplifies EnumDecl, RecordDecl, and ObjCContainerDecl
considerably. It has no measurable performance impact.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
f8d49f64ef6ab7e632717a31631fc289aab69428 09-Jan-2009 Douglas Gregor <dgregor@apple.com> Provide a new kind of iterator, the specific_decl_iterator, that
filters the decls seen by decl_iterator with two criteria: the dynamic
type of the declaration and a run-time predicate described by a member
function. This simplifies EnumDecl, RecordDecl, and ObjCContainerDecl
considerably. It has no measurable performance impact.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
451f83c3d689753abb1d7393816951b96d39bbb1 09-Jan-2009 Steve Naroff <snaroff@apple.com> Move property API's up to ObjCContainerDecl (removing a lot of duplicate code).
Add isa/cast/dyncast support for ObjCContainerDecl.
Renamed classprop_iterator/begin/end to prop_iterator/begin/end (the class prefix was confusing).
More simplifications to Sema::ActOnAtEnd()...
Added/changed some FIXME's as a result of the above work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
09c4719788a5cea09897525e528fa00420f1677b 09-Jan-2009 Steve Naroff <snaroff@apple.com> Move property API's up to ObjCContainerDecl (removing a lot of duplicate code).
Add isa/cast/dyncast support for ObjCContainerDecl.
Renamed classprop_iterator/begin/end to prop_iterator/begin/end (the class prefix was confusing).
More simplifications to Sema::ActOnAtEnd()...
Added/changed some FIXME's as a result of the above work.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61988 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
6e4fa2c890cc4f81ac227b3f6d1b49a49dcf0566 09-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Addressed the issue in <rdar://problem/6479085>, where we failed to
rewrite @class declarations that showed up within linkage
specifications because those @class declarations never made it any
place where the rewriter could find them.

Moved all of the ObjC*Decl nodes over to ScopedDecls, so that they can
live in the appropriate top-level or transparent DeclContext near the
top level, e.g., TranslationUnitDecl or LinkageSpecDecl. Objective-C
declarations now show up in a traversal of the declarations in a
DeclContext (they didn't before!). This way, the rewriter finds all
Objective-C declarations within linkage specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
d04341000d35c8808a72838b057eed7bf13b7661 09-Jan-2009 Douglas Gregor <dgregor@apple.com> Addressed the issue in <rdar://problem/6479085>, where we failed to
rewrite @class declarations that showed up within linkage
specifications because those @class declarations never made it any
place where the rewriter could find them.

Moved all of the ObjC*Decl nodes over to ScopedDecls, so that they can
live in the appropriate top-level or transparent DeclContext near the
top level, e.g., TranslationUnitDecl or LinkageSpecDecl. Objective-C
declarations now show up in a traversal of the declarations in a
DeclContext (they didn't before!). This way, the rewriter finds all
Objective-C declarations within linkage specifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
89d5304610977ee2b6ca7237ba1c7be4119810cd 09-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Adding support for ObjC methods which have c-style
parameter list. This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61964 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
439c65892cc8629bbf541e0b8bda6b64cbcc4e6b 09-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Adding support for ObjC methods which have c-style
parameter list. This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61964 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bdbbc2dd11e8e5645fa6a61b9f24cb12625a830f 08-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Revert my previous, failed attempt to pretty-print anonymous struct/union accesses well. Added a FIXME so we know to revisit this later

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b3eef68111ffc220e449be96da1747998c057790 08-Jan-2009 Douglas Gregor <dgregor@apple.com> Revert my previous, failed attempt to pretty-print anonymous struct/union accesses well. Added a FIXME so we know to revisit this later

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d9be6cd400d25ed4571e20bc843b549416527f87 08-Jan-2009 Ted Kremenek <kremenek@apple.com> Added iterator mechanism to ObjCContainerDecl to iterate over both class and instance methods at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7ed4faca5162b3ab85be7f7e57aa40e6ec170971 08-Jan-2009 Ted Kremenek <kremenek@apple.com> Added iterator mechanism to ObjCContainerDecl to iterate over both class and instance methods at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
db568cfb21332e84a163afdaab0d13e88a56f712 08-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Unify the code for defining tags in C and C++, so that we always
introduce a Scope for the body of a tag. This reduces the number of
semantic differences between C and C++ structs and unions, and will
help with other features (e.g., anonymous unions) in C. Some important
points:

- Fields are now in the "member" namespace (IDNS_Member), to keep
them separate from tags and ordinary names in C. See the new test
in Sema/member-reference.c for an example of why this matters. In
C++, ordinary and member name lookup will find members in both the
ordinary and member namespace, so the difference between
IDNS_Member and IDNS_Ordinary is erased by Sema::LookupDecl (but
only in C++!).
- We always introduce a Scope and push a DeclContext when we're
defining a tag, in both C and C++. Previously, we had different
actions and different Scope/CurContext behavior for enums, C
structs/unions, and C++ structs/unions/classes. Now, it's one pair
of actions. (Yay!)

There's still some fuzziness in the handling of struct/union/enum
definitions within other struct/union/enum definitions in C. We'll
need to do some more cleanup to eliminate some reliance on CurContext
before we can solve this issue for real. What we want is for something
like this:

struct X {
struct T { int x; } t;
};

to introduce T into translation unit scope (placing it at the
appropriate point in the IdentifierResolver chain, too), but it should
still have struct X as its lexical declaration
context. PushOnScopeChains isn't smart enough to do that yet, though,
so there's a FIXME test in nested-redef.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
arse/Action.h
72de6676bd30f9081ee4166bbe07b4c270258ce6 08-Jan-2009 Douglas Gregor <dgregor@apple.com> Unify the code for defining tags in C and C++, so that we always
introduce a Scope for the body of a tag. This reduces the number of
semantic differences between C and C++ structs and unions, and will
help with other features (e.g., anonymous unions) in C. Some important
points:

- Fields are now in the "member" namespace (IDNS_Member), to keep
them separate from tags and ordinary names in C. See the new test
in Sema/member-reference.c for an example of why this matters. In
C++, ordinary and member name lookup will find members in both the
ordinary and member namespace, so the difference between
IDNS_Member and IDNS_Ordinary is erased by Sema::LookupDecl (but
only in C++!).
- We always introduce a Scope and push a DeclContext when we're
defining a tag, in both C and C++. Previously, we had different
actions and different Scope/CurContext behavior for enums, C
structs/unions, and C++ structs/unions/classes. Now, it's one pair
of actions. (Yay!)

There's still some fuzziness in the handling of struct/union/enum
definitions within other struct/union/enum definitions in C. We'll
need to do some more cleanup to eliminate some reliance on CurContext
before we can solve this issue for real. What we want is for something
like this:

struct X {
struct T { int x; } t;
};

to introduce T into translation unit scope (placing it at the
appropriate point in the IdentifierResolver chain, too), but it should
still have struct X as its lexical declaration
context. PushOnScopeChains isn't smart enough to do that yet, though,
so there's a FIXME test in nested-redef.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
arse/Action.h
5968d4e5f1650bc358537bac0b2b3b59ee8d09eb 08-Jan-2009 Steve Naroff <snaroff@apple.com> Add missing castToDeclContext/castFromDeclContext hooks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b718b407db1f921c5a2dc0164a23582c322f8ce0 08-Jan-2009 Steve Naroff <snaroff@apple.com> Add missing castToDeclContext/castFromDeclContext hooks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1bb38178cac3733287569ceb2b1837e16a092f34 08-Jan-2009 Steve Naroff <snaroff@apple.com> Remove a dead decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61938 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6804461f7f154b38130e421b16daf7f2890feb49 08-Jan-2009 Steve Naroff <snaroff@apple.com> Remove a dead decl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61938 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
438be771a8e7336d5e143d91debb419764cde8ef 08-Jan-2009 Steve Naroff <snaroff@apple.com> Remove redundant method context (now that ObjCMethodDecl isa ScopedDecl).
Convert clients to use the standard getDeclContext() API.

Doug, thanks for the review!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61935 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3e0a540b6d846178857289ec0eb8470a278d11a3 08-Jan-2009 Steve Naroff <snaroff@apple.com> Remove redundant method context (now that ObjCMethodDecl isa ScopedDecl).
Convert clients to use the standard getDeclContext() API.

Doug, thanks for the review!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61935 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
228fe4f1c7208efa3c5a7e714db4bf8ed9709c0b 08-Jan-2009 Ted Kremenek <kremenek@apple.com> Initialized member variable 'Implicit' in Decl's ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
40449fe96e2c6210ecb59515aaf939516fc09c22 08-Jan-2009 Ted Kremenek <kremenek@apple.com> Initialized member variable 'Implicit' in Decl's ctor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ab63fd6f3dccb110f78f132fa81321bbd4a61b70 08-Jan-2009 Steve Naroff <snaroff@apple.com> This is a large/messy diff that unifies the ObjC AST's with DeclContext.

- ObjCContainerDecl's (ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl), ObjCCategoryImpl, & ObjCImplementation are all DeclContexts.
- ObjCMethodDecl is now a ScopedDecl (so it can play nicely with DeclContext).
- ObjCContainerDecl now does iteration/lookup using DeclContext infrastructure (no more linear search:-)
- Removed ASTContext argument to DeclContext::lookup(). It wasn't being used and complicated it's use from an ObjC AST perspective.
- Added Sema::ProcessPropertyDecl() and removed Sema::diagnosePropertySetterGetterMismatch().
- Simplified Sema::ActOnAtEnd() considerably. Still more work to do.
- Fixed an incorrect casting assumption in Sema::getCurFunctionOrMethodDecl(), now that ObjCMethodDecl is a ScopedDecl.
- Removed addPropertyMethods from ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl.

This passes all the tests on my machine. Since many of the changes are central to the way ObjC finds it's methods, I expect some fallout (and there are still a handful of FIXME's). Nevertheless, this should be a step in the right direction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
0701bbb228dfd87e1fe82a0a4b7b9facfecb43da 08-Jan-2009 Steve Naroff <snaroff@apple.com> This is a large/messy diff that unifies the ObjC AST's with DeclContext.

- ObjCContainerDecl's (ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl), ObjCCategoryImpl, & ObjCImplementation are all DeclContexts.
- ObjCMethodDecl is now a ScopedDecl (so it can play nicely with DeclContext).
- ObjCContainerDecl now does iteration/lookup using DeclContext infrastructure (no more linear search:-)
- Removed ASTContext argument to DeclContext::lookup(). It wasn't being used and complicated it's use from an ObjC AST perspective.
- Added Sema::ProcessPropertyDecl() and removed Sema::diagnosePropertySetterGetterMismatch().
- Simplified Sema::ActOnAtEnd() considerably. Still more work to do.
- Fixed an incorrect casting assumption in Sema::getCurFunctionOrMethodDecl(), now that ObjCMethodDecl is a ScopedDecl.
- Removed addPropertyMethods from ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl.

This passes all the tests on my machine. Since many of the changes are central to the way ObjC finds it's methods, I expect some fallout (and there are still a handful of FIXME's). Nevertheless, this should be a step in the right direction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61929 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
b287b2118e08a640783739db9832adca2a86828d 08-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add isSubRegionOf() method to SubRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
7e5d6ed47dcedce35043de59ee00464b681bc786 08-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> Add isSubRegionOf() method to SubRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
192bee432e8731fc9479564846e7a7205fd2c488 08-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment because we could have arbitrary number of overloaded functions with
the same name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61920 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
41761d67291ae9ac74843f31737a96157d982c0b 08-Jan-2009 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment because we could have arbitrary number of overloaded functions with
the same name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61920 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
a4d5bf514ee8c40d2be701760a5e3b3ff7bfc85e 08-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH: Hook up getSpelling() caching in PTHLexer. This results in a nice
performance gain. Here's what we see for -Eonly on Cocoa.h (using PTH):

- wall time decreases by 21% (26% speedup overall)
- system time decreases by 35%
- user time decreases by 6%

These reductions are due to not paging source files just to get spellings for
literals. The solution in place doesn't appear to be 100% yet, as we still see
some of the pages for source files getting mapped in. Using -print-stats, we see
that SourceManager maps in 7179K less bytes of source text (reduction of 75%).
Will investigate why the remaining 25% are getting paged in.

With these changes, here's how PTH compares to non-PTH on Cocoa.h:
-Eonly: PTH takes 64% of the time as non-PTH (54% speedup)
-fsyntax-only: PTH takes 89% of the time as non-PTH (11% speedup)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61913 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
32a8ad526f9bc00539f000a2dd1ac3e167db61c1 08-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH: Hook up getSpelling() caching in PTHLexer. This results in a nice
performance gain. Here's what we see for -Eonly on Cocoa.h (using PTH):

- wall time decreases by 21% (26% speedup overall)
- system time decreases by 35%
- user time decreases by 6%

These reductions are due to not paging source files just to get spellings for
literals. The solution in place doesn't appear to be 100% yet, as we still see
some of the pages for source files getting mapped in. Using -print-stats, we see
that SourceManager maps in 7179K less bytes of source text (reduction of 75%).
Will investigate why the remaining 25% are getting paged in.

With these changes, here's how PTH compares to non-PTH on Cocoa.h:
-Eonly: PTH takes 64% of the time as non-PTH (54% speedup)
-fsyntax-only: PTH takes 89% of the time as non-PTH (11% speedup)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61913 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
d2c849dfb5bd5c8fe93b973198eb47320f08aed1 08-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH:
- Added stub PTHLexer::getSpelling() that will be used for fetching cached
spellings from the PTH file. This doesn't do anything yet.
- Added a hook in Preprocessor::getSpelling() to call PTHLexer::getSpelling()
when using a PTHLexer.
- Updated PTHLexer to read the offsets of spelling tables in the PTH file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61911 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
b70e3dafb9618f34017061400dc19ac5e3539a6d 08-Jan-2009 Ted Kremenek <kremenek@apple.com> PTH:
- Added stub PTHLexer::getSpelling() that will be used for fetching cached
spellings from the PTH file. This doesn't do anything yet.
- Added a hook in Preprocessor::getSpelling() to call PTHLexer::getSpelling()
when using a PTHLexer.
- Updated PTHLexer to read the offsets of spelling tables in the PTH file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61911 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
b1d9eb3ed8d41b334f3b790e863140226cb10028 07-Jan-2009 Ted Kremenek <kremenek@apple.com> Update some doxygen comments to be more rich. Remove StoreManager::GetRegionSVal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
c6ed3840d685bd40bd921dd1f76cfb5a9b4fc599 07-Jan-2009 Ted Kremenek <kremenek@apple.com> Update some doxygen comments to be more rich. Remove StoreManager::GetRegionSVal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
7b61ab7b86a76ef4c7f7550333661ad2aadd88f8 07-Jan-2009 Ted Kremenek <kremenek@apple.com> Refactor MemRegionManager instance variable into parent class. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61888 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
d6cfbe4bd5103cd020d987d09438744eb17226a3 07-Jan-2009 Ted Kremenek <kremenek@apple.com> Refactor MemRegionManager instance variable into parent class. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61888 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
cc74331b39f125521e8c1fa66d3c3171ce119114 07-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Fix printing of member references to avoid displaying implicitly-generated member references, e.g., for anonymous struct/unions or implicit 'this' in member functions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
83233a4b7c2bc7b531ffa3b33fdd1cd8138373b6 07-Jan-2009 Douglas Gregor <dgregor@apple.com> Fix printing of member references to avoid displaying implicitly-generated member references, e.g., for anonymous struct/unions or implicit 'this' in member functions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a04fcb61cf8a23063c836fcd147cc565a9aa6b45 07-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Don't ICE when messaging on 'super' receiver when class
of category implementation is undeclared. Issue error instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4b1e275eb743b46cd10153bb58743d89af7242ea 07-Jan-2009 Fariborz Jahanian <fjahanian@apple.com> Don't ICE when messaging on 'super' receiver when class
of category implementation is undeclared. Issue error instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c7f0161766b7b551e21882add1e6e9599b820251 07-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Finished semantic analysis of anonymous unions in C++.

Duplicate-member checking within classes is still a little messy, and
anonymous unions are still completely broken in C. We'll need to unify
the handling of fields in C and C++ to make this code applicable in
both languages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
6b3945f4bc757bdadd3e443180cf32c2cccb52a0 07-Jan-2009 Douglas Gregor <dgregor@apple.com> Finished semantic analysis of anonymous unions in C++.

Duplicate-member checking within classes is still a little messy, and
anonymous unions are still completely broken in C. We'll need to unify
the handling of fields in C and C++ to make this code applicable in
both languages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
d9d4d50943e78c4405b89444fca99230584acacb 07-Jan-2009 Steve Naroff <snaroff@apple.com> ObjC AST cleanups/simplifications (phase 1).
Add ObjCContainerDecl class and have ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl inherit from it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
e4f039e01e797a38bc97bf22aff9832ecd18ff5f 07-Jan-2009 Steve Naroff <snaroff@apple.com> ObjC AST cleanups/simplifications (phase 1).
Add ObjCContainerDecl class and have ObjCInterfaceDecl/ObjCCategoryDecl/ObjCProtocolDecl inherit from it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
3a423135abbd36c8f1fbe6becbfb8aee0ba8583c 07-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Use DeclContext::getLookupContext wherever necessary to ensure that we look through transparent contexts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e21b99468ad408694caf4b4efbbb57ef9d89f99f 07-Jan-2009 Douglas Gregor <dgregor@apple.com> Use DeclContext::getLookupContext wherever necessary to ensure that we look through transparent contexts

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61861 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
38d38a08d869c4a6efa3233eac48fafb8bf8d945 07-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> When determining whether a variable is a file-scoped variable, check
out its lookup context (to see through linkage
specifications). Addresses <rdar://problem/6477142>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
17a9b9e3ee75f5dbb4819cc8ebf40eec8015f84a 07-Jan-2009 Douglas Gregor <dgregor@apple.com> When determining whether a variable is a file-scoped variable, check
out its lookup context (to see through linkage
specifications). Addresses <rdar://problem/6477142>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
723d3339200af4a2f1861b7f4cc6d9788e0d7386 07-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of anonymous unions (and, as a GNU extension,
structures and classes) in C++. Covers name lookup and the synthesis
and member access for the unnamed objects/fields associated with
anonymous unions.

Some C++ semantic checks are still missing (anonymous unions can't
have function members, static data members, etc.), and there is no
support for anonymous structs or unions in C.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61840 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/DiagnosticKinds.def
bcbffc46f1ad3796c4582fa1e3a9113b5aa26061 07-Jan-2009 Douglas Gregor <dgregor@apple.com> Initial implementation of anonymous unions (and, as a GNU extension,
structures and classes) in C++. Covers name lookup and the synthesis
and member access for the unnamed objects/fields associated with
anonymous unions.

Some C++ semantic checks are still missing (anonymous unions can't
have function members, static data members, etc.), and there is no
support for anonymous structs or unions in C.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61840 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/DiagnosticKinds.def
69e781fb54d6a9592899a96d2a85f3f39a4142a9 07-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Allow Objective-C entities to be declared within a transparent context
nested in the translation unit. This fixes <rdar://problem/6476070>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ce35607c282c845b3285d0f6e106489d8bbeba13 07-Jan-2009 Douglas Gregor <dgregor@apple.com> Allow Objective-C entities to be declared within a transparent context
nested in the translation unit. This fixes <rdar://problem/6476070>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ab6168ebac90bcce5259b869c5b56741d52e1fb4 06-Jan-2009 Chris Lattner <sabre@nondot.org> add a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
d62fdc448b3ace606c8c9c9f13e43218fa204dbf 06-Jan-2009 Chris Lattner <sabre@nondot.org> add a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
d706dc8248bb4b7d9d1ba7860d75e849dc5466e0 06-Jan-2009 Chris Lattner <sabre@nondot.org> rename MaybeParseCXXScopeSpecifier -> ParseOptionalCXXScopeSpecifier and
MaybeParseTypeSpecifier -> ParseOptionalTypeSpecifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61796 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7a0ab5f387722c83e19c7133b46b16988eb19e45 06-Jan-2009 Chris Lattner <sabre@nondot.org> rename MaybeParseCXXScopeSpecifier -> ParseOptionalCXXScopeSpecifier and
MaybeParseTypeSpecifier -> ParseOptionalTypeSpecifier.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61796 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
655972d45c544d8a3ad42e0b25972f4b23a0fc7b 06-Jan-2009 Chris Lattner <sabre@nondot.org> Make Token::setLength assert that the token is not an annotation token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61791 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
79ed16e2e605d67a12cccdcf9ad1b231175da1a6 06-Jan-2009 Chris Lattner <sabre@nondot.org> Make Token::setLength assert that the token is not an annotation token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61791 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
0f56bfb808d83230f185cd5d0ee0f348bcba8482 06-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Oops. Un-publicify SrcMgr::ContentCache::Buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ea14609c806d22d9eb876a029deed9bc3de4aacd 06-Jan-2009 Douglas Gregor <dgregor@apple.com> Oops. Un-publicify SrcMgr::ContentCache::Buffer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
566782aea6d9805c4f703f8101f2dc452cf7286a 06-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Add QualifiedDeclRefExpr, which retains additional source-location
information for declarations that were referenced via a qualified-id,
e.g., N::C::value. We keep track of the location of the start of the
nested-name-specifier. Note that the difference between
QualifiedDeclRefExpr and DeclRefExpr does have an effect on the
semantics of function calls in two ways:
1) The use of a qualified-id instead of an unqualified-id suppresses
argument-dependent lookup
2) If the name refers to a virtual function, the qualified-id
version will call the function determined statically while the
unqualified-id version will call the function determined dynamically
(by looking up the appropriate function in the vtable).

Neither of these features is implemented yet, but we do print out
qualified names for QualifiedDeclRefExprs as part of the AST printing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/SourceManager.h
1a49af9681c350fef58e677f85ccb9a77e8e9d0a 06-Jan-2009 Douglas Gregor <dgregor@apple.com> Add QualifiedDeclRefExpr, which retains additional source-location
information for declarations that were referenced via a qualified-id,
e.g., N::C::value. We keep track of the location of the start of the
nested-name-specifier. Note that the difference between
QualifiedDeclRefExpr and DeclRefExpr does have an effect on the
semantics of function calls in two ways:
1) The use of a qualified-id instead of an unqualified-id suppresses
argument-dependent lookup
2) If the name refers to a virtual function, the qualified-id
version will call the function determined statically while the
unqualified-id version will call the function determined dynamically
(by looking up the appropriate function in the vtable).

Neither of these features is implemented yet, but we do print out
qualified names for QualifiedDeclRefExprs as part of the AST printing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61789 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/SourceManager.h
5d7eace984f1c762dd6f56115575763d368974c3 06-Jan-2009 Chris Lattner <sabre@nondot.org> rename tok::annot_qualtypename -> tok::annot_typename, which is both
shorter and more accurate. The type name might not be qualified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Token.h
b31757b68afe06ba442a05775d08fe7aa0f6f889 06-Jan-2009 Chris Lattner <sabre@nondot.org> rename tok::annot_qualtypename -> tok::annot_typename, which is both
shorter and more accurate. The type name might not be qualified.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61788 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Token.h
aa7dac17162eab1e9e0b84f4b710fc3e8a06aa97 06-Jan-2009 Ted Kremenek <kremenek@apple.com> Misc changes to SourceManager::ContentCache:
- 'Buffer' is now private and must be accessed via 'getBuffer()'.
This paves the way for lazily mapping in source files on demand.
- Added 'getSize()' (which gets the size of the content without
necessarily accessing the MemBuffer) and 'getSizeBytesMapped()'.
- Modifed SourceManager to use these new methods. This reduces the
number of places that actually access the MemBuffer object for a file
to those that actually look at the character data.

These changes result in no performance change for -fsyntax-only on Cocoa.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c16c208e8519476d838ad11fffc8e0ecea50550d 06-Jan-2009 Ted Kremenek <kremenek@apple.com> Misc changes to SourceManager::ContentCache:
- 'Buffer' is now private and must be accessed via 'getBuffer()'.
This paves the way for lazily mapping in source files on demand.
- Added 'getSize()' (which gets the size of the content without
necessarily accessing the MemBuffer) and 'getSizeBytesMapped()'.
- Modifed SourceManager to use these new methods. This reduces the
number of places that actually access the MemBuffer object for a file
to those that actually look at the character data.

These changes result in no performance change for -fsyntax-only on Cocoa.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
39c0f6f69727c07a1b87605c54f14b86f8189194 05-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> PODness and Type Traits

Make C++ classes track the POD property (C++ [class]p4)
Track the existence of a copy assignment operator.
Implicitly declare the copy assignment operator if none is provided.
Implement most of the parsing job for the G++ type traits extension.
Fully implement the low-hanging fruit of the type traits:
__is_pod: Whether a type is a POD.
__is_class: Whether a type is a (non-union) class.
__is_union: Whether a type is a union.
__is_enum: Whether a type is an enum.
__is_polymorphic: Whether a type is polymorphic (C++ [class.virtual]p1).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/StmtNodes.def
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
arse/Action.h
arse/Parser.h
64b45f7e0d3167f040841ac2920aead7f080730d 05-Jan-2009 Sebastian Redl <sebastian.redl@getdesigned.at> PODness and Type Traits

Make C++ classes track the POD property (C++ [class]p4)
Track the existence of a copy assignment operator.
Implicitly declare the copy assignment operator if none is provided.
Implement most of the parsing job for the G++ type traits extension.
Fully implement the low-hanging fruit of the type traits:
__is_pod: Whether a type is a POD.
__is_class: Whether a type is a (non-union) class.
__is_union: Whether a type is a union.
__is_enum: Whether a type is an enum.
__is_polymorphic: Whether a type is polymorphic (C++ [class.virtual]p1).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61746 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/ExprCXX.h
ST/StmtNodes.def
ST/Type.h
asic/TokenKinds.def
asic/TypeTraits.h
arse/Action.h
arse/Parser.h
d802838e493df9217cf3d71087de523fff486a97 05-Jan-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce support for "transparent" DeclContexts, which are
DeclContexts whose members are visible from enclosing DeclContexts up
to (and including) the innermost enclosing non-transparent
DeclContexts. Transparent DeclContexts unify the mechanism to be used
for various language features, including C enumerations, anonymous
unions, C++0x inline namespaces, and C++ linkage
specifications. Please refer to the documentation in the Clang
internals manual for more information.

Only enumerations and linkage specifications currently use transparent
DeclContexts.

Still to do: use transparent DeclContexts to implement anonymous
unions and GCC's anonymous structs extension, and, later, the C++0x
features. We also need to tighten up the DeclContext/ScopedDecl link
to ensure that every ScopedDecl is in a single DeclContext, which
will ensure that we can then enforce ownership and reduce the memory
footprint of DeclContext.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
arse/Action.h
074149e11baf5f7db12f84efd5c34ba6e35d5cdf 05-Jan-2009 Douglas Gregor <dgregor@apple.com> Introduce support for "transparent" DeclContexts, which are
DeclContexts whose members are visible from enclosing DeclContexts up
to (and including) the innermost enclosing non-transparent
DeclContexts. Transparent DeclContexts unify the mechanism to be used
for various language features, including C enumerations, anonymous
unions, C++0x inline namespaces, and C++ linkage
specifications. Please refer to the documentation in the Clang
internals manual for more information.

Only enumerations and linkage specifications currently use transparent
DeclContexts.

Still to do: use transparent DeclContexts to implement anonymous
unions and GCC's anonymous structs extension, and, later, the C++0x
features. We also need to tighten up the DeclContext/ScopedDecl link
to ensure that every ScopedDecl is in a single DeclContext, which
will ensure that we can then enforce ownership and reduce the memory
footprint of DeclContext.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
arse/Action.h
94a15bd6171e6fa504c06f8e0da32e90bce94786 05-Jan-2009 Chris Lattner <sabre@nondot.org> remove optimization to avoid looking ahead for cases like ::foo. This
isn't worth the complexity and the code already does a ton of lookahead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61671 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
5b4547318bb179fc76f984f0eeaaf615927e795c 05-Jan-2009 Chris Lattner <sabre@nondot.org> remove optimization to avoid looking ahead for cases like ::foo. This
isn't worth the complexity and the code already does a ton of lookahead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61671 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
4899a75843dcc03aef598e81aedb879fc3cc0281 05-Jan-2009 Chris Lattner <sabre@nondot.org> Fix a bug where we'd try to look beyond the current cached tokens when
not in backtracking mode. This was just using the wrong predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61666 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
83cf05a3b0e655dc8ea1cb4c4e1eef541b770992 05-Jan-2009 Chris Lattner <sabre@nondot.org> Fix a bug where we'd try to look beyond the current cached tokens when
not in backtracking mode. This was just using the wrong predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61666 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
2c3014557757cefa9499deed1f2785bc89a98fcb 05-Jan-2009 Chris Lattner <sabre@nondot.org> ParseCXXSimpleTypeSpecifier can only be called on things that are
verified to be simple type specifiers, so there is no need for it
to call TryAnnotateTypeOrScopeToken.

Make MaybeParseCXXScopeSpecifier reject ::new and ::delete with a
hard error now that it may never be transitively called in a
context where these are legal. This allows me to start
disentangling things more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
55a7cefc846765ac7d142a63f773747a20518d71 05-Jan-2009 Chris Lattner <sabre@nondot.org> ParseCXXSimpleTypeSpecifier can only be called on things that are
verified to be simple type specifiers, so there is no need for it
to call TryAnnotateTypeOrScopeToken.

Make MaybeParseCXXScopeSpecifier reject ::new and ::delete with a
hard error now that it may never be transitively called in a
context where these are legal. This allows me to start
disentangling things more.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61659 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
712f9a3e6f762e8d241a0b31e47f56096f8d5ea8 05-Jan-2009 Chris Lattner <sabre@nondot.org> sink a call to TryAnnotateCXXScopeToken down into the
applicable cases in ParseDeclarationSpecifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61657 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5e02c47a7085831586344a9728763cb50540c7f7 05-Jan-2009 Chris Lattner <sabre@nondot.org> sink a call to TryAnnotateCXXScopeToken down into the
applicable cases in ParseDeclarationSpecifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61657 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1e01594f0da7ca29b35012612cc530b4e2c8dc4d 05-Jan-2009 Chris Lattner <sabre@nondot.org> my previous patch caused sema to drop the global qualifier, make
sure to pass it down. This makes the code a bit gross, I will clean
it up in subsequent commits.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61650 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a7bc7c880f86bc180684ef032d06df51bcae7a23 05-Jan-2009 Chris Lattner <sabre@nondot.org> my previous patch caused sema to drop the global qualifier, make
sure to pass it down. This makes the code a bit gross, I will clean
it up in subsequent commits.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61650 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e7de361448aedd3c44b47905ae8e2a8db76bf77c 04-Jan-2009 Chris Lattner <sabre@nondot.org> eliminate lookahead when parsing ::new / ::delete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61638 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
59232d35f5820e334b6c8b007ae8006f4390055d 04-Jan-2009 Chris Lattner <sabre@nondot.org> eliminate lookahead when parsing ::new / ::delete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61638 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5ff0ee5a153adf37bcbfae110b61a73e18fa27fe 30-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Parser support for C++ using directives, from Piotr Rak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61486 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
f780abc21c39cd4731b9e38f2d2d9f7d1510bd7b 30-Dec-2008 Douglas Gregor <dgregor@apple.com> Parser support for C++ using directives, from Piotr Rak

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61486 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
f463b9a2835c52f7ba564fdf61df4e55cd5c3db8 29-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Remove hasKind(). Use existing getKind().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
fc820a4394a33e4fccfd8283909d425708311d41 29-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Remove hasKind(). Use existing getKind().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
0a23e8fc1cbe3cf61c82ca8d947aa84ec60d079f 28-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a two more statement actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61456 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
117054a99f4994e4ec8a1fc904b554e1f2dc9b29 28-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a two more statement actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61456 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b7605e84123a331db0338400ef740c3a7a47a1eb 28-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Diagnose declarations that don't declare anything, and fix PR3020.
Examples:
int;
typedef int;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61454 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
a4ed0d8d75212dc01b4438829a4b0c846d99458d 28-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Diagnose declarations that don't declare anything, and fix PR3020.
Examples:
int;
typedef int;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61454 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
adf0b32b2643e05d9fb355148f026ba9fd7f2ecb 26-Dec-2008 Anders Carlsson <andersca@mac.com> Add __builtin_flt_rounds

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61443 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
cfd489c46c9c004f410ced6fda985cb7a84a6515 26-Dec-2008 Anders Carlsson <andersca@mac.com> Add __builtin_flt_rounds

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61443 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
4aab7fd69f9e49d906eaf302c5c3adfb09ff0e30 26-Dec-2008 Anders Carlsson <andersca@mac.com> Add two more builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
3cd860c3e0b2ee64b3d5515569eeceecfc3901d5 26-Dec-2008 Anders Carlsson <andersca@mac.com> Add two more builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
b27a8700761e1c1f955fc5cc3663289179c9e4d2 26-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Add full dllimport / dllexport support: both sema checks and codegen.
Patch by Ilya Okonsky

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
2f402708e62f89fb875442802e3d3f20fc909d33 26-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Add full dllimport / dllexport support: both sema checks and codegen.
Patch by Ilya Okonsky

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61437 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
ad620401249f986b0ea2c4c3c5566046b87e2dc2 25-Dec-2008 Steve Naroff <snaroff@apple.com> Add parser support for __forceinline, __w64, __ptr64.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
86bc6cf05ad3ff7198671c394ba5157974e8a39c 25-Dec-2008 Steve Naroff <snaroff@apple.com> Add parser support for __forceinline, __w64, __ptr64.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61431 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
edd04d56c1109eb7cb3c9de9a6839607ca9aa5ad 25-Dec-2008 Steve Naroff <snaroff@apple.com> Add parser support for __cdecl, __stdcall, and __fastcall.
Change preprocessor implementation of _cdecl to reference __cdecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61430 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
239f07384fe5e7194e780d98a17553084efeeb44 25-Dec-2008 Steve Naroff <snaroff@apple.com> Add parser support for __cdecl, __stdcall, and __fastcall.
Change preprocessor implementation of _cdecl to reference __cdecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61430 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
c5ab14f4071aba1303516902ae1c30f40903aafb 24-Dec-2008 Steve Naroff <snaroff@apple.com> Add explicit "fuzzy" parse support for Microsoft declspec.
Remove previous __declspec macro that would effectively erase the construct prior to parsing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
f59e17ecf06ac60065e2d02058bd6f21f5d216cc 24-Dec-2008 Steve Naroff <snaroff@apple.com> Add explicit "fuzzy" parse support for Microsoft declspec.
Remove previous __declspec macro that would effectively erase the construct prior to parsing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
0da0273153e4526863ce8d1e06f94c8957bd4341 24-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add serialization support for TypeOfType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
501c7252bd4752bc542630446494eb15b27f1f88 24-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add serialization support for TypeOfType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
71af02f1cea2bcedacbff2a20d883bf2b8042eb0 24-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add serialization support for TypeOfExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61416 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8fbc5274c416967de5338778f685b7830464ad13 24-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add serialization support for TypeOfExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61416 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
524734351dd3a2c625d8a7fb131ee8a424b3a00b 24-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Keep track of template arguments when we parse them. Right now, we don't actually do anything with the template arguments, but they'll be used to create template declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Ownership.h
arse/Parser.h
c4b4e7b8f6ca9b036824e048af49cd2a52b57cdf 24-Dec-2008 Douglas Gregor <dgregor@apple.com> Keep track of template arguments when we parse them. Right now, we don't actually do anything with the template arguments, but they'll be used to create template declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Ownership.h
arse/Parser.h
62ae25ad1ecf45a8ecfefba3b14b159a91847657 24-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Correct the order in which we cope with end-of-class-definition
semantics and improve our handling of default arguments. Specifically,
we follow this order:

- As soon as the see the '}' in the class definition, the class is
complete and we add any implicit declarations (default constructor,
copy constructor, etc.) to the class.
- If there are any default function arguments, parse them
- If there were any inline member function definitions, parse them

As part of this change, we now keep track of the the fact that we've
seen unparsed default function arguments within the AST. See the new
ParmVarDecl::hasUnparsedDefaultArg member. This allows us to properly
cope with calls inside default function arguments to other functions
where we're making use of the default arguments.

Made some C++ error messages regarding failed initializations more
specific.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
asic/DiagnosticKinds.def
arse/Action.h
61366e9cd41a6dbde4e66416dac21269c8ac1d94 24-Dec-2008 Douglas Gregor <dgregor@apple.com> Correct the order in which we cope with end-of-class-definition
semantics and improve our handling of default arguments. Specifically,
we follow this order:

- As soon as the see the '}' in the class definition, the class is
complete and we add any implicit declarations (default constructor,
copy constructor, etc.) to the class.
- If there are any default function arguments, parse them
- If there were any inline member function definitions, parse them

As part of this change, we now keep track of the the fact that we've
seen unparsed default function arguments within the AST. See the new
ParmVarDecl::hasUnparsedDefaultArg member. This allows us to properly
cope with calls inside default function arguments to other functions
where we're making use of the default arguments.

Made some C++ error messages regarding failed initializations more
specific.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
asic/DiagnosticKinds.def
arse/Action.h
796269447580ef8672e694bae1bceec5513b406c 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Sema for fastcall/stdcall stuff. Tests will follow.
Patch by Ilya Okonsky!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7b0a52f982e3514425fc8a3c8fc728f17c27c08e 23-Dec-2008 Anton Korobeynikov <asl@math.spbu.ru> Sema for fastcall/stdcall stuff. Tests will follow.
Patch by Ilya Okonsky!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6e71edcf013acb364885695ab4831a8403a2c4cd 23-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Don't push OverloadedFunctionDecls onto the chain of declarations
attached to an identifier. Instead, all overloaded functions will be
pushed into scope, and we'll synthesize an OverloadedFunctionDecl on
the fly when we need it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6ed40e351a7c1fb3084434f1db19216b79623cf0 23-Dec-2008 Douglas Gregor <dgregor@apple.com> Don't push OverloadedFunctionDecls onto the chain of declarations
attached to an identifier. Instead, all overloaded functions will be
pushed into scope, and we'll synthesize an OverloadedFunctionDecl on
the fly when we need it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e07d9eceab544ec31478daadcc7d53fffdbf9898 23-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Lot more encoding work. We are closing the gap to
gcc compatibilty in all aspects of encoding now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a1c033e9514865f3a7b0d8b3b20e6de926cfec6c 23-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Lot more encoding work. We are closing the gap to
gcc compatibilty in all aspects of encoding now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61383 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d94668d6913fc1f2dd9f270b144c4d5409aab220 23-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH: Remove some methods and simplify some conditions in PTHLexer::Lex(). No big functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61381 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
59d08cb672136322375e5400578ee1fbd0947de2 23-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH: Remove some methods and simplify some conditions in PTHLexer::Lex(). No big functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61381 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
b9b218e566459808be9f1c52b03afad3e0d39ed3 23-Dec-2008 Chris Lattner <sabre@nondot.org> Add a setter for CVR qualifiers, patch by Lukasz Janyst!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61367 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a3ab4b85f54090927c2dfa2585b9f0e48509e944 23-Dec-2008 Chris Lattner <sabre@nondot.org> Add a setter for CVR qualifiers, patch by Lukasz Janyst!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61367 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
08d3ff31e1770de26f9ff088a91e231f90439450 23-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH:
- In PTHLexer::Lex read all of the token data from PTH file before
constructing the token. The idea is to enhance locality.
- Do not use Read8/Read32 in PTHLexer::Lex. Inline these operations manually.
- Change PTHManager::ReadIdentifierInfo() to PTHManager::GetIdentifierInfo().
They are functionally the same except that PTHLexer::Lex() reads the
persistent id.

These changes result in a 3.3% speedup for PTH on Cocoa.h (-Eonly).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61363 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
866bdf74547efe32c320554837ffce00fcc084fe 23-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH:
- In PTHLexer::Lex read all of the token data from PTH file before
constructing the token. The idea is to enhance locality.
- Do not use Read8/Read32 in PTHLexer::Lex. Inline these operations manually.
- Change PTHManager::ReadIdentifierInfo() to PTHManager::GetIdentifierInfo().
They are functionally the same except that PTHLexer::Lex() reads the
persistent id.

These changes result in a 3.3% speedup for PTH on Cocoa.h (-Eonly).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61363 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
9ab79bf847ee62bfd9199475f58477c17886b2fe 23-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH:
- Embed 'eom' tokens in PTH file.
- Use embedded 'eom' tokens to not lazily generate them in the PTHLexer.
This means that PTHLexer can always advance to the next token after
reading a token (instead of buffering tokens using a copy).
- Moved logic of 'ReadToken' into Lex. GetToken & ReadToken no longer exist.
- These changes result in a 3.3% speedup (-Eonly) on Cocoa.h.
- The code is a little gross. Many cleanups are possible and should be done.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61360 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
e5680f3cd678014cf0872d34726dc804b0cbbdd4 23-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH:
- Embed 'eom' tokens in PTH file.
- Use embedded 'eom' tokens to not lazily generate them in the PTHLexer.
This means that PTHLexer can always advance to the next token after
reading a token (instead of buffering tokens using a copy).
- Moved logic of 'ReadToken' into Lex. GetToken & ReadToken no longer exist.
- These changes result in a 3.3% speedup (-Eonly) on Cocoa.h.
- The code is a little gross. Many cleanups are possible and should be done.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61360 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ddfd9d5d81715686bf47f8bf577ead557d5f3c83 23-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Don't explicitly represent OverloadedFunctionDecls within
DeclContext. Instead, just keep the list of currently-active
declarations and only build the OverloadedFunctionDecl when we
absolutely need it.

This is a half-step toward eliminating the need to explicitly build
OverloadedFunctionDecls that store sets of overloaded
functions. This was suggested by Argiris a while back, and it's a good
thing for several reasons: first, it eliminates the messy logic that
currently tries to keep the OverloadedFunctionDecl in sync with the
declarations that are being added. Second, it will (eventually)
eliminate the need to allocate memory for overload sets, which could
help performance. Finally, it helps set us up for when name lookup can
return multiple (possibly ambiguous) results, as can happen with
lookup of class members in C++.

Next steps: make the IdentifierResolver store overloads as separate
entries in its list rather than replacing them with an
OverloadedFunctionDecl now, then see how far we can go toward
eliminating OverloadedFunctionDecl entirely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
3fc749d899dfc194162128c1a88933148a39b68d 23-Dec-2008 Douglas Gregor <dgregor@apple.com> Don't explicitly represent OverloadedFunctionDecls within
DeclContext. Instead, just keep the list of currently-active
declarations and only build the OverloadedFunctionDecl when we
absolutely need it.

This is a half-step toward eliminating the need to explicitly build
OverloadedFunctionDecls that store sets of overloaded
functions. This was suggested by Argiris a while back, and it's a good
thing for several reasons: first, it eliminates the messy logic that
currently tries to keep the OverloadedFunctionDecl in sync with the
declarations that are being added. Second, it will (eventually)
eliminate the need to allocate memory for overload sets, which could
help performance. Finally, it helps set us up for when name lookup can
return multiple (possibly ambiguous) results, as can happen with
lookup of class members in C++.

Next steps: make the IdentifierResolver store overloads as separate
entries in its list rather than replacing them with an
OverloadedFunctionDecl now, then see how far we can go toward
eliminating OverloadedFunctionDecl entirely.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
89ed86b24a37ad07dab38cb70b55378ebf87a581 23-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> More encoding support; in this case, encoding of
outer-most const of pointer types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
5b8c7d9fb620ba3a71e996d61e7b9bdf763b5c09 23-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> More encoding support; in this case, encoding of
outer-most const of pointer types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61355 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
237116b372f05f0c504c86f99d945b8f783368bc 22-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Full AST support and better Sema support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61346 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
8351da06ca3082dfd49dd8e3c1785a986920f57c 22-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Full AST support and better Sema support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61346 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
743c81609db46cce8a881fac6d295774687ff035 22-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Partial AST and Sema support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61337 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Stmt.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
4b07b2968f87f3cd5a3d8c76145f1cbfd718d42d 22-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Partial AST and Sema support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61337 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Stmt.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
eec780da21a612b4b74f255ed37bed3bb50bbcac 22-Dec-2008 Anders Carlsson <andersca@mac.com> Implement the last intrinsics, _mm_insert_pi16 is the last remaining one now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
a6431dc8d2ebf54de31323bae1fd197dc165f8b2 22-Dec-2008 Anders Carlsson <andersca@mac.com> Implement the last intrinsics, _mm_insert_pi16 is the last remaining one now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
3257fb58ef6583ce20036c77a8c5af95f158f2d3 22-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Add support for calls to overloaded member functions. Things to note:
- Overloading has to cope with having both static and non-static
member functions in the overload set.
- The call may or may not have an implicit object argument,
depending on the syntax (x.f() vs. f()) and the context (static
vs. non-static member function).
- We now generate MemberExprs for implicit member access expression.
- We now cope with mutable whenever we're building MemberExprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
88a3514f36de96b19cdf50141c640df1a5f13f6c 22-Dec-2008 Douglas Gregor <dgregor@apple.com> Add support for calls to overloaded member functions. Things to note:
- Overloading has to cope with having both static and non-static
member functions in the overload set.
- The call may or may not have an implicit object argument,
depending on the syntax (x.f() vs. f()) and the context (static
vs. non-static member function).
- We now generate MemberExprs for implicit member access expression.
- We now cope with mutable whenever we're building MemberExprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
e828d1cc844c0a843ecc69401c4cd1238c4442b3 22-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add an option to make 'RemoveDeadBindings' a configurable behavior. This enables
us to measure the effect of this optimization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61319 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
ff944a8c481d6c0f1ad2633e4be9bf8b1dd2a09f 22-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add an option to make 'RemoveDeadBindings' a configurable behavior. This enables
us to measure the effect of this optimization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61319 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b12ac33f83d035e5b4c4aba1bb5b2084e720f5d4 21-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
a0fd8652f3302d0f39ed9849b521ee5b76597b0a 21-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Parser support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61312 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
76b9ddb5b0f9f7bf3808de65eb051a94a0246c21 21-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a few Stmt actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61309 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
a60528cdac7deee3991c2b48af4df4f315e49e9d 21-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a few Stmt actions to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61309 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
2766237a9f53bf258d491dda14f8c3ba8747639b 21-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Document how move semantics and the emulation work. Do this in-file because it's such a specific thing.
Restructure code for less duplication.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61308 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
7886ce8858d95d54a26c245f58b68a8ea99cc0fa 21-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Document how move semantics and the emulation work. Do this in-file because it's such a specific thing.
Restructure code for less duplication.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61308 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
76d19c8cce8b1b664a6e95bbf33e328227945fff 21-Dec-2008 Anders Carlsson <andersca@mac.com> Add ASTContext::getBaseElementType and use it in CodeGenFunction::EmitArraySubscriptExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61303 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6183a99b064b397d98297904fbd6cf00fe1f453d 21-Dec-2008 Anders Carlsson <andersca@mac.com> Add ASTContext::getBaseElementType and use it in CodeGenFunction::EmitArraySubscriptExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61303 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0dd0e37f7f54bc710c7f656e28ca4ab63ff9284c 21-Dec-2008 Anders Carlsson <andersca@mac.com> Did not mean to commit this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
97e0179f1ae545e07d9f5e7c1d2ef5c5bab06676 21-Dec-2008 Anders Carlsson <andersca@mac.com> Did not mean to commit this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3bb57e845cf801eec463777d796d1a3d0d75e266 21-Dec-2008 Anders Carlsson <andersca@mac.com> Handle VLA indexing

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8b33c087fc6d97064b6620c96c732ebc5c003fb2 21-Dec-2008 Anders Carlsson <andersca@mac.com> Handle VLA indexing

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
82d44776fc817d80b1985d9d8e86453d4f15995c 21-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Add support for member references (E1.E2, E1->E2) with C++ semantics,
which can refer to static data members, enumerators, and member
functions as well as to non-static data members.

Implement correct lvalue computation for member references in C++.
Compute the result type of non-static data members of reference type properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61294 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
86f194083504938df72135b5b66bf0c5cafd9498 21-Dec-2008 Douglas Gregor <dgregor@apple.com> Add support for member references (E1.E2, E1->E2) with C++ semantics,
which can refer to static data members, enumerators, and member
functions as well as to non-static data members.

Implement correct lvalue computation for member references in C++.
Compute the result type of non-static data members of reference type properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61294 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
e26cb43f48421366ffc0d3c28b8e703a010f1089 21-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Finish up saving original parameter type and
using it in ObjC's method parameter encoding.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
4306d3cb9116605728252e2738df24b9f6ab53c3 21-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Finish up saving original parameter type and
using it in ObjC's method parameter encoding.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
160e8819e15a531dadfc6cffb45eaebdb41e3f89 20-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> introducing ParmVarWithOriginalTypeDecl class to
keep track of the original parameter decl. types.
This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
73da9e462576faedc2cdf96b37a1c072b404b73d 20-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> introducing ParmVarWithOriginalTypeDecl class to
keep track of the original parameter decl. types.
This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
0440c8c2163d60db45ae42aec602f03e7f25622c 20-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement checks for bool in increment and decrement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e6d5a4a58346441c969d5fcc7aa053e029186f86 20-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement checks for bool in increment and decrement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5ea4ad0068c8c970f039f72a41837458cf43efc2 20-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Lazy bingding for region-store manager.
* Now Bind() methods take and return GRState* because binding could
also alter GDM.
* No variables are initialized except those declared with initial
values.
* failed C test cases are due to bugs in RemoveDeadBindings(),
which removes constraints that is still alive. This will be fixed in later
patch.
* default value of array and struct regions will be implemented in later patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61274 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
4193eca10ce0cc8b2dae887e935a43b26f492b5b 20-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Lazy bingding for region-store manager.
* Now Bind() methods take and return GRState* because binding could
also alter GDM.
* No variables are initialized except those declared with initial
values.
* failed C test cases are due to bugs in RemoveDeadBindings(),
which removes constraints that is still alive. This will be fixed in later
patch.
* default value of array and struct regions will be implemented in later patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61274 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
bef3bdba2a89f014bac11a97b17a2788c860e59c 20-Dec-2008 Chris Lattner <sabre@nondot.org> avoid using a typedef that isn't always included from headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61269 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
e36dabb2d9567c98734a1063ac7748dc37a999ce 20-Dec-2008 Chris Lattner <sabre@nondot.org> avoid using a typedef that isn't always included from headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61269 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
0cd547f8f4ee15e03c4b8ef47895e319437b27b2 20-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> More encoding support. This time for
@encode of classes and bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
43822eaeddeaa419b90f23c68af6b23c46788a58 20-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> More encoding support. This time for
@encode of classes and bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61268 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8c3de809dc733ca29f1d07c73684be65b3f10785 19-Dec-2008 Anders Carlsson <andersca@mac.com> Get rid of the old Expr::Evaluate variant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1c0cfd4599e816cfd7a8f348286bf0ad79652ffc 19-Dec-2008 Anders Carlsson <andersca@mac.com> Get rid of the old Expr::Evaluate variant.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
96095fcc4c580c21560361d526f645f3e887f0fc 19-Dec-2008 Anders Carlsson <andersca@mac.com> Fix for PR3234

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61245 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
00165a25a9ac005aa2e6b4ac791d555226fa9a9f 19-Dec-2008 Anders Carlsson <andersca@mac.com> Fix for PR3234

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61245 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2fa10440d81ba071e854a2246cb58e7142a81c6b 18-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Ultrasimplistic sketch for the parsing of C++ template-ids. This won't
become useful or correct until we (1) parse template arguments
correctly, (2) have some way to turn template-ids into types,
declarators, etc., and (3) have a real representation of templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Token.h
arse/Action.h
arse/Ownership.h
arse/Parser.h
d6fb7ef028d9aa0b3e8943b7bc049c524437b407 18-Dec-2008 Douglas Gregor <dgregor@apple.com> Ultrasimplistic sketch for the parsing of C++ template-ids. This won't
become useful or correct until we (1) parse template arguments
correctly, (2) have some way to turn template-ids into types,
declarators, etc., and (3) have a real representation of templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61208 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Token.h
arse/Action.h
arse/Ownership.h
arse/Parser.h
ea944844821d8e07b87937a8e9cb02a5a611cc11 18-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Removed a slot in ObjCMemRegExpr used in
code gen which did not belong there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprObjC.h
efc4c4bdbd8fee90b93deb3b5cfaeb044ae22557 18-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Removed a slot in ObjCMemRegExpr used in
code gen which did not belong there.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/ExprObjC.h
e319ca37c64ad01867100f9dd749f4150cba8fb6 18-Dec-2008 Chris Lattner <sabre@nondot.org> rename argument


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61199 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
85b5a45803784a5465f69baf6f8d6e1eacaa5af5 18-Dec-2008 Chris Lattner <sabre@nondot.org> rename argument


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61199 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
460696f49303a79ca9e3885ad77b3794e1fffd69 18-Dec-2008 Chris Lattner <sabre@nondot.org> disallow attributes in a few callers of ParseTypeQualifierListOpt,
these completely ignore parsed attributes anyway, so don't try
to read them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61198 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5a69d1ce71579147c306f21c4cf205ef9519d63d 18-Dec-2008 Chris Lattner <sabre@nondot.org> disallow attributes in a few callers of ParseTypeQualifierListOpt,
these completely ignore parsed attributes anyway, so don't try
to read them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61198 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
306d4df4d3795208470617291c8a83373268c6ed 18-Dec-2008 Chris Lattner <sabre@nondot.org> Clean up the C89/C++ warnings about C99 array features to not
emit duplicate diags (some in parser and some in sema) and to
warn about use of typequals in array sizes. This implements
PR2759.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61197 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a1fcbadf4f930c22bb171fb90ed886f5f359d010 18-Dec-2008 Chris Lattner <sabre@nondot.org> Clean up the C89/C++ warnings about C99 array features to not
emit duplicate diags (some in parser and some in sema) and to
warn about use of typequals in array sizes. This implements
PR2759.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61197 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0d5081370ab3d4733bd5e4c914232578bec7864d 18-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add method used by ImmutableMap GDM specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61193 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
62b585701d626dec90b0aa0dfd8c2b75ffe29265 18-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add method used by ImmutableMap GDM specialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61193 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
6ed167cea991ebd3eedb4e8a4552d9a20d81b210 18-Dec-2008 Chris Lattner <sabre@nondot.org> Merge function-return.c into function.c

Fix PR2790 by making a warning an EXTWARN instead of EXTENSION.
Add a new EXTENSION warning for "return (some void expression);"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
65ce04bef06696379682410f399f37b43996d824 18-Dec-2008 Chris Lattner <sabre@nondot.org> Merge function-return.c into function.c

Fix PR2790 by making a warning an EXTWARN instead of EXTENSION.
Add a new EXTENSION warning for "return (some void expression);"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61187 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c98406ebcb31b1616f77e27ba30de8a7f6b0c6a1 18-Dec-2008 Nuno Lopes <nunoplopes@sapo.pt> fix leakage of var's initializers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
99f06ba988922ea721035a89e6d3c66ba100ba8a 18-Dec-2008 Nuno Lopes <nunoplopes@sapo.pt> fix leakage of var's initializers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
beb576767c86cc6a69cc89c25de3467a86e4cde8 18-Dec-2008 Ted Kremenek <kremenek@apple.com> Change PTHLexer::getSourceLocation() to not call GetToken() and instead just read the file offset in the token data buffer directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61170 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
30a12ec2a7f331d9e08acabe7cda853aaa7ba54b 18-Dec-2008 Ted Kremenek <kremenek@apple.com> Change PTHLexer::getSourceLocation() to not call GetToken() and instead just read the file offset in the token data buffer directly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61170 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
9970eaf62ec4c462d1315fc1b7c125af5ea21711 18-Dec-2008 Ted Kremenek <kremenek@apple.com> PTHLexer::isNextPPTokenLParen() no longer calls GetToken() and just reads the token kind from the token data buffer. This results in a minor speedup and reduces the dependency on GetToken().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61168 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
daeee815169f37f2a49f80af7bd104722672ad97 18-Dec-2008 Ted Kremenek <kremenek@apple.com> PTHLexer::isNextPPTokenLParen() no longer calls GetToken() and just reads the token kind from the token data buffer. This results in a minor speedup and reduces the dependency on GetToken().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61168 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
e6be68ae1f97c922d437e89e74c95660b0b98e70 17-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Delay semantic analysis of the C++ names casts when the subexpression is type-dependent or the destination type is dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9103bb27f4eefa0e0d7935387750e3aca24abc49 17-Dec-2008 Douglas Gregor <dgregor@apple.com> Delay semantic analysis of the C++ names casts when the subexpression is type-dependent or the destination type is dependent.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1d8e3f9fbcdc1671115d8822298bfd552c3481a9 17-Dec-2008 Ted Kremenek <kremenek@apple.com> CF-retain/release checker:
- Fix regression reported in <rdar://problem/6452745>. After a null check, null references to resources should not have a retain count. This regression was caused by removing the call to "GRTransferFuncs::EvalAssume" in BasicConstraintManager.
- Added a test case to test this behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
2fb78a70536274426302415b6fc54a1074788e91 17-Dec-2008 Ted Kremenek <kremenek@apple.com> CF-retain/release checker:
- Fix regression reported in <rdar://problem/6452745>. After a null check, null references to resources should not have a retain count. This regression was caused by removing the call to "GRTransferFuncs::EvalAssume" in BasicConstraintManager.
- Added a test case to test this behavior.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
0556b1563848eb53ac71b24d0ab6411bace87214 17-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> This patch will build the Records lazily per Steve's comments.
Note that one test duplicate-ivar-check.m will fail because I
need to re-implement duplicate ivar checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61154 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
a769c004a2874504c17ea8afccbc4ad35fc33c9f 17-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> This patch will build the Records lazily per Steve's comments.
Note that one test duplicate-ivar-check.m will fail because I
need to re-implement duplicate ivar checking.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61154 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
542c34d0b2c98379a6a1a02ee2fac7ea0d8e98ac 17-Dec-2008 Ted Kremenek <kremenek@apple.com> Add pretty-printing for AnonTypedRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61146 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
500d2ee83d407106d80920fb4325fa2e06fa61a5 17-Dec-2008 Ted Kremenek <kremenek@apple.com> Add pretty-printing for AnonTypedRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61146 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ca328c32e7a189914842e667e4f3e4b65a531082 17-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Consolidated property check into property-typecheck-1.m file.
Improved on property diagnostics.
Added a FIXME per Steve's comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
0b65b1dc5abed26492740206c24e86271c9dca6b 17-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Consolidated property check into property-typecheck-1.m file.
Improved on property diagnostics.
Added a FIXME per Steve's comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
746a24c07ce5704fecafd00c396b32d4e3dc612c 17-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Remove the crufty reverse_decl_iterator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
270b4146ad54784ce41d0374e6a894eaab6c1650 17-Dec-2008 Douglas Gregor <dgregor@apple.com> Remove the crufty reverse_decl_iterator

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
9dd88c7a8d2b666c5648d248d1a25606115dc5ef 17-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Removed the warning

warning: statement was disambiguated as declaration

because it is currently firing in cases where the declaration would
not actually parse as a statement. We'd love to bring this warning
back if we can make it more accurate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61137 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3eb1c546857087b5e1377d172f37868ade960664 17-Dec-2008 Douglas Gregor <dgregor@apple.com> Removed the warning

warning: statement was disambiguated as declaration

because it is currently firing in cases where the declaration would
not actually parse as a statement. We'd love to bring this warning
back if we can make it more accurate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61137 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b0b42f6f5b944688eefd7fba53c76c0b2230512e 17-Dec-2008 Chris Lattner <sabre@nondot.org> diagnose C99 6.9.1p5, C arguments in definitions that are lacking
a name. This implements PR3208.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
777f07b6cd595bb0922e05768e5703fbc92b5695 17-Dec-2008 Chris Lattner <sabre@nondot.org> diagnose C99 6.9.1p5, C arguments in definitions that are lacking
a name. This implements PR3208.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
8f9b1b29de881c59cd08fceafe30b385e9684931 17-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Semantics of @protocol attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/Action.h
arse/AttributeList.h
bc1c877fe28fb6a825f0b226a0a2da99e713ea03 17-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Semantics of @protocol attributes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/Action.h
arse/AttributeList.h
ad17e37ac2ad69b67ae6a1559658d46617a44eac 16-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Make linkage-specifications hold on to all of their declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61110 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
f44515a49b549171dc3ee9faa6281b72609da563 16-Dec-2008 Douglas Gregor <dgregor@apple.com> Make linkage-specifications hold on to all of their declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61110 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
arse/Action.h
4bfcda2cf658530c3a31193bcd5ee1a3015851dd 16-Dec-2008 Ted Kremenek <kremenek@apple.com> Add new GRWorkList class that uses two queues:
- one queue (FIFO) to queue up nodes at block entrances
- another queue (LIFO) to queue up other nodes
- The idea is to explore basic blocks to completion, but to do a BFS exploration of blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61106 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRWorkList.h
e1efd4de8685e0785daf9cab227f7a21cfc9c80b 16-Dec-2008 Ted Kremenek <kremenek@apple.com> Add new GRWorkList class that uses two queues:
- one queue (FIFO) to queue up nodes at block entrances
- another queue (LIFO) to queue up other nodes
- The idea is to explore basic blocks to completion, but to do a BFS exploration of blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61106 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRWorkList.h
e27c37a6133549462d07b8a29446a024373528be 16-Dec-2008 Ted Kremenek <kremenek@apple.com> ProgramPoint:
- Added four new ProgramPoint types that subclass PostStmt for use in
GRExprEngine::EvalLocation:
- PostOutOfBoundsCheckFailed
- PostUndefLocationCheckFailed
- PostNullCheckFailed
- PostLocationChecksSucceed
These were created because of a horribly subtle caching bug in EvalLocation
where a node representing an "bug condition" in EvalLocation (e.g. a null
dereference) could be re-used as the "non-bug condition" because the Store did
not contain any information to differentiate between the two. The extra
program points just disables any accidental caching between EvalLocation and
its callers.

GRExprEngine:
- EvalLocation now returns a NodeTy* instead of GRState*. This should be used as the "vetted" predecessor for EvalLoad/EvalStore.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61105 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
8c354758c2d39db87c77c723d81e34b4d967f762 16-Dec-2008 Ted Kremenek <kremenek@apple.com> ProgramPoint:
- Added four new ProgramPoint types that subclass PostStmt for use in
GRExprEngine::EvalLocation:
- PostOutOfBoundsCheckFailed
- PostUndefLocationCheckFailed
- PostNullCheckFailed
- PostLocationChecksSucceed
These were created because of a horribly subtle caching bug in EvalLocation
where a node representing an "bug condition" in EvalLocation (e.g. a null
dereference) could be re-used as the "non-bug condition" because the Store did
not contain any information to differentiate between the two. The extra
program points just disables any accidental caching between EvalLocation and
its callers.

GRExprEngine:
- EvalLocation now returns a NodeTy* instead of GRState*. This should be used as the "vetted" predecessor for EvalLoad/EvalStore.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61105 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
605de8d1e3f8ebf01431e8a7448a7a3e0b8d0723 16-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Delay parsing of default arguments of member functions until the class
is completely defined (C++ [class.mem]p2).

Reverse the order in which we process the definitions of member
functions specified inline. This way, we'll get diagnostics in the
order in which the member functions were declared in the class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61103 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
72b505b7904b3c9320a1312998800ba76e4f5841 16-Dec-2008 Douglas Gregor <dgregor@apple.com> Delay parsing of default arguments of member functions until the class
is completely defined (C++ [class.mem]p2).

Reverse the order in which we process the definitions of member
functions specified inline. This way, we'll get diagnostics in the
order in which the member functions were declared in the class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61103 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
519648829f41da741c871c0ff8122dd956259a59 16-Dec-2008 Nate Begeman <natebegeman@mac.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
arse/Scope.h
fea8685bf3036b199c573e70b03affde2583fc44 16-Dec-2008 Nate Begeman <natebegeman@mac.com> Remove tabs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
arse/Scope.h
f8bfa0c944df6195d36ab51cc0eb296c3abeba43 16-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to check for ObjC's property type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61090 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
105ec4bb8e969eee18b4c2f503b46b17f3e2f364 16-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to check for ObjC's property type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61090 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
24effa8f97905f1ed88317a763f7a2742dd23f7f 16-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Make name lookup when we're inside a declarator's scope, such as ClassName::func, work with the new unqualified name lookup code. Test it with default arguments in out-of-line member definitions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61060 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
0a59acb9ae36077ce46fb2807956c5e84f0f6837 16-Dec-2008 Douglas Gregor <dgregor@apple.com> Make name lookup when we're inside a declarator's scope, such as ClassName::func, work with the new unqualified name lookup code. Test it with default arguments in out-of-line member definitions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61060 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
c5cbc24943ddf0867e89e68c0c93722b9e72d620 16-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Diagnose erroneous uses of out-of-line member definitions and scope
specifiers. Specifically:
* Determine when an out-of-line function definition does not match
any declaration within the class or namespace (including coping
with overloaded functions).
* Complain about typedefs and parameters that have scope specifiers.
* Complain about out-of-line declarations that aren't also
definitions.
* Complain about non-static data members being declared out-of-line.
* Allow cv-qualifiers on out-of-line member function definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
584049d49d956add7bce5669e9823491f7d8de78 16-Dec-2008 Douglas Gregor <dgregor@apple.com> Diagnose erroneous uses of out-of-line member definitions and scope
specifiers. Specifically:
* Determine when an out-of-line function definition does not match
any declaration within the class or namespace (including coping
with overloaded functions).
* Complain about typedefs and parameters that have scope specifiers.
* Complain about out-of-line declarations that aren't also
definitions.
* Complain about non-static data members being declared out-of-line.
* Allow cv-qualifiers on out-of-line member function definitions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61058 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cb8e803696224e723e294d7e3ef79e5e393493eb 15-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Name of addLayoutToClass is confusing as no layout calculation
is done. Layout is calculated lazily at code gen type.
This patch changes the name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61054 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9ee92e84ecf085ccbe6f877d1c6e1500961bbbce 15-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Name of addLayoutToClass is confusing as no layout calculation
is done. Layout is calculated lazily at code gen type.
This patch changes the name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61054 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b9213832bca8e9a31450604e56a1da067fea4b7c 15-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Place constructors and destructors into the DeclContext of the class,
just like all other members, and remove the special variables in
CXXRecordDecl to store them. This eliminates a lot of special-case
code for constructors and destructors, including
ActOnConstructor/ActOnDeclarator and special lookup rules in
LookupDecl. The result is far more uniform and manageable.

Diagnose the redeclaration of member functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
9e7d9de3ef538c1473248238b76a6d7b16f5f684 15-Dec-2008 Douglas Gregor <dgregor@apple.com> Place constructors and destructors into the DeclContext of the class,
just like all other members, and remove the special variables in
CXXRecordDecl to store them. This eliminates a lot of special-case
code for constructors and destructors, including
ActOnConstructor/ActOnDeclarator and special lookup rules in
LookupDecl. The result is far more uniform and manageable.

Diagnose the redeclaration of member functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
86008c06acdaccb4308c514a4d5c56e3023e72fb 15-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Code gen. for ivar references; including bitfield
ivars.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
fd64bb635dc221baa19f81d5d2a084f7eb269f7f 15-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Code gen. for ivar references; including bitfield
ivars.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5f9fb3fce53dc9b12eafd31df9b9af85791c9ee7 15-Dec-2008 Ted Kremenek <kremenek@apple.com> Preprocessor: Allocate MacroInfo objects using a BumpPtrAllocator instead using new/delete. This speeds up -Eonly on Cocoa.h using the regular lexer by 1.8% and the PTHLexer by 3%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61042 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0ea76727ae91bca918a8414ed85b530eddcfedeb 15-Dec-2008 Ted Kremenek <kremenek@apple.com> Preprocessor: Allocate MacroInfo objects using a BumpPtrAllocator instead using new/delete. This speeds up -Eonly on Cocoa.h using the regular lexer by 1.8% and the PTHLexer by 3%.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61042 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ae644896ecccf05b5497a311a8a55112023a0b83 15-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Create new EnumDecl nodes for redeclarations of enums, linking them
together in the same way that we link RecordDecl/CXXRecordDecl nodes.

Unify ActOnTag and ActOnTagStruct.

Fixes PR clang/2753.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7df7b6bb800e1987951285ea192e4f347e1b603a 15-Dec-2008 Douglas Gregor <dgregor@apple.com> Create new EnumDecl nodes for redeclarations of enums, linking them
together in the same way that we link RecordDecl/CXXRecordDecl nodes.

Unify ActOnTag and ActOnTagStruct.

Fixes PR clang/2753.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
09772396cb7b6c47b05858ae74e78b113adf3821 13-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Patch for ObjCIvarRefExpr containing the field
matching the storage layout for this ivar


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExprObjC.h
aaa63a761c6671a08e3f4f463435b72739fa194b 13-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Patch for ObjCIvarRefExpr containing the field
matching the storage layout for this ivar


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60996 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/ExprObjC.h
f5da325cb01fdcc7f21feaf721deb8bfffb7ff96 13-Dec-2008 Ted Kremenek <kremenek@apple.com> MemRegion:
- Overhauled the notion of "types" for TypedRegions. We now distinguish between the "lvalue" of a region (via getLValueRegion()) and the "rvalue" of a region (va getRValueRegion()). Since a region represents a chunk of memory it has both, but we were conflating these concepts in some cases, leading to some insidious bugs.
- Removed AnonPointeeType, partially because it is unused and because it doesn't have a clear notion of lvalue vs rvalue type. We can add it back once there is a need for it and we can resolve its role with these concepts.

StoreManager:
- Overhauled StoreManager::CastRegion. It expects an *lvalue* type for a region. This is actually what motivated the overhaul to the MemRegion type mechanism. It also no longer returns an SVal; we can just return a MemRegion*.
- BasicStoreManager::CastRegion now overlays an "AnonTypedRegion" for pointer-pointer casts. This matches with the MemRegion changes.
- Similar changes to RegionStore, except I've added a bunch of FIXMEs where it wasn't 100% clear where we should use TypedRegion::getRValueRegion() or TypedRegion::getLValueRegion().

AuditCFNumberCreate check:
- Now blasts through AnonTypedRegions that may layer the original memory region, thus checking if the actually memory block is of the appropriate type. This change was needed to work with the changes to StoreManager::CastRegion.

GRExprEngine::VisitCast:
- Conform to the new interface of StoreManager::CastRegion.

Tests:
- None of the analysis tests fail now for using the "basic store".
- Disabled the tests 'array-struct.c' and 'rdar-6442306-1.m' pending further testing and bug fixing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60995 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
6eddeb153415049c7b62de4b45385a759a6906c6 13-Dec-2008 Ted Kremenek <kremenek@apple.com> MemRegion:
- Overhauled the notion of "types" for TypedRegions. We now distinguish between the "lvalue" of a region (via getLValueRegion()) and the "rvalue" of a region (va getRValueRegion()). Since a region represents a chunk of memory it has both, but we were conflating these concepts in some cases, leading to some insidious bugs.
- Removed AnonPointeeType, partially because it is unused and because it doesn't have a clear notion of lvalue vs rvalue type. We can add it back once there is a need for it and we can resolve its role with these concepts.

StoreManager:
- Overhauled StoreManager::CastRegion. It expects an *lvalue* type for a region. This is actually what motivated the overhaul to the MemRegion type mechanism. It also no longer returns an SVal; we can just return a MemRegion*.
- BasicStoreManager::CastRegion now overlays an "AnonTypedRegion" for pointer-pointer casts. This matches with the MemRegion changes.
- Similar changes to RegionStore, except I've added a bunch of FIXMEs where it wasn't 100% clear where we should use TypedRegion::getRValueRegion() or TypedRegion::getLValueRegion().

AuditCFNumberCreate check:
- Now blasts through AnonTypedRegions that may layer the original memory region, thus checking if the actually memory block is of the appropriate type. This change was needed to work with the changes to StoreManager::CastRegion.

GRExprEngine::VisitCast:
- Conform to the new interface of StoreManager::CastRegion.

Tests:
- None of the analysis tests fail now for using the "basic store".
- Disabled the tests 'array-struct.c' and 'rdar-6442306-1.m' pending further testing and bug fixing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60995 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
624921a9c7054a2613a5ac57e44320cc6b9adcc6 13-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Add storage layout to ObjC classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
60f8c868ffb346b78451a3eccaecd0461d2ae498 13-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Add storage layout to ObjC classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2c0de355c77c6a1dfdedfcc061107a175736df71 13-Dec-2008 Ted Kremenek <kremenek@apple.com> A series of cleanups/fixes motivated by <rdar://problem/6442306>:

GRExprEngine (VisitCast):
- When using StoreManager::CastRegion, always use the state and value it returns to generate the next node. Failure to do so means that region values returned that don't require the state to be modified will get ignored.

MemRegion:
- Tighten the interface for ElementRegion. Now ElementRegion can only be created with a super region that is a 'TypedRegion' instead of any MemRegion. Code in BasicStoreManager/RegionStoreManager already assumed this, but it would result in a dynamic assertion check (and crash) rather than just having the compiler forbid the construction of such regions.
- Added ElementRegion::getArrayRegion() to return the 'typed version' of an ElementRegion's super region.
- Removed bogus assertion in ElementRegion::getType() that assumed that the super region was an AnonTypedRegion. All that matters is that it is a TypedRegion, which is now true all the time by design.

BasicStore:
- Modified getLValueElement() to check if the 'array' region is a TypedRegion before creating an ElementRegion. This conforms to the updated interface for ElementRegion.

RegionStore:
- In ArrayToPointer() gracefully handle things we don't reason about, and only create an ElementRegion if the array region is indeed a TypedRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60990 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
abb042f33ea8e6107a7dc8efc51d2ace329f9f48 13-Dec-2008 Ted Kremenek <kremenek@apple.com> A series of cleanups/fixes motivated by <rdar://problem/6442306>:

GRExprEngine (VisitCast):
- When using StoreManager::CastRegion, always use the state and value it returns to generate the next node. Failure to do so means that region values returned that don't require the state to be modified will get ignored.

MemRegion:
- Tighten the interface for ElementRegion. Now ElementRegion can only be created with a super region that is a 'TypedRegion' instead of any MemRegion. Code in BasicStoreManager/RegionStoreManager already assumed this, but it would result in a dynamic assertion check (and crash) rather than just having the compiler forbid the construction of such regions.
- Added ElementRegion::getArrayRegion() to return the 'typed version' of an ElementRegion's super region.
- Removed bogus assertion in ElementRegion::getType() that assumed that the super region was an AnonTypedRegion. All that matters is that it is a TypedRegion, which is now true all the time by design.

BasicStore:
- Modified getLValueElement() to check if the 'array' region is a TypedRegion before creating an ElementRegion. This conforms to the updated interface for ElementRegion.

RegionStore:
- In ArrayToPointer() gracefully handle things we don't reason about, and only create an ElementRegion if the array region is indeed a TypedRegion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60990 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
91f9b0aa21ff25478a4558bdc3f92b3c1fae632f 13-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Some utilities for using the smart pointers in Actions, especially Sema. Convert a few functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60983 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
798d119415323ebcd029ffe1e0fb442a4ca8adbb 13-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Some utilities for using the smart pointers in Actions, especially Sema. Convert a few functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60983 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a2deb433204c0dd6cbb88bfce3a6f3be5f22c554 13-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert remaining expression parsers to smart pointers. Now on to the Action connection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
arse/Parser.h
1d922960e083906a586609ac6978678147250177 13-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert remaining expression parsers to smart pointers. Now on to the Action connection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60982 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
arse/Parser.h
c07091c46729b3203854edf95411de3986021900 12-Dec-2008 Ted Kremenek <kremenek@apple.com> Added PTH optimization to not process entire blocks of tokens that appear in skipped preprocessor blocks. This improves PTH speed by 6%. The code for this optimization itself is not very optimized, and will get cleaned up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60956 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/Preprocessor.h
268ee7016a2811803989487c0ad3799486092c63 12-Dec-2008 Ted Kremenek <kremenek@apple.com> Added PTH optimization to not process entire blocks of tokens that appear in skipped preprocessor blocks. This improves PTH speed by 6%. The code for this optimization itself is not very optimized, and will get cleaned up.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60956 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/Preprocessor.h
98341049a14443ad41927de25d8950936a39aedd 12-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Enable out-of-line definitions of C++ constructors and destructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
9d35097bc0fefb2f77638be513cac72d1c09d840 12-Dec-2008 Douglas Gregor <dgregor@apple.com> Enable out-of-line definitions of C++ constructors and destructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c8d7a40a5d8628b3536ba6e6a1d235f5ed221aec 12-Dec-2008 Chris Lattner <sabre@nondot.org> fix breakage I introduced in r60938


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60941 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
3d8173c1c68f451c7492f92023d829c626845925 12-Dec-2008 Chris Lattner <sabre@nondot.org> fix breakage I introduced in r60938


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60941 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
819e3089cf67bc977cbf8cbd2129c55db6c44f6a 12-Dec-2008 Chris Lattner <sabre@nondot.org> silence warning in release-asserts mode about unused variable, also
move comment into assert message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60938 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
43b28d07019bc78447ecbbb721526de4ffd83f20 12-Dec-2008 Chris Lattner <sabre@nondot.org> silence warning in release-asserts mode about unused variable, also
move comment into assert message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60938 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
a82444d751a5c34190b1dd979b3e15247e482a44 12-Dec-2008 Chris Lattner <sabre@nondot.org> use smarter error recovery for do/while.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60933 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ff871fb8f9c5906a4dee78afd81f60c3837e16cb 12-Dec-2008 Chris Lattner <sabre@nondot.org> use smarter error recovery for do/while.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60933 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f959397a2b6aa7e86c630ffb93a06315c0436497 12-Dec-2008 Chris Lattner <sabre@nondot.org> apply the new error recovery smarts we have for if's to while's and switch's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60932 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
15ff1110c96a26c9315142d407c1f29d86a5ad1f 12-Dec-2008 Chris Lattner <sabre@nondot.org> apply the new error recovery smarts we have for if's to while's and switch's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60932 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bce5e4f8e89830ed30afa8b102c1ec42ededfc9b 12-Dec-2008 Chris Lattner <sabre@nondot.org> fix rdar://6097892 - gcc incompat: clang rejects __func__, __FUNCTION__, and __PRETTY_FUNCTION__ outside func

Yeah, this is "useful".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b0da923653601191c4f60bdc284feae376d28cda 12-Dec-2008 Chris Lattner <sabre@nondot.org> fix rdar://6097892 - gcc incompat: clang rejects __func__, __FUNCTION__, and __PRETTY_FUNCTION__ outside func

Yeah, this is "useful".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8464c370159a4e19d38694b76a651199ea0446aa 12-Dec-2008 Chris Lattner <sabre@nondot.org> Implement rdar://6138816 - [sema] named bitfields cannot have 0 width


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60920 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cd08707a960842223e4af9ab82c729ba179290c0 12-Dec-2008 Chris Lattner <sabre@nondot.org> Implement rdar://6138816 - [sema] named bitfields cannot have 0 width


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60920 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
39d4f029cc4aa13d6cdebd3bd8cf4104682569d1 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a big bunch of expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60906 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
20df9b7ab9388b2a488c5b1293cd196b1e073b4e 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a big bunch of expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60906 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
fe5c62d198d736ef652c641ff8b6625af1bf3764 11-Dec-2008 Ted Kremenek <kremenek@apple.com> PTHLexer: Keep track of the location of the last '#' token and provide the means to jump ahead in the token stream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60905 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
cd223444d1680290efe11da657faafc9a1ac14ba 11-Dec-2008 Ted Kremenek <kremenek@apple.com> PTHLexer: Keep track of the location of the last '#' token and provide the means to jump ahead in the token stream.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60905 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
a6817a08c234a2a9665dfb98c0b7266d467243f4 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60904 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d8c4e15138e69a51754cc259c8a592cc47950c8e 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60904 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
14ca741f0907af4c89834bcc89352e6f56ede723 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert selected expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60900 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
arse/Parser.h
2f7ece7c77eb17e24e8f0f4e1b7fb01aa5111f96 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert selected expression parsers to use smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60900 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
arse/Parser.h
3967762597e4c1f410a83493df22f38432557a61 11-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Address some comments on the name lookup/DeclContext patch from Chris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e267ff35b2f4e9d2b0d8bf24109d41cc7398b61b 11-Dec-2008 Douglas Gregor <dgregor@apple.com> Address some comments on the name lookup/DeclContext patch from Chris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e8b79e6a11c20495bb1bc1d24f0ca3152edb49a7 11-Dec-2008 Ted Kremenek <kremenek@apple.com> Remove unused ivar CurTokenIdx.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60896 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
7415326dcbba6f333f5f7708ac1bf4982f3adb5a 11-Dec-2008 Ted Kremenek <kremenek@apple.com> Remove unused ivar CurTokenIdx.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60896 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
15bf1456a9b943f7d23538343f091dbb01c42861 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert the remaining statement parsers to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60895 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
43bc2a0973ffe404fabba6f8280cd6bad2c69fcb 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert the remaining statement parsers to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60895 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a88da59fdedb0e886791d38e8b563483cc62c4c0 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more statement parsers to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60892 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9a920342707e384473b464528d2fd286e8c70353 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert some more statement parsers to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60892 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
10c3295da58b905e589b694ade5d08d5f5eb4b50 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a number of statement parsers to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60888 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
61364dddc33383e62cfe3b841dbc0f471280d95b 11-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Convert a number of statement parsers to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60888 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
640a04ba33ae3fb9de6bed628cd70ee679f8d808 11-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Actually distinguish between RecordDecl::field_iterator and RecordDecl::field_const_iterator, propagating the constness down to the FieldDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60883 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a4c46df1cd63e06af2a094b68b902a3eb232f056 11-Dec-2008 Douglas Gregor <dgregor@apple.com> Actually distinguish between RecordDecl::field_iterator and RecordDecl::field_const_iterator, propagating the constness down to the FieldDecls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60883 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8acb72795794649013477457cd06a0d3871a2374 11-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Unifies the name-lookup mechanisms used in various parts of the AST
and separates lexical name lookup from qualified name lookup. In
particular:
* Make DeclContext the central data structure for storing and
looking up declarations within existing declarations, e.g., members
of structs/unions/classes, enumerators in C++0x enums, members of
C++ namespaces, and (later) members of Objective-C
interfaces/implementations. DeclContext uses a lazily-constructed
data structure optimized for fast lookup (array for small contexts,
hash table for larger contexts).

* Implement C++ qualified name lookup in terms of lookup into
DeclContext.

* Implement C++ unqualified name lookup in terms of
qualified+unqualified name lookup (since unqualified lookup is not
purely lexical in C++!)

* Limit the use of the chains of declarations stored in
IdentifierInfo to those names declared lexically.

* Eliminate CXXFieldDecl, collapsing its behavior into
FieldDecl. (FieldDecl is now a ScopedDecl).

* Make RecordDecl into a DeclContext and eliminates its
Members/NumMembers fields (since one can just iterate through the
DeclContext to get the fields).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclarationName.h
arse/Action.h
arse/Scope.h
44b4321feab46299d3f5cfd404680884752a0fcf 11-Dec-2008 Douglas Gregor <dgregor@apple.com> Unifies the name-lookup mechanisms used in various parts of the AST
and separates lexical name lookup from qualified name lookup. In
particular:
* Make DeclContext the central data structure for storing and
looking up declarations within existing declarations, e.g., members
of structs/unions/classes, enumerators in C++0x enums, members of
C++ namespaces, and (later) members of Objective-C
interfaces/implementations. DeclContext uses a lazily-constructed
data structure optimized for fast lookup (array for small contexts,
hash table for larger contexts).

* Implement C++ qualified name lookup in terms of lookup into
DeclContext.

* Implement C++ unqualified name lookup in terms of
qualified+unqualified name lookup (since unqualified lookup is not
purely lexical in C++!)

* Limit the use of the chains of declarations stored in
IdentifierInfo to those names declared lexically.

* Eliminate CXXFieldDecl, collapsing its behavior into
FieldDecl. (FieldDecl is now a ScopedDecl).

* Make RecordDecl into a DeclContext and eliminates its
Members/NumMembers fields (since one can just iterate through the
DeclContext to get the fields).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclarationName.h
arse/Action.h
arse/Scope.h
2dfa8259e1c071c79eb6f8eabd6d877c95e1212b 11-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Identify AnonPointeeRegion by the symbol that is concretized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c5458622a30ede903e8d1e800cbf9382bd45b69f 11-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Identify AnonPointeeRegion by the symbol that is concretized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60870 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
998605c25dc85b99f230c04bf043f05dc7bd8f8b 11-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> AnonPointeeRegions are now identified by the MemRegion of the pointer pointing
to them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60868 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
3bb662a8635a1f85a64719759ead76abffe0e172 11-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> AnonPointeeRegions are now identified by the MemRegion of the pointer pointing
to them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60868 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
55dacf3ed73308f387d1321fd66022349f01394d 11-Dec-2008 Ted Kremenek <kremenek@apple.com> PreprocessorLexer (and subclasses):
- Added virtual method 'getSourceLocation()' (no arguments) that gets the location of the next "observable" location (e.g., next character, next token).
PPLexerChange.cpp:
- Implemented FIXME by using PreprocessorLexer::getSourceLocation() to get the location in the file we are returning to after lexing a #included file. This appears to be slightly faster than having the branch (i.e., 'if(CurLexer)'). It's also not a really hot part of the Preprocessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60860 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PTHLexer.h
ex/PreprocessorLexer.h
bc0f6bc0391ecdff331885cdc769c20b2cb628a6 11-Dec-2008 Ted Kremenek <kremenek@apple.com> PreprocessorLexer (and subclasses):
- Added virtual method 'getSourceLocation()' (no arguments) that gets the location of the next "observable" location (e.g., next character, next token).
PPLexerChange.cpp:
- Implemented FIXME by using PreprocessorLexer::getSourceLocation() to get the location in the file we are returning to after lexing a #included file. This appears to be slightly faster than having the branch (i.e., 'if(CurLexer)'). It's also not a really hot part of the Preprocessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60860 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PTHLexer.h
ex/PreprocessorLexer.h
48840c744b86163706d32fe4f75a6c9f04f43730 11-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Added a warning when referencing an if's condition variable in the
"else" clause, e.g.,

if (int X = foo()) {
} else {
if (X) { // warning: X is always zero in this context
}
}

Fixes rdar://6425550 and lets me think about something other than
DeclContext.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Scope.h
caaf29a08761b14fbe42a29080c22dd6961056d1 11-Dec-2008 Douglas Gregor <dgregor@apple.com> Added a warning when referencing an if's condition variable in the
"else" clause, e.g.,

if (int X = foo()) {
} else {
if (X) { // warning: X is always zero in this context
}
}

Fixes rdar://6425550 and lets me think about something other than
DeclContext.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Scope.h
802fbd86b9eae506e65b9b54bb1e6294e2776bf6 10-Dec-2008 Ted Kremenek <kremenek@apple.com> Declare PerIDCache as IdentifierInfo** instead of void*. This is just cleaner. No performance change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60843 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
cf58e6249c6b018508e34bcb76202caa42d2451a 10-Dec-2008 Ted Kremenek <kremenek@apple.com> Declare PerIDCache as IdentifierInfo** instead of void*. This is just cleaner. No performance change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60843 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
95d4079ba2b26126854357fe485c371b8622cb04 10-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Use a scoped object to manage entry/exit from a parser scope rather than explicitly calling EnterScope/ExitScope

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60830 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
8935b8b49053122ddd3ab4cd59af0fe5eb9c23cf 10-Dec-2008 Douglas Gregor <dgregor@apple.com> Use a scoped object to manage entry/exit from a parser scope rather than explicitly calling EnterScope/ExitScope

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60830 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
6f1ee23fcfb358171f14eeb076c366d16c566cfe 10-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Modify the move emulation according to the excellent design of Howard Hinnant. Makes for much nicer syntax when smart pointers are used consistently. Also, start converting internal argument passing of Parser to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60809 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
arse/Parser.h
effa8d1c97b00a3f53e972b0e61d9aade5ea1c57 10-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Modify the move emulation according to the excellent design of Howard Hinnant. Makes for much nicer syntax when smart pointers are used consistently. Also, start converting internal argument passing of Parser to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60809 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Ownership.h
arse/Parser.h
0b7716c97e779a2a99ab782e7f2493cb153c5465 09-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Prevent bogus warning on unimplemented setter/getter when user
has added declaration of these methods in its @interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
91b51a92f2e9fc8025b6a9df88442840eb62823a 09-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Prevent bogus warning on unimplemented setter/getter when user
has added declaration of these methods in its @interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
91dd9d3cabbe94e48dd24bfe318a9ee5a9b21617 09-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Support for implementation of property in the case where
the synthesis is in an implementation of s subclass of
a super class where the property has been declared.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
fef30b55230064d334a669a065a1c9acdb87cdfe 09-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Support for implementation of property in the case where
the synthesis is in an implementation of s subclass of
a super class where the property has been declared.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6226104950f18e250bf3d0bc15fe603b933d5938 09-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Kick out the proof-of-concept ASTOwner and replace it with ASTOwningResult

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60791 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
arse/Parser.h
15faa7fdfb496489dec9470aa5eb699b29ecdacc 09-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Kick out the proof-of-concept ASTOwner and replace it with ASTOwningResult

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60791 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
arse/Parser.h
8d82b75dbe096e901e1175905816926836f2f4b7 09-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Lay the groundwork for converting the entire parser-sema chain to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60782 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
7f792faf0cee47fa1ea304bd7a7f502c0e5bbc9a 09-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Lay the groundwork for converting the entire parser-sema chain to smart pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60782 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Ownership.h
088edc8181766a8b15d20e98bb6ccf0b7bd4acf7 09-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> initialize member variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60759 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0bc27eab2079c01771cf025a77fd2205378182d8 09-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> initialize member variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60759 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b50a09ca857f26fd7c951b6c155f702d60796474 09-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add utility method. Remove an unused method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60758 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
2fdf555af136cb017f4dc0c26d5d3415d122e1ff 09-Dec-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add utility method. Remove an unused method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60758 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
7419fbda2e707896e79ad7fa20c1acb3fc240ce6 09-Dec-2008 Ted Kremenek <kremenek@apple.com> [static analyzer] Extend VLA size checking to look for undefined sizes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60734 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
159d2487e6b49f0aa64c44aef96bc9d643929931 09-Dec-2008 Ted Kremenek <kremenek@apple.com> [static analyzer] Extend VLA size checking to look for undefined sizes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60734 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
41a40bc636e87815dac1a9e52a323e573bf33dd1 09-Dec-2008 Ted Kremenek <kremenek@apple.com> Fixed LiveVariables bug where we didn't consider block-level expressions that functioned as the size of a VLA to be live.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/Support/BlkExprDeclBitVector.h
e0dbda136444b2f3550a421f4436d438230c732f 09-Dec-2008 Ted Kremenek <kremenek@apple.com> Fixed LiveVariables bug where we didn't consider block-level expressions that functioned as the size of a VLA to be live.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/Support/BlkExprDeclBitVector.h
f8f0d3c6e0f5af64ab650f84eff36b527e8de26f 08-Dec-2008 Ted Kremenek <kremenek@apple.com> Add checking for zero-sized VLAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
efd5994d6a35b6b16b29cc59a0d9ef8a14d9c6f8 08-Dec-2008 Ted Kremenek <kremenek@apple.com> Add checking for zero-sized VLAs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f189290ce2a564a1531c41c9ded6d0ee6ab23954 08-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Changed 'readonly' 'retain/copy' diagnostics into
warning as it is allowed in gcc and will break projects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ba45da8328b97fe7c9f4d92e377bd3e586b9a79f 08-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Changed 'readonly' 'retain/copy' diagnostics into
warning as it is allowed in gcc and will break projects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60710 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2715a1f5a94534980bd61dab5652a3d8c03be39c 08-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Move Sema::isTemplateParameterDecl to Decl::isTemplateParameter, where it belongs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
f57172b24f08a68d179675989813d5479dc87829 08-Dec-2008 Douglas Gregor <dgregor@apple.com> Move Sema::isTemplateParameterDecl to Decl::isTemplateParameter, where it belongs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
c05c2f37aee5fc3aa164f7269405b74c738f5e7d 07-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Fix outdated comment. Checks so much more than just typedefs in C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60676 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3cc461dccbfd3503f8a07cd46dae838245c27f26 07-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Fix outdated comment. Checks so much more than just typedefs in C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60676 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
ad476c0129c26ca3b3f46629da797a63c27f30cc 07-Dec-2008 Chris Lattner <sabre@nondot.org> a minor grammar fix


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60646 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
211316faa26af4ce594a10bcfc204124fe363362 07-Dec-2008 Chris Lattner <sabre@nondot.org> a minor grammar fix


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60646 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
68adbd15ff5f148e17dea108f7c76ae711a6a7eb 07-Dec-2008 Anders Carlsson <andersca@mac.com> Improve VLA diagnostics/sema checking. Fixes PR2361 and PR2352.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
96e05bc09070aaa7c18d3dd3ff13125a43532f69 07-Dec-2008 Anders Carlsson <andersca@mac.com> Improve VLA diagnostics/sema checking. Fixes PR2361 and PR2352.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
acad6d1ae92bf3150fce97137889e1ec19fa7316 07-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Use of properties declared in protocols in the category
via the category's protocol list1s, with appropriate
diagnsostics and a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1ac2bc44781ec8451f880dcf586768a71824d3a6 07-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Use of properties declared in protocols in the category
via the category's protocol list1s, with appropriate
diagnsostics and a test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60634 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
88a6293ed42aa6aa186ba2e9d3c4bee967e80d09 06-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Improve error reporting of property and setter/getter
type mimatches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
196d0ed5e13bbea4cbe327060eb3cba7fa83898f 06-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Improve error reporting of property and setter/getter
type mimatches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60630 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
108229a2eece5159ea6451d9446d29b7bd7a6e29 06-Dec-2008 Anders Carlsson <andersca@mac.com> Add diagnostics for bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60628 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
9f1e5727e36481d830e566ff5a016fda726838e4 06-Dec-2008 Anders Carlsson <andersca@mac.com> Add diagnostics for bitfields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60628 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0f5ae03f71238dcc6f0591fdc4beca11cdaa8502 06-Dec-2008 Anders Carlsson <andersca@mac.com> Simplify some diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a75023d60fc22cef8c5c0e6ea79758233f4d2e2d 06-Dec-2008 Anders Carlsson <andersca@mac.com> Simplify some diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60626 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a133e26a86b181df1188a7af7671db790b5e56b2 06-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Add support for calls to dependent names within templates, e.g.,

template<typename T> void f(T x) {
g(x); // g is a dependent name, so don't even bother to look it up
g(); // error: g is not a dependent name
}

Note that when we see "g(", we build a CXXDependentNameExpr. However,
if none of the call arguments are type-dependent, we will force the
resolution of the name "g" and replace the CXXDependentNameExpr with
its result.

GCC actually produces a nice error message when you make this
mistake, and even offers to compile your code with -fpermissive. I'll
do the former next, but I don't plan to do the latter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
5c37de788529cd9180f22069970737a7208bd625 06-Dec-2008 Douglas Gregor <dgregor@apple.com> Add support for calls to dependent names within templates, e.g.,

template<typename T> void f(T x) {
g(x); // g is a dependent name, so don't even bother to look it up
g(); // error: g is not a dependent name
}

Note that when we see "g(", we build a CXXDependentNameExpr. However,
if none of the call arguments are type-dependent, we will force the
resolution of the name "g" and replace the CXXDependentNameExpr with
its result.

GCC actually produces a nice error message when you make this
mistake, and even offers to compile your code with -fpermissive. I'll
do the former next, but I don't plan to do the latter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
1b21c7ffe5fac1711fea35e4830159004a835c1a 06-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Introduce basic support for dependent types, type-dependent
expressions, and value-dependent expressions. This permits us to parse
some template definitions.

This is not a complete solution; we're missing type- and
value-dependent computations for most of the expression types, and
we're missing checks for dependent types and type-dependent
expressions throughout Sema.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
898574e7496ba8fd76290079d3a9d06954992734 06-Dec-2008 Douglas Gregor <dgregor@apple.com> Introduce basic support for dependent types, type-dependent
expressions, and value-dependent expressions. This permits us to parse
some template definitions.

This is not a complete solution; we're missing type- and
value-dependent computations for most of the expression types, and
we're missing checks for dependent types and type-dependent
expressions throughout Sema.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
6834228be513a9bf574db13b214cc31b3312d936 05-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> This test checks for duplicate implementation of the same
property. It also checks for duplicate use of the same ivar
in two different iproperty implementations. It also caught
an error for a test case used in CodeGen :).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60610 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
ae6f6fd1527a1da84679a6f0439dec3bbbd6ca7b 05-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> This test checks for duplicate implementation of the same
property. It also checks for duplicate use of the same ivar
in two different iproperty implementations. It also caught
an error for a test case used in CodeGen :).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60610 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
4e0f645b99e2f12c60f2f9411c17015c2d0172de 05-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> (instance/class) Method type checking between class and its implementation.
(instance/class) Method type checking between category and its implementation.
And a test case for all.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8daab970b80ed2e751fc88327180acbeff1dbb9c 05-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> (instance/class) Method type checking between class and its implementation.
(instance/class) Method type checking between category and its implementation.
And a test case for all.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60598 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
dd861060e2e1f1e41f7b023d025fcd8eb183686d 05-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Representation of template type parameters and non-type template
parameters, with some semantic analysis:
- Template parameters are introduced into template parameter scope
- Complain about template parameter shadowing (except in Microsoft mode)

Note that we leak template parameter declarations like crazy, a
problem we'll remedy once we actually create proper declarations for
templates.

Next up: dependent types and value-dependent/type-dependent
expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticKinds.def
arse/Scope.h
72c3f314d92d65c050ee1c07b7753623c044d6c7 05-Dec-2008 Douglas Gregor <dgregor@apple.com> Representation of template type parameters and non-type template
parameters, with some semantic analysis:
- Template parameters are introduced into template parameter scope
- Complain about template parameter shadowing (except in Microsoft mode)

Note that we leak template parameter declarations like crazy, a
problem we'll remedy once we actually create proper declarations for
templates.

Next up: dependent types and value-dependent/type-dependent
expressions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticKinds.def
arse/Scope.h
5374c6b82e4fb6b94eb4c7f18f838aa6e3226de0 05-Dec-2008 Anders Carlsson <andersca@mac.com> Use VerifyIntegerConstantExpression instead of isIntegerConstantExpr. Fixes PR2963

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
49184b2916f2f6535ac22f8517dc1e996225d2f1 05-Dec-2008 Anders Carlsson <andersca@mac.com> Use VerifyIntegerConstantExpression instead of isIntegerConstantExpr. Fixes PR2963

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a288864da7504bbfba84407c71f7e54a3346109c 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Change the implementation of symbol_iterator to not use a union and rely on any details of SymbolRef's implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60579 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
96f560b96ba3fb7b9a5408db22b481206b211f1c 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Change the implementation of symbol_iterator to not use a union and rely on any details of SymbolRef's implementation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60579 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
8b60badd94b921a9a859bb3710f7d8e94c30e4b4 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Add SymbolRef::print() and have SymbolicRegion::print() use this method instead of calling SymbolRef::getNumber().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60578 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
562731eabbed616535874c99655c81cc55d713fb 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Add SymbolRef::print() and have SymbolicRegion::print() use this method instead of calling SymbolRef::getNumber().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60578 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
f1bfc843200137f4eece27ea09a0dd7a96add54d 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Remove (unused) RegionExtent and subclasses. Extents are now represented easily using SVals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60576 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
9ceffa9ef4c1398815cddde7120779e8e0a84917 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Remove (unused) RegionExtent and subclasses. Extents are now represented easily using SVals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60576 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b9cd9a7071bb54fc88bb951e333cb6366b3d8399 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Rename SymbolID to SymbolRef. This is a precursor to some overhauling of the representation of symbolic values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60575 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
2dabd4372c50019fa00aae223ce634e0e754a3f2 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Rename SymbolID to SymbolRef. This is a precursor to some overhauling of the representation of symbolic values.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60575 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
7a0d5e94388c62ed48b47ed7a3265362c07b7e76 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Remove SymbolDataContentsOf (unused).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60572 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
f3d416267ec92cf28da11a79b47383179b77c5d0 05-Dec-2008 Ted Kremenek <kremenek@apple.com> Remove SymbolDataContentsOf (unused).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60572 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
0de2e0feea59a3f4dd17542a6b702291822573e5 05-Dec-2008 Ted Kremenek <kremenek@apple.com> StoreManager::Retrieve and StoreManager::RemoveDeadBindings now take a GRState* argument instead of a Store. This allows them to use the GDM for storing other data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60570 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
2ed14beed7dcb46245328d72ac7011c92c1bd676 05-Dec-2008 Ted Kremenek <kremenek@apple.com> StoreManager::Retrieve and StoreManager::RemoveDeadBindings now take a GRState* argument instead of a Store. This allows them to use the GDM for storing other data.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60570 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
e5cb586c259546f534d30df1c39b77e49dd3a839 05-Dec-2008 Chris Lattner <sabre@nondot.org> change getCurFunctionDecl to skip through Block contexts to find
the containing block. Introduce a new getCurFunctionOrMethodDecl
method to check to see if we're in a function or objc method.
Minor cleanups to other related places. This fixes rdar://6405429.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
371f258e61e1365b951b17931a3c5ac1530fd1a0 05-Dec-2008 Chris Lattner <sabre@nondot.org> change getCurFunctionDecl to skip through Block contexts to find
the containing block. Introduce a new getCurFunctionOrMethodDecl
method to check to see if we're in a function or objc method.
Minor cleanups to other related places. This fixes rdar://6405429.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d7bc88b153eefe3a8ce8be467c966b4ea7f58944 05-Dec-2008 Chris Lattner <sabre@nondot.org> instead of forcing blocks on by default, make them default to off, but let
specific targets default them to on. Default blocks to on on 10.6 and later.
Add a -fblocks option that allows the user to override the target's default.
Use -fblocks in the various testcases that use blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60563 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
ae0ee03fd9d36446ee70e502fdaf5ed5acec269f 05-Dec-2008 Chris Lattner <sabre@nondot.org> instead of forcing blocks on by default, make them default to off, but let
specific targets default them to on. Default blocks to on on 10.6 and later.
Add a -fblocks option that allows the user to override the target's default.
Use -fblocks in the various testcases that use blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60563 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
3d7aa252a922305cc9e7955023f1b01a068ebf00 04-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Output better diagnostics for continuation class
property attribute mis-specification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60562 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
06de37bade11b2d4187a1e4f74d0dcf2a72dda39 04-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> Output better diagnostics for continuation class
property attribute mis-specification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60562 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ddae7103e6b6651d879f55c97c16829dda1204fd 04-Dec-2008 Chris Lattner <sabre@nondot.org> replace useNeXTRuntimeAsDefault with a generic hook that allows targets
to specify their default language options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8fc4dfb30e8bd94ca2ea7adb6cbece04fb96cd99 04-Dec-2008 Chris Lattner <sabre@nondot.org> replace useNeXTRuntimeAsDefault with a generic hook that allows targets
to specify their default language options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f7b2b4cc4c839523b19e519d1298a08d13b7e91c 04-Dec-2008 Steve Naroff <snaroff@apple.com> Fix build breakage from my previous commit.

Will discuss with Chris...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
3fa1fff997eb9119b922aa18934d0a5f7364a1d7 04-Dec-2008 Steve Naroff <snaroff@apple.com> Fix build breakage from my previous commit.

Will discuss with Chris...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
0e94841a989c315c43036c17c752d7136dcf9db2 04-Dec-2008 Steve Naroff <snaroff@apple.com> Several things...

- Implement RewritePropertySetter(). While the routine is simple, there were some tricky changes to RewriteFunctionBodyOrGlobalInitializer(), the main rewriter loop. It also required some additional instance data to distinguish setters from getters, as well as some changes to RewritePropertyGetter().

- Implement FIXME: for pretty printing ObjCPropertyRefExpr's.

- Changed ObjCPropertyRefExpr::getSourceRange() to point to the end of the property name (not the beginning). Also made a minor name change from "Loc"->"IdLoc" (to make it clear the Loc does not point to the ".").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
c77a636688e188af7e7a9a05829e542adb48e880 04-Dec-2008 Steve Naroff <snaroff@apple.com> Several things...

- Implement RewritePropertySetter(). While the routine is simple, there were some tricky changes to RewriteFunctionBodyOrGlobalInitializer(), the main rewriter loop. It also required some additional instance data to distinguish setters from getters, as well as some changes to RewritePropertyGetter().

- Implement FIXME: for pretty printing ObjCPropertyRefExpr's.

- Changed ObjCPropertyRefExpr::getSourceRange() to point to the end of the property name (not the beginning). Also made a minor name change from "Loc"->"IdLoc" (to make it clear the Loc does not point to the ".").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
9f81c3f85fd1094083ecd8d30a5a8f6774196eae 04-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Fix some type punning errors in SizeOfAlignOf and Typeid AST nodes. This should satisfy compilers and language lawyers alike.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
d457589fc69dc7a9c80cd74d317c0b81a35a27c9 04-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Fix some type punning errors in SizeOfAlignOf and Typeid AST nodes. This should satisfy compilers and language lawyers alike.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
d66f12da2cd32f4725bebcd4d371a10bc6d89a61 03-Dec-2008 Ted Kremenek <kremenek@apple.com> Added GDM query functions "contains" for the data types that support the "Contains" method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60505 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
39b630fc1cef83d58c6e0f551debb16a4d547abe 03-Dec-2008 Ted Kremenek <kremenek@apple.com> Added GDM query functions "contains" for the data types that support the "Contains" method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60505 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
91fff77ac985a6fd7278ef839299cc576c8797e6 03-Dec-2008 Ted Kremenek <kremenek@apple.com> Added partial specialization of GRStatePartialTrait<T> with T = ImmutableSet<...>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60504 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
32d600ce59e780b7ff969309cbf742159abe018b 03-Dec-2008 Ted Kremenek <kremenek@apple.com> Added partial specialization of GRStatePartialTrait<T> with T = ImmutableSet<...>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60504 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
db4c8e831ea37cb09491ed9be6dc8c86f8922949 03-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH:
Use an array instead of a DenseMap to cache persistent IDs -> IdentifierInfo*. This leads to a 4% speedup at -fsyntax-only using PTH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60452 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
6183e4815a4019e97ad01bd880f12355599b75fd 03-Dec-2008 Ted Kremenek <kremenek@apple.com> PTH:
Use an array instead of a DenseMap to cache persistent IDs -> IdentifierInfo*. This leads to a 4% speedup at -fsyntax-only using PTH.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60452 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
325cd30b64d7907d790e06f61b26427e5bb689da 03-Dec-2008 Ted Kremenek <kremenek@apple.com> - Remove PTHManager.cpp. Move all of its functions to PTHLexer.cpp since some of the internal methods are used by PTHLexer (their implementations are intertwined.) This enables some important inlining opportunities at -O3.

- Don't construct an std::vector<Token> prior to feeding PTH tokens to the Preprocessor. Stream them off the PTH file directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60447 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
0c6a77bc1f52f282a969538f139ebde429076ed3 03-Dec-2008 Ted Kremenek <kremenek@apple.com> - Remove PTHManager.cpp. Move all of its functions to PTHLexer.cpp since some of the internal methods are used by PTHLexer (their implementations are intertwined.) This enables some important inlining opportunities at -O3.

- Don't construct an std::vector<Token> prior to feeding PTH tokens to the Preprocessor. Stream them off the PTH file directly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60447 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PTHManager.h
5223c3546329594a6cee5715f5e5afb7446cf393 02-Dec-2008 Ted Kremenek <kremenek@apple.com> Preprocessor:
- Added method "setPTHManager" that will be called by the driver to install
a PTHManager for the Preprocessor.
- Fixed some comments.
- Added EnterSourceFileWithPTH to mirror EnterSourceFileWithLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60437 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6137dc99ef0c2b14050631367057758b0d596cb3 02-Dec-2008 Ted Kremenek <kremenek@apple.com> Preprocessor:
- Added method "setPTHManager" that will be called by the driver to install
a PTHManager for the Preprocessor.
- Fixed some comments.
- Added EnterSourceFileWithPTH to mirror EnterSourceFileWithLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60437 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
98288b8628b848d68fcee1c8edc37324d6fb662a 02-Dec-2008 Ted Kremenek <kremenek@apple.com> Added PTHManager, a utility class that will be used by Preprocessor to lazily create PTHLexer objects for pre-tokenized files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60436 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
be1ee79d20db9cec7ef81d7a22ba2eaddc9c95b5 02-Dec-2008 Ted Kremenek <kremenek@apple.com> Added PTHManager, a utility class that will be used by Preprocessor to lazily create PTHLexer objects for pre-tokenized files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60436 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHManager.h
faca797cb3a8c1a41c2ba4728f26bb93b902b01b 02-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> More type-checking of setter/getter methods. This is still
work in prgress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60430 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f3cd3fd859120d58f745ba545c8da808e12a39ac 02-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> More type-checking of setter/getter methods. This is still
work in prgress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60430 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
66df3efdf5d6a2d2b0a1e2f8764150f9af931d40 02-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Handle new by passing the Declaration to the Action, not a processed type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
cee63fbf0e64ac526582312bf8cf33263fc5c16e 02-Dec-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Handle new by passing the Declaration to the Action, not a processed type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
8e7f957cf957a43a36708a514d266b73790f05d6 02-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> A little more scaffolding for parsing templates:
- Template parameter scope to hold the template parameters
- Template parameter context for parsing declarators
- Actions for template type parameters and non-type template
parameters



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60387 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Scope.h
26236e8b7507017fded05da3474d842e802a1679 02-Dec-2008 Douglas Gregor <dgregor@apple.com> A little more scaffolding for parsing templates:
- Template parameter scope to hold the template parameters
- Template parameter context for parsing declarators
- Actions for template type parameters and non-type template
parameters



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60387 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Scope.h
ecfbb49cc91d777ddddb2c94950560771bb91661 02-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> This patch corrects problem in searching for a setter/getter method for
a property. Previous scheme of seaching in interface's list of methods
would not work because this list is not yet constructed. This is in preparation
for doing semantic check on viability of setter/getter method declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b85cce6498c8c1c20f701571d85a3b2fe53338eb 02-Dec-2008 Fariborz Jahanian <fjahanian@apple.com> This patch corrects problem in searching for a setter/getter method for
a property. Previous scheme of seaching in interface's list of methods
would not work because this list is not yet constructed. This is in preparation
for doing semantic check on viability of setter/getter method declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60386 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b3bec71e9fe4db9c88de85e0332eabbbdb843411 02-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Basic support for parsing templates, from Andrew Sutton

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
adcac8824a9cff13f1ef61a69e38c1041cba12ee 02-Dec-2008 Douglas Gregor <dgregor@apple.com> Basic support for parsing templates, from Andrew Sutton

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60384 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
110be847fd1ea643907239b3794fa60a19276244 01-Dec-2008 Steve Naroff <snaroff@apple.com> -Add several ObjC types to Decl::getDeclKindName(), a useful debug hook.
-Start adding support for rewriting @synthesize.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d40910b581b09c937a8c1fdcde9b8ec724398fb9 01-Dec-2008 Steve Naroff <snaroff@apple.com> -Add several ObjC types to Decl::getDeclKindName(), a useful debug hook.
-Start adding support for rewriting @synthesize.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
20b88024e6596cfb94184cc6abdfe615a7cddcc0 01-Dec-2008 Daniel Dunbar <daniel@zuster.org> Add LangOptions marker for assembler-with-cpp mode and use to define
__ASSEMBLER__ properly. Patch from Roman Divacky (with minor
formatting changes). Thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
c1571453de3db2b26c15cc13115fac4ece84aa7c 01-Dec-2008 Daniel Dunbar <daniel@zuster.org> Add LangOptions marker for assembler-with-cpp mode and use to define
__ASSEMBLER__ properly. Patch from Roman Divacky (with minor
formatting changes). Thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
9ed9ac8363881eb3f2664361fe1f0f01e626c3dc 01-Dec-2008 Douglas Gregor <doug.gregor@gmail.com> Parse the exception-specification throw(...), a Microsoft extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a4745616ebe36ba7699f18618382e764aa8183a1 01-Dec-2008 Douglas Gregor <dgregor@apple.com> Parse the exception-specification throw(...), a Microsoft extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60359 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f8aa870bd0b800f52f4944c885f41b7ba3e7cfd2 01-Dec-2008 Anders Carlsson <andersca@mac.com> Revert change that made isNullPointerConstant start emitting warnings. We don't want that :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60333 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d26527708b2b2f3b1d747f570efd10149d48364e 01-Dec-2008 Anders Carlsson <andersca@mac.com> Revert change that made isNullPointerConstant start emitting warnings. We don't want that :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60333 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
511425ab02d26bbdd43ffa92746996d0419972e8 01-Dec-2008 Anders Carlsson <andersca@mac.com> Add Sema::isNullPointerConstant which extwarns if necessary. Use it in Sema::CheckConditionalOperands.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4000ea685acfb3e827040ce0e172e13243c2edae 01-Dec-2008 Anders Carlsson <andersca@mac.com> Add Sema::isNullPointerConstant which extwarns if necessary. Use it in Sema::CheckConditionalOperands.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2ce7c3d4f4da502d629ddeeab31f4513568fffe6 01-Dec-2008 Anders Carlsson <andersca@mac.com> Add a new variant of isNullConstantExpr that returns an EvalResult.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
efa9b3877ef298bcb792600ac33521827e1f7faf 01-Dec-2008 Anders Carlsson <andersca@mac.com> Add a new variant of isNullConstantExpr that returns an EvalResult.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
38bb18c93c6b66f86259ee485b76c762f7cd8f54 30-Nov-2008 Anders Carlsson <andersca@mac.com> Change the diagnostics that the evaluator reports to be of type NOTE.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0e8acbbba71ec6acd5dceb4fcbce63e463e1b755 30-Nov-2008 Anders Carlsson <andersca@mac.com> Change the diagnostics that the evaluator reports to be of type NOTE.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7f5a96e2826091bf0be09b23574d04fa6cffa05e 30-Nov-2008 Anders Carlsson <andersca@mac.com> Add a new variant of Evaluate and reimplement the old Evaluate in terms of the new.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5b45d4ef1ea3f04ec863daf8aa29be6c6e021750 30-Nov-2008 Anders Carlsson <andersca@mac.com> Add a new variant of Evaluate and reimplement the old Evaluate in terms of the new.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f6c835deaf7e18292feda05162d683d4538e68f9 30-Nov-2008 Anders Carlsson <andersca@mac.com> Add Expr::EvalResult struct. (Not used just yet)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
94deaf675ae60e11c2d9475c6dbfd0c7123160f5 30-Nov-2008 Anders Carlsson <andersca@mac.com> Add Expr::EvalResult struct. (Not used just yet)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b0ddba7680089c5efea2bfe4eef9364f5c7ad515 29-Nov-2008 Anders Carlsson <andersca@mac.com> CXXFunctionalCastExpr inherits from ExplicitCastExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
960525cbfbfd46308090ec13946fcb250c887f09 29-Nov-2008 Anders Carlsson <andersca@mac.com> CXXFunctionalCastExpr inherits from ExplicitCastExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60249 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
1e613a5926f23b35e203b11b75d944e72f37b4e6 29-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> To be consistent, make the index of the ElementRegion always signed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60248 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0395b5d4987fe5baa818015e9d294c128619e4ec 29-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> To be consistent, make the index of the ElementRegion always signed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60248 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ad4b379662af0511244a62578cda472bef00a7e2 29-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Implement the GNU __null extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
2d8b273470684a9cd47f0ce24743cc1f71ef7cbc 29-Nov-2008 Douglas Gregor <dgregor@apple.com> Implement the GNU __null extension

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
48a3432a72fd17868c0bf4d864ddb60420c63d68 29-Nov-2008 Chris Lattner <sabre@nondot.org> Switch QualType to use llvm::PointerIntPair internally to do the pointer
bitmangling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60226 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5cf243a883872441d73ca49cea7e20de5802629b 29-Nov-2008 Chris Lattner <sabre@nondot.org> Switch QualType to use llvm::PointerIntPair internally to do the pointer
bitmangling.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60226 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8067064bc98c6abab6d9bc152106b7c0573eb478 28-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Enable the GRStateManager to do something when we finish a path. For example,
the ConstraintManager can print its internal state before its solver instance is
destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60204 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
e73dc26690776887bd2991461f6814498600d6eb 28-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Enable the GRStateManager to do something when we finish a path. For example,
the ConstraintManager can print its internal state before its solver instance is
destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60204 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
c70a6ed67a9f51da4e304b793856e587247b3caa 27-Nov-2008 Chris Lattner <sabre@nondot.org> remove dead diag


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a7fb9f8c802b67b8a4a95355b19eaf408c622e95 27-Nov-2008 Chris Lattner <sabre@nondot.org> remove dead diag


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60181 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2c8127e4fc3536cfabf3ca46f9741e20efb400bb 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> ImmutableList::getInternalPointer() returns a const ImmutableListImpl<T>* pointer, which must be converted to void* explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60152 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
e42aaba04bff90a1d08b95e36edcb7ff314c77c7 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> ImmutableList::getInternalPointer() returns a const ImmutableListImpl<T>* pointer, which must be converted to void* explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60152 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
19c04e73d70ea941bfd1f306a85466fef222de05 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add license comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60144 91177308-0d34-0410-b5e6-96231b3b80d8
river/ManagerRegistry.h
5abf03bbb9e8703d41bd241a4733d930791fd972 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add license comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60144 91177308-0d34-0410-b5e6-96231b3b80d8
river/ManagerRegistry.h
0e77b7354cc5a62b1e17e250e6b246d4c8cd72e5 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add support for pluggable components of static analyzer.
- Creator function pointers are saved in ManagerRegistry.
- The Register* class is used to notify ManagerRegistry new module is
available.
- AnalysisManager queries ManagerRegistry for configurable module. Then it
passes them to GRExprEngine, in turn to GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60143 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
river/ManagerRegistry.h
22438a8dfe9f2f273c0b1a47f3f80be782ea6f09 27-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add support for pluggable components of static analyzer.
- Creator function pointers are saved in ManagerRegistry.
- The Register* class is used to notify ManagerRegistry new module is
available.
- AnalysisManager queries ManagerRegistry for configurable module. Then it
passes them to GRExprEngine, in turn to GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60143 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
river/ManagerRegistry.h
5f742a5ce5f5804536a529f9261771c14733ffba 27-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer now owns the Token vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60136 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
82a500b141b9a8001dac69f047478a43e2aebdff 27-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer now owns the Token vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60136 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
fc33232adf097e0e8311ba6ff3c2d529d9340691 26-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add some comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60119 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
44802cc435d5122701e4f1a9354381cff4b171c0 26-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add some comments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60119 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
91c80dc52ae7363b8fefe0ad8bb457e8d24221ed 26-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement some suggestions by Daniel:

-Change Parser::ParseCXXScopeSpecifier to MaybeParseCXXScopeSpecifier
-Remove Parser::isTokenCXXScopeSpecifier and fold it into MaybeParseCXXScopeSpecifier
-Rename Parser::TryAnnotateScopeToken to TryAnnotateCXXScopeToken and only allow it to be called when in C++

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60117 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4bdd91c09fd59e0c154d759288beff300e31e1d0 26-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement some suggestions by Daniel:

-Change Parser::ParseCXXScopeSpecifier to MaybeParseCXXScopeSpecifier
-Remove Parser::isTokenCXXScopeSpecifier and fold it into MaybeParseCXXScopeSpecifier
-Rename Parser::TryAnnotateScopeToken to TryAnnotateCXXScopeToken and only allow it to be called when in C++

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60117 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a99bd888fc473ef4b76679ad50cc218383bbec36 26-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add an overload for operator<<(const DiagnosticBuilder &DB,bool I).
Fixes building error on MSVC where passing bool couldn't resolve to one of the overloads.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60116 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3bf4a79712fb30dc27692ef2d4214ee7fa6681be 26-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add an overload for operator<<(const DiagnosticBuilder &DB,bool I).
Fixes building error on MSVC where passing bool couldn't resolve to one of the overloads.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60116 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
bcda0b464e0df135b03758b84168707c81fbeb86 26-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> Set default property attributes on each property.
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in
propgress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
arse/Action.h
8cf0bb3c2a798ce3acacaac2d3178648cd4c65c6 26-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> Set default property attributes on each property.
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in
propgress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
arse/Action.h
b97be509660a1c4283729a3ddfe3db7a95956a51 26-Nov-2008 Ted Kremenek <kremenek@apple.com> Add setter method PreprocessorLexer::setParsingPreprocessorDirective(). This will be used by the mechanism to generate cached tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60070 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
63db2a78010f4d0f7a6783ea1e2d1469c9b154ad 26-Nov-2008 Ted Kremenek <kremenek@apple.com> Add setter method PreprocessorLexer::setParsingPreprocessorDirective(). This will be used by the mechanism to generate cached tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60070 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
6008ac320d78b808c5c810fb1d8234a74fc345d2 25-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Use RAII objects to ensure proper destruction of expression and statement AST nodes in the parser in most cases, even on error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60057 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a55e52c0802cae3b7c366a05c461d3d15074c1a3 25-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Use RAII objects to ensure proper destruction of expression and statement AST nodes in the parser in most cases, even on error.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60057 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4739da15300381a2b2f65460b3937de2e380d06a 25-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> Refactored checking on readonly property into a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
31afbf02a381ae9c77d225aa54f972d152838b3a 25-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> Refactored checking on readonly property into a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
90a2c9737feaa47d4fd9e0e553816164b17b6b16 25-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Simple parsing of exception specifications, with no semantic analysis yet

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60005 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0fe7bea6fca9737c6c145aaa4a2ad3abe595782a 25-Nov-2008 Douglas Gregor <dgregor@apple.com> Simple parsing of exception specifications, with no semantic analysis yet

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60005 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2ca0d6ed52b7962d32870980971f3707eaf4427c 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add support for AllocaRegion extent with GDM.

One design problem that is emerging is the signed-ness problem during static
analysis. Many unsigned value have to be converted into signed value because
it partipates in operations with signed values.

On the other hand, we cannot blindly make all values occuring in static analysis
signed, because we do have cases where unsignedness is required, for example,
integer overflow detection.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59957 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
baf03a7c0a846632396f9f5a19f6cd45bbe2b926 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add support for AllocaRegion extent with GDM.

One design problem that is emerging is the signed-ness problem during static
analysis. Many unsigned value have to be converted into signed value because
it partipates in operations with signed values.

On the other hand, we cannot blindly make all values occuring in static analysis
signed, because we do have cases where unsignedness is required, for example,
integer overflow detection.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59957 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
0df426440f54cd6626d9804af67beb84b20656b3 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add utility methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59956 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
8b8627380638d0889d6924d1ec10d42a9c743593 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add utility methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59956 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
50737607c9292a0418c333b351fa95548e2bb164 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fix 80-col violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59954 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
887058af514f7288cf8d49128459b9126d892206 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fix 80-col violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59954 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
4bfd223a74022ce30ac1b86683bac054ab5fac34 24-Nov-2008 Chris Lattner <sabre@nondot.org> Change a whole lot of diagnostics to take QualType's directly
instead of converting them to strings first. This also fixes a
bunch of minor inconsistencies in the diagnostics emitted by clang
and adds a bunch of FIXME's to DiagnosticKinds.def.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59948 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d162584991885ab004a02573a73ce06422b921fc 24-Nov-2008 Chris Lattner <sabre@nondot.org> Change a whole lot of diagnostics to take QualType's directly
instead of converting them to strings first. This also fixes a
bunch of minor inconsistencies in the diagnostics emitted by clang
and adds a bunch of FIXME's to DiagnosticKinds.def.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59948 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
271d4c2c75e2b6774cc017506d3b27e4fa1697ff 24-Nov-2008 Chris Lattner <sabre@nondot.org> Rename NamedDecl::getName() to getNameAsString(). Replace a bunch of
uses of getName() with uses of getDeclName(). This upgrades a bunch of
diags to take DeclNames instead of std::strings.

This also tweaks a couple of diagnostics to be cleaner and changes
CheckInitializerTypes/PerformInitializationByConstructor to pass
around DeclarationNames instead of std::strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
d9d22dd9c94618490dbffb0e2caf222530ca39d3 24-Nov-2008 Chris Lattner <sabre@nondot.org> Rename NamedDecl::getName() to getNameAsString(). Replace a bunch of
uses of getName() with uses of getDeclName(). This upgrades a bunch of
diags to take DeclNames instead of std::strings.

This also tweaks a couple of diagnostics to be cleaner and changes
CheckInitializerTypes/PerformInitializationByConstructor to pass
around DeclarationNames instead of std::strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59947 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
9c2ea3785c93cc1289735cc4ce855df7e832afa7 24-Nov-2008 Anders Carlsson <andersca@mac.com> __builtin_constant_p takes an argument that can have any type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
85879ee8b5942f97337bcb35ba4df9d4c634c68c 24-Nov-2008 Anders Carlsson <andersca@mac.com> __builtin_constant_p takes an argument that can have any type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
d120b9ed1f54a3d2b284a6c683c3f6e646a31d26 24-Nov-2008 Chris Lattner <sabre@nondot.org> Rename NamedDecl::getIdentifierName() to ::getNameAsCString() and make it
assert if the name is not an identifier. Update callers to do the right
thing and avoid this method in unsafe cases. This also fixes an objc
warning that was missing a space, and migrates a couple more to taking
IdentifierInfo and QualTypes instead of std::strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
8ec03f58c33c33a917f54bb7f2cd61b6d7ffe0ca 24-Nov-2008 Chris Lattner <sabre@nondot.org> Rename NamedDecl::getIdentifierName() to ::getNameAsCString() and make it
assert if the name is not an identifier. Update callers to do the right
thing and avoid this method in unsafe cases. This also fixes an objc
warning that was missing a space, and migrates a couple more to taking
IdentifierInfo and QualTypes instead of std::strings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
3a8f294d0c43fe0a3e1fc1612bc1a42d55172cae 24-Nov-2008 Chris Lattner <sabre@nondot.org> Rename Selector::getName() to Selector::getAsString(), and add
a new NamedDecl::getAsString() method.

Change uses of Selector::getName() to just pass in a Selector
where possible (e.g. to diagnostics) instead of going through
an std::string.

This also adds new formatters for objcinstance and objcclass
as described in the dox.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
asic/IdentifierTable.h
077bf5e2f48acfa9e7d69429b6e4ba86ea14896d 24-Nov-2008 Chris Lattner <sabre@nondot.org> Rename Selector::getName() to Selector::getAsString(), and add
a new NamedDecl::getAsString() method.

Change uses of Selector::getName() to just pass in a Selector
where possible (e.g. to diagnostics) instead of going through
an std::string.

This also adds new formatters for objcinstance and objcclass
as described in the dox.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59933 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
asic/IdentifierTable.h
83cae2c561c4ee4acb708c43993fc48491139282 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add getSize() support for StringRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59930 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
6613d08a19aa6ce9b6330487f3bfac841d4b8a4d 24-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add getSize() support for StringRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59930 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/SVals.h
ef2a3c6e0e05443da44d757cc1bc4c55141f685d 24-Nov-2008 Chris Lattner <sabre@nondot.org> convert some more warnings to NOTEs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1326a3dcbbf04b126396d3e1a739ee437ca4398c 24-Nov-2008 Chris Lattner <sabre@nondot.org> convert some more warnings to NOTEs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59923 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b13cb56ab8fa85edf10e159f26eb991470ade1b0 24-Nov-2008 Chris Lattner <sabre@nondot.org> remove warn_previous_declaration



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59922 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8b265bd5eba1394273693e6705a43adac6b6aa2f 24-Nov-2008 Chris Lattner <sabre@nondot.org> remove warn_previous_declaration



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59922 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
921342ce3e0349a1cbcf6c319a5f6b67b98e4c74 24-Nov-2008 Chris Lattner <sabre@nondot.org> make the 'to match this' diagnostic a note.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
28eb7e992b9a266abb300da25b6d3c1557cec361 24-Nov-2008 Chris Lattner <sabre@nondot.org> make the 'to match this' diagnostic a note.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59921 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1336cab43dec39c2d36531c0e3875f4db725a28c 24-Nov-2008 Chris Lattner <sabre@nondot.org> Make all the 'redefinition' diagnostics more consistent, and make the
"previously defined here" diagnostics all notes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59920 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5f4a6829dc58cab2f76e2b98492859aa3b91e3f2 24-Nov-2008 Chris Lattner <sabre@nondot.org> Make all the 'redefinition' diagnostics more consistent, and make the
"previously defined here" diagnostics all notes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59920 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5b25065a9cc36cc677c60db3c5136a96b0557125 23-Nov-2008 Chris Lattner <sabre@nondot.org> make some objc redefinition warnings more consistent: call definitions
"definitions", not declarations. Point out the location of the
original definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b8b96aff63e24ff1509f112de871f697aaea55f9 23-Nov-2008 Chris Lattner <sabre@nondot.org> make some objc redefinition warnings more consistent: call definitions
"definitions", not declarations. Point out the location of the
original definition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59919 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
de1bd98d3669375a3fe42f21883ffeaec8c80f8a 23-Nov-2008 Chris Lattner <sabre@nondot.org> Tweak duplicate category diagnostic to work like the duplicate protocol diagnostic.
Also, point out where the previous decl was. This unxfails two tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6ff0fc341f6d66b523d63b5d3fdfe00f6d4254fd 23-Nov-2008 Chris Lattner <sabre@nondot.org> Tweak duplicate category diagnostic to work like the duplicate protocol diagnostic.
Also, point out where the previous decl was. This unxfails two tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b175342d2ca2d747f964604249138e04f32116b9 23-Nov-2008 Chris Lattner <sabre@nondot.org> Convert IdentifierInfo's to be printed the same as DeclarationNames
with implicit quotes around them. This has a bunch of follow-on
effects and requires tweaking to a whole lot of code. This causes
a regression in two tests (xfailed) by causing it to emit things like:

Line 10: duplicate interface declaration for category 'MyClass1' ('Category1')

instead of:

Line 10: duplicate interface declaration for category 'MyClass1(Category1)'

I will fix this in a follow-up commit.

As part of this, I had to start switching stuff to use ->getDeclName() instead
of Decl::getName() for consistency. This is good, but I was planning to do this
as an independent patch. There will be several follow-on patches
to clean up some of the mess, but this patch is already too big.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
08631c5fa053867146b5ee8be658c229f6bf127c 23-Nov-2008 Chris Lattner <sabre@nondot.org> Convert IdentifierInfo's to be printed the same as DeclarationNames
with implicit quotes around them. This has a bunch of follow-on
effects and requires tweaking to a whole lot of code. This causes
a regression in two tests (xfailed) by causing it to emit things like:

Line 10: duplicate interface declaration for category 'MyClass1' ('Category1')

instead of:

Line 10: duplicate interface declaration for category 'MyClass1(Category1)'

I will fix this in a follow-up commit.

As part of this, I had to start switching stuff to use ->getDeclName() instead
of Decl::getName() for consistency. This is good, but I was planning to do this
as an independent patch. There will be several follow-on patches
to clean up some of the mess, but this patch is already too big.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
254de7dd490d1163d6dad4302f5d8b7f9ae3dc30 23-Nov-2008 Chris Lattner <sabre@nondot.org> add support for inserting a DeclarationName into a diagnostic directly
without calling getAsString(). This implicitly puts quotes around the
name, so diagnostics need to be tweaked to accommodate this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/Type.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
asic/DiagnosticKinds.def
011bb4edf731d529da1cbf71c7c2696aaf5a054f 23-Nov-2008 Chris Lattner <sabre@nondot.org> add support for inserting a DeclarationName into a diagnostic directly
without calling getAsString(). This implicitly puts quotes around the
name, so diagnostics need to be tweaked to accommodate this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
ST/Type.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
asic/DiagnosticKinds.def
f5b269a115352029a14d81c44647f042bbf6843c 23-Nov-2008 Chris Lattner <sabre@nondot.org> Genericize the qualtype formating callback to support any diag argument.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59908 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
3fdf4b071dc79fae778fb5f376485480756c76a3 23-Nov-2008 Chris Lattner <sabre@nondot.org> Genericize the qualtype formating callback to support any diag argument.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59908 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
da5c087ebf3d47b40bae2e99671ce1929156a427 23-Nov-2008 Chris Lattner <sabre@nondot.org> Add support for sending QualType's directly into diags and convert two
diags over to use this. QualTypes implicitly print single quotes around
them for uniformity and future extension.

Doing this requires a little function pointer dance to prevent libbasic
from depending on libast.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
asic/DiagnosticKinds.def
22caddc91d2f6186739c6b20ec58ed38cd68e595 23-Nov-2008 Chris Lattner <sabre@nondot.org> Add support for sending QualType's directly into diags and convert two
diags over to use this. QualTypes implicitly print single quotes around
them for uniformity and future extension.

Doing this requires a little function pointer dance to prevent libbasic
from depending on libast.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
asic/DiagnosticKinds.def
5c70c775f94773dbe500ddaaa1bb0344c44902c1 23-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add out-of-bound memory access warning report code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59903 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1c0c23325312df5d40fe788ffcb48484f190e9a3 23-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add out-of-bound memory access warning report code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59903 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b96c206f56a403cbc8ef650b887a3fae9dc2156b 22-Nov-2008 Anders Carlsson <andersca@mac.com> Case values must be evaluated

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6dde0d5dc09f45f4d9508c964703e36fef1a0198 22-Nov-2008 Anders Carlsson <andersca@mac.com> Case values must be evaluated

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b12ee19caf6e94cc2e8fc03697884e03771f758b 22-Nov-2008 Chris Lattner <sabre@nondot.org> consistently use single quotes for quoted things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
717596279bfb6d45b0fc1cad36a9aa1ba6ecbd9f 22-Nov-2008 Chris Lattner <sabre@nondot.org> consistently use single quotes for quoted things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59882 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e8bd9f2ddf3eee09c36f1d5d8a61fbf5993612f2 22-Nov-2008 Anders Carlsson <andersca@mac.com> Use Expr::Evaluate for case statements. Fixes PR2525

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
51fe996231b1d7199f76e4005ff4c943d5deeecd 22-Nov-2008 Anders Carlsson <andersca@mac.com> Use Expr::Evaluate for case statements. Fixes PR2525

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fe3d0c80edd584573672a9756762dd651323a056 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove a dead enum


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
32b939b51b3cc5e4c4d61e31a59aa902de2525b8 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove a dead enum


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59879 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c05da428caaf67c3b23acf7000fb7e8238d604e9 22-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> Support for implicit property assignment. Error assigning to
'implicit' property with no 'setter'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticKinds.def
ba8d2d684e74a20bef03828c21c991d222c7e9e5 22-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> Support for implicit property assignment. Error assigning to
'implicit' property with no 'setter'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
asic/DiagnosticKinds.def
f18d4c8326553440fb01bfeb368b2bc60996cfc2 22-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> New AST node to access "implicit" setter/getter using property dor syntax.
Issuing diagnostics when assigning to read-only properties.
This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59874 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
5daf570d0ce027e18ed5f9d66e6b2a14a40b720d 22-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> New AST node to access "implicit" setter/getter using property dor syntax.
Issuing diagnostics when assigning to read-only properties.
This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59874 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
fd9f2acf08cdc747bccfe6642c8a2d52d1c1cf89 22-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement a %plural modifier for complex plural forms in diagnostics. Use it in the overload diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e4c452c4c7b9124fe94a96f559ff077d59cdf996 22-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement a %plural modifier for complex plural forms in diagnostics. Use it in the overload diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59871 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d52b8cf0713821d134f389bfa735bd94359ca306 22-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Initial support for checking out of bound memory access. Only support
ConcreteInt index for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59869 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
e8a964bdb46349e4fa3433c8e5104d2a0f7f5c65 22-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Initial support for checking out of bound memory access. Only support
ConcreteInt index for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59869 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/SVals.h
5a63b0955592a47e1e9a33c18691fc930418f401 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove some more old Diag methods, replace with a single static helper function


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59868 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
254be6ac14092e0bdd9e632dfea09f237850e63d 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove some more old Diag methods, replace with a single static helper function


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59868 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
dfc8f73fe7008ab50f49037070eab41261868929 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove the NumericLiteralParser::Diag helper method, inlining it into
its call sites. This makes it more explicit when the hasError flag is
getting set and removes a confusing difference in behavior between
PP.Diag and Diag in this code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59863 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
ac92d829111bc19d1cc97cd85c3c04bc39b969d1 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove the NumericLiteralParser::Diag helper method, inlining it into
its call sites. This makes it more explicit when the hasError flag is
getting set and removes a confusing difference in behavior between
PP.Diag and Diag in this code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59863 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
4291fe4727dad0dd6c89790f292dedda7ef9de3e 22-Nov-2008 Chris Lattner <sabre@nondot.org> Move the Preprocessor::Diag methods inline. This has the interesting
(and carefully calculated) effect of allowing the compiler to reason
about the aliasing properties of DiagnosticBuilder object better,
allowing the whole thing to be promoted to registers instead of
resulting in a ton of stack traffic.

While I'm not very concerned about the performance of the Diag() method
invocations, I *am* more concerned about their code size and impact on the
non-diagnostic code. This patch shrinks the clang executable (in
release-asserts mode with gcc-4.2) from 14523980 to 14519816 bytes. This
isn't much, but it shrinks the lexer from 38192 to 37776, PPDirectives.o
from 31116 to 28868 bytes, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59862 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
adc4eeb08042a35ae914fc557ffec0cef3df2374 22-Nov-2008 Chris Lattner <sabre@nondot.org> Move the Preprocessor::Diag methods inline. This has the interesting
(and carefully calculated) effect of allowing the compiler to reason
about the aliasing properties of DiagnosticBuilder object better,
allowing the whole thing to be promoted to registers instead of
resulting in a ton of stack traffic.

While I'm not very concerned about the performance of the Diag() method
invocations, I *am* more concerned about their code size and impact on the
non-diagnostic code. This patch shrinks the clang executable (in
release-asserts mode with gcc-4.2) from 14523980 to 14519816 bytes. This
isn't much, but it shrinks the lexer from 38192 to 37776, PPDirectives.o
from 31116 to 28868 bytes, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59862 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
b61c3ea88bac7358eea796e0cdfa155ade5deee5 22-Nov-2008 Chris Lattner <sabre@nondot.org> inline a method into its only two call sites.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59860 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
9efe9709287801562a3cbe1e5f3ab5dd8175c25b 22-Nov-2008 Chris Lattner <sabre@nondot.org> inline a method into its only two call sites.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59860 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
8ef6cdc65f19f517b6cc06f032e7798df2abe9a6 22-Nov-2008 Chris Lattner <sabre@nondot.org> actually, this version isn't really needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59859 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
30c6476e8ef00caeb3a10ea0228165013a4eb3f3 22-Nov-2008 Chris Lattner <sabre@nondot.org> actually, this version isn't really needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59859 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
82b474f01b0b2e2d74c62c70979031665de5915e 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove a sneaky version of Diag hiding in PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59858 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PreprocessorLexer.h
306fda76b0818eb7c215094123f2e16729a44aed 22-Nov-2008 Chris Lattner <sabre@nondot.org> remove a sneaky version of Diag hiding in PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59858 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PreprocessorLexer.h
f9c62778bae8ff2b8cf8d4d59c4acf3fc7cede09 22-Nov-2008 Chris Lattner <sabre@nondot.org> Change the Lexer::Diag method to not magically silence warnings,
force the caller to check instead. This eliminates the need (and the
risk!) of weird null DiagnosticBuilder's floating around.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59856 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ex/PreprocessorLexer.h
74d15dfd183b2082e8a5d4dfbf66bd861b220901 22-Nov-2008 Chris Lattner <sabre@nondot.org> Change the Lexer::Diag method to not magically silence warnings,
force the caller to check instead. This eliminates the need (and the
risk!) of weird null DiagnosticBuilder's floating around.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59856 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
ex/PreprocessorLexer.h
0592e254bf4051e7712d5f89f36ec76737fb1488 22-Nov-2008 Chris Lattner <sabre@nondot.org> fit in 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9634379265855f1628190e926d9aaf1fb4a5d90e 22-Nov-2008 Chris Lattner <sabre@nondot.org> fit in 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59851 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
9943e982658785c2c0ecc3af88a1c0111e9b7749 22-Nov-2008 Chris Lattner <sabre@nondot.org> Split the DiagnosticInfo class into two disjoint classes:
one for building up the diagnostic that is in flight (DiagnosticBuilder)
and one for pulling structured information out of the diagnostic when
formatting and presenting it.

There is no functionality change with this patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59849 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
ex/Lexer.h
ex/Preprocessor.h
arse/Action.h
arse/Parser.h
3cbfe2c4159e0a219ae660d50625c013aa4afbd0 22-Nov-2008 Chris Lattner <sabre@nondot.org> Split the DiagnosticInfo class into two disjoint classes:
one for building up the diagnostic that is in flight (DiagnosticBuilder)
and one for pulling structured information out of the diagnostic when
formatting and presenting it.

There is no functionality change with this patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59849 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
ex/Lexer.h
ex/Preprocessor.h
arse/Action.h
arse/Parser.h
1ce8c6faf14eac0182cbee82bdec3b14b44d2531 22-Nov-2008 Ted Kremenek <kremenek@apple.com> Fix predicate: we're not in caching mode if CurPPLexer == 0, not CurLexer == 0.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59848 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
3296ccea50e7b6649638bd666181e0825145e898 22-Nov-2008 Ted Kremenek <kremenek@apple.com> Fix predicate: we're not in caching mode if CurPPLexer == 0, not CurLexer == 0.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59848 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
19fec9de1274b385dcf711040020945aff5cdb6d 21-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implementation of new and delete parsing and sema.
This version uses VLAs to represent arrays. I'll try an alternative way next, but I want this safe first.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59835 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
4c5d320a7581f4b80b151630c91cea5727fa9923 21-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implementation of new and delete parsing and sema.
This version uses VLAs to represent arrays. I'll try an alternative way next, but I want this safe first.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59835 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
5dcc9e6cc142421d8a01142449600da02d0679ff 21-Nov-2008 Chris Lattner <sabre@nondot.org> rearrange some fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
730e0fdbbf9b315ef834074054ac55af3a4fcc0c 21-Nov-2008 Chris Lattner <sabre@nondot.org> rearrange some fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59832 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
66beaba392e8de4483d178286beb50a721267b85 21-Nov-2008 Chris Lattner <sabre@nondot.org> merge some simple call diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2c21a073525cdfa68e4439b7af551385dc2796ab 21-Nov-2008 Chris Lattner <sabre@nondot.org> merge some simple call diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59831 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
036094b45f36bb70daa22c558defaf3378b24da0 21-Nov-2008 Chris Lattner <sabre@nondot.org> print a type in a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59829 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b1b4d337fafe30823b581cbfaa1641f37541fffe 21-Nov-2008 Chris Lattner <sabre@nondot.org> print a type in a diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59829 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bb002338ac6d32dde969463290842f557071f38f 21-Nov-2008 Chris Lattner <sabre@nondot.org> merge 3 more diagnostics into 1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
416e46febcb7084e715fbe0b9bf2cab7a85f5242 21-Nov-2008 Chris Lattner <sabre@nondot.org> merge 3 more diagnostics into 1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a7021ee6987ae13adedcae2b37f6d820cd8ac07e 21-Nov-2008 Chris Lattner <sabre@nondot.org> Add the concept of "modifiers" to the clang diagnostic format
strings. This allows us to have considerable flexibility in how
these things are displayed and provides extra information that
allows us to merge away diagnostics that are very similar.

Diagnostic modifiers are a string of characters with the regex
[-a-z]+ that occur between the % and digit. They may
optionally have an argument that can parameterize them.

For now, I've added two example modifiers. One is a very useful
tool that allows you to factor commonality across diagnostics
that need single words or phrases combined. Basically you can
use %select{a|b|c}4 with with an integer argument that selects
either a/b/c based on an integer value in the range [0..3).

The second modifier is also an integer modifier, aimed to help
English diagnostics handle plurality. "%s3" prints to 's' if
integer argument #3 is not 1, otherwise it prints to nothing.
I'm fully aware that 's' is an English concept and doesn't
apply to all situations (mouse vs mice). However, this is very
useful and we can add other crazy modifiers once we add support
for polish! ;-)

I converted a couple C++ diagnostics over to use this as an
example, I'd appreciate it if others could merge the other
likely candiates. If you have other modifiers that you want,
lets talk on cfe-dev.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59803 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
af7ae4e8160fc5c23e471f2125b3fe5911e3532a 21-Nov-2008 Chris Lattner <sabre@nondot.org> Add the concept of "modifiers" to the clang diagnostic format
strings. This allows us to have considerable flexibility in how
these things are displayed and provides extra information that
allows us to merge away diagnostics that are very similar.

Diagnostic modifiers are a string of characters with the regex
[-a-z]+ that occur between the % and digit. They may
optionally have an argument that can parameterize them.

For now, I've added two example modifiers. One is a very useful
tool that allows you to factor commonality across diagnostics
that need single words or phrases combined. Basically you can
use %select{a|b|c}4 with with an integer argument that selects
either a/b/c based on an integer value in the range [0..3).

The second modifier is also an integer modifier, aimed to help
English diagnostics handle plurality. "%s3" prints to 's' if
integer argument #3 is not 1, otherwise it prints to nothing.
I'm fully aware that 's' is an English concept and doesn't
apply to all situations (mouse vs mice). However, this is very
useful and we can add other crazy modifiers once we add support
for polish! ;-)

I converted a couple C++ diagnostics over to use this as an
example, I'd appreciate it if others could merge the other
likely candiates. If you have other modifiers that you want,
lets talk on cfe-dev.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59803 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
de55ecb28c4d3cafa8c35babb73b37bd64ffe3a9 21-Nov-2008 Chris Lattner <sabre@nondot.org> move the diagnostic location and ID out of DiagnosticInfo and store it in
the Diagnostic class. Since we can already only have one diagnostic in
flight at a time, this shrinks DiagnosticInfo.

This reduces DiagnosticInfo to being basically a rather crazy smart pointer
to a DiagnosticInfo :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59798 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b7fc3b87d065041a10eaa0603d738df21ff7af3a 21-Nov-2008 Chris Lattner <sabre@nondot.org> move the diagnostic location and ID out of DiagnosticInfo and store it in
the Diagnostic class. Since we can already only have one diagnostic in
flight at a time, this shrinks DiagnosticInfo.

This reduces DiagnosticInfo to being basically a rather crazy smart pointer
to a DiagnosticInfo :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59798 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b2e61782d20fd351c8e3d3d7ee50b903cb387bb0 21-Nov-2008 Chris Lattner <sabre@nondot.org> move diagnostic insertion methods to be free methods instead of
in the DiagnosticInfo class. This requires marking them as taking
a const DiagnosticInfo, which is bogus (they logically mutate DI),
but works with the C++ type system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2cb836eb16afea6a7e07109bdec37e85c44d7bd7 21-Nov-2008 Chris Lattner <sabre@nondot.org> move diagnostic insertion methods to be free methods instead of
in the DiagnosticInfo class. This requires marking them as taking
a const DiagnosticInfo, which is bogus (they logically mutate DI),
but works with the C++ type system.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59797 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
c32554536872965eb528a999f672b040d4ffc440 21-Nov-2008 Ted Kremenek <kremenek@apple.com> Add comment to IsFileLexer, clean up indentation, and tighten how it's written.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59773 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
34eaa24e6c2dc72bbbd5ad09694368cfd09c5f14 21-Nov-2008 Ted Kremenek <kremenek@apple.com> Add comment to IsFileLexer, clean up indentation, and tighten how it's written.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59773 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
4491ce53a77deaf2c083606b765052dbdbe29ab5 21-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer:
- Move out logic for handling the end-of-file to LexEndOfFile (to match the Lexer) class. The logic now mirrors the Lexer class more, which allows us to pass most of the Preprocessor test cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59768 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
cd4e2aecde5bb7810715d5d5a88ac63ce7946f34 21-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer:
- Move out logic for handling the end-of-file to LexEndOfFile (to match the Lexer) class. The logic now mirrors the Lexer class more, which allows us to pass most of the Preprocessor test cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59768 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
28d40dca851a75792133b354f96d5180b4a4306d 21-Nov-2008 Ted Kremenek <kremenek@apple.com> - Clean up transfer function logic for 'return' statements.
- Add check for returning an undefined value to a caller.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59764 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5917d7894e8274b9625275dd4dd86c5d0040a242 21-Nov-2008 Ted Kremenek <kremenek@apple.com> - Clean up transfer function logic for 'return' statements.
- Add check for returning an undefined value to a caller.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59764 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
444b6bf96ff1f7c7253e494f64d961febbb27ac6 20-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer:
- Move PTHLexer::GetToken() to be inside PTHLexer.cpp.
- When lexing in raw mode, null out identifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59744 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
89d7ee9619d2dbdfa8d956a695c612a104a92cad 20-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer:
- Move PTHLexer::GetToken() to be inside PTHLexer.cpp.
- When lexing in raw mode, null out identifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59744 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
c37a3a2b88d5057db716ff19fe5acfc40042dc47 20-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer:
- Rename 'CurToken' and 'LastToken' to 'CurTokenIdx' and 'LastTokenIdx'
respectively.
- Add helper methods GetToken(), AdvanceToken(), AtLastToken() to abstract away
details of the token stream. This also allows us to easily replace their
implementation later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59733 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
31aba425a01c8c957e662ccfaa71f923d0f0932a 20-Nov-2008 Ted Kremenek <kremenek@apple.com> PTHLexer:
- Rename 'CurToken' and 'LastToken' to 'CurTokenIdx' and 'LastTokenIdx'
respectively.
- Add helper methods GetToken(), AdvanceToken(), AtLastToken() to abstract away
details of the token stream. This also allows us to easily replace their
implementation later.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59733 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
7f3fec565aab6cad369f418dbcbe601d545c5ac0 20-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Add support for overloaded operator-> when used in a member access
expression (smart_ptr->mem).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59732 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8ba10745f525467e91bbaec21044bf4d9017a988 20-Nov-2008 Douglas Gregor <dgregor@apple.com> Add support for overloaded operator-> when used in a member access
expression (smart_ptr->mem).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59732 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e3414de0e7171a7f899bc5632f7cd2e2a3cc1579 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename IsNonPragmaNonMacroLexer to IsFileLexer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59731 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
81d24e135c60dcbe421864e6a4334ba99b8fe7ec 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename IsNonPragmaNonMacroLexer to IsFileLexer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59731 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
eeb6396f9392bc91d857e7393d46c846d2ca1b46 20-Nov-2008 Daniel Dunbar <daniel@zuster.org> De-unionize fields in Token class.
- This is fairly gross but although the code is conceptually the
same, introducting the union causes gcc 4.2 on x86 (darwin, if that
matters) to pessimize LexTokenInternal which is critical to our
preprocessor performance.

This speeds up -Eonly lexing of Cocoa.h by ~4.7% in my timings and
reduces the code size of LexTokenInternal by 8.6%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59725 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
b28d6de75e0cb27ce3106ce6052f87ad0ab276d7 20-Nov-2008 Daniel Dunbar <daniel@zuster.org> De-unionize fields in Token class.
- This is fairly gross but although the code is conceptually the
same, introducting the union causes gcc 4.2 on x86 (darwin, if that
matters) to pessimize LexTokenInternal which is critical to our
preprocessor performance.

This speeds up -Eonly lexing of Cocoa.h by ~4.7% in my timings and
reduces the code size of LexTokenInternal by 8.6%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59725 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
ced209674798e44242a15301c0261ff36011b638 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Added virtual method 'IndirectLex' to PTHLexer. This will likely get removed in the future when we correctly handle #include processing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59722 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ac2dda65d2d39c0a83d95bdf6237edbf4685bc58 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Added virtual method 'IndirectLex' to PTHLexer. This will likely get removed in the future when we correctly handle #include processing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59722 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
cfa2c8d7b552132debd8c4f330a020d402dd25eb 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Preprocessor::isCurrentLexer() now takes a PreprocessorLexer* argument to match against CurPPLexer instead of CurLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59721 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7062d9e9fc3ed89c4e4ea7055efea6585b7bac8d 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Preprocessor::isCurrentLexer() now takes a PreprocessorLexer* argument to match against CurPPLexer instead of CurLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59721 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
05fb7c8668938447ffdd36d5e15ea697e88db0ba 20-Nov-2008 Chris Lattner <sabre@nondot.org> Rename IdentifierInfo::isName to ::isStr. Use a nifty trick
from Sebastian to enforce that a literal string is passed in,
and use this to avoid having to call strlen on it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
92e62b02226410bcad8584541b8f1ff4d35ebab9 20-Nov-2008 Chris Lattner <sabre@nondot.org> Rename IdentifierInfo::isName to ::isStr. Use a nifty trick
from Sebastian to enforce that a literal string is passed in,
and use this to avoid having to call strlen on it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59706 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ff37af764d44e6f7451135cb6f7d3ee52c88b73b 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Preprocessor::getCurrentFileLexer() now returns a PreprocessorLexer* instead of
a Lexer*. This means it will either return the current (normal) file Lexer or a
PTHLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59694 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
68e48e4a81767997ef0231e47eca4f665102c95e 20-Nov-2008 Ted Kremenek <kremenek@apple.com> Preprocessor::getCurrentFileLexer() now returns a PreprocessorLexer* instead of
a Lexer*. This means it will either return the current (normal) file Lexer or a
PTHLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59694 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c62e3a81b8ad2b425a5a952122d0d7a735f77904 20-Nov-2008 Ted Kremenek <kremenek@apple.com> - Default initialize ParsingPreprocessorDirective, ParsingFilename, and
LexingRawMode in the ctor of PreprocessorLexer.

- PTHLexer: Use "LastToken" instead of "NumToken"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59690 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PreprocessorLexer.h
452e37837a48b2f0ced144784277fd4d28cbede9 20-Nov-2008 Ted Kremenek <kremenek@apple.com> - Default initialize ParsingPreprocessorDirective, ParsingFilename, and
LexingRawMode in the ctor of PreprocessorLexer.

- PTHLexer: Use "LastToken" instead of "NumToken"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59690 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
ex/PreprocessorLexer.h
f0ca65f501c7e7d8c286e04bca0d805c12a5ad1b 20-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> More objc gc stuff. Read/Write barriers for local static/extern,
diagnostics on use of __weak attribute on fields,
Early support for read/write barriers for objc fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59682 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2682d8b3a0415d521d5ca11afb13a8bc5c559a31 20-Nov-2008 Fariborz Jahanian <fjahanian@apple.com> More objc gc stuff. Read/Write barriers for local static/extern,
diagnostics on use of __weak attribute on fields,
Early support for read/write barriers for objc fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59682 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
67fdb5bda3dc14d1da17c2e071a0dba9fec577cb 19-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Implement the rest of C++ [over.call.object], which permits the object
being called to be converted to a reference-to-function,
pointer-to-function, or reference-to-pointer-to-function. This is done
through "surrogate" candidate functions that model the conversions
from the object to the function (reference/pointer) and the
conversions in the arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59674 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
106c6eb3f1380bfe243a62d8f0f8bce6a7c8d5c6 19-Nov-2008 Douglas Gregor <dgregor@apple.com> Implement the rest of C++ [over.call.object], which permits the object
being called to be converted to a reference-to-function,
pointer-to-function, or reference-to-pointer-to-function. This is done
through "surrogate" candidate functions that model the conversions
from the object to the function (reference/pointer) and the
conversions in the arguments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59674 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1896dafb461363c6fb6638753226e6c03286bdad 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59673 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
9f1384f7db76e24068f6c9d7d881714addb6c029 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59673 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
d479fa00cacdc39dfc1b00ebcdef6fd5575689e4 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Add stub for PTHLexer::isNextPPTokenLParen().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59670 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
2f1c0243f7fc5d12446efcb006c071854c345923 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Add stub for PTHLexer::isNextPPTokenLParen().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59670 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
d111a25848e5ea85c2ef54c653002dbbc80c0df0 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Add version of 'getFileCharacteristic()' for FileIDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e55f4ee4fd435e29015e2eea952744ee2a621030 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Add version of 'getFileCharacteristic()' for FileIDs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59669 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b53b1f496609dfdaedbe8e2bdd8c8e91740f1877 19-Nov-2008 Ted Kremenek <kremenek@apple.com> When using a PTHLexer, use DiscardToEndOfLine() instead of ReadToEndOfLine().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59668 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
17ff58a63197b398ae52697b088dc0fb8b255519 19-Nov-2008 Ted Kremenek <kremenek@apple.com> When using a PTHLexer, use DiscardToEndOfLine() instead of ReadToEndOfLine().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59668 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
56758d28f4e010d4ecbf1e7bc88fec5a6488218e 19-Nov-2008 Ted Kremenek <kremenek@apple.com> - Move static function IsNonPragmaNonMacroLexer into Preprocessor.h.
- Add variants of IsNonPragmaNonMacroLexer to accept an IncludeMacroStack entry
(simplifies some uses).
- Use IsNonPragmaNonMacroLexer in Preprocessor::LookupFile.
- Add 'FileID' to PreprocessorLexer, and have Preprocessor query this fileid
when looking up the FileEntry for a file

Performance testing of -Eonly on Cocoa.h shows no performance regression because
of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59666 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/PreprocessorLexer.h
41938c8493b4380df738263166b746eacb33c309 19-Nov-2008 Ted Kremenek <kremenek@apple.com> - Move static function IsNonPragmaNonMacroLexer into Preprocessor.h.
- Add variants of IsNonPragmaNonMacroLexer to accept an IncludeMacroStack entry
(simplifies some uses).
- Use IsNonPragmaNonMacroLexer in Preprocessor::LookupFile.
- Add 'FileID' to PreprocessorLexer, and have Preprocessor query this fileid
when looking up the FileEntry for a file

Performance testing of -Eonly on Cocoa.h shows no performance regression because
of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59666 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/PreprocessorLexer.h
10f3c50c0ae70ca5bb648f555d277fbfb8eab284 19-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Support for calling overloaded function call operators (operator())
with function call syntax, e.g.,

Functor f;
f(x, y);

This is the easy part of handling calls to objects of class type
(C++ [over.call.object]). The hard part (coping with conversions from
f to function pointer or reference types) will come later. Nobody uses
that stuff anyway, right? :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59663 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f9eb905197e44ed5634205512074993f6f40470d 19-Nov-2008 Douglas Gregor <dgregor@apple.com> Support for calling overloaded function call operators (operator())
with function call syntax, e.g.,

Functor f;
f(x, y);

This is the easy part of handling calls to objects of class type
(C++ [over.call.object]). The hard part (coping with conversions from
f to function pointer or reference types) will come later. Nobody uses
that stuff anyway, right? :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59663 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2409477a45b4279d5d0600b057392b5b458e5d1f 19-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Some tweaks suggested by Argiris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59661 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
487a75ab300552e42afa45b8199133f838a40e5f 19-Nov-2008 Douglas Gregor <dgregor@apple.com> Some tweaks suggested by Argiris

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59661 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9cd599b261c4d48135c43a0a73cd2c188051d669 19-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Take care another assert:

struct A {
struct B;
};

struct A::B {
void m() {} // Assertion failed: getContainingDC(DC) == CurContext && "The next DeclContext should be lexically contained in the current one."
};

Introduce DeclContext::getLexicalParent which may be different from DeclContext::getParent when nested-names are involved, e.g:

namespace A {
struct S;
}
struct A::S {}; // getParent() == namespace 'A'
// getLexicalParent() == translation unit


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
77407b802130b1c44b1f63b855722a5376f57bca 19-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Take care another assert:

struct A {
struct B;
};

struct A::B {
void m() {} // Assertion failed: getContainingDC(DC) == CurContext && "The next DeclContext should be lexically contained in the current one."
};

Introduce DeclContext::getLexicalParent which may be different from DeclContext::getParent when nested-names are involved, e.g:

namespace A {
struct S;
}
struct A::S {}; // getParent() == namespace 'A'
// getLexicalParent() == translation unit


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59650 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
5703f445bef3af2fed61b60a291530670d2b64c0 19-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Make the non-const DeclContext::getParent call the const version, instead of the other way around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
20bc6762282d192bd19be03094d4f311710e020c 19-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make the non-const DeclContext::getParent call the const version, instead of the other way around.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
80723c56092e182aea4c28cdcdc92b1b8e0c41d3 19-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Support overloading of the subscript operator[], including support for
built-in operator candidates. Test overloading of '&' and ','.

In C++, a comma expression is an lvalue if its right-hand
subexpression is an lvalue. Update Expr::isLvalue accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59643 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
337c6b9f5d502dc1c5acea628bf7bf9e828efc0e 19-Nov-2008 Douglas Gregor <dgregor@apple.com> Support overloading of the subscript operator[], including support for
built-in operator candidates. Test overloading of '&' and ','.

In C++, a comma expression is an lvalue if its right-hand
subexpression is an lvalue. Update Expr::isLvalue accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59643 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c64a53d59278fb34f24cd330f77554c9f1c9a494 19-Nov-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6150376> [sema] crash on invalid message send.

The core fix in Sema::ActOnClassMessage(). All the other changes have to do with passing down the SourceLocation for the receiver (to properly position the cursor when producing an error diagnostic).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59639 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
5cb93b8bf009c4b0ae09b71ba85f54b2a7ea8022 19-Nov-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6150376> [sema] crash on invalid message send.

The core fix in Sema::ActOnClassMessage(). All the other changes have to do with passing down the SourceLocation for the receiver (to properly position the cursor when producing an error diagnostic).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59639 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
4f6904d8d02ccd71e23d18e5cd36c1f1c52d9ef7 19-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Added operator overloading for unary operators, post-increment, and
post-decrement, including support for generating all of the built-in
operator candidates for these operators.

C++ and C have different rules for the arguments to the builtin unary
'+' and '-'. Implemented both variants in Sema::ActOnUnaryOp.

In C++, pre-increment and pre-decrement return lvalues. Update
Expr::isLvalue accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59638 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
74253736184c0717a0649922551bf9d8b6815651 19-Nov-2008 Douglas Gregor <dgregor@apple.com> Added operator overloading for unary operators, post-increment, and
post-decrement, including support for generating all of the built-in
operator candidates for these operators.

C++ and C have different rules for the arguments to the builtin unary
'+' and '-'. Implemented both variants in Sema::ActOnUnaryOp.

In C++, pre-increment and pre-decrement return lvalues. Update
Expr::isLvalue accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59638 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
4c642e1ffe00d94786f463339a6ac3253aeee1b0 19-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fix this:

With this snippet:
void f(a::b);

An assert is hit:
Assertion failed: CachedTokens[CachedLexPos-1].getLocation() == Tok.getAnnotationEndLoc() && "The annotation should be until the most recent cached token", file ..\..\lib\Lex\PPCaching.cpp, line 98

Introduce Preprocessor::RevertCachedTokens that reverts a specific number of tokens when backtracking is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59636 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
08b2c3743a29a2dddcf72e95f747760e213cdde7 19-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix this:

With this snippet:
void f(a::b);

An assert is hit:
Assertion failed: CachedTokens[CachedLexPos-1].getLocation() == Tok.getAnnotationEndLoc() && "The annotation should be until the most recent cached token", file ..\..\lib\Lex\PPCaching.cpp, line 98

Introduce Preprocessor::RevertCachedTokens that reverts a specific number of tokens when backtracking is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59636 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
dd3848520dd871192174322b471a78c598656e51 19-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Remove Preprocessor::CacheTokens boolean data member. The same functionality can be provided by using Preprocessor::isBacktrackEnabled().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59631 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
fad03b2b38a3baea4b67e79e676fee15078e3258 19-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove Preprocessor::CacheTokens boolean data member. The same functionality can be provided by using Preprocessor::isBacktrackEnabled().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59631 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
aede15ad8e5c247231006c052450af42320d89b5 19-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add SymbolData for array elements and struct fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59618 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
eabf776661662a8e652eb692084d20fddffd5cca 19-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add SymbolData for array elements and struct fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59618 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/SymbolManager.h
a9f6722a81ae992ca2d6641bf824362ae31741ea 19-Nov-2008 Chris Lattner <sabre@nondot.org> add a new helper method. It is unclear to me why this doesn't work, but GCC
won't match it:

template<std::size_t StrLen>
bool isName(const char Str[StrLen]) const {
return getLength() == StrLen-1 && !memcmp(getName(), Str, StrLen-1);
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
845222ccd992282bf74b2fca53e7c3b84a81c098 19-Nov-2008 Chris Lattner <sabre@nondot.org> add a new helper method. It is unclear to me why this doesn't work, but GCC
won't match it:

template<std::size_t StrLen>
bool isName(const char Str[StrLen]) const {
return getLength() == StrLen-1 && !memcmp(getName(), Str, StrLen-1);
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59605 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
e46b8797fa40245512e73af79c497328e9d606b5 19-Nov-2008 Chris Lattner <sabre@nondot.org> Allow sending IdentifierInfo*'s into Diagnostics without turning them into strings
first. This should allow removal of a bunch of II->getName() calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59601 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
43b628cd47ecdc3caf640d79b3ad7ecef0f2c285 19-Nov-2008 Chris Lattner <sabre@nondot.org> Allow sending IdentifierInfo*'s into Diagnostics without turning them into strings
first. This should allow removal of a bunch of II->getName() calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59601 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
68f621cb6c43392e164c6fdbda71bc8f3b94962b 19-Nov-2008 Chris Lattner <sabre@nondot.org> add direct support for signed and unsigned integer arguments to diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59598 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
30bc96544346bea42921cf6837e66cef80d664b4 19-Nov-2008 Chris Lattner <sabre@nondot.org> add direct support for signed and unsigned integer arguments to diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59598 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
92a3353d3f7c2584cf85826021bcc583aff6ad86 19-Nov-2008 Chris Lattner <sabre@nondot.org> switch TextDiagnosticPrinter to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59597 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
a03a5b5a84989b1cbd3917b967e8fe64f99cfa80 19-Nov-2008 Chris Lattner <sabre@nondot.org> switch TextDiagnosticPrinter to raw_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59597 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
be8e5a477c5a51ff39a1c0cfec253b67bfb97ca4 19-Nov-2008 Chris Lattner <sabre@nondot.org> rewrite FormatDiagnostic to be less gross and a lot more efficient.
This also makes it illegal to have bare '%'s in diagnostics. If you
want a % in a diagnostic, use %%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticKinds.def
f4c839657742b823cea1a95b18422f1ba74d3ddd 19-Nov-2008 Chris Lattner <sabre@nondot.org> rewrite FormatDiagnostic to be less gross and a lot more efficient.
This also makes it illegal to have bare '%'s in diagnostics. If you
want a % in a diagnostic, use %%.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/DiagnosticKinds.def
0cb74051d520bf8c70063e03f59b45fc3226734e 19-Nov-2008 Chris Lattner <sabre@nondot.org> implement a transparent optimization with the diagnostics stuff:
const char*'s are now not converted to std::strings when the diagnostic
is formed, we just hold onto their pointer and format as needed.

This commit makes DiagnosticClient::FormatDiagnostic even more of a
mess, I'll fix it in the next commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59593 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
73d2a1b05bb04ab0136af374ddaa5d4602d4c939 19-Nov-2008 Chris Lattner <sabre@nondot.org> implement a transparent optimization with the diagnostics stuff:
const char*'s are now not converted to std::strings when the diagnostic
is formed, we just hold onto their pointer and format as needed.

This commit makes DiagnosticClient::FormatDiagnostic even more of a
mess, I'll fix it in the next commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59593 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
1bff1c31313957dbcc0d5eb8af5e8fe1b11ed2f1 19-Nov-2008 Chris Lattner <sabre@nondot.org> Address Sebastian and Doug's objections with taking pointers to temporaries.
Instead of doing that, copy the strings into the diagnostic info.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
cfa96326158c32a0e08d3985a050f46bf7c6132d 19-Nov-2008 Chris Lattner <sabre@nondot.org> Address Sebastian and Doug's objections with taking pointers to temporaries.
Instead of doing that, copy the strings into the diagnostic info.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1b0a3615ac219fb7646fded0dc70b6c743554f8d 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Revert 59574 (caused tests to fail).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59579 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
2df37b8eaecc5382e0e511a738f88918f48d9454 19-Nov-2008 Ted Kremenek <kremenek@apple.com> Revert 59574 (caused tests to fail).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59579 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
77127db5da8f96d5312d815dcb5575025eb7ea5d 19-Nov-2008 Ted Kremenek <kremenek@apple.com> - Move static function IsNonPragmaNonMacroLexer into Preprocessor.h.
- Add variants of IsNonPragmaNonMacroLexer to accept an IncludeMacroStack entry
(simplifies some uses).
- Use IsNonPragmaNonMacroLexer in Preprocessor::LookupFile.

Performance testing of -Eonly on Cocoa.h shows no performance regression because
of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59574 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0a3626444039396802fa35db24733c1963aebfac 19-Nov-2008 Ted Kremenek <kremenek@apple.com> - Move static function IsNonPragmaNonMacroLexer into Preprocessor.h.
- Add variants of IsNonPragmaNonMacroLexer to accept an IncludeMacroStack entry
(simplifies some uses).
- Use IsNonPragmaNonMacroLexer in Preprocessor::LookupFile.

Performance testing of -Eonly on Cocoa.h shows no performance regression because
of this patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59574 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
5ed15042cb1ae4fc91e1fefe40589a486ee2314b 19-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Partial expansion of C++ operator overloading (for binary operators)
to support operators defined as member functions, e.g.,

struct X {
bool operator==(X&);
};

Overloading with non-member operators is supported, and the special
rules for the implicit object parameter (e.g., the ability for a
non-const *this to bind to an rvalue) are implemented.

This change also refactors and generalizes the code for adding
overload candidates for overloaded operator calls (C++ [over.match.expr]),
both to match the rules more exactly (name lookup of non-member
operators actually ignores member operators) and to make this routine
more reusable for the other overloaded operators.

Testing for the initialization of the implicit object parameter is
very light. More tests will come when we get support for calling
member functions directly (e.g., o.m(a1, a2)).




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
96176b3575823ea996c6140380dd17d9240c9766 19-Nov-2008 Douglas Gregor <dgregor@apple.com> Partial expansion of C++ operator overloading (for binary operators)
to support operators defined as member functions, e.g.,

struct X {
bool operator==(X&);
};

Overloading with non-member operators is supported, and the special
rules for the implicit object parameter (e.g., the ability for a
non-const *this to bind to an rvalue) are implemented.

This change also refactors and generalizes the code for adding
overload candidates for overloaded operator calls (C++ [over.match.expr]),
both to match the rules more exactly (name lookup of non-member
operators actually ignores member operators) and to make this routine
more reusable for the other overloaded operators.

Testing for the initialization of the implicit object parameter is
very light. More tests will come when we get support for calling
member functions directly (e.g., o.m(a1, a2)).




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59564 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d06ed4604cd50135b8ad4295a241fe37f2e7691c 18-Nov-2008 Chris Lattner <sabre@nondot.org> Allow diagnostics to be used in bool context, like:

return Diag(...);

when the function returns bool. This always evaluates to true.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
95d1ba492c3191f49392e53acbf878e39fc8ba0a 18-Nov-2008 Chris Lattner <sabre@nondot.org> Allow diagnostics to be used in bool context, like:

return Diag(...);

when the function returns bool. This always evaluates to true.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59555 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b7284dc94ca9e33084e019d259442d29be24b048 18-Nov-2008 Chris Lattner <sabre@nondot.org> Remove the last of the old-style Preprocessor::Diag methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59554 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
204b2fed909b1eabea7aeb6caadd7cff718edee5 18-Nov-2008 Chris Lattner <sabre@nondot.org> Remove the last of the old-style Preprocessor::Diag methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59554 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
63bac2556d5ecec0665505edb193a57c1c278666 18-Nov-2008 Chris Lattner <sabre@nondot.org> don't dereference a null pointer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59533 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
aabb54e1ee8e2c2ef89e7c5cbbb9a89872e96f67 18-Nov-2008 Chris Lattner <sabre@nondot.org> don't dereference a null pointer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59533 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
aee3bf8be3cc87bae59b47213089aca4e9f8ee02 18-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> As threatened previously: consolidate name lookup and the creation of
DeclRefExprs and BlockDeclRefExprs into a single function
Sema::ActOnDeclarationNameExpr, eliminating a bunch of duplicate
lookup-name-and-check-the-result code.

Note that we still have the three parser entry points for identifiers,
operator-function-ids, and conversion-function-ids, since the parser
doesn't (and shouldn't) know about DeclarationNames. This is a Good
Thing (TM), and there will be more entrypoints coming (e.g., for C++
pseudo-destructor expressions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
10c4262aeb5212375e3fa64e76887bd9bcc79924 18-Nov-2008 Douglas Gregor <dgregor@apple.com> As threatened previously: consolidate name lookup and the creation of
DeclRefExprs and BlockDeclRefExprs into a single function
Sema::ActOnDeclarationNameExpr, eliminating a bunch of duplicate
lookup-name-and-check-the-result code.

Note that we still have the three parser entry points for identifiers,
operator-function-ids, and conversion-function-ids, since the parser
doesn't (and shouldn't) know about DeclarationNames. This is a Good
Thing (TM), and there will be more entrypoints coming (e.g., for C++
pseudo-destructor expressions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59527 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
96a32ddc1349db9772d01530425bca2af481f0a2 18-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Extend DeclarationName to support C++ overloaded operators, e.g.,
operator+, directly, using the same mechanism as all other special
names.

Removed the "special" identifiers for the overloaded operators from
the identifier table and IdentifierInfo data structure. IdentifierInfo
is back to representing only real identifiers.

Added a new Action, ActOnOperatorFunctionIdExpr, that builds an
expression from an parsed operator-function-id (e.g., "operator
+"). ActOnIdentifierExpr used to do this job, but
operator-function-ids are no longer represented by IdentifierInfo's.

Extended Declarator to store overloaded operator names.
Sema::GetNameForDeclarator now knows how to turn the operator
name into a DeclarationName for the overloaded operator.

Except for (perhaps) consolidating the functionality of
ActOnIdentifier, ActOnOperatorFunctionIdExpr, and
ActOnConversionFunctionExpr into a common routine that builds an
appropriate DeclRefExpr by looking up a DeclarationName, all of the
work on normalizing declaration names should be complete with this
commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/IdentifierTable.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
e94ca9e4371c022329270436b3dd77adc4ddfa8f 18-Nov-2008 Douglas Gregor <dgregor@apple.com> Extend DeclarationName to support C++ overloaded operators, e.g.,
operator+, directly, using the same mechanism as all other special
names.

Removed the "special" identifiers for the overloaded operators from
the identifier table and IdentifierInfo data structure. IdentifierInfo
is back to representing only real identifiers.

Added a new Action, ActOnOperatorFunctionIdExpr, that builds an
expression from an parsed operator-function-id (e.g., "operator
+"). ActOnIdentifierExpr used to do this job, but
operator-function-ids are no longer represented by IdentifierInfo's.

Extended Declarator to store overloaded operator names.
Sema::GetNameForDeclarator now knows how to turn the operator
name into a DeclarationName for the overloaded operator.

Except for (perhaps) consolidating the functionality of
ActOnIdentifier, ActOnOperatorFunctionIdExpr, and
ActOnConversionFunctionExpr into a common routine that builds an
appropriate DeclRefExpr by looking up a DeclarationName, all of the
work on normalizing declaration names should be complete with this
commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclarationName.h
asic/IdentifierTable.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
aa1efd8763e1024ddc18d1c12ca63aa2d8a14b60 18-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fix 80-col violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59523 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
db0e15ae3e2b5e180541eec35e2bce54359ca7d8 18-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fix 80-col violation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59523 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
b64ff5b3a9570b2d73931132e5ed8726614ec05c 18-Nov-2008 Chris Lattner <sabre@nondot.org> remove one more Preprocessor::Diag method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59512 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
56b05c8829efd13b7e5b333f8f587c71d025c67d 18-Nov-2008 Chris Lattner <sabre@nondot.org> remove one more Preprocessor::Diag method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59512 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0370d6b8174700267ae5356dbf92e60024fa410e 18-Nov-2008 Chris Lattner <sabre@nondot.org> Convert the lexer and start converting the PP over to using canonical Diag methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59511 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
3692b09faa9fe346f39bc922db6dce48cdcc3f63 18-Nov-2008 Chris Lattner <sabre@nondot.org> Convert the lexer and start converting the PP over to using canonical Diag methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59511 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
194e700ce2373027bdbf07a2fc8a3d1dcda210a9 18-Nov-2008 Chris Lattner <sabre@nondot.org> remove the last couple obsolete forms of Parser::Diag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59510 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ef708fd4abccf4d21b1f82ab2ab62f6ae7cc1265 18-Nov-2008 Chris Lattner <sabre@nondot.org> remove the last couple obsolete forms of Parser::Diag.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59510 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f006a221c69997a9187d5565220eca7e786a63df 18-Nov-2008 Chris Lattner <sabre@nondot.org> Change a couple of the Parser::Diag methods to return DiagnosticInfo
and let the clients push whatever they want into the DiagnosticInfo
instead of hard coding a few forms. Also switch various clients to
use Diag(Tok, ...) instead of Diag(Tok.getLocation(), ...) as the
canonical form to simplify the code a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59509 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1ab3b96de160e4fbffec2a776e284a48a3bb543d 18-Nov-2008 Chris Lattner <sabre@nondot.org> Change a couple of the Parser::Diag methods to return DiagnosticInfo
and let the clients push whatever they want into the DiagnosticInfo
instead of hard coding a few forms. Also switch various clients to
use Diag(Tok, ...) instead of Diag(Tok.getLocation(), ...) as the
canonical form to simplify the code a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59509 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4d7496ba9f3d2995d41cade4f1441b94d63ecfe4 18-Nov-2008 Chris Lattner <sabre@nondot.org> The 'return Diag(...)' idiom should be treated as returning an
invalid expr/stmt, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59508 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d3b64655fa81ff1e1d5f944198239e4908035d79 18-Nov-2008 Chris Lattner <sabre@nondot.org> The 'return Diag(...)' idiom should be treated as returning an
invalid expr/stmt, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59508 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e271babe1ecfef27157ea5d8085a1eb39fcd08b4 18-Nov-2008 Chris Lattner <sabre@nondot.org> Give DiagnosticInfo a real copy constructor, even though it
is destructive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
520987fc4e5e60c80bcce613b0f8813ffb2fdca0 18-Nov-2008 Chris Lattner <sabre@nondot.org> Give DiagnosticInfo a real copy constructor, even though it
is destructive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
6948ae68efb71fc0ef50fbf240c3cc2ce8b97b2d 18-Nov-2008 Chris Lattner <sabre@nondot.org> This reworks some of the Diagnostic interfaces a bit to change how diagnostics
are formed. In particular, a diagnostic with all its strings and ranges is now
packaged up and sent to DiagnosticClients as a DiagnosticInfo instead of as a
ton of random stuff. This has the benefit of simplifying the interface, making
it more extensible, and allowing us to do more checking for things like access
past the end of the various arrays passed in.

In addition to introducing DiagnosticInfo, this also substantially changes how
Diagnostic::Report works. Instead of being passed in all of the info required
to issue a diagnostic, Report now takes only the required info (a location and
ID) and returns a fresh DiagnosticInfo *by value*. The caller is then free to
stuff strings and ranges into the DiagnosticInfo with the << operator. When
the dtor runs on the DiagnosticInfo object (which should happen at the end of
the statement), the diagnostic is actually emitted with all of the accumulated
information. This is a somewhat tricky dance, but it means that the
accumulated DiagnosticInfo is allowed to keep pointers to other expression
temporaries without those pointers getting invalidated.

This is just the minimal change to get this stuff working, but this will allow
us to eliminate the zillions of variant "Diag" methods scattered throughout
(e.g.) sema. For example, instead of calling:

Diag(BuiltinLoc, diag::err_overload_no_match, typeNames,
SourceRange(BuiltinLoc, RParenLoc));

We will soon be able to just do:

Diag(BuiltinLoc, diag::err_overload_no_match)
<< typeNames << SourceRange(BuiltinLoc, RParenLoc));

This scales better to support arbitrary types being passed in (not just
strings) in a type-safe way. Go operator overloading?!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
0a14eee528a901c16f0e288fbc10a3abc1660d87 18-Nov-2008 Chris Lattner <sabre@nondot.org> This reworks some of the Diagnostic interfaces a bit to change how diagnostics
are formed. In particular, a diagnostic with all its strings and ranges is now
packaged up and sent to DiagnosticClients as a DiagnosticInfo instead of as a
ton of random stuff. This has the benefit of simplifying the interface, making
it more extensible, and allowing us to do more checking for things like access
past the end of the various arrays passed in.

In addition to introducing DiagnosticInfo, this also substantially changes how
Diagnostic::Report works. Instead of being passed in all of the info required
to issue a diagnostic, Report now takes only the required info (a location and
ID) and returns a fresh DiagnosticInfo *by value*. The caller is then free to
stuff strings and ranges into the DiagnosticInfo with the << operator. When
the dtor runs on the DiagnosticInfo object (which should happen at the end of
the statement), the diagnostic is actually emitted with all of the accumulated
information. This is a somewhat tricky dance, but it means that the
accumulated DiagnosticInfo is allowed to keep pointers to other expression
temporaries without those pointers getting invalidated.

This is just the minimal change to get this stuff working, but this will allow
us to eliminate the zillions of variant "Diag" methods scattered throughout
(e.g.) sema. For example, instead of calling:

Diag(BuiltinLoc, diag::err_overload_no_match, typeNames,
SourceRange(BuiltinLoc, RParenLoc));

We will soon be able to just do:

Diag(BuiltinLoc, diag::err_overload_no_match)
<< typeNames << SourceRange(BuiltinLoc, RParenLoc));

This scales better to support arbitrary types being passed in (not just
strings) in a type-safe way. Go operator overloading?!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
e9bf3e3517ebed028186d62c3be3ceb989684c7e 18-Nov-2008 Chris Lattner <sabre@nondot.org> SourceManager::getLineNumber is logically const except for caching.
Use mutable to make it so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
f812a45dd93634c9300ed5533bd26b56374714a1 18-Nov-2008 Chris Lattner <sabre@nondot.org> SourceManager::getLineNumber is logically const except for caching.
Use mutable to make it so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a1433477d5c1ed477ef814658f199ddee6f6c31a 18-Nov-2008 Chris Lattner <sabre@nondot.org> remove a helper method with only one call site.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
5917fe1189ee7cbb6f61b804b1f1ab6ef16a94cb 18-Nov-2008 Chris Lattner <sabre@nondot.org> remove a helper method with only one call site.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b034e281af9d2cb52c2606764de229c1fb825307 18-Nov-2008 Chris Lattner <sabre@nondot.org> Change the diagnostics interface to take an array of pointers to
strings instead of array of strings. This reduces string copying
in some not-very-important cases, but paves the way for future
improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
2383b7f6aea2cb2bf2b5bfc0ec730f9354fecbbf 18-Nov-2008 Chris Lattner <sabre@nondot.org> Change the diagnostics interface to take an array of pointers to
strings instead of array of strings. This reduces string copying
in some not-very-important cases, but paves the way for future
improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
asic/Diagnostic.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
734efae28a374bf0dff8778ed9fb85f24811e768 18-Nov-2008 Chris Lattner <sabre@nondot.org> cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
c5c8d7d57dbfb2ecb7c7db51711e3b198e379d6a 18-Nov-2008 Chris Lattner <sabre@nondot.org> cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
7ff9f43398bd81435762a0cd454da092d74d1268 18-Nov-2008 Ted Kremenek <kremenek@apple.com> Preprocessor::PushIncludeMacroStack() should always zero out CurPPLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59490 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f89963b1e819d5e73796a4f9d7cd70129846e2ec 18-Nov-2008 Ted Kremenek <kremenek@apple.com> Preprocessor::PushIncludeMacroStack() should always zero out CurPPLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59490 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6f531ab29b8de27737067800197dc2e26465efe8 18-Nov-2008 Ted Kremenek <kremenek@apple.com> - Add Lexer::isPragma() accessor for clients of Lexer that aren't friends.
- Add static method to test if the current lexer is a non-macro/non-pragma
lexer.
- Refactor some code in PPLexerChange to use this static method.
- No performance change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59486 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
4b391087f9c5582d448ab66ccbc7028f7673f380 18-Nov-2008 Ted Kremenek <kremenek@apple.com> - Add Lexer::isPragma() accessor for clients of Lexer that aren't friends.
- Add static method to test if the current lexer is a non-macro/non-pragma
lexer.
- Refactor some code in PPLexerChange to use this static method.
- No performance change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59486 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
da189c64db6654b55dff3c131e1f6b1ef999fccb 18-Nov-2008 Chris Lattner <sabre@nondot.org> implement a fixme by making warnings for ++/-- on non-modifiable-lvalues better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
858bb6f2d6790feeb03b3c2a24f01ef24b54301b 18-Nov-2008 Chris Lattner <sabre@nondot.org> implement a fixme by making warnings for ++/-- on non-modifiable-lvalues better.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59484 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
292d8ba1d8dacfe56bff65288bfefb8257596ec6 18-Nov-2008 Ted Kremenek <kremenek@apple.com> Add hooks to use PTHLexer::Lex instead of Lexer::Lex when CurLexer is null.
Performance tests on Cocoa.h (using the regular Lexer) shows no performance
difference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59479 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
f6452c5421c5db5a7ceff581525f286931d97f1a 18-Nov-2008 Ted Kremenek <kremenek@apple.com> Add hooks to use PTHLexer::Lex instead of Lexer::Lex when CurLexer is null.
Performance tests on Cocoa.h (using the regular Lexer) shows no performance
difference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59479 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
306be5ff2a5ba0153c8b9207cedf112547b13016 18-Nov-2008 Ted Kremenek <kremenek@apple.com> - Add 'CurPPLexer' to Preprocessor to keep track of the current
PreprocessorLexer, which will either be a 'Lexer' or 'PTHLexer'.
- Added stub field 'CurPTHLexer' to keep track of the current PTHLexer.
- Modified IncludeStackInfo to track both the current PTHLexer and
current PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59472 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
9c1b750c59d510e6c9eccb1f37bccc46ccfe6844 18-Nov-2008 Ted Kremenek <kremenek@apple.com> - Add 'CurPPLexer' to Preprocessor to keep track of the current
PreprocessorLexer, which will either be a 'Lexer' or 'PTHLexer'.
- Added stub field 'CurPTHLexer' to keep track of the current PTHLexer.
- Modified IncludeStackInfo to track both the current PTHLexer and
current PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59472 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6a2b7fd0027d190eb934a68b04991a12f8892a1c 18-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement effects of 'mutable', and a few comments from Chris on its parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
a11f42f4bca694b9be91350d0a74815f119e3fbf 18-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement effects of 'mutable', and a few comments from Chris on its parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59470 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
6704b319467ad5bb8fa89aa800a7e47aba46f5cf 17-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Eliminate all of the placeholder identifiers used for constructors,
destructors, and conversion functions. The placeholders were used to
work around the fact that the parser and some of Sema really wanted
declarators to have simple identifiers; now, the code that deals with
declarators will use DeclarationNames.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclarationName.h
asic/DiagnosticKinds.def
asic/IdentifierTable.h
arse/DeclSpec.h
10bd36882406cdf4805e35add1ce2f11ab9ae152 17-Nov-2008 Douglas Gregor <dgregor@apple.com> Eliminate all of the placeholder identifiers used for constructors,
destructors, and conversion functions. The placeholders were used to
work around the fact that the parser and some of Sema really wanted
declarators to have simple identifiers; now, the code that deals with
declarators will use DeclarationNames.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59469 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
ST/DeclarationName.h
asic/DiagnosticKinds.def
asic/IdentifierTable.h
arse/DeclSpec.h
b0212bdede2abd0ca5e893d90464f5b0f3ce9943 17-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Updated IdentifierResolver to deal with DeclarationNames. The names of
C++ constructors, destructors, and conversion functions now have a
FETokenInfo field that IdentifierResolver can access, so that these
special names are handled just like ordinary identifiers. A few other
Sema routines now use DeclarationNames instead of IdentifierInfo*'s.

To validate this design, this code also implements parsing and
semantic analysis for id-expressions that name conversion functions,
e.g.,

return operator bool();

The new parser action ActOnConversionFunctionExpr takes the result of
parsing "operator type-id" and turning it into an expression, using
the IdentifierResolver with the DeclarationName of the conversion
function. ActOnDeclarator pushes those conversion function names into
scope so that the IdentifierResolver can find them, of course.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclarationName.h
asic/DiagnosticKinds.def
arse/Action.h
2def48394f6d48bde0dec2b514193c2b533265b5 17-Nov-2008 Douglas Gregor <dgregor@apple.com> Updated IdentifierResolver to deal with DeclarationNames. The names of
C++ constructors, destructors, and conversion functions now have a
FETokenInfo field that IdentifierResolver can access, so that these
special names are handled just like ordinary identifiers. A few other
Sema routines now use DeclarationNames instead of IdentifierInfo*'s.

To validate this design, this code also implements parsing and
semantic analysis for id-expressions that name conversion functions,
e.g.,

return operator bool();

The new parser action ActOnConversionFunctionExpr takes the result of
parsing "operator type-id" and turning it into an expression, using
the IdentifierResolver with the DeclarationName of the conversion
function. ActOnDeclarator pushes those conversion function names into
scope so that the IdentifierResolver can find them, of course.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclarationName.h
asic/DiagnosticKinds.def
arse/Action.h
37fb940de30f294356022f3cb9eced40f0933e70 17-Nov-2008 Chris Lattner <sabre@nondot.org> Implement rdar://6319320: give a good diagnostic for cases where people
are trying to use the old GCC "casts as lvalue" extension. We don't and
will hopefully never support this.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59460 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
ca354faa7e9b99af17070c82b9662a5fca76422c 17-Nov-2008 Chris Lattner <sabre@nondot.org> Implement rdar://6319320: give a good diagnostic for cases where people
are trying to use the old GCC "casts as lvalue" extension. We don't and
will hopefully never support this.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59460 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
682a8cf9b1b84cc299225acd8e0b38e9a6da08ec 17-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Some cleanups for C++ operator overloading

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59443 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
43c7bad105f742988e7ca40564285c83bea854a5 17-Nov-2008 Douglas Gregor <dgregor@apple.com> Some cleanups for C++ operator overloading

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59443 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
aa368a2159168ef0b6991c6ee5e205a7edb78129 17-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Simplify error messages for two-parameter overloaded increment/decrement operators

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1adbab67751f44147a0d259b684cf52bae142ef3 17-Nov-2008 Douglas Gregor <dgregor@apple.com> Simplify error messages for two-parameter overloaded increment/decrement operators

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59442 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
24afd4accaf5499312f05f1252463c6e0febf16d 17-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Introduction the DeclarationName class, as a single, general method of
representing the names of declarations in the C family of
languages. DeclarationName is used in NamedDecl to store the name of
the declaration (naturally), and ObjCMethodDecl is now a NamedDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59441 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclarationName.h
asic/IdentifierTable.h
ex/Preprocessor.h
2e1cd4264d363ca869bf37ef160902f211d21b8c 17-Nov-2008 Douglas Gregor <dgregor@apple.com> Introduction the DeclarationName class, as a single, general method of
representing the names of declarations in the C family of
languages. DeclarationName is used in NamedDecl to store the name of
the declaration (naturally), and ObjCMethodDecl is now a NamedDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59441 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
ST/DeclarationName.h
asic/IdentifierTable.h
ex/Preprocessor.h
9e71359328b4365dd57045c7dff81b789bf02d7c 17-Nov-2008 Chris Lattner <sabre@nondot.org> pad header out to 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59438 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OperatorKinds.h
b8abbdc90f902a2c09c566193b900c2c45a46672 17-Nov-2008 Chris Lattner <sabre@nondot.org> pad header out to 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59438 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OperatorKinds.h
7bb5062d5b77d256e3ab7d1e5bf1eeb52edce95c 17-Nov-2008 Chris Lattner <sabre@nondot.org> line up some columns, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OperatorKinds.def
ee79ca9d8fafd05a318c6265c8896dfc342cc754 17-Nov-2008 Chris Lattner <sabre@nondot.org> line up some columns, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59436 91177308-0d34-0410-b5e6-96231b3b80d8
asic/OperatorKinds.def
ef0696643975b7f5db9c9b333cffae2c6a469a5c 16-Nov-2008 Chris Lattner <sabre@nondot.org> rename Expr::tryEvaluate to Expr::Evaluate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6ee7aa154e8bbb21a21254293410b944f78b0bfe 16-Nov-2008 Chris Lattner <sabre@nondot.org> rename Expr::tryEvaluate to Expr::Evaluate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
92bf5bd8de39fde937a719dbe31493fdfa8754d3 16-Nov-2008 Chris Lattner <sabre@nondot.org> Fix PR3075, __builtin_stdarg_start being misprototyped. This affects netbsd headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
58ace88985b920971b052de8a9a7b89de0654dc0 16-Nov-2008 Chris Lattner <sabre@nondot.org> Fix PR3075, __builtin_stdarg_start being misprototyped. This affects netbsd headers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
5e0cc7057c9b5fb40a6b1a150045f4b4b5ed875f 16-Nov-2008 Chris Lattner <sabre@nondot.org> add dump and print methods, add operator<< for APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59411 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
64c34f1c6f613eef02a7b488f8edadbe7a8650a8 16-Nov-2008 Chris Lattner <sabre@nondot.org> add dump and print methods, add operator<< for APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59411 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
d8fc4fcb055be3f7017283ba40616133a2fb3afd 16-Nov-2008 Chris Lattner <sabre@nondot.org> move some APValue methods out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
a9ab5d6bcf42dfd4f058ee3b1fbb32456c0bdfe8 16-Nov-2008 Chris Lattner <sabre@nondot.org> move some APValue methods out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
0a322a5f57e8c3c5472894c3e66db2c0582cfab6 16-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Enhance modularization: return a <state,loc> pair to let GRExprEngine modify the
environment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59407 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
cb529b542a6c473251d15fdd637b3230906ea1dc 16-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Enhance modularization: return a <state,loc> pair to let GRExprEngine modify the
environment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59407 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
8fbe7aedb79673853bc4341a3f7e270036080a86 16-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Enhances SCA to process untyped region to typed region conversion.
- RegionView and RegionViewMap is introduced to assist back-mapping from
super region to subregions.
- GDM is used to carry RegionView information.
- AnonTypedRegion is added to represent a typed region introduced by pointer
casting. Later AnonTypedRegion can be used in other similar cases, e.g.,
malloc()'ed region.
- The specific conversion is delegated to store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59382 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
dc0a25d9bff956cdbe54ea0bfc8fbbe3ceb4eb92 16-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Enhances SCA to process untyped region to typed region conversion.
- RegionView and RegionViewMap is introduced to assist back-mapping from
super region to subregions.
- GDM is used to carry RegionView information.
- AnonTypedRegion is added to represent a typed region introduced by pointer
casting. Later AnonTypedRegion can be used in other similar cases, e.g.,
malloc()'ed region.
- The specific conversion is delegated to store manager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59382 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/Store.h
600458fb879d59ae6dd169a67d349a75609cb739 15-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add isUnsigned option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59355 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
8bb87e8de5fc8e4c91e78468b65a66b5b2b82d71 15-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add isUnsigned option.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59355 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
61b89ebb86774739940ebd5ceab77f5551ba29f7 15-Nov-2008 Ted Kremenek <kremenek@apple.com> Implement FIXME in GRExprEngine::VisitUnaryOperator() to handle implicit conversions caused by the '!' operator. This required adding some logic to GRSimpleVals to reason about nonloc::LocAsInteger SVals. This code appears to work fine, but it should eventually be cleaned up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59335 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
e04a5cb9afb5faa205c0bfa93103d6df691e05b2 15-Nov-2008 Ted Kremenek <kremenek@apple.com> Implement FIXME in GRExprEngine::VisitUnaryOperator() to handle implicit conversions caused by the '!' operator. This required adding some logic to GRSimpleVals to reason about nonloc::LocAsInteger SVals. This code appears to work fine, but it should eventually be cleaned up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59335 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
40ae7fab65db6a23c762de7ae3978248f89739ad 15-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add handy method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59332 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
90e72e4106a0c3efa7575e9f9cba0c775bb54552 15-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add handy method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59332 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
9f5337b3f6c3871db5756b0f9ba0babc13c4eac7 15-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement parsing and semantic checking of the 'mutable' keyword.
Thanks to Doug for the review. Actual effects of mutable to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/DeclSpec.h
669d5d74b880a8497b92a3ec159145713f4d6519 15-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement parsing and semantic checking of the 'mutable' keyword.
Thanks to Doug for the review. Actual effects of mutable to follow.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59331 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/DeclSpec.h
4daee5a02386090d66b2cb92f79329548abe2879 14-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Remove Parser::isTokenUnqualifiedId, it's not getting used anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59323 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
981aeb64be244097a41098c437a989cf0a6f99b6 14-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove Parser::isTokenUnqualifiedId, it's not getting used anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59323 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
034a947c280d385793a38a408f8b80aa5bdf08be 14-Nov-2008 Ted Kremenek <kremenek@apple.com> Second attempt at implementation transfer function support for ObjCForCollectionStmt. We now assume that the 'element' expression can be any lvalue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59313 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
06fb99fb403bff1651429923f666a2ebe2b1522f 14-Nov-2008 Ted Kremenek <kremenek@apple.com> Second attempt at implementation transfer function support for ObjCForCollectionStmt. We now assume that the 'element' expression can be any lvalue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59313 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
65fedaf9bd026cf8863e24eeecade7b2a65e0030 14-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Add a new expression node, CXXOperatorCallExpr, which expresses a
function call created in response to the use of operator syntax that
resolves to an overloaded operator in C++, e.g., "str1 +
str2" that resolves to std::operator+(str1, str2)". We now build a
CXXOperatorCallExpr in C++ when we pick an overloaded operator. (But
only for binary operators, where we actually implement overloading)

I decided *not* to refactor the current CallExpr to make it abstract
(with FunctionCallExpr and CXXOperatorCallExpr as derived
classes). Doing so would allow us to make CXXOperatorCallExpr a little
bit smaller, at the cost of making the argument and callee accessors
virtual. We won't know if this is going to be a win until we can parse
lots of C++ code to determine how much memory we'll save by making
this change vs. the performance penalty due to the extra virtual
calls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/OperatorKinds.def
b4609806e9232593ece09ce08b630836e825865c 14-Nov-2008 Douglas Gregor <dgregor@apple.com> Add a new expression node, CXXOperatorCallExpr, which expresses a
function call created in response to the use of operator syntax that
resolves to an overloaded operator in C++, e.g., "str1 +
str2" that resolves to std::operator+(str1, str2)". We now build a
CXXOperatorCallExpr in C++ when we pick an overloaded operator. (But
only for binary operators, where we actually implement overloading)

I decided *not* to refactor the current CallExpr to make it abstract
(with FunctionCallExpr and CXXOperatorCallExpr as derived
classes). Doing so would allow us to make CXXOperatorCallExpr a little
bit smaller, at the cost of making the argument and callee accessors
virtual. We won't know if this is going to be a win until we can parse
lots of C++ code to determine how much memory we'll save by making
this change vs. the performance penalty due to the extra virtual
calls.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/OperatorKinds.def
19330151f7883e8b1271c18b1f237102219a19f4 14-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Don't require us to manually number the statements and expressions in StmtNodes.def. We don't need stable numbers yet, renumbering is a pain, and LAST_STMT had the wrong value anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
ST/StmtVisitor.h
f2cad8633e46cce12fc3d77c0bd451ffd7264baf 14-Nov-2008 Douglas Gregor <dgregor@apple.com> Don't require us to manually number the statements and expressions in StmtNodes.def. We don't need stable numbers yet, renumbering is a pain, and LAST_STMT had the wrong value anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
ST/StmtVisitor.h
e178f20654f52e4ab30f6bc20f24694d5f6a3d28 14-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename header file.
Update include files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59284 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/ExprDeclBitVector.h
8d798c75b8aa8457ea06b22c6637d626ce1402de 14-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename header file.
Update include files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59284 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/Support/BlkExprDeclBitVector.h
nalysis/Support/ExprDeclBitVector.h
42e0238470b6ead43b230448d8588983fef80b38 14-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename ExprDeclBitVector to BlkExprDeclBitVector, and store mappings from Stmt* to bit indices instead using Expr*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59283 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
366982aa941f949a0770d714de0de4d104f436bc 14-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename ExprDeclBitVector to BlkExprDeclBitVector, and store mappings from Stmt* to bit indices instead using Expr*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59283 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
3d4492e262e9ae7c20fefe1ad886f5382316f358 13-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Some cleanup for the implementation of built-in operator
candidates. Thanks to Chris for the review!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/TypeOrdering.h
bf3af056289893f58d37b05a2c80970708781d61 13-Nov-2008 Douglas Gregor <dgregor@apple.com> Some cleanup for the implementation of built-in operator
candidates. Thanks to Chris for the review!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/TypeOrdering.h
b0eef3633eb990d52b21bb363aa3115fca7e7cab 13-Nov-2008 Ted Kremenek <kremenek@apple.com> Using llvm::OwningPtr<> for CurLexer and CurTokenLexer. This makes both the ownership semantics of these objects explicit within the Preprocessor and also tightens up the code (explicit deletes not needed).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59249 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
caaa7df2c78bbd40197823034c0275f3dcbd63e7 13-Nov-2008 Ted Kremenek <kremenek@apple.com> Using llvm::OwningPtr<> for CurLexer and CurTokenLexer. This makes both the ownership semantics of these objects explicit within the Preprocessor and also tightens up the code (explicit deletes not needed).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59249 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
cc8f50d06d704dc03c35ef76cca66898f1f66727 13-Nov-2008 Ted Kremenek <kremenek@apple.com> - Revert r59229 and r59232: AllocRegion should be immutable.
- Temporarily disabled test Analysis/array-struct.c for region store.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
82bd99f4db2454cc6e1b7bfaac6db25cb3444ddc 13-Nov-2008 Ted Kremenek <kremenek@apple.com> - Revert r59229 and r59232: AllocRegion should be immutable.
- Temporarily disabled test Analysis/array-struct.c for region store.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
9f80153caecd6a530b6f910676458e80f0740553 13-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Change AllocaRegion to subclass TypedRegion. We need to know ElementRegion's
type when assigning to it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59229 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
56af9773056eb064937c872845c0da6e3d46d4b4 13-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Change AllocaRegion to subclass TypedRegion. We need to know ElementRegion's
type when assigning to it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59229 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
cbcb4c2ba81d6b1c0dea9d8a362755607175873c 13-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Don't build identifiers for C++ constructors, destructors, or
conversion functions. Instead, we just use a placeholder identifier
for these (e.g., "<constructor>") and override NamedDecl::getName() to
provide a human-readable name.

This is one potential solution to the problem; another solution would
be to replace the use of IdentifierInfo* in NamedDecl with a different
class that deals with identifiers better. I'm also prototyping that to
see how it compares, but this commit is better than what we had
previously.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/IdentifierTable.h
arse/Action.h
7d7e6727a5de032c86dcb58ae734e7c1603c26e6 13-Nov-2008 Douglas Gregor <dgregor@apple.com> Don't build identifiers for C++ constructors, destructors, or
conversion functions. Instead, we just use a placeholder identifier
for these (e.g., "<constructor>") and override NamedDecl::getName() to
provide a human-readable name.

This is one potential solution to the problem; another solution would
be to replace the use of IdentifierInfo* in NamedDecl with a different
class that deals with identifiers better. I'm also prototyping that to
see how it compares, but this commit is better than what we had
previously.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
asic/IdentifierTable.h
arse/Action.h
5c8658d33964f85b8c00e4329e26a17a99c80e2c 13-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Fix compilation on 64-bit targets

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59192 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
b7c3ca8af0a1a3b66fb220562c72dd3102153d5b 13-Nov-2008 Douglas Gregor <dgregor@apple.com> Fix compilation on 64-bit targets

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59192 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
7ecfa1347c6e762792f80d6e4528958e991bda04 13-Nov-2008 Ted Kremenek <kremenek@apple.com> Move some diagnostic handling to PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59191 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PTHLexer.h
ex/PreprocessorLexer.h
d6a2e7d71e9a910c45a3eb0268a5d94635003d58 13-Nov-2008 Ted Kremenek <kremenek@apple.com> Move some diagnostic handling to PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59191 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PTHLexer.h
ex/PreprocessorLexer.h
957be41c9ab2dd2e6689ea15f84a5849c67b7bec 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add virtual dtor to PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59188 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
2c71d0f00e40b7b0a85561d430f52247b9c6e7f2 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add virtual dtor to PreprocessorLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59188 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
ea4a72de863487cb54c4d36647df24e9338f58a0 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add LexIncludeFilename.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59187 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
eb41c28b78634ba2165b4aa04e33f3a12e590b0e 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add LexIncludeFilename.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59187 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PreprocessorLexer.h
97017da401ee1ba67fedd3aab089a70c4e60d056 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Move LexIncludeFilename from Lexer to PreprocessorLexer.
PreprocessorLexer now has a virtual method "IndirectLex" which allows it to call the lex method of its subclasses. This is not for performance intensive operations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59185 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ab91b7086cceadce2cfd6a69cc90cebcdfcea07f 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Move LexIncludeFilename from Lexer to PreprocessorLexer.
PreprocessorLexer now has a virtual method "IndirectLex" which allows it to call the lex method of its subclasses. This is not for performance intensive operations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59185 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
93deb42000861e0b27109e736f26b902cacd2cd4 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Unbreak last commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59180 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0deae4b0eb085d1a34e0cb983750b5ed835c16a4 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Unbreak last commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59180 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
8c8de18b9ecbfc0829790b98e5a915e9ca7fe666 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add Preprocessor::PushIncludeMacroStack() and Preprocessor::PopIncludeMacroStack(), two utility methods for manipulating the Preprocessor stack. These will be used to remove manually manipulation of IncludeMacroStack from the rest of the Preprocessor implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59179 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
d038def6e3f33bebf8c12bb3a95b2492c154a5dd 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add Preprocessor::PushIncludeMacroStack() and Preprocessor::PopIncludeMacroStack(), two utility methods for manipulating the Preprocessor stack. These will be used to remove manually manipulation of IncludeMacroStack from the rest of the Preprocessor implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59179 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
e71b3c37b21c10c043ca3f369880c55012fd54d3 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Update CFGStmtVisitor to recognize that ObjCForCollectionStmts are special block-level "expressions".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59176 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGStmtVisitor.h
bfcb712627b9346ab92880d9075896dcc7700ac2 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Update CFGStmtVisitor to recognize that ObjCForCollectionStmts are special block-level "expressions".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59176 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGStmtVisitor.h
550b80cc22ad79f0e4b59eaf11f4ecdca926cc8b 12-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Slightly improve type hash

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
b995d799e146a7d43a3e8311adb54653415434a1 12-Nov-2008 Douglas Gregor <dgregor@apple.com> Slightly improve type hash

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59173 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
ca82086ff22ac7d605cb087d150fe30e75e5a295 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add skeleton for PTH lexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59169 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
274b20863a728cc6a31ee75c670e3733600c1531 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add skeleton for PTH lexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59169 91177308-0d34-0410-b5e6-96231b3b80d8
ex/PTHLexer.h
45fe6b0e1467530492aecb24f1f29873623ab17a 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Move pieces of Lexer that the Preprocessor mutates to a new base class 'PreprocessorLexer'. This will also be the base class of the new Preprocessed-Token-Header (PTH) lexer. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59168 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PreprocessorLexer.h
0e977de1eacfbc143bdedad87c14b53814159023 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Move pieces of Lexer that the Preprocessor mutates to a new base class 'PreprocessorLexer'. This will also be the base class of the new Preprocessed-Token-Header (PTH) lexer. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59168 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/PreprocessorLexer.h
fa1b4e512b091cb2cbe1997c33c1b0642a564d6c 12-Nov-2008 Chris Lattner <sabre@nondot.org> Fix a FIXME by improving a diagnostic, add a testcase for PR3048



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59167 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
67027a7bc35671bc3f6d5c109720060f06303391 12-Nov-2008 Chris Lattner <sabre@nondot.org> Fix a FIXME by improving a diagnostic, add a testcase for PR3048



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59167 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
16516e274f96647fee00ed69cb6cada1ca24ab20 12-Nov-2008 Ted Kremenek <kremenek@apple.com> ObjCForCollectionStmts are block-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
390e48b15ad93f85bfd1e33b9992c198fa0db475 12-Nov-2008 Ted Kremenek <kremenek@apple.com> ObjCForCollectionStmts are block-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
13e167fde76de63844c9ce5257986d958c42dc79 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add (preliminary) transfer function support for ObjCForCollectionStmt. Still need to flesh out some logic.

When processing DeclStmt, use the new interface to StateManager::BindDecl. Conjuring of symbols is now done in VisitDeclStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
af3374187c47acea45706eab6744be6b1c66a856 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Add (preliminary) transfer function support for ObjCForCollectionStmt. Still need to flesh out some logic.

When processing DeclStmt, use the new interface to StateManager::BindDecl. Conjuring of symbols is now done in VisitDeclStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59155 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
1c53eafec7e5b3c78fb305670bfa59e6f0c9427a 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Conjured symbols now bind to Stmt* instead of Expr*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59154 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
b5abb429e7aac731c3b4363a6118a6b3a6e27abc 12-Nov-2008 Ted Kremenek <kremenek@apple.com> Conjured symbols now bind to Stmt* instead of Expr*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59154 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
7012bf30b31f2d50b1cb8046085e7df75822fe5f 12-Nov-2008 Ted Kremenek <kremenek@apple.com> GRStateRef:
- Rename SetSVal to BindLoc
- Add BindDecl
- Add BindExpr

GRState:
- Environment now binds to Stmt* instead of Expr*. This is needed for processing ObjCForCollectionStmt (essentially the declaration of the the 'element' variable can have an SVal attached to it).
- BindDecl no longer accepts Expr* for the initialization value; use SVal* instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59152 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
d4931632946fe86fc2b09496f2b62443440a7da4 12-Nov-2008 Ted Kremenek <kremenek@apple.com> GRStateRef:
- Rename SetSVal to BindLoc
- Add BindDecl
- Add BindExpr

GRState:
- Environment now binds to Stmt* instead of Expr*. This is needed for processing ObjCForCollectionStmt (essentially the declaration of the the 'element' variable can have an SVal attached to it).
- BindDecl no longer accepts Expr* for the initialization value; use SVal* instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59152 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
37b78a123ac4ae21746594c053d897efb352fa7d 12-Nov-2008 Ted Kremenek <kremenek@apple.com> StoreManager::BindDecl now takes an SVal* for the initialization value instead of an Expr* (which can be null). Lazy symbolication of conjured symbols is now the sole responsibility of GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59151 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
42577d145e2c6c3f77731645d442faa716f4c852 12-Nov-2008 Ted Kremenek <kremenek@apple.com> StoreManager::BindDecl now takes an SVal* for the initialization value instead of an Expr* (which can be null). Lazy symbolication of conjured symbols is now the sole responsibility of GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59151 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
70d2612fd956d4d3aeac8b3abed8ef5e29c4b7a5 12-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Implement support for operator overloading using candidate operator
functions for built-in operators, e.g., the builtin

bool operator==(int const*, int const*)

can be used for the expression "x1 == x2" given:

struct X {
operator int const*();
} x1, x2;

The scheme for handling these built-in operators is relatively simple:
for each candidate required by the standard, create a special kind of
candidate function for the built-in. If overload resolution picks the
built-in operator, we perform the appropriate conversions on the
arguments and then let the normal built-in operator take care of it.

There may be some optimization opportunity left: if we can reduce the
number of built-in operator overloads we generate, overload resolution
for these cases will go faster. However, one must be careful when
doing this: GCC generates too few operator overloads in our little
test program, and fails to compile it because none of the overloads it
generates match.

Note that we only support operator overload for non-member binary
operators at the moment. The other operators will follow.

As part of this change, ImplicitCastExpr can now be an lvalue.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59148 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/TypeOrdering.h
asic/DiagnosticKinds.def
eb8f3063257a392f15aea48d42fb73ec51afc548 12-Nov-2008 Douglas Gregor <dgregor@apple.com> Implement support for operator overloading using candidate operator
functions for built-in operators, e.g., the builtin

bool operator==(int const*, int const*)

can be used for the expression "x1 == x2" given:

struct X {
operator int const*();
} x1, x2;

The scheme for handling these built-in operators is relatively simple:
for each candidate required by the standard, create a special kind of
candidate function for the built-in. If overload resolution picks the
built-in operator, we perform the appropriate conversions on the
arguments and then let the normal built-in operator take care of it.

There may be some optimization opportunity left: if we can reduce the
number of built-in operator overloads we generate, overload resolution
for these cases will go faster. However, one must be careful when
doing this: GCC generates too few operator overloads in our little
test program, and fails to compile it because none of the overloads it
generates match.

Note that we only support operator overload for non-member binary
operators at the moment. The other operators will follow.

As part of this change, ImplicitCastExpr can now be an lvalue.





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59148 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/TypeOrdering.h
asic/DiagnosticKinds.def
1d2938c199ec8896f0385a7aeb548af99e47fd8f 11-Nov-2008 Ted Kremenek <kremenek@apple.com> Add fine-grain methods for control which bits are set/reset in ExprDeclBitVector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59073 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
7fdee87c203f8e9b6feed63e85256a8f8bc2bbc0 11-Nov-2008 Ted Kremenek <kremenek@apple.com> Add fine-grain methods for control which bits are set/reset in ExprDeclBitVector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59073 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
0cb7c87eb879a2a3f79426d34c678b07c04c1d8c 11-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Introduce a single AST node SizeOfAlignOfExpr for all sizeof and alignof expressions, both of values and types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
ST/StmtVisitor.h
nalysis/PathSensitive/GRExprEngine.h
arse/Action.h
0518999d3adcc289997bd974dce90cc97f5c1c44 11-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Introduce a single AST node SizeOfAlignOfExpr for all sizeof and alignof expressions, both of values and types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
ST/StmtVisitor.h
nalysis/PathSensitive/GRExprEngine.h
arse/Action.h
b93b49c760fcb5dda81f42e80d84e2fb1e88e54b 11-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement C++ 'typeid' parsing and sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
c42e1183846228a7fa5143ad76507d6d60f5c6f3 11-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement C++ 'typeid' parsing and sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
45014fd2d7e50079dc092df04fec9af7ea0cb0e0 10-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Basic support for taking the address of an overloaded function

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59000 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
904eed3f6148758d39a2d3c88f3133274460d645 10-Nov-2008 Douglas Gregor <dgregor@apple.com> Basic support for taking the address of an overloaded function

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59000 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
d2c14add07f9d01138382c5afd2cfd334e028dbd 10-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Improve parser error recovery after a constructor initializer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58989 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3f08d181f620e6bf4971c436fc9878f98a02bbe3 10-Nov-2008 Douglas Gregor <dgregor@apple.com> Improve parser error recovery after a constructor initializer

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58989 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
9c6210b86c24a722970568f19abb8250814e9b02 10-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Some cleanups to the declaration/checking of overloaded operators in C++. Thanks to Sebastian for the review

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/OperatorKinds.def
asic/OperatorKinds.h
02bcd4cd1a19121da12884aa4943226f72a81e6c 10-Nov-2008 Douglas Gregor <dgregor@apple.com> Some cleanups to the declaration/checking of overloaded operators in C++. Thanks to Sebastian for the review

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/OperatorKinds.def
asic/OperatorKinds.h
4c9390fa05c9b75b76d853e76fd5a89920b9a6a8 10-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add pretty printing to StringRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58985 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
cc128b32429494fe04ed36d7ba30c011cb4e173a 10-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add pretty printing to StringRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58985 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
881964bc7876c335a821293d9a05e21e360ac320 10-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce ScopedDecl::getLexicalDeclContext() which is different from ScopedDecl::getDeclContext() when there are nested-names.
e.g.:
namespace A {
void f(); // SemanticDC (getDeclContext) == LexicalDC (getLexicalDeclContext) == 'namespace A'
}
void A::f(); // SemanticDC == namespace 'A'
// LexicalDC == global namespace


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58948 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
5239304ff761b8b03eefb772bd5d830a9b9f1aea 10-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce ScopedDecl::getLexicalDeclContext() which is different from ScopedDecl::getDeclContext() when there are nested-names.
e.g.:
namespace A {
void f(); // SemanticDC (getDeclContext) == LexicalDC (getLexicalDeclContext) == 'namespace A'
}
void A::f(); // SemanticDC == namespace 'A'
// LexicalDC == global namespace


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58948 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
054a2638e71d2633851f262749de76808224ae6e 08-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement Sema support for C++ nested-name-specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
ef6e647b8d3268a765c2c4dd7f8a73cad281a8e6 08-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement Sema support for C++ nested-name-specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58916 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
2d1992e33e0c80697b651de634ed0d8251cfac88 08-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Silence a GCC member initialization order warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58914 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
751810234ffb45327f23c5f9fda0b944e480bd2b 08-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Silence a GCC member initialization order warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58914 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
311db8c9d95f110058b4ced9b89f09c42e1debc8 08-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement support for C++ nested-name-specifiers ('foo::bar::x') in the Parser side.
No Sema functionality change, just the signatures of the Action/Sema methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
eb83ecde1a822b1c38cd060a85a08c1ac9f82cf8 08-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement support for C++ nested-name-specifiers ('foo::bar::x') in the Parser side.
No Sema functionality change, just the signatures of the Action/Sema methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58913 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
0c93252e267fe104366e621778d1d5ce9d046b68 08-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Introduce annotation tokens, a special kind of token, created and used only by the parser to replace a group of tokens with a single token encoding semantic information.
Will be fully utilized later for C++ nested-name-specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58911 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Preprocessor.h
ex/Token.h
3604e3895ecd850291b518e5a82246c888ce9d0f 08-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce annotation tokens, a special kind of token, created and used only by the parser to replace a group of tokens with a single token encoding semantic information.
Will be fully utilized later for C++ nested-name-specifiers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58911 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/Preprocessor.h
ex/Token.h
67deed2c9de76a72ee4158d0a48bbd0f1ed105d7 08-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Use only one constructor for CXXMethodDecl. Keep initialization stuff into one place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58902 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
5540a72fe407f77d4155511b508f21a237254092 08-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use only one constructor for CXXMethodDecl. Keep initialization stuff into one place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58902 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
7d6a5d29f13eee9b808a71534edd4cac7d60f2e3 08-Nov-2008 Daniel Dunbar <daniel@zuster.org> Support getTypeInfo, getTypeAlign, getTypeSize on const Type*s.
- Size/align are not effected by CVR qualifiers.

Support getCanonicalType: const Type* -> const Type*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1d75118af76cae2bfc06389cde410e14bd0a19fc 08-Nov-2008 Daniel Dunbar <daniel@zuster.org> Support getTypeInfo, getTypeAlign, getTypeSize on const Type*s.
- Size/align are not effected by CVR qualifiers.

Support getCanonicalType: const Type* -> const Type*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7b5c5b5d149f00b1e789a7135144865c37c8f9db 08-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add a boilerplate for out-of-bound array checking. This has no real function currently.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58886 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/Store.h
60156f0596a7ab9a39ddec74942b60a3da847174 08-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add a boilerplate for out-of-bound array checking. This has no real function currently.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58886 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/Store.h
0528e1c81fe7c67a0245ba86a9e9d70162475c62 08-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Greatly improve static_cast diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e3dc28a32a61960bdef59f79d0da161c72a5c88a 08-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Greatly improve static_cast diagnostics

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58873 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c9e909c35b3c0610930fb5fb07a66d768dc6dc61 07-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Changes in preparation for nested-name-specifiers.

-When parsing declarators, don't depend on "CurScope->isCXXClassScope() == true" for constructors/destructors
-For C++ member declarations, don't depend on "Declarator.getContext() == Declarator::MemberContext"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticKinds.def
c7ed9c60b8ee04b119e23441cae2cfec74536ba9 07-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Changes in preparation for nested-name-specifiers.

-When parsing declarators, don't depend on "CurScope->isCXXClassScope() == true" for constructors/destructors
-For C++ member declarations, don't depend on "Declarator.getContext() == Declarator::MemberContext"

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
asic/DiagnosticKinds.def
3ef6c9794a79271d00bfcd941974602fcd2f9c48 07-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Parsing, ASTs, and semantic analysis for the declaration of conversion
functions in C++, e.g.,

struct X {
operator bool() const;
};

Note that these conversions don't actually do anything, since we don't
yet have the ability to use them for implicit or explicit conversions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
2f1bc5285ccd40f411af5f5993f013e27e74ab78 07-Nov-2008 Douglas Gregor <dgregor@apple.com> Parsing, ASTs, and semantic analysis for the declaration of conversion
functions in C++, e.g.,

struct X {
operator bool() const;
};

Note that these conversions don't actually do anything, since we don't
yet have the ability to use them for implicit or explicit conversions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
a9d57b6c3a2edee6d750e0a8d10c49be158ca20a 07-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Assert that Parser::MaybeParseOperatorFunctionId is called when token is kw_operator, and replace ExpectAndConsume for the 'operator' token with a ConsumeToken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
9057a81efaf15c543aab1c5c8488e8a9ed2c0ff4 07-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Assert that Parser::MaybeParseOperatorFunctionId is called when token is kw_operator, and replace ExpectAndConsume for the 'operator' token with a ConsumeToken.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58855 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3a6a307d95553de6dfeda3fe2a5985afabbc50a7 07-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Separate the parsing of type-specifiers from other declaration specifiers, so that we can parse a C++ type-specifier-seq

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58854 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
12e083c805c0f86be4f8e54b06e75b2c3dc1da64 07-Nov-2008 Douglas Gregor <dgregor@apple.com> Separate the parsing of type-specifiers from other declaration specifiers, so that we can parse a C++ type-specifier-seq

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58854 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7609f71b4c384e32a86d816f024aa870abc4d40c 07-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add simple get method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58848 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
c12dedbe9c164a2cc47940a3b7ea0c27efe58f1a 07-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add simple get method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58848 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
6fc891948d005c9616ea63549004a545555e3d39 07-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Join two lines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58847 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
b1ae7d985b72764f2c42bf45d6a801b600a59890 07-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Join two lines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58847 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
2e6fb86852ae33f6c11fab0c3390734b75431dc7 07-Nov-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Shut off an unsigned/signed comparison warning for GCC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58842 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
bf8cb361038c71a76f8ffa0f9986cebc43732e87 07-Nov-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Shut off an unsigned/signed comparison warning for GCC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58842 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
c88ca9de9840939f4da095cdfb19adb04649b9dd 07-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Finish the implementation of VisitCompoundLiteralExpr. As VisitInitListExpr is
available, things get much simplified.

One addition is that CompoundLiteralExpr can appear both in rvalue and lvalue
context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58837 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
f22679e3e5d5f5754931952e58112b4c863a4137 07-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Finish the implementation of VisitCompoundLiteralExpr. As VisitInitListExpr is
available, things get much simplified.

One addition is that CompoundLiteralExpr can appear both in rvalue and lvalue
context.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58837 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
d7f915e74b3906e075d8fbd7b546f40fb6a39814 07-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Initial, rudimentary implementation of operator overloading for binary
operators. For example, one can now write "x + y" where x or y is a
class or enumeration type, and Clang will perform overload resolution
for "+" based on the overloaded operators it finds.

The other kinds of overloadable operators in C++ will follow this same
approach.

Three major issues remain:
1) We don't find member operators
2) Since we don't have user-defined conversion operators, we can't
call any of the built-in overloaded operators in C++ [over.built].
3) Once we've done the semantic checks, we drop the overloaded
operator on the floor; it doesn't get into the AST at all.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
eaebc75ef6ff21fbc9f25ab4175cba465e4e0e43 07-Nov-2008 Douglas Gregor <dgregor@apple.com> Initial, rudimentary implementation of operator overloading for binary
operators. For example, one can now write "x + y" where x or y is a
class or enumeration type, and Clang will perform overload resolution
for "+" based on the overloaded operators it finds.

The other kinds of overloadable operators in C++ will follow this same
approach.

Three major issues remain:
1) We don't find member operators
2) Since we don't have user-defined conversion operators, we can't
call any of the built-in overloaded operators in C++ [over.built].
3) Once we've done the semantic checks, we drop the overloaded
operator on the floor; it doesn't get into the AST at all.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58821 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
e60e5d3eb3d09bde80882f60abc69e28ced874c6 06-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Parsing, ASTs, and semantic analysis for the declaration of overloaded
operators in C++. Overloaded operators can be called directly via
their operator-function-ids, e.g., "operator+(foo, bar)", but we don't
yet implement the semantics of operator overloading to handle, e.g.,
"foo + bar".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
asic/IdentifierTable.h
asic/OperatorKinds.def
asic/OperatorKinds.h
arse/AccessSpecifier.h
arse/Parser.h
1cd1b1e987f5e2f060d7972b13d83239b36d77d6 06-Nov-2008 Douglas Gregor <dgregor@apple.com> Parsing, ASTs, and semantic analysis for the declaration of overloaded
operators in C++. Overloaded operators can be called directly via
their operator-function-ids, e.g., "operator+(foo, bar)", but we don't
yet implement the semantics of operator overloading to handle, e.g.,
"foo + bar".



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
asic/IdentifierTable.h
asic/OperatorKinds.def
asic/OperatorKinds.h
arse/AccessSpecifier.h
arse/Parser.h
444bb8bc368f69b6240fb7c2bc6a5bdd289f8fec 06-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Reclaim some bits in IdentifierInfo, for later use as overloaded operator names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
5142af38ed0dd2f592cbfa00fa6e2e14dd6cc516 06-Nov-2008 Douglas Gregor <dgregor@apple.com> Reclaim some bits in IdentifierInfo, for later use as overloaded operator names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
a1cf66a5674bc3fed6f595345c597466e07d2450 06-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Sema-check virtual declarations. Complete dynamic_cast checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
d93f0ddba0965ded252e228134b30ce30e863fb0 06-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Sema-check virtual declarations. Complete dynamic_cast checking.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
658b444d7fc098ad35801b5e235ea6e5b7feb7b9 06-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Add the remaining C++0x keywords

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
85bb3dad385e9c2a57cf5aa2d2116d8381953a5a 06-Nov-2008 Douglas Gregor <dgregor@apple.com> Add the remaining C++0x keywords

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58802 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
93d487c93efa822ee713b831ac5fa172ffec0aea 06-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Bring back RegionExtent classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58795 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
a3d9ea8d93a0a4dbba0fd95c6a54c33faebc277c 06-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> Bring back RegionExtent classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58795 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
8210a8e4f46bc955ed717609aba309b68c5924ab 05-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Parsing, representation, and preliminary semantic analysis of destructors.

Implicit declaration of destructors (when necessary).

Extended Declarator to store information about parsed constructors
and destructors; this will be extended to deal with declarators that
name overloaded operators (e.g., "operator +") and user-defined
conversion operators (e.g., "operator int").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
arse/Parser.h
42a552f8200ba5948661aee0106fce0c04e39818 05-Nov-2008 Douglas Gregor <dgregor@apple.com> Parsing, representation, and preliminary semantic analysis of destructors.

Implicit declaration of destructors (when necessary).

Extended Declarator to store information about parsed constructors
and destructors; this will be extended to deal with declarators that
name overloaded operators (e.g., "operator +") and user-defined
conversion operators (e.g., "operator int").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
arse/Parser.h
15e0462675c2725515466bb423157e652c135784 05-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Keep track of whether a C++ class is an aggregate. Don't allow initialization of non-aggregates with initializer lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58757 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
64bffa9a6f40e5a3d5556f994f09f7bf45eecd4c 05-Nov-2008 Douglas Gregor <dgregor@apple.com> Keep track of whether a C++ class is an aggregate. Don't allow initialization of non-aggregates with initializer lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58757 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
a65e8ddc1a3a8878ddce4b74f2fe276134602410 05-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Initial implementation of parsing, semantic analysis, and AST-building
for constructor initializations, e.g.,

class A { };
class B : public A {
int m;
public:
B() : A(), m(17) { };
};





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58749 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
7ad8390f7992ab7f19b1460c5f0b9d96f165c4e9 05-Nov-2008 Douglas Gregor <dgregor@apple.com> Initial implementation of parsing, semantic analysis, and AST-building
for constructor initializations, e.g.,

class A { };
class B : public A {
int m;
public:
B() : A(), m(17) { };
};





git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58749 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
0a6ab173022fd4812fd61c52de36c5fa85c67894 04-Nov-2008 Anders Carlsson <andersca@mac.com> Make it an error if an Objective-C declaration is not in the global scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58705 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
15281450f512b7d554858e4d17fca00bfc442a07 04-Nov-2008 Anders Carlsson <andersca@mac.com> Make it an error if an Objective-C declaration is not in the global scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58705 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
825f6ea730de198743bbefdfa270bf65834ced27 04-Nov-2008 Chris Lattner <sabre@nondot.org> LinkageSpecDecl is c++ specific, move it to DeclCXX


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58704 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
21ef7ae45c8b91f23cf5eab2263421bb398a644b 04-Nov-2008 Chris Lattner <sabre@nondot.org> LinkageSpecDecl is c++ specific, move it to DeclCXX


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58704 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
12aee8691f63779a7b241362078af35722c4c76d 04-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Some cleanup of the cast checkers. Don't canonicalize types when not needed. Use distinct diagnostics for distinct errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f7be9448af88e0ebb204bdcebfc13f4cb2b9d8e1 04-Nov-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Some cleanup of the cast checkers. Don't canonicalize types when not needed. Use distinct diagnostics for distinct errors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58700 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d860663a58f234b3936571178855e52f41377ba0 04-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Add a new expression class, ObjCSuperExpr, to handle the Objective-C 'super'. Remove ObjCThis from PredefinedExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/StmtNodes.def
cd9b46e5442a3ef17f83f75177d8545cb5b3e2b9 04-Nov-2008 Douglas Gregor <dgregor@apple.com> Add a new expression class, ObjCSuperExpr, to handle the Objective-C 'super'. Remove ObjCThis from PredefinedExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58698 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
ST/StmtNodes.def
a5b022ad90e26b786f0c3096e3312db2f6ee317b 04-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Create a new expression class, CXXThisExpr, to handle the C++ 'this' primary expression. Remove CXXThis from PredefinedExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58695 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
796da18402f286b897782a298ae3b20c459c102e 04-Nov-2008 Douglas Gregor <dgregor@apple.com> Create a new expression class, CXXThisExpr, to handle the C++ 'this' primary expression. Remove CXXThis from PredefinedExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58695 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
3c24695274a68eaba955816377b350ae6dcd86cb 04-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Diagnose use of 'this' in a C++ default argument. Thanks to Eli for correcting my bogus assertion about it already being handled

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58691 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3996f23ac20de411e0b5931a451bd05142f0b712 04-Nov-2008 Douglas Gregor <dgregor@apple.com> Diagnose use of 'this' in a C++ default argument. Thanks to Eli for correcting my bogus assertion about it already being handled

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58691 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7f1412d98bd91fb090784f112d822bf7b9f367c3 04-Nov-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6339636> clang ObjC rewriter: Assertion failed: FileID-1 < FileIDs.size() && "Invalid FileID!", file c:\cygwin\home\Administrator\llvm\tools\clang\include\clang/Basic/SourceManager.h, line 513



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b2f9e516327310d95840d442416084508f80c183 04-Nov-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6339636> clang ObjC rewriter: Assertion failed: FileID-1 < FileIDs.size() && "Invalid FileID!", file c:\cygwin\home\Administrator\llvm\tools\clang\include\clang/Basic/SourceManager.h, line 513



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a3f825e5b6df7939120bfebee7411c5face4a7f9 04-Nov-2008 Ted Kremenek <kremenek@apple.com> Hook up the Plist diagnostic client to the driver.
Fix Plist output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58652 91177308-0d34-0410-b5e6-96231b3b80d8
river/PathDiagnosticClients.h
4fc82c84581476cb3adba8d4107ded22851d9c4d 04-Nov-2008 Ted Kremenek <kremenek@apple.com> Hook up the Plist diagnostic client to the driver.
Fix Plist output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58652 91177308-0d34-0410-b5e6-96231b3b80d8
river/PathDiagnosticClients.h
0edabbfeb1cacf54a1b9be2f1cd777b0f2982902 03-Nov-2008 Ted Kremenek <kremenek@apple.com> Add path diagnostics client for emitting path reports using Plists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58647 91177308-0d34-0410-b5e6-96231b3b80d8
river/PathDiagnosticClients.h
5d866256333fb6115a8a86ac4f89b2ca36e20c70 03-Nov-2008 Ted Kremenek <kremenek@apple.com> Add path diagnostics client for emitting path reports using Plists.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58647 91177308-0d34-0410-b5e6-96231b3b80d8
river/PathDiagnosticClients.h
21b88b772a9fdbc28aabcd081b0fa2bf59453786 03-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename 'HTMLDiagnostics.h' to 'PathDiagnosticClients.h'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58646 91177308-0d34-0410-b5e6-96231b3b80d8
river/HTMLDiagnostics.h
river/PathDiagnosticClients.h
ad99dbfc1d9178f9f5c415a81ad5bd39bd09d4b6 03-Nov-2008 Ted Kremenek <kremenek@apple.com> Rename 'HTMLDiagnostics.h' to 'PathDiagnosticClients.h'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58646 91177308-0d34-0410-b5e6-96231b3b80d8
river/HTMLDiagnostics.h
river/PathDiagnosticClients.h
5870a95bc9b8a547b0ed253d6c51d20b8dcf4647 03-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Implicit support for direct initialization of objects of class type, e.g.,

X x(5, 7);




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
18fe56863be253a27b940022d27a3101778adaf6 03-Nov-2008 Douglas Gregor <dgregor@apple.com> Implicit support for direct initialization of objects of class type, e.g.,

X x(5, 7);




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58641 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e640ab64c642d17ed4eb13261d9455d7ae6a511e 03-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Add implicitly-declared default and copy constructors to C++ classes,
when appropriate.

Conversions for class types now make use of copy constructors. I've
replaced the egregious hack allowing class-to-class conversions with a
slightly less egregious hack calling these conversions standard
conversions (for overloading reasons).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
396b7cd9f6b35d87d17ae03e9448b5c1f2184598 03-Nov-2008 Douglas Gregor <dgregor@apple.com> Add implicitly-declared default and copy constructors to C++ classes,
when appropriate.

Conversions for class types now make use of copy constructors. I've
replaced the egregious hack allowing class-to-class conversions with a
slightly less egregious hack calling these conversions standard
conversions (for overloading reasons).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58622 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
bb66b419d356821f61f9a49494266ff5393308c2 03-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Eliminate header dependency ASTContext -> TargetInfo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d934112e6170b0fd940d8e40db6936cea2cdcf62 03-Nov-2008 Douglas Gregor <dgregor@apple.com> Eliminate header dependency ASTContext -> TargetInfo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b7b28a2e267fccb603a5a9c5e188d7d670a909b2 03-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Implement C++ DR 106 and C++ DR 540, both of which deal with
reference-collapsing.

Implement diagnostic for formation of a reference to cv void.

Drop cv-qualifiers added to a reference type when the reference type
comes from a typedef.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58612 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f1f9b4e5c7fd087e78f2e387c01098d49d41e784 03-Nov-2008 Douglas Gregor <dgregor@apple.com> Implement C++ DR 106 and C++ DR 540, both of which deal with
reference-collapsing.

Implement diagnostic for formation of a reference to cv void.

Drop cv-qualifiers added to a reference type when the reference type
comes from a typedef.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58612 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c6507e454072488f432bd2aae2ec8bd52f8fe883 03-Nov-2008 Douglas Gregor <doug.gregor@gmail.com> Connect ASTContext to TargetInfo when determining the size_t, ptrdiff_t, and wchar_t types. Fixes recent breakage on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b4e66d5259f90e9aae4d40fc5de801e046c7df94 03-Nov-2008 Douglas Gregor <dgregor@apple.com> Connect ASTContext to TargetInfo when determining the size_t, ptrdiff_t, and wchar_t types. Fixes recent breakage on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d30283ff012138c328764dada9ca2e257f7f287a 03-Nov-2008 Chris Lattner <sabre@nondot.org> Fix PR3001: if we have an error parsing an initializer, make sure to remove
the designator corresponding to it, otherwise Sema and later parsing will
get confused.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58603 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Designator.h
e2f56196e916e4d2f9eeec5c8978490cdedb3f64 03-Nov-2008 Chris Lattner <sabre@nondot.org> Fix PR3001: if we have an error parsing an initializer, make sure to remove
the designator corresponding to it, otherwise Sema and later parsing will
get confused.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58603 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Designator.h
ff4fe319cb800dc20c6aae2189cd7501c1fd590d 03-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> - Remove AnonTypedRegion, which is not to be used.
- Prepare AnonPointeeRegioin for later use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58595 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
817c67daf845b35a242cd9b68e9c5eccf09c63df 03-Nov-2008 Zhongxing Xu <xuzhongxing@gmail.com> - Remove AnonTypedRegion, which is not to be used.
- Prepare AnonPointeeRegioin for later use.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58595 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ea9ca509323c4d6c116bfef5343b6be2a823ffb9 02-Nov-2008 Ted Kremenek <kremenek@apple.com> Added AllocaRegion, which represents regions created by calls to alloca().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
7090ae1a984eb446a5fb4da7b1f2573830653799 02-Nov-2008 Ted Kremenek <kremenek@apple.com> Added AllocaRegion, which represents regions created by calls to alloca().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ccabf0868d9cb81bbc3037a8b3b400737401841d 31-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Semantic checking of constructor declarations and classification of default/copy constructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58538 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
030ff0cdad79b9e0602e143e0669364d2bad8bd2 31-Oct-2008 Douglas Gregor <dgregor@apple.com> Semantic checking of constructor declarations and classification of default/copy constructors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58538 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
b72e9da529fca5693b46ec2888a241f706d7dbcb 31-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Implement basic support for converting constructors in user-defined
conversions.

Notes:
- Overload resolution for converting constructors need to prohibit
user-defined conversions (hence, the test isn't -verify safe yet).
- We still use hacks for conversions from a class type to itself.
This will be the case until we start implicitly declaring the appropriate
special member functions. (That's next on my list)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
60d62c29d260596454aaf4cb50cbc756ac08875e 31-Oct-2008 Douglas Gregor <dgregor@apple.com> Implement basic support for converting constructors in user-defined
conversions.

Notes:
- Overload resolution for converting constructors need to prohibit
user-defined conversions (hence, the test isn't -verify safe yet).
- We still use hacks for conversions from a class type to itself.
This will be the case until we start implicitly declaring the appropriate
special member functions. (That's next on my list)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
9ac68aa262c6c829f6b4b82209172e4a8bf239b3 31-Oct-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement semantic checking of static_cast and dynamic_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58509 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0777972d38a3125efed962b045704c30ae6965cf 31-Oct-2008 Sebastian Redl <sebastian.redl@getdesigned.at> Implement semantic checking of static_cast and dynamic_cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58509 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
fa45143d9b070b5e0e76031dbba1fca99ecd06ab 31-Oct-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Made the mechanism of defining preprocessor defs for maxint, ptrdiff_t, wchar
etc more generic. For some targets, long may not be equal to pointer size. For
example: PIC16 has int as i16, ptr as i16 but long as i32.

Also fixed a few build warnings in assert() functions in CFRefCount.cpp,
CGDecl.cpp, SemaDeclCXX.cpp and ParseDeclCXX.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58501 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
31fc07df7f0fc89ebf83ca05a20b29de45a7598d 31-Oct-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Made the mechanism of defining preprocessor defs for maxint, ptrdiff_t, wchar
etc more generic. For some targets, long may not be equal to pointer size. For
example: PIC16 has int as i16, ptr as i16 but long as i32.

Also fixed a few build warnings in assert() functions in CFRefCount.cpp,
CGDecl.cpp, SemaDeclCXX.cpp and ParseDeclCXX.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58501 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f15ac4bc132d609f1df92308612f3d2629bbd480 31-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Add support for parsing and representing C++ constructor declarations.

Notes:
- Constructors are never found by name lookup, so they'll never get
pushed into any scope. Instead, they are stored as an
OverloadedFunctionDecl in CXXRecordDecl for easy overloading.
- There's a new action isCurrentClassName that determines whether an
identifier is the name of the innermost class currently being defined;
we use this to identify the declarator-id grammar rule that refers to
a type-name.
- MinimalAction does *not* support parsing constructors.
- We now handle virtual and explicit function specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58499 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
b48fe3812047e84164925c8938ce82be0624c40c 31-Oct-2008 Douglas Gregor <dgregor@apple.com> Add support for parsing and representing C++ constructor declarations.

Notes:
- Constructors are never found by name lookup, so they'll never get
pushed into any scope. Instead, they are stored as an
OverloadedFunctionDecl in CXXRecordDecl for easy overloading.
- There's a new action isCurrentClassName that determines whether an
identifier is the name of the innermost class currently being defined;
we use this to identify the declarator-id grammar rule that refers to
a type-name.
- MinimalAction does *not* support parsing constructors.
- We now handle virtual and explicit function specifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58499 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
747a95e29d2fd9a33f8fc95bbbed1e576539a079 31-Oct-2008 Daniel Dunbar <daniel@zuster.org> "One" line fix for -parse-noop failure, "id" and several other things
were being treated as type names for non-Objective-C files.
- Other lines are just because MinimalAction didn't have access to
the LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58498 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e10b0f236bc8487445bc99b8d14bd40666b1998d 31-Oct-2008 Daniel Dunbar <daniel@zuster.org> "One" line fix for -parse-noop failure, "id" and several other things
were being treated as type names for non-Objective-C files.
- Other lines are just because MinimalAction didn't have access to
the LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58498 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
29a8a02193b669c7384535d294ec3eb2c75119ca 31-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Make CompoundLiteralRegion a subclass of TypedRegiion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
77cfac623178d0c16e16e2f171d20b0fea8fde30 31-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Make CompoundLiteralRegion a subclass of TypedRegiion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
8fae2f28105aec10d4878e0dbee9ab58516c2994 31-Oct-2008 Ted Kremenek <kremenek@apple.com> Add accessor method to CompoundLiteralRegion to retrieve the CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58476 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
11a83dc7a9a5738cc0bc76180b508eae896eefa9 31-Oct-2008 Ted Kremenek <kremenek@apple.com> Add accessor method to CompoundLiteralRegion to retrieve the CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58476 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c1c2bbfccda07753d605ff0cc186298fa586fd12 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Pretty-printing for SVals now mainly uses llvm::raw_ostream. We have an adapter for std::ostream, but this will be removed in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58445 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
b8b4161e52bacc6d189146bd632393dc5f060cb0 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Pretty-printing for SVals now mainly uses llvm::raw_ostream. We have an adapter for std::ostream, but this will be removed in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58445 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
b667c9f2a84d0a83cd083db87d963a26d628526a 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Added iterators to nonloc::CompoundSVal.
Added pretty-printing for nonloc::CompoundSVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58442 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/SVals.h
a6fac4e446eb30ed270eff9d4084d5db5e657fcf 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Added iterators to nonloc::CompoundSVal.
Added pretty-printing for nonloc::CompoundSVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58442 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/SVals.h
63ee036cb9a24a65f8fb0d0eaaebfae3793b81a6 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Update #includes since SVals.h no longer includes BasicValueFactory.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
a693d4fa7a6dc31b23837cf38cba7aa2af8f00f3 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Update #includes since SVals.h no longer includes BasicValueFactory.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58439 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
f441c73035ae4159c3738ece8252645a5691ed03 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Add iterator/reverse_iterator to InitListExpr for iteration over the subexpressions of an initializer list. This is basically the same as child_iterator except reverse iteration is possible (which will be used by GRExprEngine::VisitInitListExpr).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58438 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7fcfa4a9b5054bc2a3bc65093f9d2e9e67a70838 30-Oct-2008 Ted Kremenek <kremenek@apple.com> Add iterator/reverse_iterator to InitListExpr for iteration over the subexpressions of an initializer list. This is basically the same as child_iterator except reverse iteration is possible (which will be used by GRExprEngine::VisitInitListExpr).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58438 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5e7a4b8dc6b7cb0fd55639de6d33672c750a6964 30-Oct-2008 Ted Kremenek <kremenek@apple.com> CompoundVal now uses an ImmutableList<SVal> to store its set of SVals. This change was motivated by the need to allow state-splitting in GRExprEngine::VisitInitListExpr. As a side-benefit, we no longer need to perform any copies of SVals when creating a CompoundSVal, and the profiling of CompoundSVal is now constant time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58437 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/SVals.h
632e8b84976f683b365eddfacd04ea5d6f4d8cdf 30-Oct-2008 Ted Kremenek <kremenek@apple.com> CompoundVal now uses an ImmutableList<SVal> to store its set of SVals. This change was motivated by the need to allow state-splitting in GRExprEngine::VisitInitListExpr. As a side-benefit, we no longer need to perform any copies of SVals when creating a CompoundSVal, and the profiling of CompoundSVal is now constant time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58437 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/SVals.h
696b3a8a0aa06949f1dfe3519fa1a3c9278ce4d8 30-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Rename:
- SetSVal(GRState*, Loc, SVal) => BindLoc
- SetSVal(GRState*, Expr*, SVal) => BindExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58421 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
8cd5aaea92f12c25d65ecff5fc820def4c81c1aa 30-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Rename:
- SetSVal(GRState*, Loc, SVal) => BindLoc
- SetSVal(GRState*, Expr*, SVal) => BindExpr


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58421 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
ebcad73f7026df9db8f5ce94cf7836ed0e393e3c 30-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Implement VisitInitListExpr(). InitListExpr will have a nonloc::CompoundVal value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58419 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c4f8706b6539e06a5de153bd72850bb2e0a71456 30-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Implement VisitInitListExpr(). InitListExpr will have a nonloc::CompoundVal value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58419 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
277884fbb7152d160055c3a2a7cb018ed9a4f543 30-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add CompoundVal and CompoundValData for representing the value of InitListExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58418 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/SVals.h
6764b72f6f26b5c03471b9e379a44d379d2d4a9e 30-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add CompoundVal and CompoundValData for representing the value of InitListExpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58418 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/SVals.h
f5660a9835287fcb7b93634b35a8faad6006b24c 29-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Make the non-reference check in Expr work always

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f7c2aa0b049272d8f318988c1965760dcb852578 29-Oct-2008 Douglas Gregor <dgregor@apple.com> Make the non-reference check in Expr work always

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
721cbf1a4da45cb5ec49fcd7afc7dc087f091025 29-Oct-2008 Daniel Dunbar <daniel@zuster.org> Choose CompileOptions (optimization passes) to match llvm-gcc more
closely.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58361 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
8e8f3b7f61548391b675831f350b4ede040dfdce 29-Oct-2008 Daniel Dunbar <daniel@zuster.org> Choose CompileOptions (optimization passes) to match llvm-gcc more
closely.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58361 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
f05e4edd77beb80c814306a51b61f975dc909d66 29-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Rename: AddDecl => BindDecl
BindDecl better describes what the function does:
- Bind the VarDecl to its memory region
- Bind the memory region to some initial value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58359 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
8b2e05d9eef692f30054216237e776cb51acd054 29-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Rename: AddDecl => BindDecl
BindDecl better describes what the function does:
- Bind the VarDecl to its memory region
- Bind the memory region to some initial value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58359 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
33c8eb222b4bc17a9c81952910485f6b5df7a30c 29-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> MemSpaceRegions could be uninitialized. We only require R is a real region.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58356 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
ce63911d6bdd795f63365723d4cdaa6998529e1e 29-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> MemSpaceRegions could be uninitialized. We only require R is a real region.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58356 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
81c29157dcb112ce5f1ccb9df4a431d3070a99a8 29-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Implement initialization of a reference (C++ [dcl.init.ref]) as part
of copy initialization. Other pieces of the puzzle:

- Try/Perform-ImplicitConversion now handles implicit conversions
that don't involve references.
- Try/Perform-CopyInitialization uses
CheckSingleAssignmentConstraints for C. PerformCopyInitialization
is now used for all argument passing and returning values from a
function.
- Diagnose errors with declaring references and const values without
an initializer. (Uses a new Action callback, ActOnUninitializedDecl).

We do not yet have implicit conversion sequences for reference
binding, which means that we don't have any overloading support for
reference parameters yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58353 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
arse/Action.h
27c8dc06f65d7abcf6a7e7f64a7960c9a150ca01 29-Oct-2008 Douglas Gregor <dgregor@apple.com> Implement initialization of a reference (C++ [dcl.init.ref]) as part
of copy initialization. Other pieces of the puzzle:

- Try/Perform-ImplicitConversion now handles implicit conversions
that don't involve references.
- Try/Perform-CopyInitialization uses
CheckSingleAssignmentConstraints for C. PerformCopyInitialization
is now used for all argument passing and returning values from a
function.
- Diagnose errors with declaring references and const values without
an initializer. (Uses a new Action callback, ActOnUninitializedDecl).

We do not yet have implicit conversion sequences for reference
binding, which means that we don't have any overloading support for
reference parameters yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58353 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
arse/Action.h
6a3008456334d17f7b68ccfa54ffaf39bb58fbd4 28-Oct-2008 Daniel Dunbar <daniel@zuster.org> 80-col fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58341 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8320aaaa01d931aa234fc3bce05b399ef41898d5 28-Oct-2008 Daniel Dunbar <daniel@zuster.org> 80-col fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58341 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
035d088fb41d691b08924635995c66d09a126f81 28-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Rename ExplicitCCastExpr to CStyleCastExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
6eec8e883de118b431e3ead5b1e604a6ac68ff6b 28-Oct-2008 Douglas Gregor <dgregor@apple.com> Rename ExplicitCCastExpr to CStyleCastExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58331 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
2369f112160fc75d4e441204ca92da0ea3852761 28-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add isGlobalsRegion() predicate to MemRegionManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58313 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c540b261ac553b91840146eaa3fee3f11b1013a7 28-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add isGlobalsRegion() predicate to MemRegionManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58313 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
51eedea8da63bb546773b491fe1e7ff901e54268 28-Oct-2008 Chris Lattner <sabre@nondot.org> clarify comment, rename argument to avoid a subtle conflict
with an ivar that wasn't a bug but was confusing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58311 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
21ec0e4c5db85e45b59cafabca66d640e0ee2dcc 28-Oct-2008 Chris Lattner <sabre@nondot.org> clarify comment, rename argument to avoid a subtle conflict
with an ivar that wasn't a bug but was confusing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58311 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
0d5d89d173f87b74a7f539c51f417de0f5435fb3 28-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Improve our handling of (C++) references within Clang. Specifically:
- Do not allow expressions to ever have reference type
- Extend Expr::isLvalue to handle more cases where having written a
reference into the source implies that the expression is an lvalue
(e.g., function calls, C++ casts).
- Make GRExprEngine::VisitCall treat the call arguments as lvalues when
they are being bound to a reference parameter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
nalysis/PathSensitive/GRExprEngine.h
9d293dfc0ad7c44ae0b5eb9517f1ed8c8d8b7ff7 28-Oct-2008 Douglas Gregor <dgregor@apple.com> Improve our handling of (C++) references within Clang. Specifically:
- Do not allow expressions to ever have reference type
- Extend Expr::isLvalue to handle more cases where having written a
reference into the source implies that the expression is an lvalue
(e.g., function calls, C++ casts).
- Make GRExprEngine::VisitCall treat the call arguments as lvalues when
they are being bound to a reference parameter.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
nalysis/PathSensitive/GRExprEngine.h
0a2da71034fea55ee786387314eae704b91e2f9b 28-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add attribute always_inline support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
af668b0e7d3581dea3b4f29a9262686e83887e5b 28-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add attribute always_inline support.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
b0ea903c94ee2344d24e5bceb5e28dc96402f8fc 28-Oct-2008 Ted Kremenek <kremenek@apple.com> - Fix type-punning warning in SVals.cpp by using a real iterator class for symbol_iterator.

- Add symbol_iterator support for SymbolicRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58300 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
0d958e7066db0ac2ecbce7286068db50cdb1de63 28-Oct-2008 Ted Kremenek <kremenek@apple.com> - Fix type-punning warning in SVals.cpp by using a real iterator class for symbol_iterator.

- Add symbol_iterator support for SymbolicRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58300 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
ac6372a40237fcd22dd436b52022715955838dcf 27-Oct-2008 Daniel Dunbar <daniel@zuster.org> Comment fix, ParseAST does not take ownership of the consumer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58281 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
d6a1c5daec1ff7152f0e3ced8a461e0dc6793dfa 27-Oct-2008 Daniel Dunbar <daniel@zuster.org> Comment fix, ParseAST does not take ownership of the consumer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58281 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
d83daa53ed77b0ec2daa37a9f0944b359c715ada 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Added preliminary support for CompoundLiterals in the static analyzer:

- GRExprEngine::VisitCompoundLiteral...
(1) visits the initializer list (generating ExplodedNodes)
(2) creates a CompoundMemRegion for the literal
(3) creates a new state with the bound literal values using
GRStateManager::BindCompoundLiteral

- GRStateManager::BindCompoundLiteral simply calls
StoreManager::BindCompoundLiteral to get a new store and returns a persistent
GRState with that store.

- BasicStore::BindCompoundLiteral simply returns the same store, as it
doesn't handle field sensitivity

- RegionStore::BindCompoundLiteral currently fires an assert (pending discussion
of how to best implement mappings for CompoundLiteralRegion).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58277 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
4f09027385466f1f4c382c80ca77157e2aef97d9 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Added preliminary support for CompoundLiterals in the static analyzer:

- GRExprEngine::VisitCompoundLiteral...
(1) visits the initializer list (generating ExplodedNodes)
(2) creates a CompoundMemRegion for the literal
(3) creates a new state with the bound literal values using
GRStateManager::BindCompoundLiteral

- GRStateManager::BindCompoundLiteral simply calls
StoreManager::BindCompoundLiteral to get a new store and returns a persistent
GRState with that store.

- BasicStore::BindCompoundLiteral simply returns the same store, as it
doesn't handle field sensitivity

- RegionStore::BindCompoundLiteral currently fires an assert (pending discussion
of how to best implement mappings for CompoundLiteralRegion).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58277 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
81329abac26ddf6875abac876267a52b4595d638 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Pull determination of the super region for a VarRegion into a single getVarRegion() method. This provides a common clean API for clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
9a1f03afc569abbdcc182379c99d1fe1ece67c9d 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Pull determination of the super region for a VarRegion into a single getVarRegion() method. This provides a common clean API for clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
6bc91b9dc8add225d40725b2001a3e4db5ede97b 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Added CompoundLiteralRegion to represent the (temporary) memory allocated for a compound literal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58270 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
329d6fde79254503b14724e1231a9d70fa6b387f 27-Oct-2008 Ted Kremenek <kremenek@apple.com> Added CompoundLiteralRegion to represent the (temporary) memory allocated for a compound literal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58270 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
21a04f33b3e9024aadbebbef24eadf49ed0cbaf1 27-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Refactor the expression class hierarchy for casts. Most importantly:
- CastExpr is the root of all casts
- ImplicitCastExpr is (still) used for all explicit casts
- ExplicitCastExpr is now the root of all *explicit* casts
- ExplicitCCastExpr (new name needed!?) is a C-style cast in C or C++
- CXXFunctionalCastExpr inherits from ExplicitCastExpr
- CXXNamedCastExpr inherits from ExplicitCastExpr and is the root of all
of the C++ named cast expression types (static_cast, dynamic_cast, etc.)
- Added classes CXXStaticCastExpr, CXXDynamicCastExpr,
CXXReinterpretCastExpr, and CXXConstCastExpr to

Also, fixed returned-stack-addr.cpp, which broke once when we fixed
reinterpret_cast to diagnose double->int* conversions and again when
we eliminated implicit conversions to reference types. The fix is in
both testcase and SemaChecking.cpp.

Most of this patch is simply support for the renaming. There's very
little actual change in semantics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58264 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
49badde06e066d058d6c7fcf4e628a72999b65a9 27-Oct-2008 Douglas Gregor <dgregor@apple.com> Refactor the expression class hierarchy for casts. Most importantly:
- CastExpr is the root of all casts
- ImplicitCastExpr is (still) used for all explicit casts
- ExplicitCastExpr is now the root of all *explicit* casts
- ExplicitCCastExpr (new name needed!?) is a C-style cast in C or C++
- CXXFunctionalCastExpr inherits from ExplicitCastExpr
- CXXNamedCastExpr inherits from ExplicitCastExpr and is the root of all
of the C++ named cast expression types (static_cast, dynamic_cast, etc.)
- Added classes CXXStaticCastExpr, CXXDynamicCastExpr,
CXXReinterpretCastExpr, and CXXConstCastExpr to

Also, fixed returned-stack-addr.cpp, which broke once when we fixed
reinterpret_cast to diagnose double->int* conversions and again when
we eliminated implicit conversions to reference types. The fix is in
both testcase and SemaChecking.cpp.

Most of this patch is simply support for the renaming. There's very
little actual change in semantics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58264 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
b30de271f6b6d2c9ae2a28dcb0caa6b2d9df0cd5 27-Oct-2008 Ted Kremenek <kremenek@apple.com> - Move ExprIterator to Stmt.h so that it can be used by classes defined in Stmt.h
- Implement child_begin() and child_end() for AsmStmt. Previously these had stub implementations that did not iterate over the input/output operands of an inline assembly statement.
- Use ExprIterator for performing iteration over input/output operands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ce2fc3a343ea6098a96d587071cee7299f11957a 27-Oct-2008 Ted Kremenek <kremenek@apple.com> - Move ExprIterator to Stmt.h so that it can be used by classes defined in Stmt.h
- Implement child_begin() and child_end() for AsmStmt. Previously these had stub implementations that did not iterate over the input/output operands of an inline assembly statement.
- Use ExprIterator for performing iteration over input/output operands.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
d7663461a1968b2dae8ab42fda85ec945586e32d 27-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Use ASTContext::getCanonicalType() to get TypedRegion's type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58247 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
e70559fd25bfd1970a82086c5f99cf9ef181b1ae 27-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Use ASTContext::getCanonicalType() to get TypedRegion's type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58247 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1a563daf4c20963562719e31a11b7a036e89ad33 27-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> An ElementRegion is really a typed region. Its super region's type has to be ArrayType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
27b57063d83b00474d7563fb5d608544e2364862 27-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> An ElementRegion is really a typed region. Its super region's type has to be ArrayType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58245 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0cbb9ec64186b92a11090099734cb00ebbba427d 27-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> When destroying a translation unit, deallocate its owned declarations in reverse order, because there may be dependencies among the declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3dda64ec0fad2fa60d882565d135ff598897fa9d 27-Oct-2008 Douglas Gregor <dgregor@apple.com> When destroying a translation unit, deallocate its owned declarations in reverse order, because there may be dependencies among the declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7a4864e85cd4f336dc2bd183fb058e44d304d628 27-Oct-2008 Chris Lattner <sabre@nondot.org> Rename Characteristic_t to CharacteristicKind



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/PPCallbacks.h
9d72851fec9e9c62570a027d42701562bbf29751 27-Oct-2008 Chris Lattner <sabre@nondot.org> Rename Characteristic_t to CharacteristicKind



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58224 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/PPCallbacks.h
a91779856a91fbf663a69164a583fdf0e6d73c0e 27-Oct-2008 Chris Lattner <sabre@nondot.org> make codegen reject initializes with designators, like this:

t.c:1:13: error: cannot codegen this designators yet
int a[10] = {2, 4, [8]=9, 10};
^~~~~~~~~~~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58220 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Designator.h
be20bb558cae5352898e6a913e29d24d20134841 27-Oct-2008 Chris Lattner <sabre@nondot.org> make codegen reject initializes with designators, like this:

t.c:1:13: error: cannot codegen this designators yet
int a[10] = {2, 4, [8]=9, 10};
^~~~~~~~~~~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58220 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Designator.h
71ca8c805be13bcbd3b95f2452f6a75fe442e2e4 27-Oct-2008 Chris Lattner <sabre@nondot.org> Remember whether an initlist had a designator in the AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
418f6c7d142e5ff4607f70cd8431d008442bafe9 27-Oct-2008 Chris Lattner <sabre@nondot.org> Remember whether an initlist had a designator in the AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ce236e7048fef8339d64e68b5729bbeaff4c0543 27-Oct-2008 Chris Lattner <sabre@nondot.org> pass designators into sema. This completes parser-level designator
support as far as I know.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58217 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Designator.h
220ad7c8d1adc23799e480faf189332f1eb032e6 27-Oct-2008 Chris Lattner <sabre@nondot.org> pass designators into sema. This completes parser-level designator
support as far as I know.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58217 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Designator.h
245d36da61d6608a4460c0c0d2c3eba42fabce00 27-Oct-2008 Chris Lattner <sabre@nondot.org> add some simple designator testcases. Reject things like this:

struct foo Y[10] = {
[4] .arr [2] 4 // expected-error {{expected '=' or another designator}}
};

because the "missing equals" extension only is valid if there
is exactly one array designator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Designator.h
79ed6b5902ed92175b70ed3c4d7b3f239af847ce 27-Oct-2008 Chris Lattner <sabre@nondot.org> add some simple designator testcases. Reject things like this:

struct foo Y[10] = {
[4] .arr [2] 4 // expected-error {{expected '=' or another designator}}
};

because the "missing equals" extension only is valid if there
is exactly one array designator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Designator.h
1aee232dcb1196f7afb7141e172cbf6882da8d27 26-Oct-2008 Chris Lattner <sabre@nondot.org> improve comments, build a Designation for field designators and
improve diagnostic for a malformed field designator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58212 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0a68b9449136b0d5664bfa48a51a0c1181d2eca8 26-Oct-2008 Chris Lattner <sabre@nondot.org> improve comments, build a Designation for field designators and
improve diagnostic for a malformed field designator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58212 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
70e9a09b08b7bc080537c13745be76a9dbeb0929 26-Oct-2008 Chris Lattner <sabre@nondot.org> inline the decision logic that chooses between an assign expr and brace
initializer, avoiding an extra level of calls for silly things like
'int x = 4'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58206 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0eec2b58678f71af6b5fcf4c439290c0d640546b 26-Oct-2008 Chris Lattner <sabre@nondot.org> inline the decision logic that chooses between an assign expr and brace
initializer, avoiding an extra level of calls for silly things like
'int x = 4'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58206 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bc9e95d075f270b0611f8630e8f54e11ac38e2d4 26-Oct-2008 Chris Lattner <sabre@nondot.org> This patch continues parser-level implementation of designators:

1. It introduces new parser level abstractions for designators
that are used to communicate between parser and sema.
2. This fixes a FIXME where "identifier ':'" was considered to be
a designator even if it wasn't the first in a designator list.
3. In the "identifier ':'" case, it actually builds the designator
representation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58205 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Designator.h
arse/Parser.h
eccc53a0a0ed1abc7bb4c04ed9566ce0c5c63140 26-Oct-2008 Chris Lattner <sabre@nondot.org> This patch continues parser-level implementation of designators:

1. It introduces new parser level abstractions for designators
that are used to communicate between parser and sema.
2. This fixes a FIXME where "identifier ':'" was considered to be
a designator even if it wasn't the first in a designator list.
3. In the "identifier ':'" case, it actually builds the designator
representation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58205 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Designator.h
arse/Parser.h
65b99647ba0ef8d52e01f14eb9a9e9e6ca2b0be6 26-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Don't give a default argument to ASTContext::getFunctionType for the TypeQuals parameter, it causes subtle bugs where TypeQuals, while necessary, are omitted from the call.
-Remove the default argument.
-Update all call sites of ASTContext::getFunctionType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58187 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7fb5e4888221cd36652d078c6b171ac55e7f406d 26-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Don't give a default argument to ASTContext::getFunctionType for the TypeQuals parameter, it causes subtle bugs where TypeQuals, while necessary, are omitted from the call.
-Remove the default argument.
-Update all call sites of ASTContext::getFunctionType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58187 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7ac59b1411530b362a7aec76fec90f2631090e54 26-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Remove loc::StringLiteralVal. Now we allocate regions for string literals in the Store.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58182 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
197fa58ab40e3fee2137715e96d9bb1c59340837 26-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Remove loc::StringLiteralVal. Now we allocate regions for string literals in the Store.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58182 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
2abba44f756fd8482cd0a2c7725e3c0743f55f98 25-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add code for get the lvalue for string literals. Now we return a StringRegion
for StringLiteral lvalue evaluation, instead of directly returning a
loc::StringLiteralVal by the Environment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58138 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
143bf82ac5afba0757e6817a2c2bb970c20b32d3 25-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add code for get the lvalue for string literals. Now we return a StringRegion
for StringLiteral lvalue evaluation, instead of directly returning a
loc::StringLiteralVal by the Environment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58138 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
73507bdc9f40d4dcb0bf5a82b43ab760b0f1bc35 25-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add StringRegion to MemRegions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
e9f4e5420895a75dd788e9891921e7781c1823b9 25-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add StringRegion to MemRegions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
4b269b4f8fe1509a5d9a92bc02b1b8b503fcd2fd 24-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> -Add support for cv-qualifiers after function declarators.
-Add withConst/withVolatile/withRestrict methods to QualType class, that return the QualType plus the respective qualifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58120 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
971c4fae6092976338b755af1d47dac07c8f16e3 24-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Add support for cv-qualifiers after function declarators.
-Add withConst/withVolatile/withRestrict methods to QualType class, that return the QualType plus the respective qualifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58120 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclCXX.h
ST/Type.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
73a36c92ceb8699205371fd680e9d16ec779d4b7 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Added method "getSelfRegion" to Store. This method returns the region associated with the "this" or "self" object (C++ and Objective-C respectively).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58107 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
9deb0e35dea0f82691fadb60b61f45887ba67aba 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Added method "getSelfRegion" to Store. This method returns the region associated with the "this" or "self" object (C++ and Objective-C respectively).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58107 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
2539c1197daf24dd5b416be58fb78a3aea7e126d 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Added region ObjCObjectRegion that represents an instance of an Objective-C object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58106 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
a7f1b9e8804012ed8df25d93f5a06cb26c9bbd2b 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Added region ObjCObjectRegion that represents an instance of an Objective-C object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58106 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
5424cecfd5c51a88d721b3587a7fa3981ec1c34b 24-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Move viewInheritance to CXXRecordDecl, and make sure it builds in Release mode, too

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
1f81230ac57b9bda8bba9c8221652842ca786132 24-Oct-2008 Douglas Gregor <dgregor@apple.com> Move viewInheritance to CXXRecordDecl, and make sure it builds in Release mode, too

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
ST/Type.h
55c645a12b73cabf6b8e19fbe8b3b3375f06d6e4 24-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Make QualTypeOrdering::operator() const

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
2b9d973eb749aee6becbcf5e51ab5d49b828c978 24-Oct-2008 Douglas Gregor <dgregor@apple.com> Make QualTypeOrdering::operator() const

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58097 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TypeOrdering.h
f8e927072b3546982af4f01dad1354bf67715221 24-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Semantic analysis for C++ reinterpret_cast and const_cast. Patch by Sebastian Redl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2f639b9f3c6b081f076d2ac6d75115ce44bfa249 24-Oct-2008 Douglas Gregor <dgregor@apple.com> Semantic analysis for C++ reinterpret_cast and const_cast. Patch by Sebastian Redl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58094 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
dd9fe5eec432618dc0db25309a1b74a2c75b83e3 24-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> The Decl of an array region can be VarDecl or FieldDecl. Handle this in RegionStoreManager::ArrayToPointer().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58086 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
bfb6582ef46dfb33672d9621f879fc262339d704 24-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> The Decl of an array region can be VarDecl or FieldDecl. Handle this in RegionStoreManager::ArrayToPointer().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58086 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
74a4e3a8060482f5f5951660da58d98af8b3f945 24-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add printing method to ElementRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58077 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
b21ff77c8126ea628b66d2ffb931fdaa7884f5d2 24-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add printing method to ElementRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58077 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
c44f5565fa03e2a99754017a24bcfc4fe98051d5 24-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add printing with llvm::raw_ostream methods to SVals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58073 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
9012bff2ce5afc85936315662d675f2bcede1ca2 24-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add printing with llvm::raw_ostream methods to SVals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58073 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SVals.h
bb461503b115af248f3b13735d6936e0a436fdf0 24-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> First non-embarrassing cut at checking for ambiguous derived-to-base
conversions.

Added PerformImplicitConversion, which follows an implicit conversion sequence
computed by TryCopyInitialization and actually performs the implicit
conversions, including the extra check for ambiguity mentioned above.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
94b1dd2368dc9eeedf2794db654deae225fac763 24-Oct-2008 Douglas Gregor <dgregor@apple.com> First non-embarrassing cut at checking for ambiguous derived-to-base
conversions.

Added PerformImplicitConversion, which follows an implicit conversion sequence
computed by TryCopyInitialization and actually performs the implicit
conversions, including the extra check for ambiguity mentioned above.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58071 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c380399f4a91433fce822bb448e68e8aea0b153e 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Make the analyzer store (memory model) a command line option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58056 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/Store.h
95c7b00fe857a61a19185483aa0d85492ec9e258 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Make the analyzer store (memory model) a command line option.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58056 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/Store.h
6eb489ef92bad10bc25072c489d03d0dc0879ccd 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Added iterators for types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e22d911dcff7a9c18b583817b7319c07600fd3ee 24-Oct-2008 Ted Kremenek <kremenek@apple.com> Added iterators for types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4fd8590cbf5384f935b3e1bae8dfe1f97715dae9 23-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Clean up and document the representation of C++ base classes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
57c856b96e6bbfc64c2d61b950b116b523dc3e46 23-Oct-2008 Douglas Gregor <dgregor@apple.com> Clean up and document the representation of C++ base classes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
aa7a06602a22e54cdc56201d11de398dfbc46ac8 23-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add -O[0-3s] support (following llvm-gcc).
- Passes match llvm-gcc but many of the switches aren't wired.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58034 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
70f92436f5828c11ef108463da4473d44e114c28 23-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add -O[0-3s] support (following llvm-gcc).
- Passes match llvm-gcc but many of the switches aren't wired.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58034 91177308-0d34-0410-b5e6-96231b3b80d8
river/CompileOptions.h
a9e8e08c02489ead52b51bb8a50d2eb374ebc161 23-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Let StoreManager do different cast on arrays. BasicStore will just keep it intact.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58028 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
e1911afd2a79cb508bc81b30be49a0c8648a81b0 23-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Let StoreManager do different cast on arrays. BasicStore will just keep it intact.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58028 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
b4efe82c037117b00b4fd9ae8df99fcc136e7dc4 23-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Added a method to ElementRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58020 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
6e78e1b22f3b16bb2ef76950b9b75f060bdba7bf 23-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Added a method to ElementRegion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58020 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
0590402476a996b3c2081fd197b0e2055e387c23 22-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Added GraphViz visualization of C++ inheritance hierarchies.

Factored the QualTypeOrdering predicate into its own header
(TypeOrdering.h), now that it is used in two places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeOrdering.h
0218936235b137bbdcd29a6c36d61d9215bb4edd 22-Oct-2008 Douglas Gregor <dgregor@apple.com> Added GraphViz visualization of C++ inheritance hierarchies.

Factored the QualTypeOrdering predicate into its own header
(TypeOrdering.h), now that it is used in two places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ST/TypeOrdering.h
abed217d6877aebfd733754adab35d83996b2135 22-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Add representation of base classes in the AST, and verify that we
don't have duplicated direct base classes.

Seriliazation of base class specifiers is not yet implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
f8268ae3196002bbab6adb830302e79b0f368f13 22-Oct-2008 Douglas Gregor <dgregor@apple.com> Add representation of base classes in the AST, and verify that we
don't have duplicated direct base classes.

Seriliazation of base class specifiers is not yet implemented.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
4459bbe1ad110c100d74af8c74fdc82d87317dfe 22-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> QualType::isMoreQualifiedThan and isAtLeastAsQualifiedAs assert that we
aren't trying to compare with address-space qualifiers (for now).

Clean up handing of DeclRefExprs in Expr::isLvalue and refactor part
of the check into a static DeclCanBeLvalue.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ba7e210a999275695f58be03ef402758cfec3635 22-Oct-2008 Douglas Gregor <dgregor@apple.com> QualType::isMoreQualifiedThan and isAtLeastAsQualifiedAs assert that we
aren't trying to compare with address-space qualifiers (for now).

Clean up handing of DeclRefExprs in Expr::isLvalue and refactor part
of the check into a static DeclCanBeLvalue.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57980 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
60dabc6eda88a6b6c2c2017632d81656e1ada27b 22-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Adjust parameter order to more natural one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57964 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
c92e5feb73a99e0e44d00c3ce0275d32bc56d7c6 22-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Adjust parameter order to more natural one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57964 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
3fb675ab045253ffe2f1b333e9f8e746b50abeb4 22-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Move Sema::GetNonReferenceType to QualType::getNonReferenceType and make it inline

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e0a5d5fe8eab573f7764bf6d2ddb02bee8dceaf9 22-Oct-2008 Douglas Gregor <dgregor@apple.com> Move Sema::GetNonReferenceType to QualType::getNonReferenceType and make it inline

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e5db4f7d7b6dc33259ee0248d73dd3794cd0a841 22-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Fix a thinko in the qualification-conversion check when the qualificaitons are disjoint, and add some overloading-based tests of qualification conversions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9b6e2d209cc2931a9bb2ae51e744a8698b54db73 22-Oct-2008 Douglas Gregor <dgregor@apple.com> Fix a thinko in the qualification-conversion check when the qualificaitons are disjoint, and add some overloading-based tests of qualification conversions

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6573cfd6fc32eab0b696cfc318bb21f4e3933f35 22-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Initial step toward supporting qualification conversions (C++ 4.4).

Changes:
- Sema::IsQualificationConversion determines whether we have a qualification
conversion.
- Sema::CheckSingleAssignment constraints now follows the C++ rules in C++,
performing an implicit conversion from the right-hand side to the type of
the left-hand side rather than checking based on the C notion of
"compatibility". We now rely on the implicit-conversion code to
determine whether the conversion can happen or
not. Sema::TryCopyInitialization has an ugly reference-related
hack to cope with the initialization of references, for now.
- When building DeclRefExprs, strip away the reference type, since
there are no expressions whose type is a reference. We'll need to
do this throughout Sema.
- Expr::isLvalue now permits functions to be lvalues in C++ (but not
in C).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57935 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
98cd599ee8a9b259ed7388ee2921a20d97658864 22-Oct-2008 Douglas Gregor <dgregor@apple.com> Initial step toward supporting qualification conversions (C++ 4.4).

Changes:
- Sema::IsQualificationConversion determines whether we have a qualification
conversion.
- Sema::CheckSingleAssignment constraints now follows the C++ rules in C++,
performing an implicit conversion from the right-hand side to the type of
the left-hand side rather than checking based on the C notion of
"compatibility". We now rely on the implicit-conversion code to
determine whether the conversion can happen or
not. Sema::TryCopyInitialization has an ugly reference-related
hack to cope with the initialization of references, for now.
- When building DeclRefExprs, strip away the reference type, since
there are no expressions whose type is a reference. We'll need to
do this throughout Sema.
- Expr::isLvalue now permits functions to be lvalues in C++ (but not
in C).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57935 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
984c240798d5b6df02aedb4524c27670752f3264 21-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add GetModule accessor to ModuleBuilder


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57924 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
d8c0ea1a80f27045c5371f6f97eadb38e8ca4279 21-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add GetModule accessor to ModuleBuilder


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57924 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
d2baafd07bc5c7679a6f1f10e5587a95842ffa15 21-Oct-2008 Douglas Gregor <doug.gregor@gmail.com> Preliminary support for function overloading

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclCXX.h
ST/Expr.h
ST/Type.h
nalysis/Support/ExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
asic/DiagnosticKinds.def
8e9bebdea69c590dedfbf27374114cb76fe12fbd 21-Oct-2008 Douglas Gregor <dgregor@apple.com> Preliminary support for function overloading

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57909 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/DeclCXX.h
ST/Expr.h
ST/Type.h
nalysis/Support/ExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
asic/DiagnosticKinds.def
7324932125477fe52f069ebaf3f05af23920053b 21-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Modify Store interface: GetSVal/SetSVal => Retrieve/Bind.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57896 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
8485ec6a1d7d7f25ea680ea3740bc1a11d2bb7cd 21-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Modify Store interface: GetSVal/SetSVal => Retrieve/Bind.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57896 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
abdafb71b8aae7d33245d8215197bbba2d6c9890 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Add partial specialization of ImmutableList for GRStatePartialTrait.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57895 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
65e5e4054bdce29917995cb31934e96af62263b9 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Add partial specialization of ImmutableList for GRStatePartialTrait.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57895 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
aa0815711092e749a8bdb71d7254e8f33c6967d0 21-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Rename:
RValues.h/cpp => SVals.h/cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57893 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
22ab7a4d900ed53285fd0b6720e7b43af84724d8 21-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Rename:
RValues.h/cpp => SVals.h/cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57893 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SVals.h
nalysis/PathSensitive/Store.h
5496973f51e70aab76cb099265e572484f577ff4 21-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add ElementRegion to represent memory chunks for array elements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57891 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
511191ce8920160525611be2be754c32a0724c3e 21-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Add ElementRegion to represent memory chunks for array elements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57891 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
431f35b392daee77b8f0a6537f6093523d850cc2 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Add fileid_iterator to SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57878 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8673ae73569d3417854527cebfe95b4c3e37d311 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Add fileid_iterator to SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57878 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2a884fa22911f2aaa6630f18ed2202cbd16f2206 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Added method to access the raw flags of Token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57877 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
ef3b215c946d4813408b5fe872fe2baa3b246b00 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Added method to access the raw flags of Token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57877 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
200e4e757f27a8d4b84689f2fcb564af43c0509b 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Change signature for CheckDivideZero.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
dda0468b5aad99a59bd251a1b15c5cfd0243c041 21-Oct-2008 Ted Kremenek <kremenek@apple.com> Change signature for CheckDivideZero.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f54dbeaeb4ab704d2bfaaed979d8f3d82f4f6400 20-Oct-2008 Chris Lattner <sabre@nondot.org> eliminate ObjCPropertyAttrs an corresponding enums, just use
strcmp when needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57817 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5fd80fada1eeecd279af8333a7f58b86d8df8016 20-Oct-2008 Chris Lattner <sabre@nondot.org> eliminate ObjCPropertyAttrs an corresponding enums, just use
strcmp when needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57817 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
727fb1fb678c22b036fc7c42794e90203ff23c44 20-Oct-2008 Chris Lattner <sabre@nondot.org> reject properties completely in objc1 instead of emitting
weird errors about property attributes being unknown.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57812 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f6ed85533583dae18a44ddc4be6cfc4d68749e36 20-Oct-2008 Chris Lattner <sabre@nondot.org> reject properties completely in objc1 instead of emitting
weird errors about property attributes being unknown.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57812 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1e5cc7256b66ac6b20cb86772cffc0b433b50af9 20-Oct-2008 Chris Lattner <sabre@nondot.org> More property attribute recovery improvements. Instead of this:

crash.m:8:12: error: type name requires a specifier or qualifier
@property (readonlyx, getter=isAwesome) int _awesome;
^
crash.m:8:29: error: expected ';' at end of declaration list
@property (readonlyx, getter=isAwesome) int _awesome;
^
crash.m:8:39: error: expected identifier or '('
@property (readonlyx, getter=isAwesome) int _awesome;
^

we now get:

crash.m:8:12: error: unknown property attribute 'readonlyx'
@property (readonlyx, getter=isAwesome) int _awesome;
^

Also, we can eliminate isObjCPropertyAttribute now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57811 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
cd9f4b31c4fe5b77b5519cc17b4583fab912bad1 20-Oct-2008 Chris Lattner <sabre@nondot.org> More property attribute recovery improvements. Instead of this:

crash.m:8:12: error: type name requires a specifier or qualifier
@property (readonlyx, getter=isAwesome) int _awesome;
^
crash.m:8:29: error: expected ';' at end of declaration list
@property (readonlyx, getter=isAwesome) int _awesome;
^
crash.m:8:39: error: expected identifier or '('
@property (readonlyx, getter=isAwesome) int _awesome;
^

we now get:

crash.m:8:12: error: unknown property attribute 'readonlyx'
@property (readonlyx, getter=isAwesome) int _awesome;
^

Also, we can eliminate isObjCPropertyAttribute now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57811 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
bf16a9703e59db12a7fdd48e9499c21ca8fb93c2 20-Oct-2008 Chris Lattner <sabre@nondot.org> fix a crash on unnamed properties like:
@property (readonly) int : 4;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
da3253d8a97981257185c89ced71ce137278b121 20-Oct-2008 Chris Lattner <sabre@nondot.org> fix a crash on unnamed properties like:
@property (readonly) int : 4;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57805 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a40577ebc04df66cbd7a7da3c24ab532f076109b 20-Oct-2008 Chris Lattner <sabre@nondot.org> refactor a bunch of code:
Check for @end in ParseObjCInterfaceDeclList instead of in each caller
Handle @required and @optional with the same code

Add some fixmes about some apparently objc2 code that is being accepted
in objc1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57803 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bc662afa1cb9b61cb1e7808bb1463dd6291b8095 20-Oct-2008 Chris Lattner <sabre@nondot.org> refactor a bunch of code:
Check for @end in ParseObjCInterfaceDeclList instead of in each caller
Handle @required and @optional with the same code

Add some fixmes about some apparently objc2 code that is being accepted
in objc1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57803 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
926cf54ff4c3b7b0d0567a533d219ccf70b6967a 20-Oct-2008 Chris Lattner <sabre@nondot.org> Support attributes in *yet another* place. Is there any place you
can't stick an attributes?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57795 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
aab740af64daaa8d94d34789a6ea7e2d2fc5ab39 20-Oct-2008 Chris Lattner <sabre@nondot.org> Support attributes in *yet another* place. Is there any place you
can't stick an attributes?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57795 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
1f18529f0932ff19154dabaf3ae2c7ad2d8f25a8 20-Oct-2008 Chris Lattner <sabre@nondot.org> Fix a parser bug where we let attributes interfere with our disambiguation
of whether a '(' was a grouping paren or the start of a function declarator.
This is PR2796.

Now we eat the attribute before deciding whether the paren is grouping or
not, then apply it to the resultant decl or to the first argument as needed.

One somewhat surprising aspect of this is that attributes interact with
implicit int in cases like this:

void a(x, y) // k&r style function
void b(__attribute__(()) x, y); // function with two implicit int arguments
void c(x, __attribute__(()) y); // error, can't have attr in identifier list.

Fun stuff.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
7399ee0aa6ffaeab0a8f83408b1c5127fb2bf5b8 20-Oct-2008 Chris Lattner <sabre@nondot.org> Fix a parser bug where we let attributes interfere with our disambiguation
of whether a '(' was a grouping paren or the start of a function declarator.
This is PR2796.

Now we eat the attribute before deciding whether the paren is grouping or
not, then apply it to the resultant decl or to the first argument as needed.

One somewhat surprising aspect of this is that attributes interact with
implicit int in cases like this:

void a(x, y) // k&r style function
void b(__attribute__(()) x, y); // function with two implicit int arguments
void c(x, __attribute__(()) y); // error, can't have attr in identifier list.

Fun stuff.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57790 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
3cbc064cf343c2151488b7822430ed327ade176e 19-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Change a couple of cast<> to reinterpret_cast<>.
The casts<> require that "Decl.h" is included before "Type.h", use reinterpret_cast<> to remove that kind of dependency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
509447e7cb9c24a9f2bd149fe95030050b088622 19-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change a couple of cast<> to reinterpret_cast<>.
The casts<> require that "Decl.h" is included before "Type.h", use reinterpret_cast<> to remove that kind of dependency.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57781 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
651c8992e44a15660eb488bbc00286da7751b9c2 18-Oct-2008 Mon P Wang <wangmp@apple.com> Make llvm memory barrier available as an intrinsic


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
7ae48ee2fb80b0a3ac6ad912b465a077c7591a19 18-Oct-2008 Mon P Wang <wangmp@apple.com> Make llvm memory barrier available as an intrinsic


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57751 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
d7b7f0353b359a3cb156ec4202a23064d012ded7 18-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Just do a diagIfAmbiguous -> warnIfAmbiguous rename.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57746 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e75d849d9141d8e47d05a91b7b5c04194854e47a 18-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Just do a diagIfAmbiguous -> warnIfAmbiguous rename.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57746 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
dea0c6b9ca760a24b78f676b9bf2ec91cc287656 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Add pretty-printing support for FieldRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57724 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
4bd1eefd48c70ebef185e524d0484c00f16000cf 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Add pretty-printing support for FieldRegions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57724 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1dea8edc26436e3db1a477f3edf277b14bd76ceb 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Fixed an elusive caching bug in ExplodedGraph construction when a PostStmtKind was used instead of a PostStoreKind.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57719 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
bf4e419d996bf42e4933cada610d973a0fcc40eb 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Fixed an elusive caching bug in ExplodedGraph construction when a PostStmtKind was used instead of a PostStoreKind.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57719 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
38a4b4b9e0a21a3a37bf698dba6536eaeba2b6a7 17-Oct-2008 Ted Kremenek <kremenek@apple.com> - constify some uses of MemRegion* (MemRegion should be immutable).
- Added new region "SymbolicRegion", which maps symbol values to the region domain.
- Enhanced BasicStore::getFieldLValue() to return a FieldRegion (using SymbolicRegion)
- Added some utility methods to GRState for fetch svals from the store.
- Fixed regression in CheckNSError (we weren't getting the value bound to the parameter)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57717 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
993f1c72913417be7c534ec7a634363cdfc84fa5 17-Oct-2008 Ted Kremenek <kremenek@apple.com> - constify some uses of MemRegion* (MemRegion should be immutable).
- Added new region "SymbolicRegion", which maps symbol values to the region domain.
- Enhanced BasicStore::getFieldLValue() to return a FieldRegion (using SymbolicRegion)
- Added some utility methods to GRState for fetch svals from the store.
- Fixed regression in CheckNSError (we weren't getting the value bound to the parameter)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57717 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
c9197cd41f5bf5a11f9346a8d7118d4267941e98 17-Oct-2008 Daniel Dunbar <daniel@zuster.org> Remove unneeded EncodingRecordTypes argument to getObjCEncodingForType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0d504c1da852e58ff802545c823ecff3b6c654b8 17-Oct-2008 Daniel Dunbar <daniel@zuster.org> Remove unneeded EncodingRecordTypes argument to getObjCEncodingForType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57716 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
aa01a1079f4b240de74ede930c98200c356bce27 17-Oct-2008 Mon P Wang <wangmp@apple.com> Fixed vec_set_v2di signature


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
6d5e211fc5b324cc8847f4d791db2c773ef4791a 17-Oct-2008 Mon P Wang <wangmp@apple.com> Fixed vec_set_v2di signature


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
aa913104830f5f2d384ca13dedcc81d76fd195d1 17-Oct-2008 Daniel Dunbar <daniel@zuster.org> More Obj-C type encoding improvements.
- Encode unions and bit-fields correctly.
- Accept option to name record fields (used for NeXT runtime).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d96b35bc6becf8db00d140c11e3d0e53f27567a1 17-Oct-2008 Daniel Dunbar <daniel@zuster.org> More Obj-C type encoding improvements.
- Encode unions and bit-fields correctly.
- Accept option to name record fields (used for NeXT runtime).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f8cfe56176a753fa2dc68a3c996fa3e70f87f89b 17-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix bug in Obj-C type encoding for structures.
- Mechanism for detecting if a structure should be expanded wasn't
reliable. Simplified by just keeping track of what we should be
expanding.

- This fixes a bug in using NSInvocation to invoke a method which
returned a structure, which in used by Key Value Observing, which
in the end, caused a miscompile in poor little Sketch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57675 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
82a6cfbc421cc99c5b7313271f399f7ef95056ec 17-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix bug in Obj-C type encoding for structures.
- Mechanism for detecting if a structure should be expanded wasn't
reliable. Simplified by just keeping track of what we should be
expanding.

- This fixes a bug in using NSInvocation to invoke a method which
returned a structure, which in used by Key Value Observing, which
in the end, caused a miscompile in poor little Sketch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57675 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
097fc9825853bc6113df535d6117ccf9d7463e79 17-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> This patch did the following renaming. There should be no functional changes.
RVal => SVal
LVal => Loc
NonLVal => NonLoc
lval => loc
nonlval => nonloc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57671 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
1c96b24285d05c0eac455ae96d7c9ff43d42bc96 17-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> This patch did the following renaming. There should be no functional changes.
RVal => SVal
LVal => Loc
NonLVal => NonLoc
lval => loc
nonlval => nonloc


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57671 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/SymbolManager.h
6eaf0e3444836f2dfa9a2f014ae6a97dd620a469 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Remove lval::FieldOffset, lval::ArrayOffset. These will be replaced with regions.
Remove GRExprEngine::getLVal and RValues::MakeVal.
Enhance StoreManager "GetLValue" methods to dispatch for specific kinds of lvalue queries, as opposed to interogating the expression tree (GRExprEngine already does this).

Added FIXMEs. In particular, we no longer "assume" that a base pointer in a field/array access is null (this logic was removed). Perhaps we should do this when fetching the lvalue for fields and array elements?



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57657 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
d9bc33efa195114d6f2a365c26e5b8dba4e1cc38 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Remove lval::FieldOffset, lval::ArrayOffset. These will be replaced with regions.
Remove GRExprEngine::getLVal and RValues::MakeVal.
Enhance StoreManager "GetLValue" methods to dispatch for specific kinds of lvalue queries, as opposed to interogating the expression tree (GRExprEngine already does this).

Added FIXMEs. In particular, we no longer "assume" that a base pointer in a field/array access is null (this logic was removed). Perhaps we should do this when fetching the lvalue for fields and array elements?



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57657 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
e7b0b27754187a45918beb43d002169a8970774f 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Add transfer function support for ObjCIvarRefExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57654 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
97ed4f68f5dba3e21e7a490ef0f9ffd3bfead7f8 17-Oct-2008 Ted Kremenek <kremenek@apple.com> Add transfer function support for ObjCIvarRefExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57654 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
4efeddefd705b406174cb2d0b24ef3acbef604a1 16-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add --disable-free flag to clang.
- Disables the freeing of the ASTContext and the TranslationUnit
after parsing & sema.
- Primarily for timing the impact on -fsyntax-only timings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57643 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
d3db40151868df39b14d2ef8ffacf19e8c36331f 16-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add --disable-free flag to clang.
- Disables the freeing of the ASTContext and the TranslationUnit
after parsing & sema.
- Primarily for timing the impact on -fsyntax-only timings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57643 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
44e00b01c9185deeb05c479c186c824d714efd08 16-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> This is the first step to build a better evaluation model for GRExprEngine. A
new VisitLValue method is added to replace the old VisitLVal. The semantics
model becomes more explicit to separate rvalue evaluation from lvalue
evaluation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57627 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
6d69b5d82281992e981caa9bc038e3f6cac6594a 16-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> This is the first step to build a better evaluation model for GRExprEngine. A
new VisitLValue method is added to replace the old VisitLVal. The semantics
model becomes more explicit to separate rvalue evaluation from lvalue
evaluation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57627 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
2cb762f6d2cfb32f10a6f58261071287b8ee2145 16-Oct-2008 Daniel Dunbar <daniel@zuster.org> Implement #pragma pack use in structure packing. The general approach
is to encode the state of the #pragma pack stack as an attribute when
the structure is declared.

- Extend PackedAttr to take an alignment (in bits), and reuse for
both __attribute__((packed)) (which takes no argument, instead
packing tightly (to "minimize the memory required") and for #pragma
pack (which allows specification of the maximum alignment in
bytes). __attribute__((packed)) is just encoded as Alignment=1.

This conflates two related but different mechanisms, but it didn't
seem worth another attribute.

- I have attempted to follow the MSVC semantics as opposed to the gcc
ones, since if I understand correctly #pragma pack originated with
MSVC. The semantics are generally equivalent except when the stack
is altered during the definition of a structure; its not clear if
anyone does this in practice. See testcase if curious.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/RecordLayout.h
3b0db908ebd07eaa26bc90deba5e826de00fe515 16-Oct-2008 Daniel Dunbar <daniel@zuster.org> Implement #pragma pack use in structure packing. The general approach
is to encode the state of the #pragma pack stack as an attribute when
the structure is declared.

- Extend PackedAttr to take an alignment (in bits), and reuse for
both __attribute__((packed)) (which takes no argument, instead
packing tightly (to "minimize the memory required") and for #pragma
pack (which allows specification of the maximum alignment in
bytes). __attribute__((packed)) is just encoded as Alignment=1.

This conflates two related but different mechanisms, but it didn't
seem worth another attribute.

- I have attempted to follow the MSVC semantics as opposed to the gcc
ones, since if I understand correctly #pragma pack originated with
MSVC. The semantics are generally equivalent except when the stack
is altered during the definition of a structure; its not clear if
anyone does this in practice. See testcase if curious.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/RecordLayout.h
e7ae0cbc3d28a4a8811be64446fd86fbc8167fb3 16-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Issue a warning when there's an ambiguous function declarator (that could be a direct initializer for a variable defition).
Idea originated from here: http://thread.gmane.org/gmane.comp.gcc.devel/101524

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
259b0d91f2ff90d8daf39221fe133bf1596c5ffb 16-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Issue a warning when there's an ambiguous function declarator (that could be a direct initializer for a variable defition).
Idea originated from here: http://thread.gmane.org/gmane.comp.gcc.devel/101524

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
90aac829afd73afcf4c4b5f856c30d354c3a6ee0 15-Oct-2008 Daniel Dunbar <daniel@zuster.org> Use BatchEmitOwnedPtrs for writing multiple child exprs, per review.

Also added serialization support to OverloadExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
20c77e995d5f1bad8fc59fe9e1883a563d94f535 15-Oct-2008 Daniel Dunbar <daniel@zuster.org> Use BatchEmitOwnedPtrs for writing multiple child exprs, per review.

Also added serialization support to OverloadExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9e43be159355338a5eba1d251a961af58ed77da1 15-Oct-2008 Mon P Wang <wangmp@apple.com> Added pinsrd, pinsrq, and some other vector intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
bc4f4030e245e36642f894d848f6a8bf94426cc2 15-Oct-2008 Mon P Wang <wangmp@apple.com> Added pinsrd, pinsrq, and some other vector intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
2538a8c428063cdaa8780040de96b93a68690528 15-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Simplify handling of struct/union/class tags.
Instead of using two sets of Decl kinds (Struct/Union/Class and CXXStruct/CXXUnion/CXXClass), use one 'Record' and one 'CXXRecord' Decl kind and make tag kind a property of TagDecl.
Cleans up the code a bit and better reflects that Decl class structure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
35bc0821c4f80041724cd4c5c4889b2581546a41 15-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Simplify handling of struct/union/class tags.
Instead of using two sets of Decl kinds (Struct/Union/Class and CXXStruct/CXXUnion/CXXClass), use one 'Record' and one 'CXXRecord' Decl kind and make tag kind a property of TagDecl.
Cleans up the code a bit and better reflects that Decl class structure.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
1960843aeea8f4f1ef624c613a8424898dc66af9 15-Oct-2008 Steve Naroff <snaroff@apple.com> Downgrade incompatibilities with objc qualified types (e.g. id <P>) to warnings.
Note: One day, we should consider moving the actual diags to ObjCQualifiedIdTypesAreCompatible(), since it has more information on the actual problem. GCC currently emits slightly more instructive errors for some cases involving protocols. I added a FIXME to the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
395790772565002c0ac03f2c8de9b0a6c7adcaf3 15-Oct-2008 Steve Naroff <snaroff@apple.com> Downgrade incompatibilities with objc qualified types (e.g. id <P>) to warnings.
Note: One day, we should consider moving the actual diags to ObjCQualifiedIdTypesAreCompatible(), since it has more information on the actual problem. GCC currently emits slightly more instructive errors for some cases involving protocols. I added a FIXME to the code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57529 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2f62d14fdc31805cc0036331d8ce6c4892ecd5db 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix const qualifiers on ProtocolQualifierListTy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57520 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
d7e6221878cb42c1a95a281f5084fcd097b0526e 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix const qualifiers on ProtocolQualifierListTy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57520 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
aad6364ca32ed23d8577789141c08198b43f8c94 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add serialization support in several missing places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57502 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
d17c24ff8597fe0dee4210639d225bc4f7c5ac04 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add serialization support in several missing places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57502 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
9c7fd1e1ad0ec0c483560c9a9daeda23c3772055 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Move Type::EmitImpl into header, add FIXME to make abstract.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
708ef456a182030de3cf20ad98e653d2741ecb13 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Move Type::EmitImpl into header, add FIXME to make abstract.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
81c7d47fa10554e60d4061e22523ae1d7b2cc5ec 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Sema implementation of #pragma pack stack.
- Follows the MSVC (original) implementation, including support of
pack(show) (useful for testing).
- Implements support for named pack records which gcc seems to
ignore (or implements incorrectly).
- Not currently wired to anything, only functionality change is the
type checking of the pragma.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4cde927072a70f3156d72c6431e7a5d95bf62366 14-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Sema implementation of #pragma pack stack.
- Follows the MSVC (original) implementation, including support of
pack(show) (useful for testing).
- Implements support for named pack records which gcc seems to
ignore (or implements incorrectly).
- Not currently wired to anything, only functionality change is the
type checking of the pragma.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57476 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
32af58ce89a59dfc9520412338b84b5be78d2246 12-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> More const-ness goodness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57420 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
e2ed203b437c14de57a80d69b70164819d045d86 12-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> More const-ness goodness.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57420 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
6bbe3d73033db1f0969e6ccfcd83af6c8cd9ccd1 12-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Improve the const-ness of a few methods.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
d2595ecce5f8350e485c83bfe767549a522b2802 12-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Improve the const-ness of a few methods.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
4b662ea886a86f0d8d7725fa3478918e74d42513 12-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement more efficient Decl <-> DeclContext conversions.
When the static type on the Decl side is a subclass of DeclContext the compiler will use a "inlinable" static_cast, instead of always using an out-of-line function call.

Note, though, that the isa<> check still uses an out-of-line function call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57415 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
42220c5432c141d47cc8ce786e472b49dc907378 12-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement more efficient Decl <-> DeclContext conversions.
When the static type on the Decl side is a subclass of DeclContext the compiler will use a "inlinable" static_cast, instead of always using an out-of-line function call.

Note, though, that the isa<> check still uses an out-of-line function call.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57415 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
ST/DeclObjC.h
33733f5e87da646924b91cff009ce064bd9b2e71 12-Oct-2008 Chris Lattner <sabre@nondot.org> make the -rewrite-test a bit more interesting: it now
wraps comments in <i> tags. Extend rewrite tokens to support
this minimal functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57409 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/TokenRewriter.h
99bd46c018ece10d6541a4b6bf0dbe97ad162477 12-Oct-2008 Chris Lattner <sabre@nondot.org> make the -rewrite-test a bit more interesting: it now
wraps comments in <i> tags. Extend rewrite tokens to support
this minimal functionality.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57409 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/TokenRewriter.h
a2812b55e577fc68410c1b7cc0bea25892b9ae9e 12-Oct-2008 Chris Lattner <sabre@nondot.org> start implementing a token rewriter. At this point, it just reads in a file
and lets a client iterate over it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ewrite/TokenRewriter.h
cff9cc95de367a3aea885a7f8fee304fe2707b92 12-Oct-2008 Chris Lattner <sabre@nondot.org> start implementing a token rewriter. At this point, it just reads in a file
and lets a client iterate over it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57407 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ewrite/TokenRewriter.h
0344cc70b8cc765e29298b28d8a5ff12fe513c4a 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change FormTokenWithChars to take the token kind to form, since all clients
were setting a kind and then forming it. This is just a minor API cleanup,
no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57404 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9e6293d4dfd688429f77ee3b6edba9dfd7ada3a2 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change FormTokenWithChars to take the token kind to form, since all clients
were setting a kind and then forming it. This is just a minor API cleanup,
no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57404 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
867a87b6ee2bab7cd3fbb015c87e84a12cb10b09 12-Oct-2008 Chris Lattner <sabre@nondot.org> Add a new mode to the lexer which enables it to return all characters,
even whitespace, as tokens from the file. This is enabled with
L->SetKeepWhitespaceMode(true) on a raw lexer. In this mode, you too
can use clang as a really complex version of 'cat' with code like this:

Lexer RawLex(SourceLocation::getFileLoc(SM.getMainFileID(), 0),
PP.getLangOptions(), File.first, File.second);

RawLex.SetKeepWhitespaceMode(true);

Token RawTok;
RawLex.LexFromRawLexer(RawTok);
while (RawTok.isNot(tok::eof)) {
std::cout << PP.getSpelling(RawTok);
RawLex.LexFromRawLexer(RawTok);
}

This will emit exactly the input file, with no canonicalization or other
translation. Realistic clients actually do something with the tokens of
course :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57401 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
d88dc48e33d71732708960170e57a3d1bdc8f847 12-Oct-2008 Chris Lattner <sabre@nondot.org> Add a new mode to the lexer which enables it to return all characters,
even whitespace, as tokens from the file. This is enabled with
L->SetKeepWhitespaceMode(true) on a raw lexer. In this mode, you too
can use clang as a really complex version of 'cat' with code like this:

Lexer RawLex(SourceLocation::getFileLoc(SM.getMainFileID(), 0),
PP.getLangOptions(), File.first, File.second);

RawLex.SetKeepWhitespaceMode(true);

Token RawTok;
RawLex.LexFromRawLexer(RawTok);
while (RawTok.isNot(tok::eof)) {
std::cout << PP.getSpelling(RawTok);
RawLex.LexFromRawLexer(RawTok);
}

This will emit exactly the input file, with no canonicalization or other
translation. Realistic clients actually do something with the tokens of
course :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57401 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
170adb101610b8f5bbe7e5f917bdb65ba76b53f0 12-Oct-2008 Chris Lattner <sabre@nondot.org> add a new inKeepCommentMode() accessor to abstract the KeepCommentMode
ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57397 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
fa95a019da00b926d64ff83358ba73bbc6ae1e37 12-Oct-2008 Chris Lattner <sabre@nondot.org> add a new inKeepCommentMode() accessor to abstract the KeepCommentMode
ivar.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57397 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
e5eca95b64a91a6d418089a566179e80839a6ec0 12-Oct-2008 Chris Lattner <sabre@nondot.org> Simplify raw mode lexing by treating an unterminate /**/ comment the
same we we do an unterminated string or character literal. This makes
it so we can guarantee that the lexer never calls into the
preprocessor (which would be suicide for a raw lexer).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Lexer.h
0af574270d3be2b0e73a3379dfaa633746f8fc6f 12-Oct-2008 Chris Lattner <sabre@nondot.org> Simplify raw mode lexing by treating an unterminate /**/ comment the
same we we do an unterminated string or character literal. This makes
it so we can guarantee that the lexer never calls into the
preprocessor (which would be suicide for a raw lexer).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Lexer.h
0b5892ecb01b13c12d53058f305a58eced928939 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change how raw lexers are handled: instead of creating them and then
using LexRawToken, create one and use LexFromRawLexer. This avoids
twiddling the RawLexer flag around and simplifies some code (even
speeding raw lexing up a tiny bit).

This change also improves the token paster to use a Lexer on the stack
instead of new/deleting it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57393 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
590f0cc643274267d4d41125b62557e1d87886c3 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change how raw lexers are handled: instead of creating them and then
using LexRawToken, create one and use LexFromRawLexer. This avoids
twiddling the RawLexer flag around and simplifies some code (even
speeding raw lexing up a tiny bit).

This change also improves the token paster to use a Lexer on the stack
instead of new/deleting it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57393 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
5205938085c9bb3123b20745be5719d8d3be4b60 10-Oct-2008 Steve Naroff <snaroff@apple.com> Final phase of converting BlockDecls over to DeclContext. This is unfortunately a largish/complex diff, however it was necessry to pass all the current block tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57337 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
arse/Action.h
090276f5e164d491a1bb3f541bafdb394f5e6f04 10-Oct-2008 Steve Naroff <snaroff@apple.com> Final phase of converting BlockDecls over to DeclContext. This is unfortunately a largish/complex diff, however it was necessry to pass all the current block tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57337 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
arse/Action.h
95029d906b78b22b378693dbfca6c2b65af0b36f 08-Oct-2008 Steve Naroff <snaroff@apple.com> Instantiate the BlockDecl in ActOnBlockStart() so we can use it as a DeclContext.
This required changes to attach the compound statement later on (like we do for functions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1c90bfcbd7ff5d09694acf50a32dbb716a968b61 08-Oct-2008 Steve Naroff <snaroff@apple.com> Instantiate the BlockDecl in ActOnBlockStart() so we can use it as a DeclContext.
This required changes to attach the compound statement later on (like we do for functions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57304 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9ac456d597886216becc2efdd4efb494bf91af68 08-Oct-2008 Steve Naroff <snaroff@apple.com> - Add BlockDecl AST node.
- Modify BlockExpr to reference the BlockDecl.

This is "cleanup" necessary to improve our lookup semantics for blocks (to fix <rdar://problem/6272905> clang block rewriter: parameter to function not imported into block?).

Still some follow-up work to finish this (forthcoming).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
56ee6896f2efebffb4a2cce5a7610cdf1eddbbbe 08-Oct-2008 Steve Naroff <snaroff@apple.com> - Add BlockDecl AST node.
- Modify BlockExpr to reference the BlockDecl.

This is "cleanup" necessary to improve our lookup semantics for blocks (to fix <rdar://problem/6272905> clang block rewriter: parameter to function not imported into block?).

Still some follow-up work to finish this (forthcoming).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
79c57f85105b23b1c4513c0b8c4d256b4636a5af 08-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> This is the first step to implement a field-sensitive store model. Other things are simplified: no heap shape assumption, no parameter alias assumption, etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57285 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
178927517fa09ddbb04dc8ef725b5716c18aae21 08-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> This is the first step to implement a field-sensitive store model. Other things are simplified: no heap shape assumption, no parameter alias assumption, etc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57285 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/MemRegion.h
1bc18e6632185ea7b3436f020681b3c1aa33606f 08-Oct-2008 Ted Kremenek <kremenek@apple.com> Migrate DeclStmt over to using a DeclGroup instead of a pointer to a ScopedDecl*.
This also removes the ugly hack needed in CFG.cpp for subclassing DeclStmt to create a DeclStmt with one Decl*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8ffb159441e923322bef6b5dee1aaf24c738d75e 08-Oct-2008 Ted Kremenek <kremenek@apple.com> Migrate DeclStmt over to using a DeclGroup instead of a pointer to a ScopedDecl*.
This also removes the ugly hack needed in CFG.cpp for subclassing DeclStmt to create a DeclStmt with one Decl*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57275 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5f593aeed7820242df994a2b4b387337cdbddf97 08-Oct-2008 Ted Kremenek <kremenek@apple.com> Add const_iterator to DeclGroup.
Serialization for OwningDeclGroupRefs now works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
401adfad4af45b083ad067f3ebec5cf23a1e91cf 08-Oct-2008 Ted Kremenek <kremenek@apple.com> Add const_iterator to DeclGroup.
Serialization for OwningDeclGroupRefs now works.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57272 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
6e3524ffe974f4eaa990c3037e2d6539966d197b 08-Oct-2008 Ted Kremenek <kremenek@apple.com> Add StmtIterator support for DeclGroups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57271 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
3e6d1203b3346147cee51a8a6d374f1867f2cd23 08-Oct-2008 Ted Kremenek <kremenek@apple.com> Add StmtIterator support for DeclGroups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57271 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
2a59edd31d3372cfab948b7cd645f8350027f172 07-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Migrate MemRegionManager from StateManager to StoreManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57225 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
bc678fdf614d2b66a4358f14a0a072f31b559c5c 07-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Migrate MemRegionManager from StateManager to StoreManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57225 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
1742b05d988c47d35c612928a8ff1f6d9e0c4d73 07-Oct-2008 Ted Kremenek <kremenek@apple.com> Added prototype serialization code for DeclGroup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57222 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
c7b07c19daa861880ad4bbf257d0fb2c7961355f 07-Oct-2008 Ted Kremenek <kremenek@apple.com> Added prototype serialization code for DeclGroup.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57222 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
cf4e8f8873f3eab79a899c22442dd9587259bf2d 07-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Use getCustomDiagID() instead of specifying the diagnostic in the 'DiagnosticKinds.def' file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4021a84eb1634a1e18bb3c258274477e8fdcd861 07-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use getCustomDiagID() instead of specifying the diagnostic in the 'DiagnosticKinds.def' file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57220 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bca33bfeb5bda73ae1cce89e3080f61a926c3d57 07-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Simplify handling of direct initializers by letting Sema::AddInitializerToDecl handle conversions, instead of using Sema::ActOnCXXTypeConstructExpr.
Additional benefit is that diagnostics are the same for both direct-initialization and copy-initialization.

In the case of "int x( expression );":
-The Init expression of VarDecl 'x' will be the expression inside the parentheses.
-VarDecl::hasCXXDirectInitializer for VarDecl 'x' will return true to let clients distinguish from "int x = expression ;".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
ce8e2926d8922bff7dc2661ec9c043dd619dcc82 07-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Simplify handling of direct initializers by letting Sema::AddInitializerToDecl handle conversions, instead of using Sema::ActOnCXXTypeConstructExpr.
Additional benefit is that diagnostics are the same for both direct-initialization and copy-initialization.

In the case of "int x( expression );":
-The Init expression of VarDecl 'x' will be the expression inside the parentheses.
-VarDecl::hasCXXDirectInitializer for VarDecl 'x' will return true to let clients distinguish from "int x = expression ;".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
5c29a5a9408d216d1a7c7d59913f94445a5218e9 07-Oct-2008 Ted Kremenek <kremenek@apple.com> Remove DeclStmt::getDecl(). Now clients of DeclStmt must explicitly reason about a DeclStmt referring to a collection of Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
655137a6c19110620d82d5f03cdcaec3a48c059f 07-Oct-2008 Ted Kremenek <kremenek@apple.com> Remove DeclStmt::getDecl(). Now clients of DeclStmt must explicitly reason about a DeclStmt referring to a collection of Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57217 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
80aeb41ddcd4be150410a1cfd0027c2af38cfa6c 07-Oct-2008 Ted Kremenek <kremenek@apple.com> Modified DeclGroupRef to always load/store the internal pointer value as Decl*. This hopefully will obviate any concerns with violating strict type-aliasing issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
e285a9505c0be75d4b58e67aa32e82de55889235 07-Oct-2008 Ted Kremenek <kremenek@apple.com> Modified DeclGroupRef to always load/store the internal pointer value as Decl*. This hopefully will obviate any concerns with violating strict type-aliasing issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57213 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
62f23bbf2bced6d2869ed5d9f55236603dcee730 06-Oct-2008 Ted Kremenek <kremenek@apple.com> Add DeclStmt::hasSolitaryDecl() and DeclStmt::getSolitaryDecl()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57204 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
65aa3b9fda7b2114f708014e3d42176abc0e39ab 06-Oct-2008 Ted Kremenek <kremenek@apple.com> Add DeclStmt::hasSolitaryDecl() and DeclStmt::getSolitaryDecl()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57204 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6d8f2ef0b6ed5f3ba7d4babdbdd82ef65b5a727a 06-Oct-2008 Ted Kremenek <kremenek@apple.com> Use DeclStmt::decl_iterator instead of walking the ScopedDecl chain (which will soon be removed).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57187 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
4e27b8bb3f59e328e6f6c75104f86e354065438c 06-Oct-2008 Ted Kremenek <kremenek@apple.com> Use DeclStmt::decl_iterator instead of walking the ScopedDecl chain (which will soon be removed).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57187 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
6af830594002e5eb15afb5e82a5c1e66b81ed793 06-Oct-2008 Ted Kremenek <kremenek@apple.com> Add const_decl_iterator to DecStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57186 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8a0d2660b6890ed95d34f37d142c0c52ac490194 06-Oct-2008 Ted Kremenek <kremenek@apple.com> Add const_decl_iterator to DecStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57186 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9e55d46140b05ed4dc7230b86ccf504a9a71985e 06-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement support for C++ direct initializers in declarations, e.g. "int x(1);".

This is how this kind of initializers appear in the AST:
-The Init expression of the VarDecl is a functional type construction (of the VarDecl's type).
-The new VarDecl::hasCXXDirectInitializer() returns true.

e.g, for "int x(1);":
-VarDecl 'x' has Init with expression "int(1)" (CXXFunctionalCastExpr).
-hasCXXDirectInitializer() of VarDecl 'x' returns true.

A major benefit is that clients that don't particularly care about which exactly form was the initializer can handle both cases without special case code.
Note that codegening works now for "int x(1);" without any changes to CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/DeclSpec.h
73a0d889eda0f000a441319e39540509175b8e81 06-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement support for C++ direct initializers in declarations, e.g. "int x(1);".

This is how this kind of initializers appear in the AST:
-The Init expression of the VarDecl is a functional type construction (of the VarDecl's type).
-The new VarDecl::hasCXXDirectInitializer() returns true.

e.g, for "int x(1);":
-VarDecl 'x' has Init with expression "int(1)" (CXXFunctionalCastExpr).
-hasCXXDirectInitializer() of VarDecl 'x' returns true.

A major benefit is that clients that don't particularly care about which exactly form was the initializer can handle both cases without special case code.
Note that codegening works now for "int x(1);" without any changes to CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57178 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/DeclSpec.h
73bd38ec64c21212e122d754524ec6c227db2dfc 06-Oct-2008 Chris Lattner <sabre@nondot.org> Remove the 'C' / isConstantExpr flag on builtins. Code should never
depend on the value of this flag, it should depend on whether
tryEvaluate is able to *actually* fold a builtin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
6b47561af738b33c55c60776c3b095f049902308 06-Oct-2008 Chris Lattner <sabre@nondot.org> Remove the 'C' / isConstantExpr flag on builtins. Code should never
depend on the value of this flag, it should depend on whether
tryEvaluate is able to *actually* fold a builtin.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
2d9a3f6124b45c8b9c4094d06696293b64841a23 06-Oct-2008 Chris Lattner <sabre@nondot.org> Add a Expr::isEvaluatable method, eliminate isBuiltinConstantExpr
which is checking for something that can be inconsistent with
what we can constant fold.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57159 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
45b6b9d080ac56917337d73d8f1cd6374b27b05d 06-Oct-2008 Chris Lattner <sabre@nondot.org> Add a Expr::isEvaluatable method, eliminate isBuiltinConstantExpr
which is checking for something that can be inconsistent with
what we can constant fold.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57159 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1eee9404f80332537cd2766c31cd05e024128717 06-Oct-2008 Chris Lattner <sabre@nondot.org> Move folding of __builtin_classify_type out of the CallExpr
interface into the constant folding interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a4d55d89c8076b402bb168e3edeef0c2cd2a78c3 06-Oct-2008 Chris Lattner <sabre@nondot.org> Move folding of __builtin_classify_type out of the CallExpr
interface into the constant folding interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
94d4541bf0d259072c14c6eba88e4da533624293 06-Oct-2008 Chris Lattner <sabre@nondot.org> "Enhance" CheckArithmeticConstantExpression to accept ?: with a constant
condition as a constant even if the unevaluated side is a not a constant.
We don't do this when extensions are off, and we emit a warning when this
happens:

t.c:22:11: warning: expression is not a constant, but is accepted as one by GNU extensions
short t = __builtin_constant_p(5353) ? 42 : somefunc();
^ ~~~~~~~~~~

suggestions for improvement are welcome. This is obviously horrible, but
is required for real-world code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
46cfefa8a4e486ee6a9b8960f232237bf7a4b1f9 06-Oct-2008 Chris Lattner <sabre@nondot.org> "Enhance" CheckArithmeticConstantExpression to accept ?: with a constant
condition as a constant even if the unevaluated side is a not a constant.
We don't do this when extensions are off, and we emit a warning when this
happens:

t.c:22:11: warning: expression is not a constant, but is accepted as one by GNU extensions
short t = __builtin_constant_p(5353) ? 42 : somefunc();
^ ~~~~~~~~~~

suggestions for improvement are welcome. This is obviously horrible, but
is required for real-world code.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57153 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8729378a310a44366c655b171aaa41dc54efd487 06-Oct-2008 Chris Lattner <sabre@nondot.org> Add a comment that describes tryEvaluate. Make tryEvaluate fold
__builtin_constant_p properly, and add some scaffolding for
FloatExprEvaluator to eventually handle huge_val and inf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
019f4e858e78587f2241ff1a76c747d7bcd7578c 06-Oct-2008 Chris Lattner <sabre@nondot.org> Add a comment that describes tryEvaluate. Make tryEvaluate fold
__builtin_constant_p properly, and add some scaffolding for
FloatExprEvaluator to eventually handle huge_val and inf.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c24915f9b245ce31cce2265dc12b43a59667e730 06-Oct-2008 Chris Lattner <sabre@nondot.org> add a new CallExpr::isBuiltinCall() method, and use it to simplify some existing
code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cb888967400a03504c88acedd5248d6778a82f46 06-Oct-2008 Chris Lattner <sabre@nondot.org> add a new CallExpr::isBuiltinCall() method, and use it to simplify some existing
code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dd6791c806f39b878486285c7725ba09844bf8ed 06-Oct-2008 Anders Carlsson <andersca@mac.com> Implement support for the const and pure attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
232eb7d33b96ad8f99de3b5ae840421b3a7c6cb7 06-Oct-2008 Anders Carlsson <andersca@mac.com> Implement support for the const and pure attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
1be8bb9daff92eb186b3236e14a172d86666f23a 05-Oct-2008 Chris Lattner <sabre@nondot.org> move a bunch more integer sizing out of target-specific code into
target indep code.

Note that this changes functionality on PIC16: it defines __INT_MAX__
correctly for it, and it changes sizeof(long) to 16-bits (to match
the size of pointer).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57132 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0e5d4ef3155651af17a90fdc07d9f80b33935c0c 05-Oct-2008 Chris Lattner <sabre@nondot.org> move a bunch more integer sizing out of target-specific code into
target indep code.

Note that this changes functionality on PIC16: it defines __INT_MAX__
correctly for it, and it changes sizeof(long) to 16-bits (to match
the size of pointer).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57132 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3276cbc1ad47d8c8778918544c7e74d2966e4ef8 05-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Handle ambiguities between expressions and type-ids that occur inside parentheses, e.g.:

sizeof(int()) -> "int()" is type-id
sizeof(int()+1) -> "int()+1" is expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57131 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
78c8d80f19cb0bccd4f3d590e71a230e727cfab5 05-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Handle ambiguities between expressions and type-ids that occur inside parentheses, e.g.:

sizeof(int()) -> "int()" is type-id
sizeof(int()+1) -> "int()+1" is expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57131 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3f6d8cf040f9186d8533561c80531b06eff146f6 05-Oct-2008 Chris Lattner <sabre@nondot.org> Implement PR2773, support for __USER_LABEL_PREFIX__


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3fdf4678935b27c3d3fd4eb10bf9f5ab98dc0d99 05-Oct-2008 Chris Lattner <sabre@nondot.org> Implement PR2773, support for __USER_LABEL_PREFIX__


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c6f230d205bd7767f6973e2c2463567f2c9c4777 05-Oct-2008 Chris Lattner <sabre@nondot.org> Fix a problem reported in PR2766 that makes clang reject old versions
of GCC's headers. This impacts people that run clang in Tiger systems.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
8223b1d05fc6f46e76bb06d836c1e6dec764e65b 05-Oct-2008 Chris Lattner <sabre@nondot.org> Fix a problem reported in PR2766 that makes clang reject old versions
of GCC's headers. This impacts people that run clang in Tiger systems.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
9add68cbcbeef812d26d8edb4612132447493a5c 05-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Found a subtle bug caused by an implicit enum-to-bool conversion (of the TentativeParsingResult enum).
This was the motivation of the following changes:

-'TentativeParsingResult' enum is replaced by a 'TPResult' class that basically encapsulates the enum.
-TPR_true, TPR_false, TPR_ambiguous, and TPR_error enum constants are replaced by TPResult::True(), TPResult::False(), etc. calls that return a TPResult object.
-Also fixed the subtle bug in Parser::isCXXFunctionDeclarator (caught by the above changes as a compilation error).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57125 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b9f341916e484ff6ba2c2d28c8b2dd5fa12b0015 05-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Found a subtle bug caused by an implicit enum-to-bool conversion (of the TentativeParsingResult enum).
This was the motivation of the following changes:

-'TentativeParsingResult' enum is replaced by a 'TPResult' class that basically encapsulates the enum.
-TPR_true, TPR_false, TPR_ambiguous, and TPR_error enum constants are replaced by TPResult::True(), TPResult::False(), etc. calls that return a TPResult object.
-Also fixed the subtle bug in Parser::isCXXFunctionDeclarator (caught by the above changes as a compilation error).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57125 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
244d99b19f0c7af22ee7250f62ea3b16186a4541 05-Oct-2008 Anders Carlsson <andersca@mac.com> Add parsing of the sentinel attribute. Still need to create the attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57121 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/AttributeList.h
770918281c5bdc7b5b3942285c407e3d62270053 05-Oct-2008 Anders Carlsson <andersca@mac.com> Add parsing of the sentinel attribute. Still need to create the attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57121 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/AttributeList.h
7fd62398781e3cfed12df3fa55cb59d0c5b695e2 05-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Move the TentativeParsingResult enum closer to where it gets used.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57115 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b47e38683f288cd4a73098091d629df417377a6b 05-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the TentativeParsingResult enum closer to where it gets used.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57115 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
58f362d41e08938a17b47d3468fd5c7cea65d1ab 05-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Disambiguate between a declaration or an expression, in the 'for-init-statement' part of a 'for' statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57112 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bbc70c019f7b7f9a256ee29dab5287ecc82c6553 05-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Disambiguate between a declaration or an expression, in the 'for-init-statement' part of a 'for' statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57112 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
88527fbeeb477b3b673df505d1546e4d9bd2f4cb 05-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Disambiguate between a declaration or expression for the 'condition' part of a if/switch/while/for statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57109 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a8a4598b6f2a07339ab8a1248295a07d771a2b2a 05-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Disambiguate between a declaration or expression for the 'condition' part of a if/switch/while/for statement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57109 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ed02bf127130e67cffd46e914d7a6632fd81e4c1 05-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Remove redundant parameter and rename StMgr to StateMgr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57107 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
c1d1bbf691819dc69c122cbdd376c5c630bae378 05-Oct-2008 Zhongxing Xu <xuzhongxing@gmail.com> Remove redundant parameter and rename StMgr to StateMgr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57107 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
e083e693e8cd5fa816311a13bd593e50f2e4d833 05-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix X86 palignr[128] builtins to match LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
affc3a9bfa794f9e781ba42491f9d16cb3d1abd6 05-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix X86 palignr[128] builtins to match LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
5356a3277126d7aff7fbecbe370af585c4692276 05-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix another X86 builtin definitions.
- vec_set_v4hi had "v4s" in place of "V4s"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
ec04b2622ab31655a7e06033f2b05384bf43688f 05-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix another X86 builtin definitions.
- vec_set_v4hi had "v4s" in place of "V4s"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
f328b1b32f1c959dab9237f4bd3d19accf5d32f8 05-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix some X86 builtin definitions.
- cmp instructions return int
- storedqu had bad const qualifier
- pmuldq128 used invalid type code


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
1827db7711cb88e152999ae94f930ebc8d2c53a8 05-Oct-2008 Daniel Dunbar <daniel@zuster.org> Fix some X86 builtin definitions.
- cmp instructions return int
- storedqu had bad const qualifier
- pmuldq128 used invalid type code


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
74b477c0d77fecbf658d682d5e7529fd5fd4eb7b 05-Oct-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Resolve ambiguous C++ statements (C++ 6.8p1).
'ParseTentative.cpp' implements the functionality needed to resolve ambiguous C++ statements, to either a declaration or an expression, by "tentatively parsing" them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57084 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
5404a156be26de1c63ca9916187f970848bb4dbb 05-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Resolve ambiguous C++ statements (C++ 6.8p1).
'ParseTentative.cpp' implements the functionality needed to resolve ambiguous C++ statements, to either a declaration or an expression, by "tentatively parsing" them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57084 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
47f99c94986bd74876680c29f952df18fde2b3a2 04-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Parser support for #pragma pack
- Uses Action::ActOnPragmaPack
- Test case is XFAIL pending verifier fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
fcdd8fe26de3eee44927600bf1853e21bd90dd84 04-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Parser support for #pragma pack
- Uses Action::ActOnPragmaPack
- Test case is XFAIL pending verifier fixes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
a65c00a864e4e36daca7bc322ecf1b07a0202f9f 04-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Preprocessor::RemovePragmaHandler.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57065 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
ex/Preprocessor.h
4095080aff204008eefb26b100906c6ca2bc4bb6 04-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Preprocessor::RemovePragmaHandler.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57065 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Pragma.h
ex/Preprocessor.h
b15eba4a3ca3266fdf2ee6973689e4d9acc73eb5 04-Oct-2008 Ted Kremenek <kremenek@apple.com> This is a big patch, but the functionality change is small and the rest of the patch consists of deltas due to API changes.

This patch overhauls the "memory region" abstraction that was prototyped (but never really used) as part of the Store.h. This patch adds MemRegion.h and MemRegion.cpp, which defines the class MemRegion and its subclasses. This classes serve to define an abstract representation of memory, with regions being layered on other regions to to capture the relationships between fields and variables, variables and the address space they are allocated in, and so on.

The main motivation of this patch is that key parts of the analyzer assumed that all value bindings were to VarDecls. In the future this won't be the case, and this patch removes lval::DeclVal and replaces it with lval::MemRegionVal. Now all pieces of the analyzer must reason about abstract memory blocks instead of just variables.

There should be no functionality change from this patch, but it opens the door for significant improvements to the analyzer such as field-sensitivity and object-sensitivity, both which were on hold until the memory abstraction got generalized.

The memory region abstraction also allows type-information to literally be affixed to a memory region. This will allow the some now redundant logic to be removed from the retain/release checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57042 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
9e24049bef26b6289cce9ac9b483c5cbb096e3ae 04-Oct-2008 Ted Kremenek <kremenek@apple.com> This is a big patch, but the functionality change is small and the rest of the patch consists of deltas due to API changes.

This patch overhauls the "memory region" abstraction that was prototyped (but never really used) as part of the Store.h. This patch adds MemRegion.h and MemRegion.cpp, which defines the class MemRegion and its subclasses. This classes serve to define an abstract representation of memory, with regions being layered on other regions to to capture the relationships between fields and variables, variables and the address space they are allocated in, and so on.

The main motivation of this patch is that key parts of the analyzer assumed that all value bindings were to VarDecls. In the future this won't be the case, and this patch removes lval::DeclVal and replaces it with lval::MemRegionVal. Now all pieces of the analyzer must reason about abstract memory blocks instead of just variables.

There should be no functionality change from this patch, but it opens the door for significant improvements to the analyzer such as field-sensitivity and object-sensitivity, both which were on hold until the memory abstraction got generalized.

The memory region abstraction also allows type-information to literally be affixed to a memory region. This will allow the some now redundant logic to be removed from the retain/release checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57042 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/MemRegion.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/Store.h
b31925dc0b03b0e964c4adb6190d66874278efaa 04-Oct-2008 Chris Lattner <sabre@nondot.org> add a disclaimer



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57038 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
7a02344d9b45db3719adabf8118887253fe944e4 04-Oct-2008 Chris Lattner <sabre@nondot.org> add a disclaimer



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57038 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
2210ffc089fdf18b9e1a60ff47bcab401089f3fd 04-Oct-2008 Chris Lattner <sabre@nondot.org> add a new Rewriter::getRewritenText method that returns the text for a range
that includes any edits in the range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57037 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
b5cd09a2bf1509167a2e7a46bdd0316812a93335 04-Oct-2008 Chris Lattner <sabre@nondot.org> add a new Rewriter::getRewritenText method that returns the text for a range
that includes any edits in the range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57037 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
aeaf7eff830282cdf1e57b4eeb28833d57c9d4ed 03-Oct-2008 Steve Naroff <snaroff@apple.com> - Add a convenience constructor to Type.
- Many rewriter modifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
83ba14e260193a67bba3772134d1d428a1b1c394 03-Oct-2008 Steve Naroff <snaroff@apple.com> - Add a convenience constructor to Type.
- Many rewriter modifications.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57003 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f2c7cd0ec36b3b942ecdde2b09d2af25d6b3fa2b 03-Oct-2008 Daniel Dunbar <daniel@zuster.org> Pass postfix attributes to ActOnFields (mismarked a file).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56993 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f7bb8b91bb2bc540f80f5ed1456a3dcef770abb6 03-Oct-2008 Daniel Dunbar <daniel@zuster.org> Pass postfix attributes to ActOnFields (mismarked a file).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56993 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
71cd7764258c22e00cacb0b41811b1039de93962 03-Oct-2008 Steve Naroff <snaroff@apple.com> Add getTypeSpecStartLoc() to VarDecls and FunctionDecls.

This is a temporary solution to help with the block rewriter (though it certainly has general utility).
Once DeclGroup's are implemented, this SourceLocation should be stored with it (since it applies to all the decls).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0eb07bfde0deedcb35cf3d118b3488f5d8db32ec 03-Oct-2008 Steve Naroff <snaroff@apple.com> Add getTypeSpecStartLoc() to VarDecls and FunctionDecls.

This is a temporary solution to help with the block rewriter (though it certainly has general utility).
Once DeclGroup's are implemented, this SourceLocation should be stored with it (since it applies to all the decls).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
07253c7f77aca1857ba0226903c47cfb3a3b0543 03-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Builtins.def attribute for "can be a constant expression".
- Enabled for builtins which are always constant expressions
(__builtin_huge_val*, __builtin_inf*, __builtin_constant_p,
__builtin_classify_type, __builtin___CFStringMakeConstantString).

Added Builtin::Context::isConstantExpr.
- Currently overly simply interface which only works for builtins
whose constantexprness does not depend on their arguments.

CallExpr::isBuiltinConstantExpr now takes an ASTContext argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
ST/Expr.h
ae3f4919e4805f59c554d39cb9cd3a601809b2cb 03-Oct-2008 Daniel Dunbar <daniel@zuster.org> Add Builtins.def attribute for "can be a constant expression".
- Enabled for builtins which are always constant expressions
(__builtin_huge_val*, __builtin_inf*, __builtin_constant_p,
__builtin_classify_type, __builtin___CFStringMakeConstantString).

Added Builtin::Context::isConstantExpr.
- Currently overly simply interface which only works for builtins
whose constantexprness does not depend on their arguments.

CallExpr::isBuiltinConstantExpr now takes an ASTContext argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
ST/Expr.h
36a0d8aec98699c3e1172e2684c98caf95a35d8a 02-Oct-2008 Daniel Dunbar <daniel@zuster.org> Unbreak build: claim an extra bit for BuiltinID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56952 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
147d26f281409748efcd917292e571794c439d1c 02-Oct-2008 Daniel Dunbar <daniel@zuster.org> Unbreak build: claim an extra bit for BuiltinID.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56952 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
4070a6f343ee6a0edf1161d4f6efc5e2c8ffc869 02-Oct-2008 Mon P Wang <wangmp@apple.com> Added SSE4.1 blend intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
946685626eb427b6c9b013b4d4de61cdd729363c 02-Oct-2008 Mon P Wang <wangmp@apple.com> Added SSE4.1 blend intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
8cbffa3ba09d9ca171901ce52ce274f07c7994bc 01-Oct-2008 Ted Kremenek <kremenek@apple.com> Add a QualType to ConjuredSymbol to represent the type and size of the symbol.

Use this updated interface when invalidating arguments passed by reference; the type of symbol is of the object passed by reference, not the reference itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
60a6e0ce72a24d6247602625c631fc3dc7bfd8d4 01-Oct-2008 Ted Kremenek <kremenek@apple.com> Add a QualType to ConjuredSymbol to represent the type and size of the symbol.

Use this updated interface when invalidating arguments passed by reference; the type of symbol is of the object passed by reference, not the reference itself.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
45a9180f160a422eb59e52fa386342326a17b8f6 30-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add diagnostic for .{lo,hi,e,o} on odd-sized extended vectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56859 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
abee2d789ce799ce9a5d611e13a1713090f305f3 30-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add diagnostic for .{lo,hi,e,o} on odd-sized extended vectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56859 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
68354f3da21e0ebf7d9fb9fddbe5fe83cc951727 30-Sep-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6191148> [sema] Objective-C method lookup (at global scope) fails to handle overloaded selectors properly.

Long standing bug in Sema::ActOnInstanceMessage(). We now warn when messaging an "id" with multiple method signatures in scope. The diags are a little verbose, however they can be streamlined if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
037cda5282e73f30bb09fa316047554b1af1e2ef 30-Sep-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/6191148> [sema] Objective-C method lookup (at global scope) fails to handle overloaded selectors properly.

Long standing bug in Sema::ActOnInstanceMessage(). We now warn when messaging an "id" with multiple method signatures in scope. The diags are a little verbose, however they can be streamlined if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56843 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1473f5255cb08085bb5476543a7dfee0da8933be 30-Sep-2008 Mon P Wang <wangmp@apple.com> Added support for sse intrinsics loadlpd, loadhpd, muldq128, and mulld128


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
7f57b000f232bc596dca627c976ace250c8171e3 30-Sep-2008 Mon P Wang <wangmp@apple.com> Added support for sse intrinsics loadlpd, loadhpd, muldq128, and mulld128


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
82e289167dfb72d35a798bedad2f46eede0ef572 29-Sep-2008 Chris Lattner <sabre@nondot.org> Make some methods const, add some helpers to FullSourceLoc,
and add a dump method to FullSourceLoc! Patch by Nico Weber!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
5c38b6388dc44dcb8467a9e0f22d93db7221717e 29-Sep-2008 Chris Lattner <sabre@nondot.org> Make some methods const, add some helpers to FullSourceLoc,
and add a dump method to FullSourceLoc! Patch by Nico Weber!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56806 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
4eb0ce90d398b78c7a44ab74af6a0345adc04c3d 29-Sep-2008 Chris Lattner <sabre@nondot.org> move ExtVectorElementExpr down into the 'clang extensions' section.
Wrap line to 80 cols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a09f585a7fdbb01b4bf9de3679fd37005379ca66 29-Sep-2008 Chris Lattner <sabre@nondot.org> move ExtVectorElementExpr down into the 'clang extensions' section.
Wrap line to 80 cols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56805 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b91c7250662812f37c2853767ee4e3f397733785 29-Sep-2008 Ted Kremenek <kremenek@apple.com> Extend 'IsLValType' to handle BlockPointerTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56797 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
dfd296bae332d10a854620c059f5d9cef98764b8 29-Sep-2008 Ted Kremenek <kremenek@apple.com> Extend 'IsLValType' to handle BlockPointerTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56797 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
b23469fe1918b0e8154fcc54e3ec395cc4e1c4aa 28-Sep-2008 Chris Lattner <sabre@nondot.org> Replace a comparison with a static list of builtins that was wrong (it
wasn't covering checking builtins like __builtin___vsnprintf_chk) with
a check that won't get out of date.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
bd7eb1c3b2af5cd0a7540c79da85e2ce15a893f4 28-Sep-2008 Chris Lattner <sabre@nondot.org> Replace a comparison with a static list of builtins that was wrong (it
wasn't covering checking builtins like __builtin___vsnprintf_chk) with
a check that won't get out of date.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
4a1f5de64cc20e009fb6a555ee21fa939a2ab04e 27-Sep-2008 Ted Kremenek <kremenek@apple.com> Internally store the body of a BlockExpr using a Stmt* instead of a CompoundStmt*, and use the getBody() method to do the appropriate checking. This both removes the type-punning warnings in Expr.cpp and also makes BlockExpr have more consistency checks against modifications to its body (via StmtIterator).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9da13f9ddb2567e36f4bbee7b3c32f54aeb76d5b 27-Sep-2008 Ted Kremenek <kremenek@apple.com> Internally store the body of a BlockExpr using a Stmt* instead of a CompoundStmt*, and use the getBody() method to do the appropriate checking. This both removes the type-punning warnings in Expr.cpp and also makes BlockExpr have more consistency checks against modifications to its body (via StmtIterator).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f82d2b2274b4f6b6516fb276ae93b5881fc8960a 27-Sep-2008 Ted Kremenek <kremenek@apple.com> Forgot to check in header file with last commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
e7b8d400208e886a167a4481a9024295a3ce17d1 27-Sep-2008 Ted Kremenek <kremenek@apple.com> Forgot to check in header file with last commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
6f04406bb068bcb54f2bb80778f2f2a633579d53 26-Sep-2008 Chris Lattner <sabre@nondot.org> clean up a bunch of fixme's I added, by moving
DirectoryLookup::DirType into SourceManager.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/PPCallbacks.h
0b9e736308af5397f558ffc8e780c438c2fdb563 26-Sep-2008 Chris Lattner <sabre@nondot.org> clean up a bunch of fixme's I added, by moving
DirectoryLookup::DirType into SourceManager.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56692 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/PPCallbacks.h
7257ce2761533f83b2afcf548b999f2bb290c734 26-Sep-2008 Chris Lattner <sabre@nondot.org> Fix the rest of rdar://6243860 hopefully. This requires changing FileIDInfo
to whether the fileid is a 'extern c system header' in addition to whether it
is a system header, most of this is spreading plumbing around. Once we have that,
PPLexerChange bases its "file enter/exit" notifications to PPCallbacks to
base the system header state on FileIDInfo instead of HeaderSearch. Finally,
in Preprocessor::HandleIncludeDirective, mirror logic in GCC: the system headerness
of a file being entered can be set due to the #includer or the #includee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56688 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Preprocessor.h
721818304ac462d8c6ce05eecd02884033db78f1 26-Sep-2008 Chris Lattner <sabre@nondot.org> Fix the rest of rdar://6243860 hopefully. This requires changing FileIDInfo
to whether the fileid is a 'extern c system header' in addition to whether it
is a system header, most of this is spreading plumbing around. Once we have that,
PPLexerChange bases its "file enter/exit" notifications to PPCallbacks to
base the system header state on FileIDInfo instead of HeaderSearch. Finally,
in Preprocessor::HandleIncludeDirective, mirror logic in GCC: the system headerness
of a file being entered can be set due to the #includer or the #includee.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56688 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Preprocessor.h
076d6cb185520f54e36dd4d2dc994ac9b1f20319 26-Sep-2008 Steve Naroff <snaroff@apple.com> Tweak Expr::isModifiableLvalue() and Expr::isLvalue() to better deal with BlockDeclRef exprs.

This fixes <rdar://problem/6248392> clang: Error when using address of stack variable inside block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
4f6a7d7ead09b439216c32f2de806a998aeb222a 26-Sep-2008 Steve Naroff <snaroff@apple.com> Tweak Expr::isModifiableLvalue() and Expr::isLvalue() to better deal with BlockDeclRef exprs.

This fixes <rdar://problem/6248392> clang: Error when using address of stack variable inside block.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56652 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
28680d15b69cf07b19985dcc3365b11b6fa0b8e0 26-Sep-2008 Daniel Dunbar <daniel@zuster.org> Parser support for prefix __attribute__ on @protocol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56642 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
246e70f69cb8aeb67225c54690f1c6b25abd5a86 26-Sep-2008 Daniel Dunbar <daniel@zuster.org> Parser support for prefix __attribute__ on @protocol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56642 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
bddb14add053bbda0d354c4c993ea96797085332 26-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add support for CFString in format attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
085e8f7da37a227ceee7f98b724e0a42e04d01ca 26-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add support for CFString in format attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56639 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
573a0224b3fa42d3effeeb89ba95085f94f6173e 26-Sep-2008 Daniel Dunbar <daniel@zuster.org> Comment fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56634 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
e9eb3f88b82176d8a43f7856250efded80cb2504 26-Sep-2008 Daniel Dunbar <daniel@zuster.org> Comment fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56634 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
a59d56146842eff8cc265af39d37139baa561ddb 25-Sep-2008 Ted Kremenek <kremenek@apple.com> Added prototype implementation of the DeclGroup, DeclGroupRef, and DeclGroupOwningRef classes.
Documentation and testing are pending.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56611 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
d17062cc23df2137378eb808545e24be484c321a 25-Sep-2008 Ted Kremenek <kremenek@apple.com> Added prototype implementation of the DeclGroup, DeclGroupRef, and DeclGroupOwningRef classes.
Documentation and testing are pending.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56611 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclGroup.h
82324d64af17964d61b9f93203e4cb47b95b742f 25-Sep-2008 Steve Naroff <snaroff@apple.com> Downgrade incompatible block pointer error to a warning (to be consistent with incompatible pointer warnings in general).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ba80c9abccd97d9771c1dfa1a862e66ddd4daedd 25-Sep-2008 Steve Naroff <snaroff@apple.com> Downgrade incompatible block pointer error to a warning (to be consistent with incompatible pointer warnings in general).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56595 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
540ff4771b67dd3bb210ddf9531f044a43bcad7e 23-Sep-2008 Daniel Dunbar <daniel@zuster.org> Implement type checking of Objective-C property attributes.
- readonly and readwrite are mutually exclusive.
- assign, copy, and retain are mutually exclusive.
- copy and retain are invalid on non-object types.
- Warn about using default 'assign' property on object types
(attempting to follow gcc behavior).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
95e61fb7cdd1becf956f897f90abffd8b70575de 23-Sep-2008 Daniel Dunbar <daniel@zuster.org> Implement type checking of Objective-C property attributes.
- readonly and readwrite are mutually exclusive.
- assign, copy, and retain are mutually exclusive.
- copy and retain are invalid on non-object types.
- Warn about using default 'assign' property on object types
(attempting to follow gcc behavior).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56507 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3c528b661a762c0cfc4edceb15da37c4a1cdb902 23-Sep-2008 Ted Kremenek <kremenek@apple.com> Fix PR 2819: Compute dataflow values for all CFG blocks by not relying on having the "Exit" block being reachable by all (or any) of the blocks in the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56492 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
fa708259cb518e87a2e7f636671b94a49f823608 23-Sep-2008 Ted Kremenek <kremenek@apple.com> Fix PR 2819: Compute dataflow values for all CFG blocks by not relying on having the "Exit" block being reachable by all (or any) of the blocks in the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56492 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
1d090a4533589a3ea990de15dc646a091540cc59 21-Sep-2008 Ted Kremenek <kremenek@apple.com> Add a bug category for NSError** checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56394 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
62059e809596a419e6fc3e751b2f0b57b7cc51e7 21-Sep-2008 Ted Kremenek <kremenek@apple.com> Add a bug category for NSError** checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56394 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
ab1323403f4d7daf3cdf3ede348e61d534146592 20-Sep-2008 Ted Kremenek <kremenek@apple.com> Add "category" to BugTypes, allowing bugs to be grouped.
Changed casing of many bug names. The convention will be to have bug names (mostly) lower cased, and categories use some capitalization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56385 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
8c036c7f77d69f96df49219ed0bdbade200d52eb 20-Sep-2008 Ted Kremenek <kremenek@apple.com> Add "category" to BugTypes, allowing bugs to be grouped.
Changed casing of many bug names. The convention will be to have bug names (mostly) lower cased, and categories use some capitalization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56385 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
b2de2efaa9f68ff58161359f87aa41a9c35b63d1 20-Sep-2008 Ted Kremenek <kremenek@apple.com> Add PostStore, a new ProgramPoint to distinguish between 'stores' and other PostStmts.

GRExprEngine:
Use PostStore in EvalStore.
Use a second version of EvalStore in EvalBinaryOperator to associate the store with the expression on the LHS.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56383 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
82bae3f6bf7bc4733d9c87659b266e23ad55f420 20-Sep-2008 Ted Kremenek <kremenek@apple.com> Add PostStore, a new ProgramPoint to distinguish between 'stores' and other PostStmts.

GRExprEngine:
Use PostStore in EvalStore.
Use a second version of EvalStore in EvalBinaryOperator to associate the store with the expression on the LHS.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56383 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/ProgramPoint.h
bb7a3d95821857c9d94fe3198c55467e3fbcfb93 19-Sep-2008 Ted Kremenek <kremenek@apple.com> Implement second part of PR 2600: NSError** parameter may be null, and should be checked before being dereferenced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56318 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
7360fda1efd88fd28ca2882579676dbd8569c181 19-Sep-2008 Ted Kremenek <kremenek@apple.com> Implement second part of PR 2600: NSError** parameter may be null, and should be checked before being dereferenced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56318 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRState.h
b3538abf8192a78ac4d67bcaee425a1ceba84959 18-Sep-2008 Ted Kremenek <kremenek@apple.com> Change implementation of NSError** coding-style check to be invoked at the end of the retain/release analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56312 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
cfdf9b4edf1172728be97d1ae2d95171975f812b 18-Sep-2008 Ted Kremenek <kremenek@apple.com> Change implementation of NSError** coding-style check to be invoked at the end of the retain/release analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56312 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
e1cecbae5d675d1c9abdd9be8fb4e915139de509 18-Sep-2008 Steve Naroff <snaroff@apple.com> Finish pushing blocks attribute through the clang attribute machinery.
Also added a couple simple tests from the "gcc.apple" test suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56309 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
9eae5761c0691c0f11d7a823b8ee54f05786cbbe 18-Sep-2008 Steve Naroff <snaroff@apple.com> Finish pushing blocks attribute through the clang attribute machinery.
Also added a couple simple tests from the "gcc.apple" test suite.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56309 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
35335b6a17851d1b9dafed2216fc504167f5fa5f 18-Sep-2008 Ted Kremenek <kremenek@apple.com> Implemented one of the checks requested in PR 2600:
"Method accepting NSError** argument should have non-void return value to indicate that an error occurred."

Test case written, but the header needs to be delta-debugged reduced. Will commit shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56297 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
f45d18c08b549644dd5f3d3ad731b8e4d09be730 18-Sep-2008 Ted Kremenek <kremenek@apple.com> Implemented one of the checks requested in PR 2600:
"Method accepting NSError** argument should have non-void return value to indicate that an error occurred."

Test case written, but the header needs to be delta-debugged reduced. Will commit shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56297 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
b31e2b3876406efbd90bbca99b2dbd72063f170e 17-Sep-2008 Steve Naroff <snaroff@apple.com> Remove BlockStmtExpr.
Block literals are now represented by the concrete BlockExpr class.
This is cleanup (removes a FIXME).
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56288 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
9c3c902835ef7d37300463ad47176ec21a67dc8b 17-Sep-2008 Steve Naroff <snaroff@apple.com> Remove BlockStmtExpr.
Block literals are now represented by the concrete BlockExpr class.
This is cleanup (removes a FIXME).
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56288 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
a869423790c59e3fac6d75972a20ed114ae9fea4 17-Sep-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56271 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d6ecc5cf945ccdf2b931137e364a69cde59ab18b 17-Sep-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fix comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56271 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a095a75de7e3b14f431bb8ee4d6ae39a78d34624 17-Sep-2008 Steve Naroff <snaroff@apple.com> Remove support for BlockExprExpr. For example...
^(expression) or ^(int arg1, float arg2)(expression)
...is no longer supported.
All block literals now require a compound statement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
17dab4f616db7be6800c1f0505f4888d2e8ad7a2 17-Sep-2008 Steve Naroff <snaroff@apple.com> Remove support for BlockExprExpr. For example...
^(expression) or ^(int arg1, float arg2)(expression)
...is no longer supported.
All block literals now require a compound statement.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
ad7c407fa1dc566d5320a002a79935b46098b28b 16-Sep-2008 Ted Kremenek <kremenek@apple.com> ProgramPoint now takes the space of two pointers instead of one. This change was
motivated because it became clear that the number of subclasses of ProgramPoint
would expand and we ran out of bits to represent a pointer variant. As a plus of
this change, BlockEdge program points can now be represented explicitly without
using a cache of CFGBlock* pairs in CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/PathSensitive/BugReporter.h
nalysis/ProgramPoint.h
d452758bb6b59340528a26def9ecc24b329d4ecf 16-Sep-2008 Ted Kremenek <kremenek@apple.com> ProgramPoint now takes the space of two pointers instead of one. This change was
motivated because it became clear that the number of subclasses of ProgramPoint
would expand and we ran out of bits to represent a pointer variant. As a plus of
this change, BlockEdge program points can now be represented explicitly without
using a cache of CFGBlock* pairs in CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56245 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/PathSensitive/BugReporter.h
nalysis/ProgramPoint.h
7b6f67b456bad51f53c955700bb5067fdfb2da7a 13-Sep-2008 Ted Kremenek <kremenek@apple.com> Patch by Csaba Hruska!

"Here is a patch what replaces std::ostream with llvm::raw_ostream. This patch
covers the AST library, but ignores Analysis lib."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56185 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/PrettyPrinter.h
ST/Stmt.h
a95d3750441ac8ad03e36af8e6e74039c9a3109d 13-Sep-2008 Ted Kremenek <kremenek@apple.com> Patch by Csaba Hruska!

"Here is a patch what replaces std::ostream with llvm::raw_ostream. This patch
covers the AST library, but ignores Analysis lib."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56185 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/PrettyPrinter.h
ST/Stmt.h
dd54e91707d7fd748125776abcec5527212251d6 12-Sep-2008 Daniel Dunbar <daniel@zuster.org> Round out object size checking builtins (fprintf ones disabled as we
have no mapping to FILE*). We are also missing printf format
attributes for the printf style ones.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
df3ffb300a2b6f26707fa32f66c549091f3643aa 12-Sep-2008 Daniel Dunbar <daniel@zuster.org> Round out object size checking builtins (fprintf ones disabled as we
have no mapping to FILE*). We are also missing printf format
attributes for the printf style ones.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
4dbd857bedd72b95c197d939df5d6fcf7bfd8072 12-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add --suppress-system-warnings (on by default, use =0 to disable)
- For investigating warnings in system headers / builtins.
- Currently also enables the behavior that allows silent redefinition
of types in system headers. Conceptually these are separate but I
didn't feel it was worth two options (or changing LangOptions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2fe0997427d92388e66e7573f4b043e7ba285ef0 12-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add --suppress-system-warnings (on by default, use =0 to disable)
- For investigating warnings in system headers / builtins.
- Currently also enables the behavior that allows silent redefinition
of types in system headers. Conceptually these are separate but I
didn't feel it was worth two options (or changing LangOptions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1815b3bfc1382c88bee771bd158755b2426f0780 12-Sep-2008 Douglas Gregor <doug.gregor@gmail.com> Give string literals const element typesin C++, and cope with the deprecated C++ conversion from a string literal to a pointer-to-non-const-character

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
77a52233f7c0f162672652051bfe78b65ad4f789 12-Sep-2008 Douglas Gregor <dgregor@apple.com> Give string literals const element typesin C++, and cope with the deprecated C++ conversion from a string literal to a pointer-to-non-const-character

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c11aadbb9d897b7ccfcf1dce07c17b17713a5370 11-Sep-2008 Mon P Wang <wangmp@apple.com> Added SSE41 pminsd, pmaxsd, roundps and a few others


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
3e877ec791fb8f4b752b3193021c86b878082a4c 11-Sep-2008 Mon P Wang <wangmp@apple.com> Added SSE41 pminsd, pmaxsd, roundps and a few others


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56114 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
6293fd1cf1a4e23cea635d8712c5a942e374f73a 11-Sep-2008 Douglas Gregor <doug.gregor@gmail.com> Add support for expected-note to Clang's -verify option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56089 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticBuffer.h
233f74b29b2864d5984e13f3ae10a21404ef82e8 11-Sep-2008 Douglas Gregor <dgregor@apple.com> Add support for expected-note to Clang's -verify option

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56089 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticBuffer.h
6e4dec42542f1bf02674226cd30b1e93ba343cf5 11-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add ObjCMethodDecl::getSourceRange.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9776ba0d844cf9f6888e871e3fd246ae782f76f4 11-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add ObjCMethodDecl::getSourceRange.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2298f01d256360b343b32a7a0e474046a84e83e1 11-Sep-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fold Parser::ParseTag into Parser::ParseEnumSpecifier, as suggested in this post:
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-September/002721.html

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e281b4cb3c2f85e10412040b35c2699bc883b716 11-Sep-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fold Parser::ParseTag into Parser::ParseEnumSpecifier, as suggested in this post:
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-September/002721.html

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3eac7698d809b39e89fc7f637f97a899425c85d4 10-Sep-2008 Steve Naroff <snaroff@apple.com> More semantic analysis for blocks...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56064 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
61f40a2b67fc2046768e14f66b617e564cbcc3d8 10-Sep-2008 Steve Naroff <snaroff@apple.com> More semantic analysis for blocks...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56064 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
810c0f76b1d87aa5d6c1785558dc903c20e6aaf9 10-Sep-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement Sema support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56044 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5921093cf1c2e9a8bd1a22b6f612e551bae7476b 10-Sep-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement Sema support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56044 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
dbce6c11df75b223f22fbfcab76a9d4352257931 10-Sep-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add new 'CXXConditionDeclExpr' expression node used for a 'condition' declaration, e.g: "if (int x=0) {...}".
It is a subclass of DeclRefExpr and the main difference is that CXXConditionDeclExpr owns the declaration that it references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
9e922b1663ecb95dc7eee03002fd66ed18fb3192 10-Sep-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add new 'CXXConditionDeclExpr' expression node used for a 'condition' declaration, e.g: "if (int x=0) {...}".
It is a subclass of DeclRefExpr and the main difference is that CXXConditionDeclExpr owns the declaration that it references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/StmtNodes.def
873f2783b98fe10de2e99d704ff176090b15e285 09-Sep-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement parser support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).
Add new 'ActOnCXXConditionDeclarationExpr' action, called when the 'condition' is a declaration instead of an expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56007 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
71b914b999d9c4b6df11068fc5a3291ac4770492 09-Sep-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement parser support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).
Add new 'ActOnCXXConditionDeclarationExpr' action, called when the 'condition' is a declaration instead of an expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56007 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
3b3b028f58587b0713383e51e11aa6856a1eddad 09-Sep-2008 Mon P Wang <wangmp@apple.com> Added SSE4.1 packusdw


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55978 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
e01c2c9e072ed46ff791c8e9fb859786c6dae96e 09-Sep-2008 Mon P Wang <wangmp@apple.com> Added SSE4.1 packusdw


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55978 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
220cc9945b241f3d77b8c1810c2f9532cfb43486 09-Sep-2008 Mon P Wang <wangmp@apple.com> Added SSE41 pmovsx pmovzx intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
f47be933bef073708c2536fa69ef946e7fe08134 09-Sep-2008 Mon P Wang <wangmp@apple.com> Added SSE41 pmovsx pmovzx intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
5eea562fd2ab2f3a3c6090fb91ca69e3043d4c8f 08-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add ThreadSpecified bit to Decl.
- Patch from Kevin Tew.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6f0200e9ebf7f65df74b3cf55b4319b075b244a2 08-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add ThreadSpecified bit to Decl.
- Patch from Kevin Tew.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55940 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d6163f3cfe7df430c3857d0552d5f5cb7ae86986 06-Sep-2008 Steve Naroff <snaroff@apple.com> More type checking for blocks. Still incomplete (will hopefully finish up this weekend).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55862 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
dd972f20dc2bd3609d833893e5c6544ac09b59a9 06-Sep-2008 Steve Naroff <snaroff@apple.com> More type checking for blocks. Still incomplete (will hopefully finish up this weekend).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55862 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
46a837c7ced306c55d1686cea5f77cb7a2f3b908 05-Sep-2008 Ted Kremenek <kremenek@apple.com> Change struct forward declarations and definitions to use unique RecordDecls, as opposed to creating a single RecordDecl and reusing it.

This change effects both RecordDecls and CXXRecordDecls, but does not effect EnumDecls (yet).

The motivation of this patch is as follows:
- Capture more source information, necessary for refactoring/rewriting clients.

- Pave the way to resolve ownership issues with RecordDecls with the forthcoming
addition of DeclGroups.

Current caveats:
- Until DeclGroups are in place, we will leak RecordDecls not explicitly
referenced by the AST. For example:

typedef struct { ... } x;

The RecordDecl for the struct will be leaked because the TypedefDecl doesn't
refer to it. This will be solved with DeclGroups.

- This patch also (temporarily) breaks CodeGen. More below.

High-level changes:
- As before, TagType still refers to a TagDecl, but it doesn't own it. When
a struct/union/class is first referenced, a RecordType and RecordDecl are
created for it, and the RecordType refers to that RecordDecl. Later, if
a new RecordDecl is created, the pointer to a RecordDecl in RecordType is
updated to point to the RecordDecl that defines the struct/union/class.

- TagDecl and RecordDecl now how a method 'getDefinition()' to return the
TagDecl*/RecordDecl* that refers to the TagDecl* that defines a particular
enum/struct/class/union. This is useful from going from a RecordDecl* that
defines a forward declaration to the RecordDecl* that provides the actual
definition. Note that this also works for EnumDecls, except that in this case
there is no distinction between forward declarations and definitions (yet).

- Clients should no longer assume that 'isDefinition()' returns true from a
RecordDecl if the corresponding struct/union/class has been defined.
isDefinition() only returns true if a particular RecordDecl is the defining
Decl. Use 'getDefinition()' instead to determine if a struct has been defined.

- The main changes to Sema happen in ActOnTag. To make the changes more
incremental, I split off the processing of enums and structs et al into two
code paths. Enums use the original code path (which is in ActOnTag) and
structs use the ActOnTagStruct. Eventually the two code paths will be merged,
but the idea was to preserve the original logic both for comparison and not to
change the logic for both enums and structs all at once.

- There is NO CHAINING of RecordDecls for the same RecordType. All RecordDecls
that correspond to the same type simply have a pointer to that type. If we
need to figure out what are all the RecordDecls for a given type we can build
a backmap.

- The diff in CXXRecordDecl.[cpp,h] is actually very small; it just mimics the
changes to RecordDecl. For some reason 'svn' marks the entire file as changed.

Why is CodeGen broken:
- Codegen assumes that there is an equivalence between RecordDecl* and
RecordType*. This was true before because we only created one RecordDecl* for
a given RecordType*, but it is no longer true. I believe this shouldn't be too
hard to change, but the patch was big enough as it is.

I have tested this patch on both the clang test suite, and by running the static analyzer over Postgresql and a large Apple-internal project (mix of Objective-C and C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55839 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/Type.h
4b7c98378ae0c1a3635f0b7756848b4a9923f8bc 05-Sep-2008 Ted Kremenek <kremenek@apple.com> Change struct forward declarations and definitions to use unique RecordDecls, as opposed to creating a single RecordDecl and reusing it.

This change effects both RecordDecls and CXXRecordDecls, but does not effect EnumDecls (yet).

The motivation of this patch is as follows:
- Capture more source information, necessary for refactoring/rewriting clients.

- Pave the way to resolve ownership issues with RecordDecls with the forthcoming
addition of DeclGroups.

Current caveats:
- Until DeclGroups are in place, we will leak RecordDecls not explicitly
referenced by the AST. For example:

typedef struct { ... } x;

The RecordDecl for the struct will be leaked because the TypedefDecl doesn't
refer to it. This will be solved with DeclGroups.

- This patch also (temporarily) breaks CodeGen. More below.

High-level changes:
- As before, TagType still refers to a TagDecl, but it doesn't own it. When
a struct/union/class is first referenced, a RecordType and RecordDecl are
created for it, and the RecordType refers to that RecordDecl. Later, if
a new RecordDecl is created, the pointer to a RecordDecl in RecordType is
updated to point to the RecordDecl that defines the struct/union/class.

- TagDecl and RecordDecl now how a method 'getDefinition()' to return the
TagDecl*/RecordDecl* that refers to the TagDecl* that defines a particular
enum/struct/class/union. This is useful from going from a RecordDecl* that
defines a forward declaration to the RecordDecl* that provides the actual
definition. Note that this also works for EnumDecls, except that in this case
there is no distinction between forward declarations and definitions (yet).

- Clients should no longer assume that 'isDefinition()' returns true from a
RecordDecl if the corresponding struct/union/class has been defined.
isDefinition() only returns true if a particular RecordDecl is the defining
Decl. Use 'getDefinition()' instead to determine if a struct has been defined.

- The main changes to Sema happen in ActOnTag. To make the changes more
incremental, I split off the processing of enums and structs et al into two
code paths. Enums use the original code path (which is in ActOnTag) and
structs use the ActOnTagStruct. Eventually the two code paths will be merged,
but the idea was to preserve the original logic both for comparison and not to
change the logic for both enums and structs all at once.

- There is NO CHAINING of RecordDecls for the same RecordType. All RecordDecls
that correspond to the same type simply have a pointer to that type. If we
need to figure out what are all the RecordDecls for a given type we can build
a backmap.

- The diff in CXXRecordDecl.[cpp,h] is actually very small; it just mimics the
changes to RecordDecl. For some reason 'svn' marks the entire file as changed.

Why is CodeGen broken:
- Codegen assumes that there is an equivalence between RecordDecl* and
RecordType*. This was true before because we only created one RecordDecl* for
a given RecordType*, but it is no longer true. I believe this shouldn't be too
hard to change, but the patch was big enough as it is.

I have tested this patch on both the clang test suite, and by running the static analyzer over Postgresql and a large Apple-internal project (mix of Objective-C and C).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55839 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclCXX.h
ST/Type.h
435adbe78af0b462e0826c3354cf3aecb79dff89 05-Sep-2008 Daniel Dunbar <daniel@zuster.org> Fix placement of const on a number of X86 builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
797a35d8a426e85e32d524e833b244242d0edb5d 05-Sep-2008 Daniel Dunbar <daniel@zuster.org> Fix placement of const on a number of X86 builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
2c9840470bd025cc60b88fa86dff1122d48b6a3a 05-Sep-2008 Ted Kremenek <kremenek@apple.com> Remove "NextDecl" from RecordDecl. This change touches many files that where RecordDecl or CXXRecordDecl was constructed, always with an argument of 'NULL' for the previous declaration.

The motivation behind this change is that chaining the RecordDecls is simply unnecessary. Once we create multiple RecordDecls for the same struct/union/class, clients that care about all the declarations of the same struct can build a back map by seeing which Decls refer to the same RecordType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
df042e6c2bf06b2d9ed53c52469599ac1bd93a3f 05-Sep-2008 Ted Kremenek <kremenek@apple.com> Remove "NextDecl" from RecordDecl. This change touches many files that where RecordDecl or CXXRecordDecl was constructed, always with an argument of 'NULL' for the previous declaration.

The motivation behind this change is that chaining the RecordDecls is simply unnecessary. Once we create multiple RecordDecls for the same struct/union/class, clients that care about all the declarations of the same struct can build a back map by seeing which Decls refer to the same RecordType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
4fea7b688be1fd4fd3fd34ed70127c78904eaa91 04-Sep-2008 Steve Naroff <snaroff@apple.com> Touchup CheckSingleAssignmentConstraints() and CheckCompareOperands() to check for block pointers.
Added a couple FIXME's wrt PointLikeType. If the author reads this, it would be great to get some background on this class (thanks in advance).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
39218dfef550ad1cd7b7ece83a715996a113ffd1 04-Sep-2008 Steve Naroff <snaroff@apple.com> Touchup CheckSingleAssignmentConstraints() and CheckCompareOperands() to check for block pointers.
Added a couple FIXME's wrt PointLikeType. If the author reads this, it would be great to get some background on this class (thanks in advance).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3454b6cd8d58c98e2a867fb1104af11e1c183f68 04-Sep-2008 Steve Naroff <snaroff@apple.com> Add type checking for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
1c7d067550c2d9bca8997d0e67ee6b280d493202 04-Sep-2008 Steve Naroff <snaroff@apple.com> Add type checking for blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
c6c927427b946f660ea7eaf1528142c3e33440bf 04-Sep-2008 Mon P Wang <wangmp@apple.com> Generate error if we try to implicit cast between different address
spaces


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3a2c7449e356ed74552450bc1dd50691c8202770 04-Sep-2008 Mon P Wang <wangmp@apple.com> Generate error if we try to implicit cast between different address
spaces


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55765 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
30ad42d076bf0b3804f641ef2a006cc1486a9a5e 03-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add __builtin_object_size support.
- Currently CodeGen always returns a conservative value for this (-1
or 0 depending on the context).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticKinds.def
d5f8a4fd4d6dfb0415b93bb7ab721bba5cab1332 03-Sep-2008 Daniel Dunbar <daniel@zuster.org> Add __builtin_object_size support.
- Currently CodeGen always returns a conservative value for this (-1
or 0 depending on the context).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticKinds.def
e4031f2b7eeba198f7560bf7f6f35d10e685adf3 03-Sep-2008 Daniel Dunbar <daniel@zuster.org> Modify object size checking builtins to lower to libc calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55721 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
b0a86c21f934d2dd9d5a6da2e52ee833da1d437b 03-Sep-2008 Daniel Dunbar <daniel@zuster.org> Modify object size checking builtins to lower to libc calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55721 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
52a81c04a25001409f8b0c9b296248fd7cf80e13 03-Sep-2008 Steve Naroff <snaroff@apple.com> Add semantic analysis for "blocks".

Highlights...

- 4 new AST nodes, BlockExpr, BlockStmtExpr, BlockExprExpr, BlockDeclRefExpr.
- Sema::ActOnBlockStart(), ActOnBlockError(), ActOnBlockStmtExpr(), ActOnBlockExprExpr(), ActOnBlockReturnStmt().

Next steps...

- hack Sema::ActOnIdentifierExpr() to deal with block decl refs.
- add attribute handler for byref decls.
- add test cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
4eb206bebcdab28ababe8df55c6185cec2cdc071 03-Sep-2008 Steve Naroff <snaroff@apple.com> Add semantic analysis for "blocks".

Highlights...

- 4 new AST nodes, BlockExpr, BlockStmtExpr, BlockExprExpr, BlockDeclRefExpr.
- Sema::ActOnBlockStart(), ActOnBlockError(), ActOnBlockStmtExpr(), ActOnBlockExprExpr(), ActOnBlockReturnStmt().

Next steps...

- hack Sema::ActOnIdentifierExpr() to deal with block decl refs.
- add attribute handler for byref decls.
- add test cases.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
58c2960a3af3c0b8a8a75286102de0bdb10dedf2 03-Sep-2008 Ted Kremenek <kremenek@apple.com> Store: (static analyzer)
- Change definition of store::Region and store::Binding (once again) to make
them real classes that just wrap pointers. This makes them more strictly
typed, and allows specific implementations of Regions/Bindings to just
subclass them.
- minor renamings to RegionExtent and its subclasses
- added a bunch of doxygen comments

StoreManager: (static analyzer)
- added 'iterBindings', an iteration method for iterating over the bindings of a
store. It that takes a callback object (acting like a poor man's closure).
- added 'getRVal' version for store::Binding. Will potentially phase the other
versions of GetRVal in StoreManager out.
- reimplemented 'getBindings' to be non-virtual and to use 'iterBindings'

BasicStoreManager: (static analyzer)
- implemented 'iterBindings' for BasicStoreManager



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55688 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
60dbad831a35ba0f58256b9bcd2a085af98ff2ec 03-Sep-2008 Ted Kremenek <kremenek@apple.com> Store: (static analyzer)
- Change definition of store::Region and store::Binding (once again) to make
them real classes that just wrap pointers. This makes them more strictly
typed, and allows specific implementations of Regions/Bindings to just
subclass them.
- minor renamings to RegionExtent and its subclasses
- added a bunch of doxygen comments

StoreManager: (static analyzer)
- added 'iterBindings', an iteration method for iterating over the bindings of a
store. It that takes a callback object (acting like a poor man's closure).
- added 'getRVal' version for store::Binding. Will potentially phase the other
versions of GetRVal in StoreManager out.
- reimplemented 'getBindings' to be non-virtual and to use 'iterBindings'

BasicStoreManager: (static analyzer)
- implemented 'iterBindings' for BasicStoreManager



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55688 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
cc37ac5424171a333153f8c480a562072132b948 03-Sep-2008 Daniel Dunbar <daniel@zuster.org> Fix ObjCPropertRefExpr to be able to encode all the information for
uses which refer to methods not properties.
- Not yet wired in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
e66f4e3e3ae9d7d11b0c302211066fad69228aba 03-Sep-2008 Daniel Dunbar <daniel@zuster.org> Fix ObjCPropertRefExpr to be able to encode all the information for
uses which refer to methods not properties.
- Not yet wired in Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
6f0a241910c5a64854d80b177d501e727c91dbaf 02-Sep-2008 Ted Kremenek <kremenek@apple.com> RecordDecl:
- Remove method 'isForwardDecl'; this functionality is already provided by
'isDefinition()'
- Move method definitions to be co-located with other RecordDecl methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6359792ca92e7ca2f416cb804c6604358174e994 02-Sep-2008 Ted Kremenek <kremenek@apple.com> RecordDecl:
- Remove method 'isForwardDecl'; this functionality is already provided by
'isDefinition()'
- Move method definitions to be co-located with other RecordDecl methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
10a6fb834bef82daafe90ecee593ffb31d25d284 02-Sep-2008 Ted Kremenek <kremenek@apple.com> RecordDecl:
- Added method 'isForwardDeclaration', a predicate method that returns true
if a RecordDecl represents a forward declaration.
- Added method 'getDefinitionDecl', a query method that returns a pointer to
the RecordDecl that provides the actual definition of a struct/union.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a39da065766bdfeee3421a2e71f60ae579170fef 02-Sep-2008 Ted Kremenek <kremenek@apple.com> RecordDecl:
- Added method 'isForwardDeclaration', a predicate method that returns true
if a RecordDecl represents a forward declaration.
- Added method 'getDefinitionDecl', a query method that returns a pointer to
the RecordDecl that provides the actual definition of a struct/union.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55642 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
25d8be16495d3952b6b50d6e8ed2ff6d58c02185 02-Sep-2008 Ted Kremenek <kremenek@apple.com> CXXRecordDecl and RecordDecl:
- Change constructor and create methods to accept a CXXRecordDecl* (RecordDecl*)
instead of a ScopedDecl* for PrevDecl. This causes the type checking
to be more tight and doesn't break any code.

RecordDecl:

- Don't use the NextDeclarator field in ScopedDecl to represent the previous
declaration. This is a conflated use of the NextDeclarator field, which will
be removed anyway when DeclGroups are fully implemented.

- Instead, represent (a soon to be implemented) chain of RecordDecls using a
NextDecl field. The last RecordDecl in the chain is always the 'defining'
RecordDecl that owns the FieldDecls. The other RecordDecls in the chain
are forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
df91eca19bd9738abd9a3b84791f39750e27ad36 02-Sep-2008 Ted Kremenek <kremenek@apple.com> CXXRecordDecl and RecordDecl:
- Change constructor and create methods to accept a CXXRecordDecl* (RecordDecl*)
instead of a ScopedDecl* for PrevDecl. This causes the type checking
to be more tight and doesn't break any code.

RecordDecl:

- Don't use the NextDeclarator field in ScopedDecl to represent the previous
declaration. This is a conflated use of the NextDeclarator field, which will
be removed anyway when DeclGroups are fully implemented.

- Instead, represent (a soon to be implemented) chain of RecordDecls using a
NextDecl field. The last RecordDecl in the chain is always the 'defining'
RecordDecl that owns the FieldDecls. The other RecordDecls in the chain
are forward declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
283b362bfa22140bc53a1a891ee905d6f47a1aa2 02-Sep-2008 Eli Friedman <eli.friedman@gmail.com> An extremely hacky version of transparent_union support; it isn't
anywhere near correct in terms of missing cases and missing
diagnostics, but it's good enough to handle the uses in the
Linux system headers, which are currently a constant pain for compiling
applications on Linux.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bc88745b43f440341e60ed93b0d27bac7c418029 02-Sep-2008 Eli Friedman <eli.friedman@gmail.com> An extremely hacky version of transparent_union support; it isn't
anywhere near correct in terms of missing cases and missing
diagnostics, but it's good enough to handle the uses in the
Linux system headers, which are currently a constant pain for compiling
applications on Linux.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55621 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6a1fdd913f6f7ff86fc55955edc82439aa983e47 02-Sep-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fit the comments into 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55619 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRWorkList.h
f43aa4410f6fa53d72a277b3429c9f814f54d1b5 02-Sep-2008 Zhongxing Xu <xuzhongxing@gmail.com> Fit the comments into 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55619 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRWorkList.h
7af441b7228bcb16ebc216b071227ab07a7436cc 01-Sep-2008 Ted Kremenek <kremenek@apple.com> Tidy up sema processing of attribute "nonull":
- warn about nonnull being applied to functions with no pointer arguments
- continue processing argument list in the attribute when we encounter a non-pointer parameter being marked as nonnull
- when no argument list is specified, only mark pointers as nonnull. This fixes PR 2732 and radar 6188814.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7fb43c17eb2b4102f40a80a355629aacd70589ad 01-Sep-2008 Ted Kremenek <kremenek@apple.com> Tidy up sema processing of attribute "nonull":
- warn about nonnull being applied to functions with no pointer arguments
- continue processing argument list in the attribute when we encounter a non-pointer parameter being marked as nonnull
- when no argument list is specified, only mark pointers as nonnull. This fixes PR 2732 and radar 6188814.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55610 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a7bbf567dac9dfd58f12c9ff14584d64104694f3 01-Sep-2008 Nuno Lopes <nunoplopes@sapo.pt> codegen constant data as such. add QualType::isConstant()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b381aac9bae6d608c72267dd0ed08ec6369e94e4 01-Sep-2008 Nuno Lopes <nunoplopes@sapo.pt> codegen constant data as such. add QualType::isConstant()

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55603 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f58cac7442d6aca9e95a32e9ae90f92fbf7d9af8 30-Aug-2008 Anders Carlsson <andersca@mac.com> Add code to create the fast enumeration state type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bd4c1ada2e8668f43a865dc2c662085cf61940c4 30-Aug-2008 Anders Carlsson <andersca@mac.com> Add code to create the fast enumeration state type

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
42b265fccb1d7357ef3239848fe4696f87d1f1ea 29-Aug-2008 Nico Weber <nicolasweber@gmx.de> fix a comment that was forgotten in r54071

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
91c027e2021366396696977af7fdc0e070bdd614 29-Aug-2008 Nico Weber <nicolasweber@gmx.de> fix a comment that was forgotten in r54071

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
7d3196c6490848e8b7805c490415274551cdd3b1 29-Aug-2008 Nico Weber <nicolasweber@gmx.de> minor cleanup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55538 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
491be73282d5483c2f799289ed90cc0011fde4bd 29-Aug-2008 Nico Weber <nicolasweber@gmx.de> minor cleanup

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55538 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
864792476ff053794a75db6ed374f6fadd59182f 29-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Added LLVM comment header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55537 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
d19e21bcd347542bd1fa9ec767f14d91ef593d34 29-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Added LLVM comment header.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55537 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
c6b27d0375e0a3996917f17efb4d2b9d118d868e 29-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Migrate the rest symbolic analysis stuff to BasicConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55536 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
39cfed397baf1ffca0ab85cfa3d03087fe80e2cc 29-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Migrate the rest symbolic analysis stuff to BasicConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55536 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
be9b6f73a2fa3ffe32e430ac6c09ae359a61a956 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Added "getBindings" and "BindingAsString" to GRStateManager and StoreManager.

Migrated CFRefCount.cpp to use getBindings and BindingsAsString instead of
making assumptions about the Store (removed dependence on GRState::vb_iterator).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55522 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
2bc39c61077e6a49728f309bb80a949fb0b2aaff 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Added "getBindings" and "BindingAsString" to GRStateManager and StoreManager.

Migrated CFRefCount.cpp to use getBindings and BindingsAsString instead of
making assumptions about the Store (removed dependence on GRState::vb_iterator).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55522 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
1486404010c41b3aee3cebc8a7c1312e56a05f45 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Remove BasicStore.h (migrated function prototype for CreateBasicStore() to Store.h)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/Store.h
c0637cfe928da2251d4379602c1c86fa5f0de2ca 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Remove BasicStore.h (migrated function prototype for CreateBasicStore() to Store.h)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55519 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/Store.h
33a78a06045664bf9e9f6d42cb7f9f4dbea8077e 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Remove Regions.h and Regions.cpp, since we are now using an even more abstract representation of "memory regions" in the static analyzer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55515 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Regions.h
05d0977a1c1a02bd2258113bbb623da43904c8ef 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Remove Regions.h and Regions.cpp, since we are now using an even more abstract representation of "memory regions" in the static analyzer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55515 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Regions.h
6e91367c609974936c08b409b15ecd66befbf2d9 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Make store "Regions" and "Bindings" more abstract instead of concrete variants.
Their precise semantics will be implemented by a specific StoreManager.

Use function pointer to create the StoreManager in GRStateManager. This matches how we create ConstraintsManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55514 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
5f81c4415422b0aa5c59db69580b1079fc12a65f 29-Aug-2008 Ted Kremenek <kremenek@apple.com> Make store "Regions" and "Bindings" more abstract instead of concrete variants.
Their precise semantics will be implemented by a specific StoreManager.

Use function pointer to create the StoreManager in GRStateManager. This matches how we create ConstraintsManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55514 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
fd5b19da83002f37a74c2631dd07e742ed36221a 28-Aug-2008 Steve Naroff <snaroff@apple.com> Add parser/action support for block literal expressions.
Parser support for blocks is almost complete...just need to add support for the __block() storage class qualifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
296e8d5fdcf9946f51e866adc8d281379e51efe9 28-Aug-2008 Steve Naroff <snaroff@apple.com> Add parser/action support for block literal expressions.
Parser support for blocks is almost complete...just need to add support for the __block() storage class qualifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
c8ce08a3b93442e54ce14f881f0fdaeb1bd037cd 28-Aug-2008 Ted Kremenek <kremenek@apple.com> Fixed analyzer caching bug involving the transfer function for loads.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
982e674e39b8022ff7dc020f9ed371f3904549c3 28-Aug-2008 Ted Kremenek <kremenek@apple.com> Fixed analyzer caching bug involving the transfer function for loads.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
448ab62469bc7ef086990b9935e999c6b93532be 28-Aug-2008 Ted Kremenek <kremenek@apple.com> Fixed analyzer caching bug in DeclStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55487 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
e6c62e3d43728b0a4477fffd543723dd2170af1a 28-Aug-2008 Ted Kremenek <kremenek@apple.com> Fixed analyzer caching bug in DeclStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55487 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
7cfb85b8d1b17cd6e162f74762c58f95562db1e5 28-Aug-2008 Daniel Dunbar <daniel@zuster.org> Fix double-free error with sizeof applied to VLA types.
- PR2727.

Also, fix warning in CodeGenTypes for new BlockPointer type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55479 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9048891ff983d0681c116c6e8f1073aa31bdd6e8 28-Aug-2008 Daniel Dunbar <daniel@zuster.org> Fix double-free error with sizeof applied to VLA types.
- PR2727.

Also, fix warning in CodeGenTypes for new BlockPointer type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55479 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d38e358df9caf6494cf0e0222dec39c9a48c3b56 28-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
77a49f6b1e5741f6bda71eb7837b43343925027b 28-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
698d6f390d47eff6d4317c9d8423009bb816f3fb 28-Aug-2008 Daniel Dunbar <daniel@zuster.org> NeXT: Emit mostly-correct property type encoding.
- Added ASTContext::getObjCEncodingForPropertyDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c56f34a1c1779de15330bdb3eec39b3418802d47 28-Aug-2008 Daniel Dunbar <daniel@zuster.org> NeXT: Emit mostly-correct property type encoding.
- Added ASTContext::getObjCEncodingForPropertyDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55461 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8904fbee197eae8906ed55a37becf62b35f8af58 28-Aug-2008 Ted Kremenek <kremenek@apple.com> Make the destructor of ConstraintManager virtual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55448 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
05125f180d8f0967d8bcb7e9d578e36eb6905b92 28-Aug-2008 Ted Kremenek <kremenek@apple.com> Make the destructor of ConstraintManager virtual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55448 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ConstraintManager.h
7aa5475ca2f62df5ba3f3b647ee141a40bf48fd3 27-Aug-2008 Steve Naroff <snaroff@apple.com> First wave of changes to support "blocks" (an extension to C).
This commit adds the declaration syntax (and associated type).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
asic/LangOptions.h
arse/DeclSpec.h
5618bd4a52c45fbbb605e3ba885663b2164db8a3 27-Aug-2008 Steve Naroff <snaroff@apple.com> First wave of changes to support "blocks" (an extension to C).
This commit adds the declaration syntax (and associated type).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
asic/LangOptions.h
arse/DeclSpec.h
c6694976950e882d7c06f403d13175a29ea768bc 27-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Refactor Assume logic into a separate class ConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
30ad167f74cb8a04c35ced6c69b116f15d104f8e 27-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Refactor Assume logic into a separate class ConstraintManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/ConstraintManager.h
nalysis/PathSensitive/GRState.h
d01a70258cb228ad8d1739cfec5cbb2507ced3f5 27-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add addPropertyMethods implementations for
ObjC{Category,Protocol}Decl.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7b4732296b5c7e1a53021a8dbb97f39dedbd961f 27-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add addPropertyMethods implementations for
ObjC{Category,Protocol}Decl.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e9772a2dd4a254f6d2695cb026b10c8822abb584 27-Aug-2008 Ted Kremenek <kremenek@apple.com> Added "Auditor" interface for auditing the construction of ExplodedGraphs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55403 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
2e287540c90255e14208e7e5f43f07cb752a1fd7 27-Aug-2008 Ted Kremenek <kremenek@apple.com> Added "Auditor" interface for auditing the construction of ExplodedGraphs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55403 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
0bd7ddd12e41c85faf469d961676ee9112c56303 27-Aug-2008 Ted Kremenek <kremenek@apple.com> Make implementation of ExplodedNodeImpl::addPredecessor out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55402 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
45b8789258b282769b03cbeb68e9f5b0308f067b 27-Aug-2008 Ted Kremenek <kremenek@apple.com> Make implementation of ExplodedNodeImpl::addPredecessor out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55402 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
1450fc8e59b9575d8a6a00959414f2e10d9c9a3b 27-Aug-2008 Ted Kremenek <kremenek@apple.com> Remove default value for 'Pred' argument to GRCoreEngineImpl::GenerateNode().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55392 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
38a23ba1938b3996718d028f3505bc5ef8c07abd 27-Aug-2008 Ted Kremenek <kremenek@apple.com> Remove default value for 'Pred' argument to GRCoreEngineImpl::GenerateNode().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55392 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
6b57d43f67bb4f9bfec53e65ce4787ccf9f4445d 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Objective-C @synthesize support.
- Only supports simple assignment and atomic semantics are ignored.
- Not quite usable yet because the methods do not actually get added
to the class metadata.
- Added ObjCPropertyDecl::getSetterKind (one of Assign, Copy, Retain).
- Rearrange CodeGenFunction so synthesis can reuse function prolog /
epilog code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
af05bb9073319d8381b71c4325188853fd4b8ed6 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Objective-C @synthesize support.
- Only supports simple assignment and atomic semantics are ignored.
- Not quite usable yet because the methods do not actually get added
to the class metadata.
- Added ObjCPropertyDecl::getSetterKind (one of Assign, Copy, Retain).
- Rearrange CodeGenFunction so synthesis can reuse function prolog /
epilog code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55365 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
db3b4491329dd898e6b133be2e193f13fa3123a3 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add ObjCPropertyDecl::isReadOnly.

Respect isReadOnly when generating synthesized method decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
394d33f1f602f7681032a659dff5bb09061ee510 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add ObjCPropertyDecl::isReadOnly.

Respect isReadOnly when generating synthesized method decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dd24b9ac61e21a196e6c2222b97ad60d0aaa377e 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> constify ObjC*::getClassMethod,getInstanceMethod

No (intended) functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55362 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3216dcdebb8ae0f2993ac5f5249caa217444bacf 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> constify ObjC*::getClassMethod,getInstanceMethod

No (intended) functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55362 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
eaf91c3bc35b4802d65c0213388b600108a8c735 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Move implicit Obj-C param creation into ObjCMethodDecl.
- Add ObjCMethodDecl::createImplicitParams.
- Remove ObjCMethodDecl::set{Self,Cmd}Decl
- Remove Sema::CreateImplicitParameter

No (intended) functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
451318c08a6342c10b8986060386fd9274418437 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Move implicit Obj-C param creation into ObjCMethodDecl.
- Add ObjCMethodDecl::createImplicitParams.
- Remove ObjCMethodDecl::set{Self,Cmd}Decl
- Remove Sema::CreateImplicitParameter

No (intended) functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55356 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
14117fc5e21d0994bcbc2cfe9c7baff629f24e62 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Rename ObjCPropertyImplDecl::PropertyImplKind (consistency)
- Change enum name to Kind.
- Change enum constants to English strings.

Also, fix getPropertyImplementation (which probably should be renamed)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9f0afd4e79601d9982072ff9318e6f9a982c770e 26-Aug-2008 Daniel Dunbar <daniel@zuster.org> Rename ObjCPropertyImplDecl::PropertyImplKind (consistency)
- Change enum name to Kind.
- Change enum constants to English strings.

Also, fix getPropertyImplementation (which probably should be renamed)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f5fce10c8a80df09629519cb4c60518873616bb8 25-Aug-2008 Ted Kremenek <kremenek@apple.com> Added 'extents' for Regions.
Added 'getExtent()' to StoreManager.
Implemented 'getExtent()' for BasicStoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55321 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Regions.h
nalysis/PathSensitive/Store.h
d0c4b28aa9e1a0754d71dc61c37cda94bc8d27ed 25-Aug-2008 Ted Kremenek <kremenek@apple.com> Added 'extents' for Regions.
Added 'getExtent()' to StoreManager.
Implemented 'getExtent()' for BasicStoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55321 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Regions.h
nalysis/PathSensitive/Store.h
8d0bcb090775b3285ac99692db61e349eda03366 25-Aug-2008 Anders Carlsson <andersca@mac.com> Objective-C foreach selector elements must be lvalues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1fe379f0fa6fbc0a6057e8966253aea2957ca953 25-Aug-2008 Anders Carlsson <andersca@mac.com> Objective-C foreach selector elements must be lvalues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55316 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cb6d4126d69b135e08f57697e01822837a8c5d9f 24-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Pass SourceRanges by reference to the various Diag methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55284 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a88b509d233d3f42382130c159c05cafa006b3e0 24-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Pass SourceRanges by reference to the various Diag methods.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55284 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
42aeddeb0b9751092971948724991892f58bf93c 24-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add a Parser::Diag overload that can receive a custom string along with a SourceRange.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55283 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
897e7a38c73a28731f8cdbaa4385ca15ab65820c 24-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add a Parser::Diag overload that can receive a custom string along with a SourceRange.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55283 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a586ce15b14d655967114be5a65e78480d0112a7 24-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Rename Preprocessor::DisableBacktrack -> Preprocessor::CommitBacktrackedTokens.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55281 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ed5c38682c056c147c8a4abb748b4f285de206dd 24-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Rename Preprocessor::DisableBacktrack -> Preprocessor::CommitBacktrackedTokens.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55281 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
e70794404ac74f1859dcbd3b11f0b80e1bd0b0a1 24-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Moved HTMLDiagnostics to lib/Driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55274 91177308-0d34-0410-b5e6-96231b3b80d8
river/HTMLDiagnostics.h
8148839c105992f00be9fd23f68f2139a9112ebf 24-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Moved HTMLDiagnostics to lib/Driver.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55274 91177308-0d34-0410-b5e6-96231b3b80d8
river/HTMLDiagnostics.h
da4ffb982f2703a3da0f87c067d8c33b6a9a78ae 24-Aug-2008 Chris Lattner <sabre@nondot.org> Comment tweak.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55272 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
e671e1bc73615eda155059a772266ed2882d758c 24-Aug-2008 Chris Lattner <sabre@nondot.org> Comment tweak.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55272 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
d83141a546b6aa53591ec8ba684da5364661abc6 24-Aug-2008 Anders Carlsson <andersca@mac.com> Add support for parsing the objc_gc attribute. Tests will come shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
aa0d25b44e510a5a62e7345f4fa3840a886841d2 24-Aug-2008 Anders Carlsson <andersca@mac.com> Add support for parsing the objc_gc attribute. Tests will come shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55269 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
07f9adeda2118c4a8739736befc3c102b5ef1d62 23-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> CXXFunctionalCastExpr is a subclass of CastExpr. Make it known to isa/dyn_cast/cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cb6accb4659af86627ce43f7a90bc92f763b075e 23-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> CXXFunctionalCastExpr is a subclass of CastExpr. Make it known to isa/dyn_cast/cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3454295c2de47811a2b7fae8551c11bbd8ef2aff 23-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::useNeXTRuntimeAsDefault
- Used to autoselect runtime when neither -fnext-runtime nor
-fgnu-runtime is specified.
- Default impl is false, all darwin targets set it to true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
dcb4a1a6dd55fdf6c073d2761096f42e26be105a 23-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::useNeXTRuntimeAsDefault
- Used to autoselect runtime when neither -fnext-runtime nor
-fgnu-runtime is specified.
- Default impl is false, all darwin targets set it to true.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c1aea81eeb1cb5eba57d2658ada786ab5eb5a3c9 23-Aug-2008 Chris Lattner <sabre@nondot.org> make sure that ParseAST invokes the action for end of translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55222 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9299f3fa85796613cc787a2062c9562d07c8613e 23-Aug-2008 Chris Lattner <sabre@nondot.org> make sure that ParseAST invokes the action for end of translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55222 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bd0f8f5810dad89263213952ea8c8a84ba373591 23-Aug-2008 Chris Lattner <sabre@nondot.org> add action to know about end of translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55218 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a9e8fec80088f4e176d80b84bddddfbc9ab0f548 23-Aug-2008 Chris Lattner <sabre@nondot.org> add action to know about end of translation unit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55218 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
818350cf723b5ee1c4707e78210adc5267ce9f36 23-Aug-2008 Chris Lattner <sabre@nondot.org> we already have a handle on the 'in' keyword, don't bother getting two.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55217 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5ffb14b7e88e587cd2f78dcc3a966a64108920f0 23-Aug-2008 Chris Lattner <sabre@nondot.org> we already have a handle on the 'in' keyword, don't bother getting two.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55217 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f7df4d19c10a7d7ed2b49a4f057a4ee39c6fb85b 23-Aug-2008 Chris Lattner <sabre@nondot.org> minor cleanup, remove finalize method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55216 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
06f548596beef4c0a227a45cba996497f99566c0 23-Aug-2008 Chris Lattner <sabre@nondot.org> minor cleanup, remove finalize method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55216 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b576933316d6be9777b5c60f1a31d89cc0b14f29 23-Aug-2008 Chris Lattner <sabre@nondot.org> Fix a FIXME by not creating an invalid AST on erroneous input. Also
make diagnostic output in some other malformed cases significantly
more useful. This fixes PR2708


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e8904e992ca5e821b199c4577e8b5e5b17a33b1d 23-Aug-2008 Chris Lattner <sabre@nondot.org> Fix a FIXME by not creating an invalid AST on erroneous input. Also
make diagnostic output in some other malformed cases significantly
more useful. This fixes PR2708


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55215 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4fbc6418a48a094bd25b5e45193499da855e732a 23-Aug-2008 Ted Kremenek <kremenek@apple.com> Simplify interface to Store::AddDecl


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55213 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
e53c069bdaf0683f52ecfaf45ccfc816fdb4288f 23-Aug-2008 Ted Kremenek <kremenek@apple.com> Simplify interface to Store::AddDecl


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55213 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
000da5a2f41109d8eedf9576197f3241934e8b44 23-Aug-2008 Ted Kremenek <kremenek@apple.com> Added Regions.h: Regions define abstract memory locations for the static analyzer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55211 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Regions.h
nalysis/PathSensitive/Store.h
f03a8d276ced40f55478bfc29326c4365510e84c 23-Aug-2008 Ted Kremenek <kremenek@apple.com> Added Regions.h: Regions define abstract memory locations for the static analyzer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55211 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Regions.h
nalysis/PathSensitive/Store.h
a9a0f4b70656d49cac754547ae3f5e60b09f0997 22-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Allow nested backtracks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55204 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
a9e274c01ebae45629d93aaa07be450fb77dd3cb 22-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow nested backtracks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55204 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c9f8ccd5c7e6b6686113440bc11e1bf341681cc0 22-Aug-2008 Anders Carlsson <andersca@mac.com> Add preliminary (and probably broken) codegen support for C++ static initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e1b29efab32d02e114046d33cca242a88585bf8a 22-Aug-2008 Anders Carlsson <andersca@mac.com> Add preliminary (and probably broken) codegen support for C++ static initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
7a1e74100c4f7e3f0e85775861cdf4851df616bd 22-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add support for C++'s "type-specifier ( expression-list )" expression:

-The Parser calls a new "ActOnCXXTypeConstructExpr" action.
-Sema, depending on the type and expressions number:
-If the type is a class, it will treat it as a class constructor. [TODO]
-If there's only one expression (i.e. "int(0.5)" ), creates a new "CXXFunctionalCastExpr" Expr node
-If there are no expressions (i.e "int()" ), creates a new "CXXZeroInitValueExpr" Expr node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55177 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
987a14bf5883ef6e5d07f1c83eb6d41a8212a78c 22-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add support for C++'s "type-specifier ( expression-list )" expression:

-The Parser calls a new "ActOnCXXTypeConstructExpr" action.
-Sema, depending on the type and expressions number:
-If the type is a class, it will treat it as a class constructor. [TODO]
-If there's only one expression (i.e. "int(0.5)" ), creates a new "CXXFunctionalCastExpr" Expr node
-If there are no expressions (i.e "int()" ), creates a new "CXXZeroInitValueExpr" Expr node.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55177 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
770e388f6c7d0614b13a663b7c6f996db14d7229 22-Aug-2008 Nico Weber <nicolasweber@gmx.de> Move most of HeaderSearch initialization to libDriver.

For example, adding the default system include paths in clients is now as
simple as

InitHeaderSearch init(headers);
init.AddDefaultSystemIncludePaths(langopts);
init.Realize();



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55174 91177308-0d34-0410-b5e6-96231b3b80d8
river/InitHeaderSearch.h
0fca022d77b89100e746f4d659b84ed5b1ee0158 22-Aug-2008 Nico Weber <nicolasweber@gmx.de> Move most of HeaderSearch initialization to libDriver.

For example, adding the default system include paths in clients is now as
simple as

InitHeaderSearch init(headers);
init.AddDefaultSystemIncludePaths(langopts);
init.Realize();



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55174 91177308-0d34-0410-b5e6-96231b3b80d8
river/InitHeaderSearch.h
36104c1a2a18f1f78eba031e3a7a76d40416c4a7 22-Aug-2008 Eli Friedman <eli.friedman@gmail.com> Minor const cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
86da77fdaf4c0237eafb9670f54eee20b08635bf 22-Aug-2008 Eli Friedman <eli.friedman@gmail.com> Minor const cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
0d9549ba8a0dfae3cc59532884a050c098bc9418 22-Aug-2008 Eli Friedman <eli.friedman@gmail.com> Rewrite type compatibility testing to do type merging rather than just
testing compatibility. This is necessary for some constructs, like merging
redeclarations.

Also, there are some ObjC changes to make sure that
typesAreCompatible(a,b) == typesAreCompatible(b,a). I don't have any
ObjC code beyond the testsuite, so please tell me if there are any cases
where this doesn't behave as expected.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3d815e7eb56c25d7ed812eced32e41df43039f9a 22-Aug-2008 Eli Friedman <eli.friedman@gmail.com> Rewrite type compatibility testing to do type merging rather than just
testing compatibility. This is necessary for some constructs, like merging
redeclarations.

Also, there are some ObjC changes to make sure that
typesAreCompatible(a,b) == typesAreCompatible(b,a). I don't have any
ObjC code beyond the testsuite, so please tell me if there are any cases
where this doesn't behave as expected.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55158 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2378ba0bc36ecc5cc5cc0ece535afe84d7a4767b 22-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Move the handling of DeclStmt from GRExprEngine to BasicStoreManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
bbe8ff48be1728ef145c874d6d99879fac78892f 22-Aug-2008 Zhongxing Xu <xuzhongxing@gmail.com> Move the handling of DeclStmt from GRExprEngine to BasicStoreManager.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
67e778b69acc0d657966c50e9df7118ecfdc1b7f 21-Aug-2008 Daniel Dunbar <daniel@zuster.org> NeXT: Emit [meta]class protocol references.

Updated ObjCProtocolDecl::protocol_iterator to match that of
ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dbc933701d20918add13b6a3c9d47ff8c75419cf 21-Aug-2008 Daniel Dunbar <daniel@zuster.org> NeXT: Emit [meta]class protocol references.

Updated ObjCProtocolDecl::protocol_iterator to match that of
ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
34c850809dc1f97ca3003e24d3cd02cf19e9f5d5 21-Aug-2008 Chris Lattner <sabre@nondot.org> add a simple check to warn people who type "=+" when they probably meant
"+=".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55131 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2c15647dce6de66f673cc64236913732d6289317 21-Aug-2008 Chris Lattner <sabre@nondot.org> add a simple check to warn people who type "=+" when they probably meant
"+=".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55131 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d8bd6822067df6da893ecbc112839258fcc08715 20-Aug-2008 Daniel Dunbar <daniel@zuster.org> Fix attributes on Obj-C interfaces & methods.
- Drop MethodAttrs parameter to ObjCMethodDecl
- Call ProcessDeclAttributeList for interface & method decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55068 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f6414927e67e27d9324d8d179c5f7ea620443924 20-Aug-2008 Daniel Dunbar <daniel@zuster.org> Fix attributes on Obj-C interfaces & methods.
- Drop MethodAttrs parameter to ObjCMethodDecl
- Call ProcessDeclAttributeList for interface & method decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55068 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3a53916ab9962cbb5a43b4e00e19b898a5a8e6f5 20-Aug-2008 Ted Kremenek <kremenek@apple.com> Patch by Zhongxing Xu:

This patch moves some code in GRStateManager::RemoveDeadBindings() to EnvironmentManager::RemoveDeadBindings().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55064 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
df9cdf8fce5bb43b335994f946f7c8e3a3bca7fa 20-Aug-2008 Ted Kremenek <kremenek@apple.com> Patch by Zhongxing Xu:

This patch moves some code in GRStateManager::RemoveDeadBindings() to EnvironmentManager::RemoveDeadBindings().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55064 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
e5bedfe77babdf1060c875b3f303d8d331e4598b 20-Aug-2008 Ted Kremenek <kremenek@apple.com> Added ObjCAtDefsFieldDecl to represent FieldDecls created by @defs.
This fixes an ownership issue where FieldDecls could be owned both by an ObjCInterfaceDecl and a RecordDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
01e6779faca1e3a3164c697d6e2dfee0881a6981 20-Aug-2008 Ted Kremenek <kremenek@apple.com> Added ObjCAtDefsFieldDecl to represent FieldDecls created by @defs.
This fixes an ownership issue where FieldDecls could be owned both by an ObjCInterfaceDecl and a RecordDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
bdff9a967335e14690038f8bd484f925b0b39dfc 20-Aug-2008 Ted Kremenek <kremenek@apple.com> Move store pretty-printing logic inside of StoreManager (previously in GRState).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55013 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
a622d8c2719e927b47f48dbebcece770e752dfb8 20-Aug-2008 Ted Kremenek <kremenek@apple.com> Move store pretty-printing logic inside of StoreManager (previously in GRState).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55013 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
e2fb8c72b130ec9ef6a3c732aa6d8da054e706fa 19-Aug-2008 Ted Kremenek <kremenek@apple.com> Patch by Zhongxing Xu!

This patch extends BasicStoreManager::getInitialStore() to include code that symbolicates input variables.
It also removes redundant handling of ImplicitParamDecl, since it is a subclass of VarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54993 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
caa3724b1d525a888982f94a6ae2b527eb3bca7d 19-Aug-2008 Ted Kremenek <kremenek@apple.com> Patch by Zhongxing Xu!

This patch extends BasicStoreManager::getInitialStore() to include code that symbolicates input variables.
It also removes redundant handling of ImplicitParamDecl, since it is a subclass of VarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54993 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/Store.h
c45e2fb32e93cda8c423c721fae52b7321e2ee04 19-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add ExplicitCastExpr to replace the current CastExpr, and have ImplicitCastExpr and ExplicitCastExpr derive from a common base class (CastExpr):

Expr
-> CastExpr
-> ExplicitCastExpr
-> ImplicitCastExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
0835a3cdeefe714b4959d31127ea155e56393125 19-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add ExplicitCastExpr to replace the current CastExpr, and have ImplicitCastExpr and ExplicitCastExpr derive from a common base class (CastExpr):

Expr
-> CastExpr
-> ExplicitCastExpr
-> ImplicitCastExpr

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
823f51978b198f35527b59cee033ede54ad1116c 19-Aug-2008 Chris Lattner <sabre@nondot.org> proper grammar n stuph


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54954 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4f3278fe397250b75ba5a0b5a6cf98309bd2ad2c 19-Aug-2008 Chris Lattner <sabre@nondot.org> proper grammar n stuph


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54954 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
31fccafe4379c59e18f9b8c62c00945590fae6e9 19-Aug-2008 Chris Lattner <sabre@nondot.org> warn when someone tries to make an array of ObjC interfaces instead of array
of pointers to them. rdar://4304469


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
43477ca46792311640cf29b7cff731e29bebb146 19-Aug-2008 Chris Lattner <sabre@nondot.org> warn when someone tries to make an array of ObjC interfaces instead of array
of pointers to them. rdar://4304469


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b052a839ef3afd954146645d21fa2769412aabeb 18-Aug-2008 Chris Lattner <sabre@nondot.org> Several cleanups and tweaks to diagnostics in Sema::ActOnAsmStmt,
no other functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54941 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1708b963a014b48103e78131f960a13ee1aa6d0c 18-Aug-2008 Chris Lattner <sabre@nondot.org> Several cleanups and tweaks to diagnostics in Sema::ActOnAsmStmt,
no other functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54941 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e2247808489909944edb002dbd8ad48305b91cfb 18-Aug-2008 Daniel Dunbar <daniel@zuster.org> Make TargetInfo::DescriptionString const (avoid compiler warnings)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
77e8b53fe3ff630d8d1454db94e38bedda14d5ca 18-Aug-2008 Daniel Dunbar <daniel@zuster.org> Make TargetInfo::DescriptionString const (avoid compiler warnings)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54928 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ebd8f0f733941871aab785716aab27cb97fdcb38 18-Aug-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to override description string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
364af81157a81cf34bb058a7d5b0185020e5164b 18-Aug-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Allow targets to override description string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54914 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
85bd81edce4057156d7f49408147f07daa675096 17-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Type::isIntegerType() returns true for types between Bool and LongLong.
Put WChar between them to make it integer type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2ff9b4c7c8fed9233a0b8de2e9507368c451aab6 17-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Type::isIntegerType() returns true for types between Bool and LongLong.
Put WChar between them to make it integer type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9178120328d1a718dc5ff7cdc925583a379b4f0b 17-Aug-2008 Ted Kremenek <kremenek@apple.com> Migrate the retain/release checker to not manage the RefBindings::Factory object
directly, but instead have GRStateManager manage it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54862 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRStateTrait.h
b9d17f9384651d1052a17978d2e160448bfad404 17-Aug-2008 Ted Kremenek <kremenek@apple.com> Migrate the retain/release checker to not manage the RefBindings::Factory object
directly, but instead have GRStateManager manage it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54862 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRStateTrait.h
80fcbb9adfa841c7ac02b79dd0f61fc7e40c6f0f 17-Aug-2008 Ted Kremenek <kremenek@apple.com> Migrate GRState::ConstEqTy (map used from tracking constants for symbols) to use the generic data map instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54860 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
ffdbefd4415c33c8e1a25a950f36cb8e1e2c8673 17-Aug-2008 Ted Kremenek <kremenek@apple.com> Migrate GRState::ConstEqTy (map used from tracking constants for symbols) to use the generic data map instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54860 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
67ff8b934c5d2b5d881601f6fb6a902024b8317b 17-Aug-2008 Ted Kremenek <kremenek@apple.com> Added GRStateTrait.h, which includes boilerplate code for creating specializations of GRStateTrait<>.
Modified GRStateTrait<ConstNotEq> in GRState to use the boilerplate in GRStateTrait<> for ImmutableMaps.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54859 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
nalysis/PathSensitive/GRWorkList.h
e7aa9a13642f50101ac1718098b41f8788b115bc 17-Aug-2008 Ted Kremenek <kremenek@apple.com> Added GRStateTrait.h, which includes boilerplate code for creating specializations of GRStateTrait<>.
Modified GRStateTrait<ConstNotEq> in GRState to use the boilerplate in GRStateTrait<> for ImmutableMaps.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54859 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRStateTrait.h
nalysis/PathSensitive/GRWorkList.h
83dce119c4264b8a5ac2de5fd12f5902a36c519f 16-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Put (argument)-expression-list parsing in a separate function so that it can be re-used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54851 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0cd5b429fad6833dda23f0aced14a10907ac5539 16-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Put (argument)-expression-list parsing in a separate function so that it can be re-used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54851 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
43c6fdcb036d2f90a587127c7f465cb330ffbf83 16-Aug-2008 Nico Weber <nicolasweber@gmx.de> add missing class declaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54841 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
7b802b7d94b7bb1508ded6fefc84aca1eda0ec05 16-Aug-2008 Nico Weber <nicolasweber@gmx.de> add missing class declaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54841 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
93755040e307b573a7c803c6989e46f4132556be 16-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Declarator class considers DeclSpec as immutable; Declarator::getMutableDeclSpec should be used rarely and with care.
Have Declarator accept and use a 'const DeclSpec &', instead of 'DeclSpec &', to make DeclSpec's immutability more explicit.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54839 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e1449e51016fa7868d241c9e451253929d188bb9 16-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Declarator class considers DeclSpec as immutable; Declarator::getMutableDeclSpec should be used rarely and with care.
Have Declarator accept and use a 'const DeclSpec &', instead of 'DeclSpec &', to make DeclSpec's immutability more explicit.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54839 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
b0f2b9ecff764d1512408fcb324e70ab5bbf765d 16-Aug-2008 Ted Kremenek <kremenek@apple.com> GRState:
- Remove ConstNotEq from GRState/GRStateManager (!= tracking uses GDM instead).
- GRStateManager now can book-keep "contexts" (e.g., factory objects) for uses
with data elements stored into the GDM.
- Refactor pretty-printing of states to use GRState::Printer objects
exclusively. This removed a huge amount of pretty-printing logic from
GRExprEngine.

CFRefCount
- Simplified some API calls based on refinements to the GDM api.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54835 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
1c72ef092f3d931639cf44b4f4f9d0eedc1baa8f 16-Aug-2008 Ted Kremenek <kremenek@apple.com> GRState:
- Remove ConstNotEq from GRState/GRStateManager (!= tracking uses GDM instead).
- GRStateManager now can book-keep "contexts" (e.g., factory objects) for uses
with data elements stored into the GDM.
- Refactor pretty-printing of states to use GRState::Printer objects
exclusively. This removed a huge amount of pretty-printing logic from
GRExprEngine.

CFRefCount
- Simplified some API calls based on refinements to the GDM api.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54835 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
fb8e934a91506d30734770061922b1402cdae6e1 16-Aug-2008 Daniel Dunbar <daniel@zuster.org> Update Expr::{getIntegerConstantExprValue, isIntegerConstantExpr} to
use default APSInt constructor instead of embedding arbitrary
constant.

Update OverloadExpr::getNumArgs to use getIntegerConstantExprValue.

Update OverloadExpr::getExpr to be const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8070a8497c0fb3e6f70a557f788405d8945b1208 16-Aug-2008 Daniel Dunbar <daniel@zuster.org> Update Expr::{getIntegerConstantExprValue, isIntegerConstantExpr} to
use default APSInt constructor instead of embedding arbitrary
constant.

Update OverloadExpr::getNumArgs to use getIntegerConstantExprValue.

Update OverloadExpr::getExpr to be const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54828 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
232200866d298066c4a22e7d92587f3cd856bd7c 16-Aug-2008 Daniel Dunbar <daniel@zuster.org> Ident class tree in DeclBase properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
226e04a9b7790a7311aff2aa9df340c1841e20e3 16-Aug-2008 Daniel Dunbar <daniel@zuster.org> Ident class tree in DeclBase properly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
4837ae7c6630d2f6381ca0fd53c1e71742d5305f 15-Aug-2008 Daniel Dunbar <daniel@zuster.org> Change Parser & Sema to use interned "super" for comparions.
- Added as private members for each because it is not clear where to
put the common definition. Perhaps the IdentifierInfos all of these
"pseudo-keywords" should be collected into one place (this would
KnownFunctionIDs and Objective-C property IDs, for example).

Remove Token::isNamedIdentifier.
- There isn't a good reason to use strcmp when we have interned
strings, and there isn't a good reason to encourage clients to do
so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54794 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
arse/Parser.h
662e8b5647adbb1bc9eeceece7b64600cfa87471 15-Aug-2008 Daniel Dunbar <daniel@zuster.org> Change Parser & Sema to use interned "super" for comparions.
- Added as private members for each because it is not clear where to
put the common definition. Perhaps the IdentifierInfos all of these
"pseudo-keywords" should be collected into one place (this would
KnownFunctionIDs and Objective-C property IDs, for example).

Remove Token::isNamedIdentifier.
- There isn't a good reason to use strcmp when we have interned
strings, and there isn't a good reason to encourage clients to do
so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54794 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
arse/Parser.h
4ae925cbdccd267983f32473a146eba47ba73f09 14-Aug-2008 Ted Kremenek <kremenek@apple.com> Migrated retain/release checker to use the Generic Data Map in GRState (instead
of using CheckerState).

Removed CheckerState from GRState.

Added class GRStateRef which wraps GRState* and GRStateManager*. This is handy
for generating new states with a single handle.

Added member template set/get functions to GRStateRef/GRState/GRStateManager for
accessing the Generic Data Map.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
72cd17f0a4722e1fa3eb47c08a7aa29aeba16754 14-Aug-2008 Ted Kremenek <kremenek@apple.com> Migrated retain/release checker to use the Generic Data Map in GRState (instead
of using CheckerState).

Removed CheckerState from GRState.

Added class GRStateRef which wraps GRState* and GRStateManager*. This is handy
for generating new states with a single handle.

Added member template set/get functions to GRStateRef/GRState/GRStateManager for
accessing the Generic Data Map.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
bccfbcccc233f098839cc07a766b8003f460b00e 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Renamed GRState::CheckerStatePrinter to GRState::Printer.
Updated checker state printer interface to allow transfer functions to return an arbitrary number of GRState::Printers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54762 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
ae6814efb6c41bd0c0f6413d25097105284d5be7 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Renamed GRState::CheckerStatePrinter to GRState::Printer.
Updated checker state printer interface to allow transfer functions to return an arbitrary number of GRState::Printers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54762 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/GRTransferFuncs.h
a8942d2ae622693bab72ad2a3c7bb7946485776e 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Rename ValueState.h -> GRState.h
Rename ValueState.cpp -> GRState.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/ValueState.h
62e1dcca86e2b2be6168a447f0399337e2b71f33 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Rename ValueState.h -> GRState.h
Rename ValueState.cpp -> GRState.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRState.h
nalysis/PathSensitive/ValueState.h
abd89ac0af969666c74b3979ac87076bbb444b46 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Rename ValueState -> GRState.
Rename ValueStateManager -> GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54721 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
4adc81e540b874bafa15715fd2c5cb662463debd 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Rename ValueState -> GRState.
Rename ValueStateManager -> GRStateManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54721 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
6f25b01242026af9ede2e609aa23d158b9966f37 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Fix memory leak found by Sam Bishop: delete WList in the dstor of GRCoreEngineImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
5c135b47d0fcdc33c912c4ed2ea750bdd6064da3 13-Aug-2008 Ted Kremenek <kremenek@apple.com> Fix memory leak found by Sam Bishop: delete WList in the dstor of GRCoreEngineImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
c5bd49cfd778669340085155c2133448e36b7d8a 12-Aug-2008 Ted Kremenek <kremenek@apple.com> Added GenericDataMap as a component of ValueState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54704 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
450202284e7e0a1758be935ee6ae1296cc9dc97d 12-Aug-2008 Ted Kremenek <kremenek@apple.com> Added GenericDataMap as a component of ValueState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54704 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
1be1df38bc96c806d045260cd25e96f09b041c51 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add LangOptions::NeXTRuntime.
- Wired to -fnext-runtime and -fgnu-runtime options.
- Defaults to GNU, no autoselection for NeXT.

Emit NeXT OBJC_IMAGE_INFO marker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
f77ac86f4eca528a04b817d7ad7f045a47d52712 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add LangOptions::NeXTRuntime.
- Wired to -fnext-runtime and -fgnu-runtime options.
- Defaults to GNU, no autoselection for NeXT.

Emit NeXT OBJC_IMAGE_INFO marker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54651 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
91692d902021997bf99836c1b8f7421204be8cf5 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add -fexceptions to Driver
- Maps to LangOptions.Exceptions
- Currently always off, should autoselect based on language.

Update CodeGen to set unwind attribute on functions definitions based
on LangOptions.Exceptions.
- Still need to set attributes appropriately on calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
6379a7a15335e0af543a942efe9cfd514a83dab8 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add -fexceptions to Driver
- Maps to LangOptions.Exceptions
- Currently always off, should autoselect based on language.

Update CodeGen to set unwind attribute on functions definitions based
on LangOptions.Exceptions.
- Still need to set attributes appropriately on calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54643 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
64789f8496d9bd3ff5ba3686feca0de1a25d5a32 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> More #include cleaning
- Drop {Decl.h,DeclObjC.h,IdentifierTable.h} from Expr.h
- Moved Sema::getCurMethodDecl() out of line (dependent on
ObjCMethodDecl via dyn_cast).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
c4a1dea2dc56bd1357ec91b829a0b9e68229a13e 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> More #include cleaning
- Drop {Decl.h,DeclObjC.h,IdentifierTable.h} from Expr.h
- Moved Sema::getCurMethodDecl() out of line (dependent on
ObjCMethodDecl via dyn_cast).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54629 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/ExprObjC.h
de30073d24ef186212a70e2a21f488767e45b7fb 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> More #include cleaning
- Drop Expr.h,RecordLayout.h from ASTContext.h (for DeclBase.h and
SourceLocation.h)
- Move ASTContext constructor into implementation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e91593ef084479340582b2ba177b44be50a717b7 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> More #include cleaning
- Drop Expr.h,RecordLayout.h from ASTContext.h (for DeclBase.h and
SourceLocation.h)
- Move ASTContext constructor into implementation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cc7b160a9a4400a0c38da1caa97ba383337d08bf 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> More #include cleaning
- Drop Diagnostic.h from DeclSpec.h, move utility Diag methods into
implementation .cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54626 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e4858a65a93fb36c099d8dd2ea0a98e33e77687e 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> More #include cleaning
- Drop Diagnostic.h from DeclSpec.h, move utility Diag methods into
implementation .cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54626 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
8d03cbe313bd0577f66d84e0f355835017da6f72 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> Minor #include cleaning
- Drop TokenKinds.h from Action.h
- Move DeclSpec.h from Sema.h into individual Sema .cpp files


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54625 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
12bc692a78582f1cc32791325981aadcffb04c5e 11-Aug-2008 Daniel Dunbar <daniel@zuster.org> Minor #include cleaning
- Drop TokenKinds.h from Action.h
- Move DeclSpec.h from Sema.h into individual Sema .cpp files


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54625 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d2a6ac9cd5cc5153ce9a4385a1f979714091fc71 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> * Remove isInSystemHeader() from DiagClient, move it to SourceManager
* Move FormatError() from TextDiagnostic up to DiagClient, remove now
empty class TextDiagnostic
* Make DiagClient optional for Diagnostic

This fixes the following problems:

* -html-diags (and probably others) does now output the same set of
warnings as console clang does
* nothing crashes if one forgets to call setHeaderSearch() on
TextDiagnostic
* some code duplication is removed




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/SourceLocation.h
asic/SourceManager.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
river/TextDiagnostics.h
ex/Preprocessor.h
7bfaaaecb3113f955db31e8d8a51acffd1bc0c27 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> * Remove isInSystemHeader() from DiagClient, move it to SourceManager
* Move FormatError() from TextDiagnostic up to DiagClient, remove now
empty class TextDiagnostic
* Make DiagClient optional for Diagnostic

This fixes the following problems:

* -html-diags (and probably others) does now output the same set of
warnings as console clang does
* nothing crashes if one forgets to call setHeaderSearch() on
TextDiagnostic
* some code duplication is removed




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54620 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
asic/SourceLocation.h
asic/SourceManager.h
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
river/TextDiagnostics.h
ex/Preprocessor.h
929832c339a9c0311b76f8580455ab5b40df2d9d 10-Aug-2008 Steve Naroff <snaroff@apple.com> Forgot to modify LAST_EXPR (thanks Nuno).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
3ac5e9fc38e1a59da84844f6adb95e803779098d 10-Aug-2008 Steve Naroff <snaroff@apple.com> Forgot to modify LAST_EXPR (thanks Nuno).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
0ccfaa48d37ba626d1e6f1322d03e74110be4215 10-Aug-2008 Steve Naroff <snaroff@apple.com> Cleanup ObjCSuperRefExpr (remove last usage and AST node:-).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
76de9d7a32b16246e2acd0d1ecd7355faceb4901 10-Aug-2008 Steve Naroff <snaroff@apple.com> Cleanup ObjCSuperRefExpr (remove last usage and AST node:-).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
ff5b3a862b84e22452a1bd8f6dd3af4b727f382c 10-Aug-2008 Steve Naroff <snaroff@apple.com> InitListChecker::CheckListElementTypes(): Check for function types and issue an appropriate diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
613535273b90dc5cbd0f9fa056dedc93801ea35a 10-Aug-2008 Steve Naroff <snaroff@apple.com> InitListChecker::CheckListElementTypes(): Check for function types and issue an appropriate diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54614 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f55b1101191cf07c0836bc609050674628e431b2 10-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Allow the preprocessor to cache the lexed tokens, so that we can do efficient lookahead and backtracking.

1) New public methods added:
-EnableBacktrackAtThisPos
-DisableBacktrack
-Backtrack
-isBacktrackEnabled

2) LookAhead() implementation is replaced with a more efficient one.
3) LookNext() is removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54611 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
arse/Parser.h
03db1b31dd926409b7defc1c90b66549464652c0 10-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Allow the preprocessor to cache the lexed tokens, so that we can do efficient lookahead and backtracking.

1) New public methods added:
-EnableBacktrackAtThisPos
-DisableBacktrack
-Backtrack
-isBacktrackEnabled

2) LookAhead() implementation is replaced with a more efficient one.
3) LookNext() is removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54611 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
arse/Parser.h
4e596cf2381e1d8f689247d3acc310a25166899c 10-Aug-2008 Daniel Dunbar <daniel@zuster.org> Update ShuffeVectorExpr::getShuffleMaskIdx to use
getIntegerConstantExprValue.

Tweak getIntegerConstantExprValue to suppress warning in
Release-Asserts mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a5d1cb7ef3f0780540e7fd7180399fd220ef0210 10-Aug-2008 Daniel Dunbar <daniel@zuster.org> Update ShuffeVectorExpr::getShuffleMaskIdx to use
getIntegerConstantExprValue.

Tweak getIntegerConstantExprValue to suppress warning in
Release-Asserts mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
941c0104030b3468e896fc24eecb820fdff6d41b 10-Aug-2008 Chris Lattner <sabre@nondot.org> tighten up some code and some wording on diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d1a0b6d3dfb208f638d3d750b588d9c0daa49289 10-Aug-2008 Chris Lattner <sabre@nondot.org> tighten up some code and some wording on diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54607 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1543ae9d543a0e061cc89d416ddcf3e3e8802409 10-Aug-2008 Chris Lattner <sabre@nondot.org> wrap some long diagnostics, make 'initializer is not a constant' diagnostic
a bit more clear (rdar://5646070)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d8803632d248a360a040ff03eff1162988058036 10-Aug-2008 Chris Lattner <sabre@nondot.org> wrap some long diagnostics, make 'initializer is not a constant' diagnostic
a bit more clear (rdar://5646070)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54606 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
69909293d4d0bdffef36121651906f7d2e767d85 10-Aug-2008 Chris Lattner <sabre@nondot.org> rename PreDefinedExpr -> PredefinedExpr



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
d9f6910f4ef37c0e8eeee2a01287d9572c3176ef 10-Aug-2008 Chris Lattner <sabre@nondot.org> rename PreDefinedExpr -> PredefinedExpr



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54605 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
2bbdcae933f6acfb7293e3dfb7c67084bfd92a23 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> add assert, use make_pair() instead of pair constructor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b243fe5a812faddf9ec39525727739a85f603ae6 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> add assert, use make_pair() instead of pair constructor

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54596 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
a6c33e08e68dde9fa1f49be5ea52cc3b080baef2 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> fix spello

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54594 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
dee8ecc93825062eb441bfeb7a338d3f2c5ea3f0 10-Aug-2008 Nico Weber <nicolasweber@gmx.de> fix spello

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54594 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
f0a835cdaa9720d928a83465adfc789c9cc32eb7 09-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Expressive diagnostics-- worth their weight in gold?
(Fixing a spelling error.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54591 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
aad6953ca1149d44cebadca8839745796bfd524e 09-Aug-2008 Gordon Henriksen <gordonhenriksen@mac.com> Expressive diagnostics-- worth their weight in gold?
(Fixing a spelling error.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54591 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticPrinter.h
2a4e1161b2d5450e0e91d00993a4d2e04df1731f 09-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Change 'Wchar' to 'WChar' casing, for consistency.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
55f4b02bc71e7347986c6a5249bef635aac1901a 09-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change 'Wchar' to 'WChar' casing, for consistency.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1ed03e75c3a03edea7234a3021f76e808d283f2f 09-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Implement support for the 'wchar_t' C++ type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
64c438a4be2a871fa43c78264663ba1e9788b94d 09-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement support for the 'wchar_t' C++ type.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
arse/DeclSpec.h
448b4e4e3b3924b26d2dd855c81db54570a58b51 09-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Passing right brace location to ActOnFinishCXXClassDef is redundant, since it gets passed to ActOnFinishCXXMemberSpecification too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54567 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
5b7f0c8f470f0b23ee95e467b5951e2bed733be1 09-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Passing right brace location to ActOnFinishCXXClassDef is redundant, since it gets passed to ActOnFinishCXXMemberSpecification too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54567 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
90a8c56548089c0697595348ce38efa69be6add2 09-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Make RecordDecl::Destroy() public.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
243e4b2fd53c9505a90d11def53315bfbcc6ef97 09-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make RecordDecl::Destroy() public.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
00c3088502598fab4e0956cdeedbd2477869d618 08-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Change line endings, CRLF -> LF.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54530 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
296e8671bca0d1d54c0755ba3fc1c7b285924fe6 08-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Change line endings, CRLF -> LF.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54530 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
86cc394b773f087257317fadf4009121cbfdb13e 08-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Revert my previous commit where I replaced cast<> with static_cast<> in CXXFieldDecl::getMember().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
274479ec1f0fd5e8ee556854fb0e9b618448ffab 08-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Revert my previous commit where I replaced cast<> with static_cast<> in CXXFieldDecl::getMember().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54529 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
d64c1112f5503360deb70cacead9ec11d56304d1 08-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Destroy and delete the FieldDecl members of a RecordDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54527 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
997b6c6d73541f010afc81e28191c8eae7b24f77 08-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Destroy and delete the FieldDecl members of a RecordDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54527 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ffafe4508c81947a2c247b2358334d5b79c5e721 08-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add iterator access to field members for RecordDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
afebac1df82d16d6889470801e82501d714149c0 08-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add iterator access to field members for RecordDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54526 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c38918b56115b9d1794678062a820975674ee32d 08-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Use static_cast<> instead of cast<> for CXXFieldDecl::getMember().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
fef35f1ce99765670482124e2bd640bbe7a20a4f 08-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use static_cast<> instead of cast<> for CXXFieldDecl::getMember().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclCXX.h
50aab983b538c9df3400aa41178648e3d1bd3106 08-Aug-2008 Ted Kremenek <kremenek@apple.com> ParseAST now never releases the passed ASTConsumer. This is the responsibility of the client.
The motivation is that clients may either:

(a) query the ASTConsumer object after AST parsing to collect data/etc.
(b) reuse the ASTConsumer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54502 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
7e7e6253d45eb2ca4a4ad9cafcb8b80693f0670a 08-Aug-2008 Ted Kremenek <kremenek@apple.com> ParseAST now never releases the passed ASTConsumer. This is the responsibility of the client.
The motivation is that clients may either:

(a) query the ASTConsumer object after AST parsing to collect data/etc.
(b) reuse the ASTConsumer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54502 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
26da970ce22173d2b55d542aa354708f0785f8d2 08-Aug-2008 Ted Kremenek <kremenek@apple.com> Added AssumeSymGT, AssumeSymGE, AssumeSymLT, AssumeSymLE to add some minor improvements to path-sensitivity. Right now we basically treat 'x > y' and 'x < y' as implying 'x != y', but this restriction will only inevitably apply to our must rudimentary value tracking component (we'll implement more advanced value reasoning later).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
2619be072ccc6a722278d1ec39b98eae068d3da3 08-Aug-2008 Ted Kremenek <kremenek@apple.com> Added AssumeSymGT, AssumeSymGE, AssumeSymLT, AssumeSymLE to add some minor improvements to path-sensitivity. Right now we basically treat 'x > y' and 'x < y' as implying 'x != y', but this restriction will only inevitably apply to our must rudimentary value tracking component (we'll implement more advanced value reasoning later).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54493 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
b165a9ec9058187375703a34401fdb0a90e1d165 07-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Clear DeclSpec::AsmLabel in DeclSpec::clear().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54489 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
107450c6d846b2da5ecefbb088942e9478a83de7 07-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Clear DeclSpec::AsmLabel in DeclSpec::clear().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54489 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
ea29d1ec6b76c3722d7c0fb6a3d35c2d8cc74a79 07-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add CXXRecordType class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
49aa7ff1245abd03e6e998e01302df31e4c6f8f6 07-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add CXXRecordType class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54488 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b062aceeceee1714e060699f2efbd337c3178c3e 07-Aug-2008 Ted Kremenek <kremenek@apple.com> Fix 80 col violation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54487 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
7cf0a7a4c6554d67f360e4efa06cdc2fcca33886 07-Aug-2008 Ted Kremenek <kremenek@apple.com> Fix 80 col violation


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54487 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
2866ea403a80f514798c50f5d2d49479a1c0cf4c 07-Aug-2008 Ted Kremenek <kremenek@apple.com> ParseAST now conditionally deletes the passed ASTConsumer.
ModuleBuilder now performs llvmgen in HandleTranslationUnit.

This patch follows from the discussion on the following thread on cfe-commits:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080804/006849.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54486 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
159346a82bfa5063ead81af903a2bc5e5a9e5b36 07-Aug-2008 Ted Kremenek <kremenek@apple.com> ParseAST now conditionally deletes the passed ASTConsumer.
ModuleBuilder now performs llvmgen in HandleTranslationUnit.

This patch follows from the discussion on the following thread on cfe-commits:

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080804/006849.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54486 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ParseAST.h
5c3417333c5bcfba7522919f80f57277c28e3dfd 07-Aug-2008 Ted Kremenek <kremenek@apple.com> Fix --html-diags in driver by delaying the construction of an HTMLDiagnosticClient until after we have created the Preprocessor object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b4398aa27da4d6919c3ae448d1ae66ba6cafc048 07-Aug-2008 Ted Kremenek <kremenek@apple.com> Fix --html-diags in driver by delaying the construction of an HTMLDiagnosticClient until after we have created the Preprocessor object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54472 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1f62aa8e0d797a06895cd6044501d2fa6039a124 07-Aug-2008 Ted Kremenek <kremenek@apple.com> Always construct the BumpPtrAllocator used by CFG as an instance variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ce1eb34bbea1e0408f1952776d7d52ccde1bd275 07-Aug-2008 Ted Kremenek <kremenek@apple.com> Always construct the BumpPtrAllocator used by CFG as an instance variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
0e13eaa4b7d1b0f5f6376683f3e4710f557d6a5d 06-Aug-2008 Nico Weber <nicolasweber@gmx.de> add a libDriver, for now only move the text diangostics stuff from Driver to there

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54383 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
river/TextDiagnostics.h
fd54ebcaaf9a165846fdfafb32362238458e7f2d 06-Aug-2008 Nico Weber <nicolasweber@gmx.de> add a libDriver, for now only move the text diangostics stuff from Driver to there

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54383 91177308-0d34-0410-b5e6-96231b3b80d8
river/TextDiagnosticBuffer.h
river/TextDiagnosticPrinter.h
river/TextDiagnostics.h
e1480475e42ea76517d1d661b7f2b2d7bc121f1b 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Add missing "classof" methods to NonNullAttr, fixing a heisencrash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
55b0c192e1ce00513a000f4c98bed7da5cf152b8 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Add missing "classof" methods to NonNullAttr, fixing a heisencrash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54373 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
b59f9cf0be6e619d471d880384a304bb940821b4 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Added decl_iterator to DeclStmt to provide an abstract interface to iterate over the ScopedDecls of a DeclStmt.
Updated a few clients of DeclStmt::getNextDeclarator() to use decl_iterator instead. Will update other clients after additional testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
14f8b4ff660bcaa763974b8d0fae81857c594495 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Added decl_iterator to DeclStmt to provide an abstract interface to iterate over the ScopedDecls of a DeclStmt.
Updated a few clients of DeclStmt::getNextDeclarator() to use decl_iterator instead. Will update other clients after additional testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7c65b6cfdb764c9887085206f033f63c73d1b335 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Refactored driver logic for CodeGen into LLVMCodeGenWriter. This ASTConsumer layers on top of LLVMCodeGen (another existing ASTConsumer) to emit bitcode files to disk. This layering takes this logic out of clang.cpp and puts it directly into the ASTConsumer interface. The benefit is that now --emit-llvm works with both serialized ASTs and regular source files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54364 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
815c78fd9ab8bd5dfe8e8a91b8c6a413e2b8c889 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Refactored driver logic for CodeGen into LLVMCodeGenWriter. This ASTConsumer layers on top of LLVMCodeGen (another existing ASTConsumer) to emit bitcode files to disk. This layering takes this logic out of clang.cpp and puts it directly into the ASTConsumer interface. The benefit is that now --emit-llvm works with both serialized ASTs and regular source files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54364 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
72eaf8a245549fdc2adeaeeb579102635845d033 05-Aug-2008 Daniel Dunbar <daniel@zuster.org> Move AsmLabel into Declarator instead of just a parameter to
ActOnDeclarator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54353 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
914701ed49f31323176a784b49df05a0d177d1ad 05-Aug-2008 Daniel Dunbar <daniel@zuster.org> Move AsmLabel into Declarator instead of just a parameter to
ActOnDeclarator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54353 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
f9311a981021c68db27e03132cb11871364e1d37 05-Aug-2008 Chris Lattner <sabre@nondot.org> Fix rdar://6124613 a crash on invalid code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54340 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4fef81d718ca1b91ce2adef52db91a35f86e9bbd 05-Aug-2008 Chris Lattner <sabre@nondot.org> Fix rdar://6124613 a crash on invalid code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54340 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
c3540ff2f5b163ee0616e5a7d90424584a3f760b 05-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add more Parser/Sema support for GCC asm-label extension.
- ActOnDeclarator now takes an additional parameter which is the
AsmLabel if used. Its unfortunate that this bubbles up this high,
but we cannot just lump it in as an attribute without mistakenly
*accepting* it as an attribute.
- The actual asm-label itself is, however, encoded as an AsmLabelAttr
on the FunctionDecl.
- Slightly improved parser error recovery on malformed asm-labels.
- CodeGen support still missing...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/Action.h
a80f8749f2968d19595ca2544114932bf0ca2c11 05-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add more Parser/Sema support for GCC asm-label extension.
- ActOnDeclarator now takes an additional parameter which is the
AsmLabel if used. Its unfortunate that this bubbles up this high,
but we cannot just lump it in as an attribute without mistakenly
*accepting* it as an attribute.
- The actual asm-label itself is, however, encoded as an AsmLabelAttr
on the FunctionDecl.
- Slightly improved parser error recovery on malformed asm-labels.
- CodeGen support still missing...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54339 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/Action.h
103baef5578a53a39ed11d8ef86c937f258d7dcb 05-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add EXTWARN Diagnostic class.
- Like EXTENSION but always generates a warning (even without
-pedantic).
- Updated ptr -> int, int -> ptr, and incompatible cast warnings to
be EXTWARN.
- Other EXTENSION level diagnostics should be audited for upgrade.
- Updated several test cases to fix code which produced unanticipated
warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54335 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4489fe10fa073eb326e2c8906db170f009050911 05-Aug-2008 Daniel Dunbar <daniel@zuster.org> Add EXTWARN Diagnostic class.
- Like EXTENSION but always generates a warning (even without
-pedantic).
- Updated ptr -> int, int -> ptr, and incompatible cast warnings to
be EXTWARN.
- Other EXTENSION level diagnostics should be audited for upgrade.
- Updated several test cases to fix code which produced unanticipated
warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54335 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a3195a3b5b0302b8d715f271d0c99c675fb91cbe 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Nico Weber:

"the attached patch fixes some typos, 80 cols violations, etc. in comments."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
a34ea072371154c9042ce86321d17fbb4df1f84d 05-Aug-2008 Ted Kremenek <kremenek@apple.com> Nico Weber:

"the attached patch fixes some typos, 80 cols violations, etc. in comments."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
arse/Action.h
a1923f6d95601582f4a5c3924b8e1c5ac3f658b3 04-Aug-2008 Chris Lattner <sabre@nondot.org> Finally fix PR2189. This makes a fairly invasive but important change to
move getAsArrayType into ASTContext instead of being a method on type.
This is required because getAsArrayType(const AT), where AT is a typedef
for "int[10]" needs to return ArrayType(const int, 10).

Fixing this greatly simplifies getArrayDecayedType, which is a good sign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54317 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c63a1f276f7b324fd9a4be82098b1c8f7bf30733 04-Aug-2008 Chris Lattner <sabre@nondot.org> Finally fix PR2189. This makes a fairly invasive but important change to
move getAsArrayType into ASTContext instead of being a method on type.
This is required because getAsArrayType(const AT), where AT is a typedef
for "int[10]" needs to return ArrayType(const int, 10).

Fixing this greatly simplifies getArrayDecayedType, which is a good sign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54317 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
46403638c12d9608d7f0370f318a72a01d14f56d 01-Aug-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Wherever a type is used/returned from the Action module, use TypeTy instead of DeclTy or void.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54265 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
39caa088097dbd2c805041bfd964b3fb9026d0be 01-Aug-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Wherever a type is used/returned from the Action module, use TypeTy instead of DeclTy or void.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54265 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
dd2e9ca75a376d862d2141747e3057b03f42fe93 01-Aug-2008 Daniel Dunbar <daniel@zuster.org> Support constructor and destructor attributes in CodeGen

- There is an miscompilation issue remaining due to a poor
interaction between the delayed emission of static functions and
the emission of constructors, but that already existed prior to
this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
6bfed7e411adc46eaf616371f85f68305c6e6257 01-Aug-2008 Daniel Dunbar <daniel@zuster.org> Support constructor and destructor attributes in CodeGen

- There is an miscompilation issue remaining due to a poor
interaction between the delayed emission of static functions and
the emission of constructors, but that already existed prior to
this change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
8716a019f15ee20184327c7905ef05f2106ba6c6 01-Aug-2008 Daniel Dunbar <daniel@zuster.org> Support __attribute__(({con,de}structor)) in Parse & Sema
- Including possible priority argument
- In other news, the attribute parsing code really needs a cleanup


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
3068ae0feb5d477477f45045f7ec9d0414fe57f3 01-Aug-2008 Daniel Dunbar <daniel@zuster.org> Support __attribute__(({con,de}structor)) in Parse & Sema
- Including possible priority argument
- In other news, the attribute parsing code really needs a cleanup


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
0303babaf421955c741cd0bcb0ed005a8407e85f 31-Jul-2008 Ted Kremenek <kremenek@apple.com> Enhanced path-sensitive return-of-stack-address check to print out the name of the variable whose address was returned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54253 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
22bda887aacd0e591978541a799aa43835652ec9 31-Jul-2008 Ted Kremenek <kremenek@apple.com> Enhanced path-sensitive return-of-stack-address check to print out the name of the variable whose address was returned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54253 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
22dedc6e22fb732dc15068f38b72d691c138e8e7 31-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove getCodeBody() from Decl, and hoist getBody() into Decl as a virtual function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54247 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
69c8f0aab655257e9e532d9d53756acf4f7a2d78 31-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove getCodeBody() from Decl, and hoist getBody() into Decl as a virtual function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54247 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
809da269fb57f4cee4dd9fd786b22fb9961f89c7 27-Jul-2008 Ted Kremenek <kremenek@apple.com> Fix serialization for TypedefType by allowing TypedefType to access the internal CanonicalType stored in Type.
The test case Serialization/stmt_exprs.c now passes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d90700108cfb45f2dda6c5a7adc11ce5ac68aa0d 27-Jul-2008 Ted Kremenek <kremenek@apple.com> Fix serialization for TypedefType by allowing TypedefType to access the internal CanonicalType stored in Type.
The test case Serialization/stmt_exprs.c now passes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a55e321bd645398b514e246981c04a4889ee2472 27-Jul-2008 Chris Lattner <sabre@nondot.org> make "call foo.dump()" and "call foo->dump()" work in GDB,
with QualTypes and Types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c36d405a02fab41f6c45cb2bc750d64949742903 27-Jul-2008 Chris Lattner <sabre@nondot.org> make "call foo.dump()" and "call foo->dump()" work in GDB,
with QualTypes and Types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
01ee73fb7b2734d3ca1c5876dc623811518985df 27-Jul-2008 Chris Lattner <sabre@nondot.org> remove QualType::getCanonicalType. Also make
QualType::ReadBackpatch public so that FieldDecl doesn't need
to be a friend of QualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
4243a94b43ef6207938f3023dfcfb804dd545363 27-Jul-2008 Chris Lattner <sabre@nondot.org> remove QualType::getCanonicalType. Also make
QualType::ReadBackpatch public so that FieldDecl doesn't need
to be a friend of QualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54115 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
d5a56aae166344e13f1f8c845530beee0868db49 27-Jul-2008 Chris Lattner <sabre@nondot.org> change more instances of QualType::getCanonicalType to call
ASTContext::getCanonicalType instead (PR2189)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b77792eabf5882cf9af8cc810599b20432fda6c2 27-Jul-2008 Chris Lattner <sabre@nondot.org> change more instances of QualType::getCanonicalType to call
ASTContext::getCanonicalType instead (PR2189)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
25168a59a231071fb6c8d5bfd8f80612d58f9fb1 26-Jul-2008 Chris Lattner <sabre@nondot.org> convert more code to use ASTContext to get canonical types instead
of doing it directly. This is required for PR2189.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
28be73f74c9e241a23ea24fe5756623de6bf1084 26-Jul-2008 Chris Lattner <sabre@nondot.org> convert more code to use ASTContext to get canonical types instead
of doing it directly. This is required for PR2189.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c5cff3042a9b78af61d0d39ec81c8516ebf9e05b 26-Jul-2008 Chris Lattner <sabre@nondot.org> remove a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
717250a2052ea65d95405127d4e5836a564dad18 26-Jul-2008 Chris Lattner <sabre@nondot.org> remove a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54101 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ae1ae49203c63d5a462508875ed39f24c71bf74b 26-Jul-2008 Chris Lattner <sabre@nondot.org> Pull protocol resolution of out ActOnStartClassInterface, this is also the
last client of the old ParseObjCProtocolReferences, so it also removes it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54094 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
06036d3709955a53297b4cbe14e20db88f321470 26-Jul-2008 Chris Lattner <sabre@nondot.org> Pull protocol resolution of out ActOnStartClassInterface, this is also the
last client of the old ParseObjCProtocolReferences, so it also removes it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54094 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
45142b9beee4734e5d3d438c4f130e1b37fbc12a 26-Jul-2008 Chris Lattner <sabre@nondot.org> refactor protocol resolution out of ActOnStartCategoryInterface


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54093 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
6bd6d0b9d8944c5e192097bef24f2becb83af172 26-Jul-2008 Chris Lattner <sabre@nondot.org> refactor protocol resolution out of ActOnStartCategoryInterface


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54093 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2bdedd6fa431d9d90589182dd0d3baf24dbb371c 26-Jul-2008 Chris Lattner <sabre@nondot.org> pull protocol resolution out into ActOnStartProtocolInterface.
This temporarily duplicates ParseObjCProtocolReferences, but it
will be removed in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54092 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
e13b9595dc1e2f4288bec34f3412359f648e84a5 26-Jul-2008 Chris Lattner <sabre@nondot.org> pull protocol resolution out into ActOnStartProtocolInterface.
This temporarily duplicates ParseObjCProtocolReferences, but it
will be removed in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54092 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
17d50a95b43852f7031533c353373d4986cb6744 26-Jul-2008 Chris Lattner <sabre@nondot.org> simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54091 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
eacc39212e5960b2680067c006384c2e4804873a 26-Jul-2008 Chris Lattner <sabre@nondot.org> simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54091 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
fc513a61e8c3cfbdb892f0fdc279b417b2b8eee2 26-Jul-2008 Chris Lattner <sabre@nondot.org> remove duplicate error message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54090 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e281c86515cca9162170ca5d6ede198acf343428 26-Jul-2008 Chris Lattner <sabre@nondot.org> remove duplicate error message.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54090 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ada637950c0a7cd90aeb30cc7be4963b948b2ce3 26-Jul-2008 Chris Lattner <sabre@nondot.org> make DeclSpec manage its own protocol qualifier list memory instead of having
clients allocate the memory and it delete it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54087 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
ae4da6150bb837311a2f0f958b01a2989066ba90 26-Jul-2008 Chris Lattner <sabre@nondot.org> make DeclSpec manage its own protocol qualifier list memory instead of having
clients allocate the memory and it delete it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54087 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
4a68fe04deb7ab89ac7566dc55b3b623129c72e5 26-Jul-2008 Chris Lattner <sabre@nondot.org> fix several problems with the protocol qualified id handling where id was implicit.

First, fix canonical type handling of these, since protocol qualified id's are always
canonical. Next, enhance SemaType to actually make these when used (instead of int)
allowing them to actually be used when appropriate. Finally remove a bunch of logic
relating to the mishandling of canonical types with protocol-qual id's. This fixes
rdar://5986251


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
62f5f7ffad57e0c2af2b308af3735351505937cb 26-Jul-2008 Chris Lattner <sabre@nondot.org> fix several problems with the protocol qualified id handling where id was implicit.

First, fix canonical type handling of these, since protocol qualified id's are always
canonical. Next, enhance SemaType to actually make these when used (instead of int)
allowing them to actually be used when appropriate. Finally remove a bunch of logic
relating to the mishandling of canonical types with protocol-qual id's. This fixes
rdar://5986251


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54083 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
b99d749119d19391af35d37cf53564e575aebdc5 26-Jul-2008 Chris Lattner <sabre@nondot.org> improve handling of the horrible GCC objc extension that treats "<foo>"
like "id<foo>". This 1) fixes an infinite loop in the parser on things
like "short<foo>" 2) emits a warning about this bogus construct and 3)
changes the testcase to be substantially reduced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bce6135441fd489527a9ad1776d0472335be596d 26-Jul-2008 Chris Lattner <sabre@nondot.org> improve handling of the horrible GCC objc extension that treats "<foo>"
like "id<foo>". This 1) fixes an infinite loop in the parser on things
like "short<foo>" 2) emits a warning about this bogus construct and 3)
changes the testcase to be substantially reduced.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54082 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
da8aad9b4ce4977c60b5fa2e4c937715d2c20c0c 26-Jul-2008 Chris Lattner <sabre@nondot.org> add a new diag helper that takes a range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
844cef32e4359c3e651e4eb84beca0c3e8a727d5 26-Jul-2008 Chris Lattner <sabre@nondot.org> add a new diag helper that takes a range.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54081 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e02e440a32375a1635d634f21b535032043504d3 26-Jul-2008 Chris Lattner <sabre@nondot.org> Fix rdar://6095136, various crashes with incomplete enum types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
834a72ac74cf4ff07ba6215545dba3db578f8a07 26-Jul-2008 Chris Lattner <sabre@nondot.org> Fix rdar://6095136, various crashes with incomplete enum types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4c77156d6fbed59c03415f67b10d17418ab228cf 26-Jul-2008 Daniel Dunbar <daniel@zuster.org> Remove unused ASTConsumer::HandleTopLevelDeclaration


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
fb754b6db2c74b71e20042f84a95cdb93fc33870 26-Jul-2008 Daniel Dunbar <daniel@zuster.org> Remove unused ASTConsumer::HandleTopLevelDeclaration


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54071 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
b18e93c283e46a3564bc94a5227e252a796f0672 25-Jul-2008 Ted Kremenek <kremenek@apple.com> Refine ObjCPropertyImplDecl:

- Remove a bunch of setXXX methods until we actually need them. This cleans up the
interface, and makes the object immutable until we have a reason to be mutable.

- Remove enum value OBJC_PR_IMPL_None since it was never used.

- Remove instance variable 'PropertyImplKind PropertyImplementation;'. This is
not needed because we can tell if ObjCPropertyImplDecl represents @synthesize
if 'ObjCPropertyDecl *PropertyDecl' is not null.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
be57c3a3fef0776fca57ad88b2db263f37b074c4 25-Jul-2008 Ted Kremenek <kremenek@apple.com> Refine ObjCPropertyImplDecl:

- Remove a bunch of setXXX methods until we actually need them. This cleans up the
interface, and makes the object immutable until we have a reason to be mutable.

- Remove enum value OBJC_PR_IMPL_None since it was never used.

- Remove instance variable 'PropertyImplKind PropertyImplementation;'. This is
not needed because we can tell if ObjCPropertyImplDecl represents @synthesize
if 'ObjCPropertyDecl *PropertyDecl' is not null.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3c0deef0c753cc4d521c951e3025ddfefc2f72d5 25-Jul-2008 Nate Begeman <natebegeman@mac.com> De-tabify


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
82354bcedd1465bf40c9ba9e87e576dd9a8b81f0 25-Jul-2008 Nate Begeman <natebegeman@mac.com> De-tabify


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
bef8d62c01b9488bf3750f56953c885c839393b4 25-Jul-2008 Chris Lattner <sabre@nondot.org> Reject typedef redefinitions when the underlying types are not identical,
even if in a system header etc. rdar://6079937



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
99cb9976efe84f44b3b1957c4fe042dae366b989 25-Jul-2008 Chris Lattner <sabre@nondot.org> Reject typedef redefinitions when the underlying types are not identical,
even if in a system header etc. rdar://6079937



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54038 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6e5a65b68364695fdf912e7f72299467ee81779e 25-Jul-2008 Chris Lattner <sabre@nondot.org> In c89 mode accept hex fp constants as an extension:

t2.c:1:17: warning: hexadecimal floating constants are a C99 feature
long double d = 0x0.0000003ffffffff00000p-16357L;
^

instead of emitting a weird error message that doesn't make sense:

t2.c:1:41: error: hexadecimal floating constants require an exponent
long double d = 0x0.0000003ffffffff00000p-16357L;
^

rdar://6096838


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54035 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6ea623823f8532670480425b573f35115404b4a0 25-Jul-2008 Chris Lattner <sabre@nondot.org> In c89 mode accept hex fp constants as an extension:

t2.c:1:17: warning: hexadecimal floating constants are a C99 feature
long double d = 0x0.0000003ffffffff00000p-16357L;
^

instead of emitting a weird error message that doesn't make sense:

t2.c:1:41: error: hexadecimal floating constants require an exponent
long double d = 0x0.0000003ffffffff00000p-16357L;
^

rdar://6096838


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54035 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ce13e1e523cd5a65934eb508c93074b8c43fcf74 25-Jul-2008 Ted Kremenek <kremenek@apple.com> Implemented Sema support for attribute "unused".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
73798892751e378cbcdef43579c1d41685091fd0 25-Jul-2008 Ted Kremenek <kremenek@apple.com> Implemented Sema support for attribute "unused".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54008 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
118930edc07e9a91098f48031740d57c0f89114e 25-Jul-2008 Ted Kremenek <kremenek@apple.com> Move isObjCObjectPointerType() from Sema to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b6ccaac65ca72f72954eb3893bbd940bedd23f00 25-Jul-2008 Ted Kremenek <kremenek@apple.com> Move isObjCObjectPointerType() from Sema to ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53998 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
91a6920877a7288a84ac8d04d429435f9b9e1848 24-Jul-2008 Steve Naroff <snaroff@apple.com> Fix Sema::ActOnClassMessage() to pass through the identifier for "super".
This fixes a critical rewriter bug (<rdar://problem/6096760> clang ObjC rewriter: 'self' not expected value in class method called with 'super').

Also added a couple FIXME's since I'm not happy with my fix to Sema. It would be nicer if the super handling for class/instance messages was the same (based on PreDefinedExpr).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
fc93d52ada07d52de0ad4fd051b6a08e21d421ff 24-Jul-2008 Steve Naroff <snaroff@apple.com> Fix Sema::ActOnClassMessage() to pass through the identifier for "super".
This fixes a critical rewriter bug (<rdar://problem/6096760> clang ObjC rewriter: 'self' not expected value in class method called with 'super').

Also added a couple FIXME's since I'm not happy with my fix to Sema. It would be nicer if the super handling for class/instance messages was the same (based on PreDefinedExpr).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53994 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
72b2cf1ae0992af05a0bfaaacc056e74108bc76b 24-Jul-2008 Daniel Dunbar <daniel@zuster.org> Fix comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53986 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
25460259a635465f9d36e61865bc4bf1e3e36945 24-Jul-2008 Daniel Dunbar <daniel@zuster.org> Fix comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53986 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
198acff77e56982dd31a13c3c92610bdcf612c64 24-Jul-2008 Daniel Dunbar <daniel@zuster.org> Add Expr::getIntegerConstantExprValue helper method
- For getting an APSInt from a known integer constant Expr.
- TODO: Many users of Expr::isIntegerConstantExpr in codegen should
probably be using this instead...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cd8f646eca128f52a7bce0103c51ff82ce96f374 24-Jul-2008 Daniel Dunbar <daniel@zuster.org> Add Expr::getIntegerConstantExprValue helper method
- For getting an APSInt from a known integer constant Expr.
- TODO: Many users of Expr::isIntegerConstantExpr in codegen should
probably be using this instead...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53974 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
97318dd4ed019ecfb67932ad8919d751877c1941 24-Jul-2008 Ted Kremenek <kremenek@apple.com> Added UnaryOperator::isPrefix().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5a56ac30d04e8f0431a08980885662a47a6308aa 24-Jul-2008 Ted Kremenek <kremenek@apple.com> Added UnaryOperator::isPrefix().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53963 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a15448cb4a7f993d75f16245e146e454ea69b9d2 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Use typedef range_iterator instead of SourceRange* in PathDiagnosticPiece.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53962 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
a32980435ab2e3a5e037b2ebe936682e1ffe80e1 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Use typedef range_iterator instead of SourceRange* in PathDiagnosticPiece.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53962 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
13df7e952939af7267769e2e06f2f2ce2750adc1 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Initialize instance variable DeclAccess in ctor for ObjCIvarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53956 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8f50b9c02abe7cd4945a9b77a8550a5207ea21cf 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Initialize instance variable DeclAccess in ctor for ObjCIvarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53956 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
173dd3184b3e0f7b19a96b054303c87be3afb89f 23-Jul-2008 Ted Kremenek <kremenek@apple.com> When constructing an ObjCIvarDecl object in Sema, provide its visibility up front instead of setting it afterwards.
This change also fixes a subtle bug where the access control of an ivar would be initialized to garbage if we didn't have an explicit visibility specifier (e.g., @private).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b8db21d4df5fbb6ce1ace6411b82d3d623d789de 23-Jul-2008 Ted Kremenek <kremenek@apple.com> When constructing an ObjCIvarDecl object in Sema, provide its visibility up front instead of setting it afterwards.
This change also fixes a subtle bug where the access control of an ivar would be initialized to garbage if we didn't have an explicit visibility specifier (e.g., @private).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53955 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6bddd5191989f5c30dfdf25bf2f99a95df900902 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Updated comment for class ObjCIvarDecl: it turns out the default access control
is protected, not private.

Added ObjCIvarDecl::getCanonicalAccessControl() to report the visible access
control of an ivar, whereas getAccessControl() returns the access control
relating to how the ivar was actually declared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f079570fcad0d0053e75ebae29c883ec4276e020 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Updated comment for class ObjCIvarDecl: it turns out the default access control
is protected, not private.

Added ObjCIvarDecl::getCanonicalAccessControl() to report the visible access
control of an ivar, whereas getAccessControl() returns the access control
relating to how the ivar was actually declared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8441802366c64e28c71f13514e86a9f6465109a3 23-Jul-2008 Chris Lattner <sabre@nondot.org> Fix rdar://6094010 various asserts happening with wide strings in inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6bc52112dbc54551bd8e215d95bba4791b2275f7 23-Jul-2008 Chris Lattner <sabre@nondot.org> Fix rdar://6094010 various asserts happening with wide strings in inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
69ea78529b2d92b797056464095595fa5d05473c 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Add prototype implementation of unused ivar check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53942 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
395aaf20d6e1ab04741562dc6b7d47164bcbd87e 23-Jul-2008 Ted Kremenek <kremenek@apple.com> Add prototype implementation of unused ivar check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53942 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
24d49d0bd62af3da13f3331224f18ceb2fe48461 22-Jul-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Fix compilation error on GCC 4.3.0 ('memcpy' was not declared in this scope).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ea7e97e14f2f1f9817d2ae8a25ec6ea652e5287f 22-Jul-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix compilation error on GCC 4.3.0 ('memcpy' was not declared in this scope).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
9f20c7cff03afa692d7737d18692f1081fefef5e 22-Jul-2008 Ted Kremenek <kremenek@apple.com> Moved registration of basic path-sensitive checks from GRSimpleVals.cpp to GRExprEngineInternalChecks.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53909 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/GRExprEngine.h
78d46242e3351484c2b773f5610beba5d316914b 22-Jul-2008 Ted Kremenek <kremenek@apple.com> Moved registration of basic path-sensitive checks from GRSimpleVals.cpp to GRExprEngineInternalChecks.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53909 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/GRExprEngine.h
bbafa5b0816c1ea67fb431487b20026362b30bca 22-Jul-2008 Ted Kremenek <kremenek@apple.com> Added path-sensitive checking for null pointer values passed to function arguments marked nonnull.
This implements <rdar://problem/6069935>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/ValueState.h
584def7364f51e35bfcaf5c3c64673096533adda 22-Jul-2008 Ted Kremenek <kremenek@apple.com> Added path-sensitive checking for null pointer values passed to function arguments marked nonnull.
This implements <rdar://problem/6069935>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/ValueState.h
33844332fc5300488e92aaa683f434f902b0f854 22-Jul-2008 Daniel Dunbar <daniel@zuster.org> Implement bzero, memset, memmove builtins.

This subsumes Nico Weber's patch and implements bzero in terms
of llvm.memset to match llvm-gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
1caae959017b355e9bb61250d5a0d04edbf468b0 22-Jul-2008 Daniel Dunbar <daniel@zuster.org> Implement bzero, memset, memmove builtins.

This subsumes Nico Weber's patch and implements bzero in terms
of llvm.memset to match llvm-gcc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
5b0de85aa9a53b70f57e4560cb8e3f509973df39 22-Jul-2008 Daniel Dunbar <daniel@zuster.org> Implement nans, prefetch, and trap builtins.

This closes <rdar://problem/6080720>, support for __builtin_constant_p
has been filed separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticKinds.def
4493f79fce48cd9cbd9f55fa9d452cde736747a0 22-Jul-2008 Daniel Dunbar <daniel@zuster.org> Implement nans, prefetch, and trap builtins.

This closes <rdar://problem/6080720>, support for __builtin_constant_p
has been filed separately.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53885 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticKinds.def
e705e5ec34e4ab296c2a3831505fde62270fb778 22-Jul-2008 Chris Lattner <sabre@nondot.org> minor cleanup to the actions interface to pass around SmallVectorImpl instead
of a specific smallvector size.

Fix protocol lists to pass down proper location info, so we get diagnostics
like this:

t.m:3:35: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
^

instead of this:

t.m:3:44: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
^


Add a new IdentifierLocPair typedef which is just a pair<IdentifierInfo*, SourceLocation>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
arse/Action.h
arse/Parser.h
7caeabd868d46cf4e68478c6e9136dae4e735d21 22-Jul-2008 Chris Lattner <sabre@nondot.org> minor cleanup to the actions interface to pass around SmallVectorImpl instead
of a specific smallvector size.

Fix protocol lists to pass down proper location info, so we get diagnostics
like this:

t.m:3:35: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
^

instead of this:

t.m:3:44: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
^


Add a new IdentifierLocPair typedef which is just a pair<IdentifierInfo*, SourceLocation>



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53883 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
arse/Action.h
arse/Parser.h
c0af254fe27f5960966db29479b64e820f663c32 21-Jul-2008 Ted Kremenek <kremenek@apple.com> Added sema support for the nonnull attribute. Will add test cases soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
eb2b2a3f1898f146c6e153a64ec58ec5e1750bd2 21-Jul-2008 Ted Kremenek <kremenek@apple.com> Added sema support for the nonnull attribute. Will add test cases soon.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53881 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
0be088230e4bce150cbad1d49423efb5d7ab124d 21-Jul-2008 Chris Lattner <sabre@nondot.org> move two more lists of protocols over to use ObjCList<ObjCProtocolDecl>,
simplifying code along the way and fixing a problem and memory leak or two.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53876 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
780f329cb011bff0da5763e2e9744eec093d0509 21-Jul-2008 Chris Lattner <sabre@nondot.org> move two more lists of protocols over to use ObjCList<ObjCProtocolDecl>,
simplifying code along the way and fixing a problem and memory leak or two.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53876 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
29921c4cbef086cb0dadba22f082c96148f69609 21-Jul-2008 Daniel Dunbar <daniel@zuster.org> Add __builtin_powi[fl] support


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
a933c3c052bbd87b01cc6fc7a7745e1c4b1757fb 21-Jul-2008 Daniel Dunbar <daniel@zuster.org> Add __builtin_powi[fl] support


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
8779c633e0d186dff3ac8014b902a34802ccd766 21-Jul-2008 Chris Lattner <sabre@nondot.org> references to completely undeclared protocols should be errors.
References to forward definitions should be warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53863 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
919d87d4eef4126ad6d7da1762c247ab0b5ca05b 21-Jul-2008 Chris Lattner <sabre@nondot.org> references to completely undeclared protocols should be errors.
References to forward definitions should be warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53863 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8bcb52573fad79e8cff88fad9112484b125942ea 21-Jul-2008 Chris Lattner <sabre@nondot.org> introduce a new ObjCList templated class and start moving
various objc lists over to it. First up, the protocol list
on ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3db6cae19c236fe2cef343c90105ce7cca7de965 21-Jul-2008 Chris Lattner <sabre@nondot.org> introduce a new ObjCList templated class and start moving
various objc lists over to it. First up, the protocol list
on ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c72eaaf2967cd77a6b8acd4fac777ad6bfb0e831 21-Jul-2008 Chris Lattner <sabre@nondot.org> rename setReferencedProtocolList -> addReferencedProtocols to
be consistent with ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53852 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f7b2c98c16dfb2261ea57d40a1d5bc4738e73175 21-Jul-2008 Chris Lattner <sabre@nondot.org> rename setReferencedProtocolList -> addReferencedProtocols to
be consistent with ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53852 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
726f4d4cbe766813f3f355be24899d699b7872a0 21-Jul-2008 Daniel Dunbar <daniel@zuster.org> Implement ffs, parity, and popcount builtins.
+ test case


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
04b290030eee33295600728450f348989d1a627e 21-Jul-2008 Daniel Dunbar <daniel@zuster.org> Implement ffs, parity, and popcount builtins.
+ test case


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53851 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
5cece4687962ea79bba6565983924365f243144e 21-Jul-2008 Chris Lattner <sabre@nondot.org> Switch initialization of the protocol list for an interface decl to use
the standard "set these as the list of protocols" interface instead of a
strange "set this as the size and then set each one to the value" interface.
The problem with the later is that it a) is completely different from
everything else, b) is awkward, and c) doesn't handle the case when a
referenced protocol is invalid: it set it to null.

This meant that all clients downstream would have to handle null protocols
in the protocol list, and empirically they didn't. Fix this by not setting
invalid protocols in the referenced protocol list, fixing the crash on
test/Sema/objc-interface-1.m

While I'm at it, clean up some locations so that we produce:

t.m:1:25: error: cannot find interface declaration for 'NSObject', superclass of 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
~~~~~~~~~~~~~~~~~~~~~ ^

instead of:

t.m:1:1: error: cannot find interface declaration for 'NSObject', superclass of 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53846 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b752f289026ad8e5f44851b20e009a27ed61eefc 21-Jul-2008 Chris Lattner <sabre@nondot.org> Switch initialization of the protocol list for an interface decl to use
the standard "set these as the list of protocols" interface instead of a
strange "set this as the size and then set each one to the value" interface.
The problem with the later is that it a) is completely different from
everything else, b) is awkward, and c) doesn't handle the case when a
referenced protocol is invalid: it set it to null.

This meant that all clients downstream would have to handle null protocols
in the protocol list, and empirically they didn't. Fix this by not setting
invalid protocols in the referenced protocol list, fixing the crash on
test/Sema/objc-interface-1.m

While I'm at it, clean up some locations so that we produce:

t.m:1:25: error: cannot find interface declaration for 'NSObject', superclass of 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
~~~~~~~~~~~~~~~~~~~~~ ^

instead of:

t.m:1:1: error: cannot find interface declaration for 'NSObject', superclass of 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
^




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53846 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f914765ba1d70f599fa69bde38b8646c02d9b1aa 21-Jul-2008 Chris Lattner <sabre@nondot.org> continue cleaning up code, and disable sending a message directly to an
interface. This fixes a bug where we used to accept:

void test2(NSNumber x) {
[x METH];
}

which doesn't make sense and GCC rejects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2b1cc8be4dda4cd122485be0168b3c43d7dff15f 21-Jul-2008 Chris Lattner <sabre@nondot.org> continue cleaning up code, and disable sending a message directly to an
interface. This fixes a bug where we used to accept:

void test2(NSNumber x) {
[x METH];
}

which doesn't make sense and GCC rejects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53841 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3780ac54200841ef3671b6d7f328452b98edc039 21-Jul-2008 Chris Lattner <sabre@nondot.org> update diagnostic to include string


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
58b1b2702b143be7f3c380093f9ba9da4ff27e95 21-Jul-2008 Chris Lattner <sabre@nondot.org> update diagnostic to include string


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7d5a8769842eb89ea3be4ebd4d8c4ee1cd01dec6 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve invalid member reference diagnostics to print the type and
have better source ranges. Before:

t.m:11:53: error: member reference is not to a structure or union
CGFloat maxOffsetY = [_outlineLayer contentSize].height - [_outlineLayer frame].size.height;
^~~~~~~

after:

t.m:11:54: error: member reference base type ('id') is not a structure or union
CGFloat maxOffsetY = [_outlineLayer contentSize].height - [_outlineLayer frame].size.height;
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2a01b724b69b7998fe4e3a0a6fcc546be01f898d 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve invalid member reference diagnostics to print the type and
have better source ranges. Before:

t.m:11:53: error: member reference is not to a structure or union
CGFloat maxOffsetY = [_outlineLayer contentSize].height - [_outlineLayer frame].size.height;
^~~~~~~

after:

t.m:11:54: error: member reference base type ('id') is not a structure or union
CGFloat maxOffsetY = [_outlineLayer contentSize].height - [_outlineLayer frame].size.height;
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d5f8179ed2b75e5c21109f3dd996836b5f743ecd 21-Jul-2008 Chris Lattner <sabre@nondot.org> rename getProtocols -> getProtocol, as it only returns a single
protocol. Simplify some code to use unconditional form of the
protocol access list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9baefc21bfe1bf49ab4a234e9f267f00abe0b1b1 21-Jul-2008 Chris Lattner <sabre@nondot.org> rename getProtocols -> getProtocol, as it only returns a single
protocol. Simplify some code to use unconditional form of the
protocol access list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f81d921ec2f5bac3f35a94392fe2b764473884ee 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve documentation of ObjCInterfaceType significantly. Also,
make the qual_* iterators and getNumProtocols() lists be accessible through
ObjCInterfaceType (returning an empty range if not a
ObjCQualifiedInterfaceType). This eliminates special checks in clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fb7701df5401fa1f5b3396d269fb33e731a00089 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve documentation of ObjCInterfaceType significantly. Also,
make the qual_* iterators and getNumProtocols() lists be accessible through
ObjCInterfaceType (returning an empty range if not a
ObjCQualifiedInterfaceType). This eliminates special checks in clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
eb3a8ad577e7093d245ab427d43e25f327f8ce25 21-Jul-2008 Chris Lattner <sabre@nondot.org> right, the error is when the itf *doesn't* have the member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
88a72516e2baac09e1986c0c68347045052d021d 21-Jul-2008 Chris Lattner <sabre@nondot.org> right, the error is when the itf *doesn't* have the member.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53826 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
52292be56045ad912f869e5c2c22212458f6b896 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve the diagnostic for an erroneous objc ivar reference
from:

t.m:8:7: error: member reference is not to a structure or union
pool->farm = 0;
^ ~~~~
to:

t.m:8:7: error: 'NSAutoreleasePool' has member named 'farm'
pool->farm = 0;
~~~~^ ~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1f719747b214866535e63b0fe2f5f21da67a5387 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve the diagnostic for an erroneous objc ivar reference
from:

t.m:8:7: error: member reference is not to a structure or union
pool->farm = 0;
^ ~~~~
to:

t.m:8:7: error: 'NSAutoreleasePool' has member named 'farm'
pool->farm = 0;
~~~~^ ~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53824 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b2b9da7c2995ddfa0ac00a702b60c8100e463f10 21-Jul-2008 Chris Lattner <sabre@nondot.org> simplify a bunch of code, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
68a057b4292f5ff814ec8da53f6cda8cdcfbd2ae 21-Jul-2008 Chris Lattner <sabre@nondot.org> simplify a bunch of code, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2e966c430c098b7930e8a816200b071247bf00c9 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d85376aa66bc16488539f6bb11f97d0170b1fe6b 21-Jul-2008 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f2717b089d4c03a6c3a87bd8a229afd0ef99ce51 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Add panic support for NSAssertionHandler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53758 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
70a733e64e2379a654631a14fa29e46761d5f80d 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Add panic support for NSAssertionHandler.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53758 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
99b4f4383303ec8655db51fde1d41ae815640423 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Fix regression by explicitly checking if we are negating a SymIntConstantVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53753 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
40fc5c7e235965af368a34cdbb6d32827cd1e1d8 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Fix regression by explicitly checking if we are negating a SymIntConstantVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53753 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
589f8811ec1a004c58868d53185ef8767b55a5a7 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Renamed deterministic EvalBinOp to DetermEvalBinOpNN. This name mangling is unfortunately needed because virtual methods with the same name can be hidden by subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53751 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
ad8329e58df5b0b2c44dca1447b324467a6c5da1 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Renamed deterministic EvalBinOp to DetermEvalBinOpNN. This name mangling is unfortunately needed because virtual methods with the same name can be hidden by subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53751 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
9c4ce60a67751c4b166a6bd84adbb07a9e2d46b6 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Created ValueStateSet class to manage the creation of multiple states by a method.
Modified the new EvalBinOpNN to generate states instead of nodes. This is a much simpler interface and is what clients will want to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53750 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
6297a8ec313c722db50f686fd190842b7ea91118 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Created ValueStateSet class to manage the creation of multiple states by a method.
Modified the new EvalBinOpNN to generate states instead of nodes. This is a much simpler interface and is what clients will want to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53750 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
6984d55e8c946e2c99732fed91247641cbc03fd5 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove dead method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53748 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
4d9985ab390079ccc8b05b6c349026f237567b8f 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove dead method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53748 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
481f4bcca5d3a688c89f036fc8cdb556457d019a 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Provide static methods in BinaryOperator to determine if an opcode is an equality opcode, a relational opcode, or a logical opcode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f2da7a06f6b98c3886d9b871ab839f5085b1c238 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Provide static methods in BinaryOperator to determine if an opcode is an equality opcode, a relational opcode, or a logical opcode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53744 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c7469549fbf56d336bddbc570ee4867a1b6e3ed6 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Move GRTransferFunc* into ValueStateManager, and move the assumption logic there as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53743 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
729a9a276f39e75038ed100fc76055fb709b17f4 18-Jul-2008 Ted Kremenek <kremenek@apple.com> Move GRTransferFunc* into ValueStateManager, and move the assumption logic there as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53743 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
e4d3ffa4e0cc87f7938a1d03afefeca45b5b1584 17-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove redundant logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53740 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b48c6455dde10395cd4f3b6b054b2de34a73f7f5 17-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove redundant logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53740 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
fa81dfffa27aa48c0d2e9740e4f8403c2907426c 17-Jul-2008 Ted Kremenek <kremenek@apple.com> Begin major changes to EvalXXX methods in GRTransferFuncs. Currently some of the methods only return an RVal; we want them to be able to create an arbitrary number of states.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53739 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
df7533b5e523a3def04b5c33b56361a94dd97d35 17-Jul-2008 Ted Kremenek <kremenek@apple.com> Begin major changes to EvalXXX methods in GRTransferFuncs. Currently some of the methods only return an RVal; we want them to be able to create an arbitrary number of states.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53739 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
ee930121cc344a8f8c75c13a2b81db57662af00c 17-Jul-2008 Ted Kremenek <kremenek@apple.com> Moved RemoveDeadBindings logic for the contents of 'Store' to a virtual RemoveDeadBindings method in StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueState.h
f59bf48ee79ed218e6dcaf1b82fa730efd0e9999 17-Jul-2008 Ted Kremenek <kremenek@apple.com> Moved RemoveDeadBindings logic for the contents of 'Store' to a virtual RemoveDeadBindings method in StoreManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueState.h
d3354225f8298b304d3e145121f33e67642b55d1 16-Jul-2008 Steve Naroff <snaroff@apple.com> Two fixes:
- Make sure ObjCIvarDecl propagates the bitfield width.
- RewriteObjC::SynthesizeIvarOffsetComputation(): Avoid using the __OFFSETOF__ mumbo jumbo for bitfields (since it isn't legal C). This fixes <rdar://problem/5986079> clang ObjC rewriter: bitfields and ivar access don't mix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8f3b2654a9ff6912862f366102f5c46f7757260a 16-Jul-2008 Steve Naroff <snaroff@apple.com> Two fixes:
- Make sure ObjCIvarDecl propagates the bitfield width.
- RewriteObjC::SynthesizeIvarOffsetComputation(): Avoid using the __OFFSETOF__ mumbo jumbo for bitfields (since it isn't legal C). This fixes <rdar://problem/5986079> clang ObjC rewriter: bitfields and ivar access don't mix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53694 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ff2410bcb9eb8459a2969bcf927696bbad21701b 16-Jul-2008 Ted Kremenek <kremenek@apple.com> Make iboutlet diagnostic lowercase


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53646 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f1b4c42c49a7d7da2353235104c0e48ce35e3c77 16-Jul-2008 Ted Kremenek <kremenek@apple.com> Make iboutlet diagnostic lowercase


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53646 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4e5bb1221fef5534ef364e2defff959dd2c2fab0 16-Jul-2008 Ted Kremenek <kremenek@apple.com> Added parsing/sema support for __attribute__ ((IBOutlet)), a clang-specific attribute that the static analyzer will use to recognize what ivars are IBOutlets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53644 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
96329d4e07a9bcddb5a927892b70408c8fd8c474 16-Jul-2008 Ted Kremenek <kremenek@apple.com> Added parsing/sema support for __attribute__ ((IBOutlet)), a clang-specific attribute that the static analyzer will use to recognize what ivars are IBOutlets.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53644 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
4bd03efee104b9ccbdd63b32207a4b8c09dde6e5 14-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactor Dead Stores error reporting to use the simplified BugReporter::EmitBasicReport interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53573 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
8f2698621f5090db1dea691059bd0ebd79fb7f14 14-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactor Dead Stores error reporting to use the simplified BugReporter::EmitBasicReport interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53573 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
39c766a4057b036a87c60e0cf8b9390ce0eda39c 14-Jul-2008 Ted Kremenek <kremenek@apple.com> Added method "EmitBasicReport" to BugReporter to simplify the emission of simple bug diagnostics.

Refactored error reporting in CheckObjCDealloc and CheckObjCInstMethSignature to use this new bug reporting interface (major code simplification).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53560 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
57202071e477530e9348bc76671ee369b2399b92 14-Jul-2008 Ted Kremenek <kremenek@apple.com> Added method "EmitBasicReport" to BugReporter to simplify the emission of simple bug diagnostics.

Refactored error reporting in CheckObjCDealloc and CheckObjCInstMethSignature to use this new bug reporting interface (major code simplification).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53560 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
824a3714750ccc5fe1f10bf17ce44df7ed6f882f 12-Jul-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Use of NextToken() makes ParseIdentifierStatement unnecessary.
Simplify the parser by removing Parser::ParseIdentifierStatement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53520 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b9f930d7bdb911be8420e044876221bf8a39f45f 12-Jul-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use of NextToken() makes ParseIdentifierStatement unnecessary.
Simplify the parser by removing Parser::ParseIdentifierStatement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53520 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
82437da70be7f7ec57d949110baa4383979201db 12-Jul-2008 Chris Lattner <sabre@nondot.org> start remembering diagnostics for various cases, add some missing
code. Switch to Eli's getIntWidth method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
54176fdb044312b4b77c3da6682d3575b3728d30 12-Jul-2008 Chris Lattner <sabre@nondot.org> start remembering diagnostics for various cases, add some missing
code. Switch to Eli's getIntWidth method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53499 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d072b8962f8d53178505b46930adfca5635551a5 12-Jul-2008 Ted Kremenek <kremenek@apple.com> Add new check: -check-objc-methodsigs. This check scans methods in
ObjCImplementationDecls and sees if a ancestor class defines a method with the
same selector but with a different type signature. Right now it just compares
return types, and mainly looks at differences in primitive values. The checking
will be expanded in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53482 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
0d8019e55c0f465bafc11b04aed691de95b9131d 12-Jul-2008 Ted Kremenek <kremenek@apple.com> Add new check: -check-objc-methodsigs. This check scans methods in
ObjCImplementationDecls and sees if a ancestor class defines a method with the
same selector but with a different type signature. Right now it just compares
return types, and mainly looks at differences in primitive values. The checking
will be expanded in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53482 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
334b19494f86dd977120e3f7ed632a3843d4acd5 11-Jul-2008 Chris Lattner <sabre@nondot.org> rename "SInt" methods to "Int" in APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53467 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
cf0f51d10f01065bd7bc3ffe77e18c30dcbdbea3 11-Jul-2008 Chris Lattner <sabre@nondot.org> rename "SInt" methods to "Int" in APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53467 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
a42f09a1b2e2bf2ade0290e25bf1faa52e1d4ae2 11-Jul-2008 Chris Lattner <sabre@nondot.org> make the new evaluator avoid conversions APValue<->APSInt in some cases.
Add some accessors to APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
b542afe02d317411d53b3541946f9f2a8f509a11 11-Jul-2008 Chris Lattner <sabre@nondot.org> make the new evaluator avoid conversions APValue<->APSInt in some cases.
Add some accessors to APValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
7d4d9f37895f6fdad1e6af81d2322959b7d1d172 11-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactored auditor interface within GRExprEngine and GRCoreEngine to use a "batch auditor" to dispatch to specialized auditors instead of having a separate vector for each audited Expr*. This not only provides a much cleaner implementation, but also allows us to install auditors for any expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53464 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
bdb435ddaafd5069becd543d638112f68825b89d 11-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactored auditor interface within GRExprEngine and GRCoreEngine to use a "batch auditor" to dispatch to specialized auditors instead of having a separate vector for each audited Expr*. This not only provides a much cleaner implementation, but also allows us to install auditors for any expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53464 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
438a8f0415d3cc8c167f0d934751fb26ea176541 11-Jul-2008 Ted Kremenek <kremenek@apple.com> Patch by Csaba Hruska and Peter Neumark:

"adds support (de)serialization (from)to (in memory) buffer."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
0ce902bb293dfefd0610e59f7441339d803979cf 11-Jul-2008 Ted Kremenek <kremenek@apple.com> Patch by Csaba Hruska and Peter Neumark:

"adds support (de)serialization (from)to (in memory) buffer."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
f22f868d634a4d197db3805d1d724c42fa3bf07e 11-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactored most of the "Store" piece of ValueState into a Store type. The
current store implementation is now encapsulated by BasicStore.

These changes prompted some long due constification of ValueState. Much of the
diffs in this patch include adding "const" qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53423 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueState.h
4323a57627e796dcfdfdb7d47672dc09ed308eda 11-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactored most of the "Store" piece of ValueState into a Store type. The
current store implementation is now encapsulated by BasicStore.

These changes prompted some long due constification of ValueState. Much of the
diffs in this patch include adding "const" qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53423 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicStore.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/Store.h
nalysis/PathSensitive/ValueState.h
41189e8afe593f477e248db5d6b09a4c1b4aa2bb 10-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove unused class AnnotatedPath.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53413 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
e5690319a0e834b9bd9dcb5e444e59ecc5da3105 10-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove unused class AnnotatedPath.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53413 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
d45b9c680bdf99aa3610b54c87f7e50cc8956cce 10-Jul-2008 Ted Kremenek <kremenek@apple.com> Move some environment methods from ValueState/ValueStateManager to Environment/EnvironmentManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ValueState.h
d72ee907f76000446c706471e93d1f299104f9a7 10-Jul-2008 Ted Kremenek <kremenek@apple.com> Move some environment methods from ValueState/ValueStateManager to Environment/EnvironmentManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ValueState.h
ed022538e4341812396bd6ec740635a2ee0fd9f5 10-Jul-2008 Chris Lattner <sabre@nondot.org> Add an accessor, patch by Csaba Hruska.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53391 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
e3d5e3ae5bd8028774f07d7c3751d4db82118942 10-Jul-2008 Chris Lattner <sabre@nondot.org> Add an accessor, patch by Csaba Hruska.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53391 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
680e1d9c2eec9afaf8dfbc852a9fc5ab5058c242 10-Jul-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Simplify the parser a bit by looking at the next token without consuming it (by Preprocessor::LookNext):

-Remove ParseExpressionWithLeadingIdentifier and ParseAssignmentExprWithLeadingIdentifier.
-Separate ParseLabeledStatement from ParseIdentifierStatement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53376 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f7da726f09a6b7c5b9f5308e9690cb015398e671 10-Jul-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Simplify the parser a bit by looking at the next token without consuming it (by Preprocessor::LookNext):

-Remove ParseExpressionWithLeadingIdentifier and ParseAssignmentExprWithLeadingIdentifier.
-Separate ParseLabeledStatement from ParseIdentifierStatement.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53376 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e2187c26755e38ebfe23aeb65d56b66ecc75ee4c 10-Jul-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add Preprocessor::LookNext method, which implements an efficient way to 'take a peek' at the next token without consuming it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53375 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
9e0ed0bd5a3a7bac73973980ff32132a7724e674 10-Jul-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add Preprocessor::LookNext method, which implements an efficient way to 'take a peek' at the next token without consuming it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53375 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7f20dfb0988f28ad7f72f778979318c19d56be3e 09-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove getParentMap() from GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53343 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1fa7f58b3a5e8aca4745c59f99659c3e11e876c4 09-Jul-2008 Ted Kremenek <kremenek@apple.com> Remove getParentMap() from GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53343 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
df40dbffb74ee0b16ce55ccd4be8b57f8d74c4ab 09-Jul-2008 Chris Lattner <sabre@nondot.org> Add parser support for __builtin_stdarg_start, PR2531


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
f8396b6b58b423e7078dcda9092a065f9a4ba53a 09-Jul-2008 Chris Lattner <sabre@nondot.org> Add parser support for __builtin_stdarg_start, PR2531


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53328 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
587ecc593353956ad71e892bd6f4587273ba70d6 08-Jul-2008 Ted Kremenek <kremenek@apple.com> Initial work on splitting the ValueState into an Environment, Store, and
Constraints. These concepts are already present in the current ValueState, but
the implementation is monolothic. Making ValueState more modular opens up new
design choices for customizing the analysis engine.

In the context of the analysis engine, the "Environment" is the binding between
Expr* (expressions) and intermediate symbolic values (RValues).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53252 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ValueState.h
8133a26c166be89fb4f0a339db1e2fe923c51a70 08-Jul-2008 Ted Kremenek <kremenek@apple.com> Initial work on splitting the ValueState into an Environment, Store, and
Constraints. These concepts are already present in the current ValueState, but
the implementation is monolothic. Making ValueState more modular opens up new
design choices for customizing the analysis engine.

In the context of the analysis engine, the "Environment" is the binding between
Expr* (expressions) and intermediate symbolic values (RValues).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53252 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/Environment.h
nalysis/PathSensitive/ValueState.h
b16ece4089a0128bfff5004101e15f6f5748232c 08-Jul-2008 Anders Carlsson <andersca@mac.com> Add LValue setters for APValue

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
62f6b2110792f2db8feb35247b0ab824c6cc608d 08-Jul-2008 Anders Carlsson <andersca@mac.com> Add LValue setters for APValue

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
9ff57440840339193f6505028ae65de0fbd3b9f0 07-Jul-2008 Ted Kremenek <kremenek@apple.com> In a report-XXXXX.html, make the title include the name of the file with the bug. Patch by Jean-Daniel Dupas!

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-July/002166.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53184 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
f6f593fae2f0531b4bc06891941f7fbba5217618 07-Jul-2008 Ted Kremenek <kremenek@apple.com> In a report-XXXXX.html, make the title include the name of the file with the bug. Patch by Jean-Daniel Dupas!

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-July/002166.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53184 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
0473be44a47a93686fff9fe104201e0f4f54137f 05-Jul-2008 Seo Sanghyeon <sanxiyn@gmail.com> Fix warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53141 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
fe5042e287352d00db89508bf3c1373cc44b85db 05-Jul-2008 Seo Sanghyeon <sanxiyn@gmail.com> Fix warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53141 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
2261741ed3bb7b2296d89be09d138b6796acbfb6 05-Jul-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Remove unused diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53140 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8b8e9a8e6fb5e74924ccef147fa795ef7c874936 05-Jul-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove unused diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53140 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
55219f082cc8a095dd7d64495bb1bbdebaf2888f 04-Jul-2008 Seo Sanghyeon <sanxiyn@gmail.com> Fix warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/DeclSpec.h
b4825df6af2298f9007ee95ab5f16ed4b855ef4a 04-Jul-2008 Seo Sanghyeon <sanxiyn@gmail.com> Fix warnings

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/DeclSpec.h
4ea864d965fed51cd1012d8cd8f4fc76d9d25245 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Added an "ivar_empty" method to ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a0fb5861dec7aa1da0d21d5759678d76b00464f4 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Added an "ivar_empty" method to ObjCInterfaceDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53099 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
fd32dbf452f5359a2f71de5ed8d6b964dd67e765 03-Jul-2008 Ted Kremenek <kremenek@apple.com> For the -dealloc checker, check the LangOptions to determine whether or not the code is compiled with GC.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53098 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
3cd483cbbf8921f463b3ee91d5da8a63db9d1299 03-Jul-2008 Ted Kremenek <kremenek@apple.com> For the -dealloc checker, check the LangOptions to determine whether or not the code is compiled with GC.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53098 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
c2a9eae2f529583992e330eeb38d3b030e1ddf03 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Have BugReporter::getCFG and BugReporter::getLiveVariables returns pointers instead of references, because they can both fail
on functions we cannot construct full CFGs for yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53081 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
7032f460fc9828f386056e75933da5af61e88638 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Have BugReporter::getCFG and BugReporter::getLiveVariables returns pointers instead of references, because they can both fail
on functions we cannot construct full CFGs for yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53081 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
724133b70c24637b7fae38509ab393e4b4d28381 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Added static analysis check to see if a subclass of NSObject implements -dealloc, and whether or not that implementation calls [super dealloc].


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53075 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
db09a4dee28a4515438af60f2d2b4a83e4965c31 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Added static analysis check to see if a subclass of NSObject implements -dealloc, and whether or not that implementation calls [super dealloc].


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53075 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
c7436af079c74b24e071f32a8fd2e356577e3bcc 03-Jul-2008 Anders Carlsson <andersca@mac.com> Shuffle things around in preparation for integrating Eli's constant evaluator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
c44eec6dd29ee9415cbd38a35deff4c8b67abb6a 03-Jul-2008 Anders Carlsson <andersca@mac.com> Shuffle things around in preparation for integrating Eli's constant evaluator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
ST/Expr.h
26ef21085c85b74affb79ca68ca78ac07f1c5666 03-Jul-2008 Anders Carlsson <andersca@mac.com> Make APValue an APSInt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53072 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
2e478080f83f90728d8d56099cd32180c57debbc 03-Jul-2008 Anders Carlsson <andersca@mac.com> Make APValue an APSInt.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53072 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
eb9627b733b6e2b22b97105d149fc5ec6e864898 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Unify the code path for the Dead Stores checker to always use the BugReporter interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53054 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
e207558e9dbed963eebf5cf31fdb02616f1545a3 03-Jul-2008 Ted Kremenek <kremenek@apple.com> Unify the code path for the Dead Stores checker to always use the BugReporter interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53054 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
ba1c7eda054d485d3f62e1508f2bf48a4ca72ec3 02-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactored some of the BugReporter interface so that data such as the ASTContext&, PathDiagnosticClient*, can be provided by an external source.
Split BugReporter into BugReporter and GRBugReporter so checkers not based on GRExprEngine can still use the BugReporter mechanism.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53048 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
c095997b853270d8adb6fe55209a4dbc42803d16 02-Jul-2008 Ted Kremenek <kremenek@apple.com> Refactored some of the BugReporter interface so that data such as the ASTContext&, PathDiagnosticClient*, can be provided by an external source.
Split BugReporter into BugReporter and GRBugReporter so checkers not based on GRExprEngine can still use the BugReporter mechanism.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53048 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
1607f51cd36a79ddbfee87d5a58dc4df54416275 02-Jul-2008 Ted Kremenek <kremenek@apple.com> GRExprEngine now expects the LiveVariables information to be provided by its creator.
This allows an optimization in AnalysisConsumer where the same LiveVariables information is used between multiple analyses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53046 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8b23361a6a50be6dbd1056add570eb90598474b0 02-Jul-2008 Ted Kremenek <kremenek@apple.com> GRExprEngine now expects the LiveVariables information to be provided by its creator.
This allows an optimization in AnalysisConsumer where the same LiveVariables information is used between multiple analyses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53046 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
3349aa1f5db6e584ec34685539c8abdb22f0d55b 02-Jul-2008 Ted Kremenek <kremenek@apple.com> Added version of CheckDeadStores that accepts a client-provided LiveVariables object.
Modified the DeadStores logic in AnalysisConsumer.cpp to use the LiveVariables object created by the AnalysisManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53043 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
17fdf955237aa626acbfd6070633318380c2340f 02-Jul-2008 Ted Kremenek <kremenek@apple.com> Added version of CheckDeadStores that accepts a client-provided LiveVariables object.
Modified the DeadStores logic in AnalysisConsumer.cpp to use the LiveVariables object created by the AnalysisManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53043 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
ecf7951f409695472e8bfa9940886ee8dcb289d7 02-Jul-2008 Ted Kremenek <kremenek@apple.com> Added method "HandleTranslationUnit" to ASTConsumer. This is called by ParseAST when all of the ASTs in a translation unit have been built.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
c87190da60bca25fe3bc1fe6831916f0076b72b8 02-Jul-2008 Ted Kremenek <kremenek@apple.com> Added method "HandleTranslationUnit" to ASTConsumer. This is called by ParseAST when all of the ASTs in a translation unit have been built.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53042 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
38f16717fc72b2c9dcde319ae04bccc4b79a94e3 01-Jul-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add Sema support for C++ classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52956 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
07952324dda0e758c17f8bc3015793c65c51c48c 01-Jul-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add Sema support for C++ classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52956 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
2a674dca3ed88e58c536026c51a4ed9cbc32d4a8 30-Jun-2008 Chris Lattner <sabre@nondot.org> Make a few related changes:

1) add a new ASTContext::getFloatTypeSemantics method.
2) Use it from SemaExpr.cpp, CodeGenTypes.cpp and other places.
3) Change the TargetInfo.h get*Format methods to return their
fltSemantics byref instead of by pointer.
4) Change CodeGenFunction::EmitBuiltinExpr to allow builtins which
sometimes expand specially and othertimes fall back to libm.
5) Add support for __builtin_nan("") to codegen, cases that don't pass
in an empty string are currently lowered to libm calls.
6) Fix codegen of __builtin_infl.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
asic/TargetInfo.h
b7cfe88e88cb4f46308de89cf3f0c81bfe624128 30-Jun-2008 Chris Lattner <sabre@nondot.org> Make a few related changes:

1) add a new ASTContext::getFloatTypeSemantics method.
2) Use it from SemaExpr.cpp, CodeGenTypes.cpp and other places.
3) Change the TargetInfo.h get*Format methods to return their
fltSemantics byref instead of by pointer.
4) Change CodeGenFunction::EmitBuiltinExpr to allow builtins which
sometimes expand specially and othertimes fall back to libm.
5) Add support for __builtin_nan("") to codegen, cases that don't pass
in an empty string are currently lowered to libm calls.
6) Fix codegen of __builtin_infl.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52914 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
asic/TargetInfo.h
ca8dbcade97e1f38fe263982421843fab6efa0ea 30-Jun-2008 Chris Lattner <sabre@nondot.org> refactor some code out into a new method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52889 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
368328c88bd46f471bbf85f05438b4f2eb95df5b 30-Jun-2008 Chris Lattner <sabre@nondot.org> refactor some code out into a new method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52889 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
2024f0a17308abe4dd030e4c51ec26b746b8c31f 29-Jun-2008 Chris Lattner <sabre@nondot.org> Make ProcessDeclAttributes walk the declarator structure pulling
decl attributes out of the various places they can hide. This makes
us correctly reject things like this:

t.c:2:22: error: mode attribute only supported for integer and floating-point types
int **__attribute((mode(HI)))* i32;
^

because you can't make a pointer be HImode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52876 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e5c5ee1cff9ec084f176fa252774262677857ad2 29-Jun-2008 Chris Lattner <sabre@nondot.org> Make ProcessDeclAttributes walk the declarator structure pulling
decl attributes out of the various places they can hide. This makes
us correctly reject things like this:

t.c:2:22: error: mode attribute only supported for integer and floating-point types
int **__attribute((mode(HI)))* i32;
^

because you can't make a pointer be HImode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52876 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
8ed14aa3f5b64c6f6d755a8da2b040c2b0ca67ce 29-Jun-2008 Chris Lattner <sabre@nondot.org> more cleanups, refactor HandleVectorTypeAttribute
to work list the rest of the attr handlers. Also, rename
it to HandleVectorSizeAttribute to match its attr name.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
065c5a801f46dda8ff0cd6ad954c4e5f94a3be75 29-Jun-2008 Chris Lattner <sabre@nondot.org> more cleanups, refactor HandleVectorTypeAttribute
to work list the rest of the attr handlers. Also, rename
it to HandleVectorSizeAttribute to match its attr name.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52872 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0832dbca0e11ee020bbed181c515b3835158436e 28-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Fix for PR2501; this patch makes usual arithmetic conversions for
integers which have the same width and different signedness work
correctly. (The testcase in PR2501 uses a comparison between long and
unsigned int).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
ad74a758189180b8ab8faea648e4766c3bfd7fcb 28-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Fix for PR2501; this patch makes usual arithmetic conversions for
integers which have the same width and different signedness work
correctly. (The testcase in PR2501 uses a comparison between long and
unsigned int).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52853 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
dc78956c9ddfdfd21f6f29f7eb5f372c3a29da82 28-Jun-2008 Chris Lattner <sabre@nondot.org> the 'mode' attribute is a decl attribute, not a type attribute. Move it to
SemaDeclAttr, and do some cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
fbf1347e1e225cbc206563bba3f0a75f9ceaa571 28-Jun-2008 Chris Lattner <sabre@nondot.org> the 'mode' attribute is a decl attribute, not a type attribute. Move it to
SemaDeclAttr, and do some cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0009c94da2436d389f27f95bd4e0d8e6c47bcb55 26-Jun-2008 Cédric Venet <cedric.venet@laposte.net> Another class -> struct in declaration to match definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8429fca639bb4fbb6d589f85a2cc84513db4f748 26-Jun-2008 Cedric Venet <cedric.venet@laposte.net> Another class -> struct in declaration to match definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52782 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
25349e4514db9ff59de74f2549113a75028af2a4 26-Jun-2008 Matthijs Kooijman <matthijs@stdin.nl> Make clang work on 32 bit powerpc linux.

Patch by Nick Lewycky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
e9484fc09a82b0bcd9f4921083440df4aea04f52 26-Jun-2008 Matthijs Kooijman <matthijs@stdin.nl> Make clang work on 32 bit powerpc linux.

Patch by Nick Lewycky!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
5e77adeee0a6117f659a5046badcb97fe6fedb67 26-Jun-2008 Chris Lattner <sabre@nondot.org> Make Declarator::getDeclSpec() return a const reference to avoid
cases where mutation can introduce bugs. Propagate around 'const'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52772 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
985abd958d83e4f109a15451440f1d008ae45f59 26-Jun-2008 Chris Lattner <sabre@nondot.org> Make Declarator::getDeclSpec() return a const reference to avoid
cases where mutation can introduce bugs. Propagate around 'const'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52772 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
c1cdb6220e2f892cef6bc64d4b33d2090e58744e 26-Jun-2008 Chris Lattner <sabre@nondot.org> another const correctness bug with declspec.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52768 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
65e4af90e6b0ed991525718d20ba5b06e79c9072 26-Jun-2008 Chris Lattner <sabre@nondot.org> another const correctness bug with declspec.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52768 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
02c126db0f385d68e971fc0e8d61771705194a63 26-Jun-2008 Chris Lattner <sabre@nondot.org> fix const correctness of accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52767 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
e6bec8a6e99bcc9894b3a8bc54434eca4cbe6a6e 26-Jun-2008 Chris Lattner <sabre@nondot.org> fix const correctness of accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52767 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
9d464449c2a782e0a91ea85d79ad9e35418ec441 25-Jun-2008 Ted Kremenek <kremenek@apple.com> Add Profile method to QualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3f2dcb1ca8bd2d5d3ccc5c80f4ab06f949d88a89 25-Jun-2008 Ted Kremenek <kremenek@apple.com> Add Profile method to QualType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52735 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3c5b5a448a9d66ea0a0a26adefe0ef5afd56a894 25-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Set CXXClassVar to identifier namespace IDNS_Ordinary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
09c31b0d78fc4e7f1d1828d01d9977cc3e242ea3 25-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Set CXXClassVar to identifier namespace IDNS_Ordinary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52718 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
d626facb27e3ef035fa9a1871e7c1ca113d45bd4 25-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Set CXXMethod to identifier namespace IDNS_Ordinary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52697 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
1ce6eadf80453d132d378ee031f3fbf5259a7d2a 25-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Set CXXMethod to identifier namespace IDNS_Ordinary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52697 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
9d78433ee41612448ebaae769e041991bae86364 25-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Add parsing support for C++ classes.

Note that Parser::ParseCXXMemberSpecification is temporarily disabled until the Sema support is in place.
Once ParseCXXMemberSpecification is enabled, the Parser/cxx-class.cpp test will pass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52694 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
arse/Scope.h
4cc18a4d5222e04bd568b1e3e4d86127dbbcdf3f 25-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add parsing support for C++ classes.

Note that Parser::ParseCXXMemberSpecification is temporarily disabled until the Sema support is in place.
Once ParseCXXMemberSpecification is enabled, the Parser/cxx-class.cpp test will pass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52694 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
arse/Scope.h
1f843bc6d8ea3c9ac550a64b37e37968b98580d2 24-Jun-2008 Ted Kremenek <kremenek@apple.com> Update serialization for ObjCMessageExpr to handle additional bit-swizziling of receiver information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
be78424edfbc6095c4acb83c7ae7f53a42f0c870 24-Jun-2008 Ted Kremenek <kremenek@apple.com> Update serialization for ObjCMessageExpr to handle additional bit-swizziling of receiver information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52679 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ee2c9fdd5260852b8835dbb187a8e26101924e69 24-Jun-2008 Ted Kremenek <kremenek@apple.com> ObjCMessageExpr objects that represent messages to class methods now can contain the ObjCInterfaceDecl* of the target class if it was available when the ObjCMessageExpr object was constructed. The original interfaces of the class has been preserved (requiring no functionality changes from clients), but now a "getClasSInfo" method returns both the ObjCInterfaceDecl* and IdentifierInfo* of the target class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
4df728e368fa1f65ffc57572fed613dcca5b4fe8 24-Jun-2008 Ted Kremenek <kremenek@apple.com> ObjCMessageExpr objects that represent messages to class methods now can contain the ObjCInterfaceDecl* of the target class if it was available when the ObjCMessageExpr object was constructed. The original interfaces of the class has been preserved (requiring no functionality changes from clients), but now a "getClasSInfo" method returns both the ObjCInterfaceDecl* and IdentifierInfo* of the target class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
3db4ab47936cd2053bc8c992823caa5a9712ab54 24-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Move the namespace action declarations at the "C++ declarations" section.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52673 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0d8ac9a8b13609a4881f69ab40e64cbe20929d0a 24-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Move the namespace action declarations at the "C++ declarations" section.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52673 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
55ab98463d41f1be5a1bd24f5a740a866241f01d 24-Jun-2008 Cédric Venet <cedric.venet@laposte.net> Test commit: changed the forward declaration of FieldDeclarator from class to struct to be coherent with its definition (DeclSpec.h)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52671 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0d6d153cbeda12c75073fabfcf27dffd8c710816 24-Jun-2008 Cedric Venet <cedric.venet@laposte.net> Test commit: changed the forward declaration of FieldDeclarator from class to struct to be coherent with its definition (DeclSpec.h)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52671 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a224a3045e613251881ee43e92e3e1a90eeffb21 24-Jun-2008 Ted Kremenek <kremenek@apple.com> Fix comments: "class method" should be "instance method" and vis versa


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52669 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
a75a8ea5b72ebdda5f651b57ae2c3b4e84b69253 24-Jun-2008 Ted Kremenek <kremenek@apple.com> Fix comments: "class method" should be "instance method" and vis versa


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52669 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
d63b5017e0fa28d94bacd4ec26082a3442695339 22-Jun-2008 Chris Lattner <sabre@nondot.org> add a new clang::APValue class at Eli's request. It is a discriminated
union between [potentially complex] APInt/APFloat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
8031a85dc88225723d960c7c142e4fe97c2f12fe 22-Jun-2008 Chris Lattner <sabre@nondot.org> add a new clang::APValue class at Eli's request. It is a discriminated
union between [potentially complex] APInt/APFloat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/APValue.h
1bf58f62dfed33edee9838888757b4822b36e054 21-Jun-2008 Chris Lattner <sabre@nondot.org> add parser and sema support for the funny ObjC '@defs' thing.
Patch by David Chisnall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
5a6ddbf295d2ea1c28cfb67d82db22f3893ede6f 21-Jun-2008 Chris Lattner <sabre@nondot.org> add parser and sema support for the funny ObjC '@defs' thing.
Patch by David Chisnall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52586 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
ffc58c83c5d94cb90c3cc23fe632fda66a6ef3b1 21-Jun-2008 Chris Lattner <sabre@nondot.org> remove dead enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52581 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
63e9d5673791096589c601528e857e00a13050ff 21-Jun-2008 Chris Lattner <sabre@nondot.org> remove dead enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52581 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4423d37a36311b4e68a8715c4b60d4548c7588b0 21-Jun-2008 Chris Lattner <sabre@nondot.org> Switch 'super' from being a weird cast thing to being a predefined expr node.
Patch by David Chisnall with objc rewriter and stmtdumper updates from me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0d17f6f7b1882850fa56ad38cca0ee518869255b 21-Jun-2008 Chris Lattner <sabre@nondot.org> Switch 'super' from being a weird cast thing to being a predefined expr node.
Patch by David Chisnall with objc rewriter and stmtdumper updates from me.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
72f52c0010cac37eb6e222bcd4c2a75057890f02 20-Jun-2008 Ted Kremenek <kremenek@apple.com> Modified the dead stores checker to...

1) Check if a dead store appears as a subexpression. For such cases, we emit
a verbose diagnostic so that users aren't confused. This addresses:

<rdar://problem/5968508> checker gives misleading report for dead store in loop

2) Don't emit a dead store warning when assigning a null value to a pointer.
This is a common form of defensive programming. We may wish to make
this an option to the the checker one day.

This addresses the feature request in the following email:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-June/001978.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52555 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
1a654b60ef40e84f3943cdb581795c4d4dae1e45 20-Jun-2008 Ted Kremenek <kremenek@apple.com> Modified the dead stores checker to...

1) Check if a dead store appears as a subexpression. For such cases, we emit
a verbose diagnostic so that users aren't confused. This addresses:

<rdar://problem/5968508> checker gives misleading report for dead store in loop

2) Don't emit a dead store warning when assigning a null value to a pointer.
This is a common form of defensive programming. We may wish to make
this an option to the the checker one day.

This addresses the feature request in the following email:

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-June/001978.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52555 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
0cac82a6bb098d713f3516ef0d743a71023cb4de 20-Jun-2008 Ted Kremenek <kremenek@apple.com> Added ParentMap, a class to represent a lazily constructed mapping from child to parents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
f8e32cf062f39fff1a00aff748cb6b5dc0abc2fe 20-Jun-2008 Ted Kremenek <kremenek@apple.com> Added ParentMap, a class to represent a lazily constructed mapping from child to parents.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ParentMap.h
8e5dfe98676eb6ed1c95a1d0d9854e267044992e 20-Jun-2008 Ted Kremenek <kremenek@apple.com> Added "Decl::getCodyBody()", a virtual method that returns the root AST node (Stmt*) that the Decl wraps (if any). Currently this only returns a non-null value for FunctionDecl and ObjCMethodDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
792481eec23d8c1aa92173be589e2ae9d02514a5 20-Jun-2008 Ted Kremenek <kremenek@apple.com> Added "Decl::getCodyBody()", a virtual method that returns the root AST node (Stmt*) that the Decl wraps (if any). Currently this only returns a non-null value for FunctionDecl and ObjCMethodDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
f05eec434a61b9f70e63d085ac2b6b1bb3ccef31 18-Jun-2008 Ted Kremenek <kremenek@apple.com> Added a new ProgramPoint: PostPurgeDeadSymbols. This new program point distinguishes between the cases when we just evaluated the transfer function of a Stmt* (PostStmt) or performed a load (PostLoad). This solves a caching bug observed in a recent bug report.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52443 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/ProgramPoint.h
331b0ac44b9eb0ffcba66b4f3f3f9adb27c2434f 18-Jun-2008 Ted Kremenek <kremenek@apple.com> Added a new ProgramPoint: PostPurgeDeadSymbols. This new program point distinguishes between the cases when we just evaluated the transfer function of a Stmt* (PostStmt) or performed a load (PostLoad). This solves a caching bug observed in a recent bug report.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52443 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/ProgramPoint.h
8c7c6a18ccb1d4a9e6b4673eccf2ed7a77e5dba4 17-Jun-2008 Chris Lattner <sabre@nondot.org> Change self/_cmd to be instances of ImplicitParamDecl instead of ParmVarDecl.
Patch by David Chisnall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
4111024be81e7c0525e42dadcc126d27e5bf2425 17-Jun-2008 Chris Lattner <sabre@nondot.org> Change self/_cmd to be instances of ImplicitParamDecl instead of ParmVarDecl.
Patch by David Chisnall!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52422 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
156714e64d20160e0e57bd34adcd422fa82819dc 17-Jun-2008 Ted Kremenek <kremenek@apple.com> Fix more strict-aliasing warnings.
Fix indentation of class declarations in ExprCXX.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52380 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Stmt.h
1060aff23f72135f8b50034a1e80f16725ebc56c 17-Jun-2008 Ted Kremenek <kremenek@apple.com> Fix more strict-aliasing warnings.
Fix indentation of class declarations in ExprCXX.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52380 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/Stmt.h
2719e9894e3e62bdfb9ee8ac2a520549dc4d5360 17-Jun-2008 Ted Kremenek <kremenek@apple.com> This patch is motivated by numerous strict-aliasing warnings when compiling
clang as a Release build.

The big change is that all AST nodes (subclasses of Stmt) whose children are
Expr* store their children as Stmt* or arrays of Stmt*. This is to remove
strict-aliasing warnings when using StmtIterator. None of the interfaces of any
of the classes have changed (except those with arg_iterators, see below), as the
accessor methods introduce the needed casts (via cast<>). While this extra
casting may seem cumbersome, it actually adds some important sanity checks
throughout the codebase, as clients using StmtIterator can potentially overwrite
children that are expected to be Expr* with Stmt* (that aren't Expr*). The casts
provide extra sanity checks that are operational in debug builds to catch
invariant violations such as these.

For classes that have arg_iterators (e.g., CallExpr), the definition of
arg_iterator has been replaced. Instead of it being Expr**, it is an actual
class (called ExprIterator) that wraps a Stmt**, and provides the necessary
operators for iteration. The nice thing about this class is that it also uses
cast<> to type-checking, which introduces extra sanity checks throughout the
codebase that are useful for debugging.

A few of the CodeGen functions that use arg_iterator (especially from
OverloadExpr) have been modified to take begin and end iterators instead of a
base Expr** and the number of arguments. This matches more with the abstraction
of iteration. This still needs to be cleaned up a little bit, as clients expect
that ExprIterator is a RandomAccessIterator (which we may or may not wish to
allow for efficiency of representation).

This is a fairly large patch. It passes the tests (except CodeGen/bitfield.c,
which was already broken) on both a Debug and Release build, but it should
obviously be reviewed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
5549976193e34417d4474a5f4a514268ef6666c7 17-Jun-2008 Ted Kremenek <kremenek@apple.com> This patch is motivated by numerous strict-aliasing warnings when compiling
clang as a Release build.

The big change is that all AST nodes (subclasses of Stmt) whose children are
Expr* store their children as Stmt* or arrays of Stmt*. This is to remove
strict-aliasing warnings when using StmtIterator. None of the interfaces of any
of the classes have changed (except those with arg_iterators, see below), as the
accessor methods introduce the needed casts (via cast<>). While this extra
casting may seem cumbersome, it actually adds some important sanity checks
throughout the codebase, as clients using StmtIterator can potentially overwrite
children that are expected to be Expr* with Stmt* (that aren't Expr*). The casts
provide extra sanity checks that are operational in debug builds to catch
invariant violations such as these.

For classes that have arg_iterators (e.g., CallExpr), the definition of
arg_iterator has been replaced. Instead of it being Expr**, it is an actual
class (called ExprIterator) that wraps a Stmt**, and provides the necessary
operators for iteration. The nice thing about this class is that it also uses
cast<> to type-checking, which introduces extra sanity checks throughout the
codebase that are useful for debugging.

A few of the CodeGen functions that use arg_iterator (especially from
OverloadExpr) have been modified to take begin and end iterators instead of a
base Expr** and the number of arguments. This matches more with the abstraction
of iteration. This still needs to be cleaned up a little bit, as clients expect
that ExprIterator is a RandomAccessIterator (which we may or may not wish to
allow for efficiency of representation).

This is a fairly large patch. It passes the tests (except CodeGen/bitfield.c,
which was already broken) on both a Debug and Release build, but it should
obviously be reviewed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprObjC.h
25c3f2ff6c0a8c2d226b5f7b3db6223c36c7a027 10-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Fix getTrueExpr for ConditionalOperator to actually work. No testcase
because it's currently unused.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dbdbbd7a7b728bf7734c992fe72b0e549d31a710 10-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Fix getTrueExpr for ConditionalOperator to actually work. No testcase
because it's currently unused.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52166 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a5c14b2e73e1674e639478142adf0ab71d00c367 10-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> -Add DeclChain member to DeclContext.
-ScopedDecls get chained to their DeclContext.
-DeclContext's DeclChain replaces FunctionDecl's DeclChain and EnumDecl's ElementList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
7643536c36b0449256d5ee2efc03a7e4a784a0b3 10-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Add DeclChain member to DeclContext.
-ScopedDecls get chained to their DeclContext.
-DeclContext's DeclChain replaces FunctionDecl's DeclChain and EnumDecl's ElementList.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52164 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
c6cc7d5a60b59381f1c9880ed8fdb9b2316c3a85 10-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> -Changes to TagDecl:
Added TagKind enum.
Added getTagKind() method.
Added convenience methods: isEnum(), isStruct(), isUnion(), isClass().
-RecordDecl/CXXRecordDecl::Create() accept a TagKind enum instead of a DeclKind one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
39ba4aeca296b1c9f04bde7d9d3cbbf129f1abd3 10-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> -Changes to TagDecl:
Added TagKind enum.
Added getTagKind() method.
Added convenience methods: isEnum(), isStruct(), isUnion(), isClass().
-RecordDecl/CXXRecordDecl::Create() accept a TagKind enum instead of a DeclKind one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52160 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclCXX.h
6df1fc024820b27e7f4a6bee6e15052bbec8eea0 09-Jun-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Added new C++ AST Decl subclasses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
d3bb44f0f1a83cb208d3e61ee80afe6a4d20d2d8 09-Jun-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Added new C++ AST Decl subclasses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/Decl.h
ST/DeclBase.h
ST/DeclCXX.h
7853438716ca87cd811b17e1d7800da38e815638 08-Jun-2008 Nuno Lopes <nunoplopes@sapo.pt> implement the alias attirbute (in both Sema and Codegen)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
d4cbda6292b321c2e7dce7f039d92918fee99b3a 08-Jun-2008 Nuno Lopes <nunoplopes@sapo.pt> implement the alias attirbute (in both Sema and Codegen)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
1aaf71cae87511d0e93c4384de8bad267992310a 08-Jun-2008 Chris Lattner <sabre@nondot.org> capture whether a CharacterLiteral was wide or not in the AST.
Patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c250aae4f645833aed3a6321bc8598f7330dce8d 08-Jun-2008 Chris Lattner <sabre@nondot.org> capture whether a CharacterLiteral was wide or not in the AST.
Patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52081 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e0391b21fd15dcc6a3800b6a81794b5d790d2e20 08-Jun-2008 Chris Lattner <sabre@nondot.org> Fix ast dumping to work with long double literals, e.g. we dump:

long double X() { return 1.0L; }

as:

long double X()
(CompoundStmt 0xb06a00 <t.c:2:17, col:32>
(ReturnStmt 0xb068d0 <col:19, col:26>
(FloatingLiteral 0xb02cf0 <col:26> 'long double' 1.000000)))




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
da8249e57f3badecf925571881fe57243935c6c1 08-Jun-2008 Chris Lattner <sabre@nondot.org> Fix ast dumping to work with long double literals, e.g. we dump:

long double X() { return 1.0L; }

as:

long double X()
(CompoundStmt 0xb06a00 <t.c:2:17, col:32>
(ReturnStmt 0xb068d0 <col:19, col:26>
(FloatingLiteral 0xb02cf0 <col:26> 'long double' 1.000000)))




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52080 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7294056c55bb759738d07c02fc0092172b57bfdb 07-Jun-2008 Chris Lattner <sabre@nondot.org> Mark the right ctor explicit, patch by Cédric Venet


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52078 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
259dfdc79126a957e56e55e3e3788031b99be12f 07-Jun-2008 Chris Lattner <sabre@nondot.org> Mark the right ctor explicit, patch by Cédric Venet


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52078 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
2a4224a74da7c625d030c24e6a1bd1aa3f50f0e8 07-Jun-2008 Ted Kremenek <kremenek@apple.com> Use a common SourceManager when processing multiple files. This allows us to cache the contents of source files already loaded from disk.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c0c03bc3c4669897ce8a995d7c20d9c71bc7cc8f 07-Jun-2008 Ted Kremenek <kremenek@apple.com> Use a common SourceManager when processing multiple files. This allows us to cache the contents of source files already loaded from disk.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52066 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
1e5e0bfd13493c9442af346f4756e2a4e3803be8 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Reclaim memory owned by ObjCForwardProtocolDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52063 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
05ac3ef08f9d06e0a4439073c9edabf7f912f946 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Reclaim memory owned by ObjCForwardProtocolDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52063 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ff29162389e64413aafc9e6d92faa2c2b9cf5591 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Implement "Destroy" and destructor for ObjCClassDecl, allowing us to reclaim its memory and the memory of the Decls it owns.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52059 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
400d95fb7bb9fac609f8613862b84f3a2a7d510f 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Implement "Destroy" and destructor for ObjCClassDecl, allowing us to reclaim its memory and the memory of the Decls it owns.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52059 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c906e5e396834868d595dbec5035906abefeceef 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Implement "Destroy" and destructor for ObjCProtocolDecl, allowing us to reclaim its memory and the memory of the Decls it owns.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1c8a413c1e00636c77666ddf1e3b0311f3fa8c81 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Implement "Destroy" and destructor for ObjCProtocolDecl, allowing us to reclaim its memory and the memory of the Decls it owns.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8c945b1ec3dd1a9cf740f11dcc3799e0bff5d6f4 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Initial work on additional memory collection for ObjC AST objects. We now
have Destroy methods of ObjcMethodDecl and ObjCInterfaceDecl which recursively
destroy their owned Decls and Stmts. There are a few cases where it is not
clear what to do (FIXMEs included in the patch).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8a779314870760848e61da2c428a78971fe3f1c3 06-Jun-2008 Ted Kremenek <kremenek@apple.com> Initial work on additional memory collection for ObjC AST objects. We now
have Destroy methods of ObjcMethodDecl and ObjCInterfaceDecl which recursively
destroy their owned Decls and Stmts. There are a few cases where it is not
clear what to do (FIXMEs included in the patch).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8682d88fcd4ed14b139661303eb3d6232ca1bbd4 06-Jun-2008 Devang Patel <dpatel@apple.com> During interface layout, don't forget super class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
6a5a34c0e5587263df719c62030761cf59d27fe4 06-Jun-2008 Devang Patel <dpatel@apple.com> During interface layout, don't forget super class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
96bbf808c93b5f6d796f0302c250ad966bd71345 06-Jun-2008 Devang Patel <dpatel@apple.com> Undo previous check-in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
80d310c6310084fb2bd9d37ecf3a32dac1148533 06-Jun-2008 Devang Patel <dpatel@apple.com> Undo previous check-in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52034 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
fa6f94876cdaf7ef2f07777900aa9b58ece154d0 06-Jun-2008 Devang Patel <dpatel@apple.com> During interface layout, don't forget super class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
0e8eda7a4da933b04eac89d2856abf728188bf13 06-Jun-2008 Devang Patel <dpatel@apple.com> During interface layout, don't forget super class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
d1f0eb4423554ae71b014a90c386a2b1d67e6d7b 05-Jun-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/5987482> clang on xcode: null dereference in Sema::ActOnMemberReferenceExpr.

In addition to fixing the crasher, this commit fixes further improves property lookup (by searching protocols of qualified interfaces..."NSObject <prot>").


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3d2c22b1d334fa74d26a5f21841cb55df5dfdd1a 05-Jun-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/5987482> clang on xcode: null dereference in Sema::ActOnMemberReferenceExpr.

In addition to fixing the crasher, this commit fixes further improves property lookup (by searching protocols of qualified interfaces..."NSObject <prot>").


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0a7149f3e73bacda21c7c0b02f6b0d9fef2332ac 05-Jun-2008 Steve Naroff <snaroff@apple.com> Fix trivial crasher and downgrade an error to warning (to match GCC).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
74199b6507ff0094b74841620063d88c9669e2d7 05-Jun-2008 Steve Naroff <snaroff@apple.com> Fix trivial crasher and downgrade an error to warning (to match GCC).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51976 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4b6bf7037bfd27f8f07e72322a84a3c1202d7627 04-Jun-2008 Devang Patel <dpatel@apple.com> Add ObjCInterface layout support.
Reuse RecordLayout.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
44a3dded8080c5c9cfdad208ade8f8f7850d9a4f 04-Jun-2008 Devang Patel <dpatel@apple.com> Add ObjCInterface layout support.
Reuse RecordLayout.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
bfe323c208a547e55c9c68f3df04adcac4321e2c 04-Jun-2008 Devang Patel <dpatel@apple.com> Refactoring.
Move field layout code in a ASTRecordLayout member fn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
8b27704d61be128bbff6352e6ef417efc0d6bf4f 04-Jun-2008 Devang Patel <dpatel@apple.com> Refactoring.
Move field layout code in a ASTRecordLayout member fn.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
38f2caa6a8e671ce7189b63bfaeda11f323582ec 04-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Don't assume that the type of a FunctionDecl is a FunctionType; that
assumption isn't accurate in the presence of typedefs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
50c5c7241029651d4ff976f840bbca59fa81445f 04-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Don't assume that the type of a FunctionDecl is a FunctionType; that
assumption isn't accurate in the presence of typedefs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
842126ec695852dbf8803d7570799c00b69b61cb 04-Jun-2008 Ted Kremenek <kremenek@apple.com> Moved LangOptions from TranslationUnit to ASTContext. This induced a variety of cleanups in some ASTConsumers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TranslationUnit.h
e7d07d113677a39026ff5119b8b67f6fe8ca9793 04-Jun-2008 Ted Kremenek <kremenek@apple.com> Moved LangOptions from TranslationUnit to ASTContext. This induced a variety of cleanups in some ASTConsumers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51943 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/TranslationUnit.h
8bb229201d651479a1219ed8806e855e12a0b669 04-Jun-2008 Steve Naroff <snaroff@apple.com> Add a few more built-in functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
eaf9a42b78ef8e5f2eac5dfaf45a666f2f1d00f9 04-Jun-2008 Steve Naroff <snaroff@apple.com> Add a few more built-in functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51921 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
48fb3eeb6f7e1b50cbd3709263be0baa20a3c86e 03-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Re-fix r51907 in a way which doesn't affect valid code. This essentially
moves the check for the invalid construct to a point where it doesn't
affect other uses of isIntegerConstantExpr, and we can warn properly
when the extension is used. This makes it a bit more complicated, but
it's a lot cleaner.

Steve, please tell me if this check is sufficient to handle the
relevant system header. I know it's enough to handle the testcase, but
I don't know what exactly the original looks like.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1b76ada683bcec33799fd0eb114aaad3e1d04ca9 03-Jun-2008 Eli Friedman <eli.friedman@gmail.com> Re-fix r51907 in a way which doesn't affect valid code. This essentially
moves the check for the invalid construct to a point where it doesn't
affect other uses of isIntegerConstantExpr, and we can warn properly
when the extension is used. This makes it a bit more complicated, but
it's a lot cleaner.

Steve, please tell me if this check is sufficient to handle the
relevant system header. I know it's enough to handle the testcase, but
I don't know what exactly the original looks like.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51918 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a4280534357cc1347522886b5471d9e2e31d94c4 03-Jun-2008 Steve Naroff <snaroff@apple.com> Add a builtin. Fixes <rdar://problem/5982037> clang on xcode: error: incompatible operand types ('int' and 'char *').


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51908 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
cf00e0bee3c664eff8c2f00272ddcf17a321b78f 03-Jun-2008 Steve Naroff <snaroff@apple.com> Add a builtin. Fixes <rdar://problem/5982037> clang on xcode: error: incompatible operand types ('int' and 'char *').


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51908 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
5ad852960e0498af6d221096c7e4e6251e39ef19 03-Jun-2008 Steve Naroff <snaroff@apple.com> Allow for a GCC cast extension.
Fixes part of <rdar://problem/5980829> clang on xcode: used type 'NSRange' where arithmetic or pointer type is required.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51900 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
63564b8f8bbe83c236ddf74c257a63fa1341a274 03-Jun-2008 Steve Naroff <snaroff@apple.com> Allow for a GCC cast extension.
Fixes part of <rdar://problem/5980829> clang on xcode: used type 'NSRange' where arithmetic or pointer type is required.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51900 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6f78625be42e0cc4d962a80d05aa71e37f59011d 03-Jun-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/5979875> clang on xcode: error: use of undeclared identifier 'super'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
e3e9add4fd788927df6f545570e7838db59c01d7 03-Jun-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/5979875> clang on xcode: error: use of undeclared identifier 'super'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
bfcf4775542adc2b055de7083ec31300a60ed279 02-Jun-2008 Chris Lattner <sabre@nondot.org> handle the full assignment-expression grammar when using an
objc message send in an initializer expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51882 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b93fb495660665c17c7f43172ae155d6a8c32ce8 02-Jun-2008 Chris Lattner <sabre@nondot.org> handle the full assignment-expression grammar when using an
objc message send in an initializer expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51882 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7765434b52a807b234d8567baea6718c509ae79b 02-Jun-2008 Nuno Lopes <nunoplopes@sapo.pt> fix decl attributes cleaning
this plugs the leak of attributes and also fixes a crash in the test

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
9141bee299a05349924a34a7153d7064c9e0a107 02-Jun-2008 Nuno Lopes <nunoplopes@sapo.pt> fix decl attributes cleaning
this plugs the leak of attributes and also fixes a crash in the test

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
79b50cb1dc1d0ea23c45d05d77878fc0fc265559 31-May-2008 Ted Kremenek <kremenek@apple.com> Added "InitializeTU" to ASTConsumer. This is used by Sema::ParseAST to pass a
TranslationUnit object instead of an ASTContext. By default it calls
Initialize(ASTConstext& Context) (to match with the current interface used by
most ASTConsumers).

Modified the ObjC-Rewriter to use InitializeTU, and to tell the TranslationUnit
to not free its Decls. This is a workaround for: <rdar://problem/5966749>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
e3a6198400453c0d9623207718e4942f7c111f87 31-May-2008 Ted Kremenek <kremenek@apple.com> Added "InitializeTU" to ASTConsumer. This is used by Sema::ParseAST to pass a
TranslationUnit object instead of an ASTContext. By default it calls
Initialize(ASTConstext& Context) (to match with the current interface used by
most ASTConsumers).

Modified the ObjC-Rewriter to use InitializeTU, and to tell the TranslationUnit
to not free its Decls. This is a workaround for: <rdar://problem/5966749>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
718b6638e0d259d1b8371ef30e475e9c2e981ffc 30-May-2008 Ted Kremenek <kremenek@apple.com> Fix some strict-aliasing warnings by using Stmt* instead of Expr* in VariableArrayType, EnumConstantDecl, and VarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51772 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
b3064041583eb134fbf56906728bf752bc65b572 30-May-2008 Ted Kremenek <kremenek@apple.com> Fix some strict-aliasing warnings by using Stmt* instead of Expr* in VariableArrayType, EnumConstantDecl, and VarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51772 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
05391d26ab56348a43ea4f8059d67f2ce7fc3d77 30-May-2008 Steve Naroff <snaroff@apple.com> Add basic support for properties references (a missing feature).

While it is far from complete, it does fix the following <rdar://problem/5967199> clang on xcode: error: member reference is not to a structure or union



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
ae7840776d6cd31b4d7a4a345b61bcbb3744df6c 30-May-2008 Steve Naroff <snaroff@apple.com> Add basic support for properties references (a missing feature).

While it is far from complete, it does fix the following <rdar://problem/5967199> clang on xcode: error: member reference is not to a structure or union



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51719 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprObjC.h
ST/StmtNodes.def
9ed3e7794b4c45ba3856f5997191d16e234df958 29-May-2008 Steve Naroff <snaroff@apple.com> - Move ObjC Expresssion AST's from Expr.h => ExprObjC.h
- #include ExprObjC.h in many places


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/Expr.h
ST/ExprObjC.h
ST/StmtVisitor.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
f494b579b22f9950f5af021f0bf9879a91bb8b41 29-May-2008 Steve Naroff <snaroff@apple.com> - Move ObjC Expresssion AST's from Expr.h => ExprObjC.h
- #include ExprObjC.h in many places


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/Expr.h
ST/ExprObjC.h
ST/StmtVisitor.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
ca2a8dde4aa348ad253609fe417674b81bcd88f2 29-May-2008 Anton Korobeynikov <asl@math.spbu.ru> Update to follow recent LLVM changes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
ewrite/RewriteRope.h
525204a7ca5c3c0aac8166d8f27abb988a84c850 29-May-2008 Anton Korobeynikov <asl@math.spbu.ru> Update to follow recent LLVM changes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
ewrite/RewriteRope.h
3a22b7c929a8f727fcee2b49a0a34616fdfabe6e 29-May-2008 Chris Lattner <sabre@nondot.org> Implement support for -w, which silences all warnings. PR2384.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51683 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
5b4681c8ef65808ec4d72ab6081efd24d53d4969 29-May-2008 Chris Lattner <sabre@nondot.org> Implement support for -w, which silences all warnings. PR2384.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51683 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
f8d5409eeac9ba683f2baae10be2d50644c88cdf 28-May-2008 Chris Lattner <sabre@nondot.org> Fix rewrite rope to keep the leaf list up-to-date as it erases leaves
from the rope. rdar://5952468


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51651 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
3d2e8c7b70d5719d00b919708fdd5a45cffda836 28-May-2008 Chris Lattner <sabre@nondot.org> Fix rewrite rope to keep the leaf list up-to-date as it erases leaves
from the rope. rdar://5952468


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51651 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
fb9e3078971208f43283ac97c6bb27f58ed54baf 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Add the copysign builtins; I ran into a program that wanted
__builtin_copysign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
bcfd5d4ac69a3589b52bde91106f03f30de9e804 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Add the copysign builtins; I ran into a program that wanted
__builtin_copysign.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51597 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
d270181f22e9ec56708f65c1f41e85cd34a3f6db 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Don't swap function decls, and add them to the scope as they are
encountered. Mixing up the decls is unintuitive, and confuses the AST
destruction code. Fixes PR2360.

Note that there is a need to look up the characteristics and
declarations of a function associated with a particular name or decl,
but the original swapping code doesn't solve it properly.
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-May/001644.html is one
suggestion for how to fix that.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2742496d75ecb733c07c65c9a35cbfaa88ca81e4 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Don't swap function decls, and add them to the scope as they are
encountered. Mixing up the decls is unintuitive, and confuses the AST
destruction code. Fixes PR2360.

Note that there is a need to look up the characteristics and
declarations of a function associated with a particular name or decl,
but the original swapping code doesn't solve it properly.
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-May/001644.html is one
suggestion for how to fix that.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
86ad52274e497d28a03aa9e5b0c43fb325421c72 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Implementation of gcc mode attribute; this is significant because
it fixes PR2204. Not too much to say about the implementation; it works
in a similar way to the vector size attribute.

At some point, we need to modify the targets to provide information
about the appropriate types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/AttributeList.h
3c0eb160ca1361a82b9f15b3b40a2425adc14d0f 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Implementation of gcc mode attribute; this is significant because
it fixes PR2204. Not too much to say about the implementation; it works
in a similar way to the vector size attribute.

At some point, we need to modify the targets to provide information
about the appropriate types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51577 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/AttributeList.h
5e56f99b13bc9e10d1801d09c078c5c669621376 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Change diagnostic per suggestion, to make it a bit clearer what is
happening.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1f3105e1eeece9ffdc14d7262c7af486ac76600a 27-May-2008 Eli Friedman <eli.friedman@gmail.com> Change diagnostic per suggestion, to make it a bit clearer what is
happening.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f8df28c23f722d990d0c8e3236916d8efa7741cf 25-May-2008 Eli Friedman <eli.friedman@gmail.com> Diagnose implicit init list for empty aggregate, like struct {}. Fixes
PR2151 (by not creating the empty implicit init list).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
402256fc665ba179873ffcb4d630e28cbea42f27 25-May-2008 Eli Friedman <eli.friedman@gmail.com> Diagnose implicit init list for empty aggregate, like struct {}. Fixes
PR2151 (by not creating the empty implicit init list).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
93eb82549eec82d75ce5dd3afbeeaf6fdb0e2a27 25-May-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Generate subprogram debug info with -g.
Also take care of freeing memory at the right places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1c6a38bcea17801e9a4738753aee845381af2b6c 25-May-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Generate subprogram debug info with -g.
Also take care of freeing memory at the right places.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
744cd42fc62aa7024becce8b7bf71f62a084e247 24-May-2008 Steve Naroff <snaroff@apple.com> This fixes a VC++ build failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51528 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
2c33a164371482b43a13e500dbb4d3278605c5f4 24-May-2008 Steve Naroff <snaroff@apple.com> This fixes a VC++ build failure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51528 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ade44ec68c6ab97d63c92f4b3db143339ff394d9 24-May-2008 Chris Lattner <sabre@nondot.org> add some assertions to catch bad things before they die
somewhere deep in rewrite rope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51515 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
0d3ab3f121ff6c2a38acde4e93a28980b824d045 24-May-2008 Chris Lattner <sabre@nondot.org> add some assertions to catch bad things before they die
somewhere deep in rewrite rope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51515 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
76a925c8bf3859582da550b7129514cc3f26af3e 24-May-2008 Steve Naroff <snaroff@apple.com> Fix range info for explicit ivar refs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8bf3b1d0e75da8b15bc331ebeb44f34b689f03ad 24-May-2008 Steve Naroff <snaroff@apple.com> Fix range info for explicit ivar refs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5dcd7295205f43e766966378ab66ced9f0783c98 23-May-2008 Gabor Greif <ggreif@gmail.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51479 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1b76779233b23f8c64f2e1be9fa1f9a99ea694bd 23-May-2008 Gabor Greif <ggreif@gmail.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51479 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
9ff407cb9f8541d248e43fb909640c6c4152a054 23-May-2008 Ted Kremenek <kremenek@apple.com> Unbreak build. Forget to check in this header file change with a previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51470 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
f377fc85488f4799ced714ac60e65a0e3f8f69cb 23-May-2008 Ted Kremenek <kremenek@apple.com> Unbreak build. Forget to check in this header file change with a previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51470 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
4751a3add4986e6d68423d084289c70cb67e094a 22-May-2008 Dan Gohman <gohman@apple.com> Move getAccessedFieldNo out of lib/AST/Expr.cpp into
lib/CodeGen/CGExpr.cpp and to change include/clang/AST/Attr.h to
use its own enum for visibility types instead of using
llvm::GlobalValue::VisibilityTypes. These changes eliminate
dependencies in the AST library on LLVM's VMCore library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Expr.h
4f8d123e3e2c260de3377208106ddba87cee28b4 22-May-2008 Dan Gohman <gohman@apple.com> Move getAccessedFieldNo out of lib/AST/Expr.cpp into
lib/CodeGen/CGExpr.cpp and to change include/clang/AST/Attr.h to
use its own enum for visibility types instead of using
llvm::GlobalValue::VisibilityTypes. These changes eliminate
dependencies in the AST library on LLVM's VMCore library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Expr.h
40c8b9ebc90e6b13d4c80197112cf0bb4f18ff8b 22-May-2008 Ted Kremenek <kremenek@apple.com> Improve dead stores diagnostics to include the variable name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3eb817e5095d25e7bf4a8df9ed3f9b13bed6f298 22-May-2008 Ted Kremenek <kremenek@apple.com> Improve dead stores diagnostics to include the variable name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51395 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
db4d5970d9243fb699f250f74eab6b7cce901a40 21-May-2008 Ted Kremenek <kremenek@apple.com> Add Destroy method to Types, making there destruction more harmonious with
the destruction of Decls and Stmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4b05b1dee6cc65ae61d93dab7edff72710f24589 21-May-2008 Ted Kremenek <kremenek@apple.com> Add Destroy method to Types, making there destruction more harmonious with
the destruction of Decls and Stmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51385 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a1e7770b1b1605e17b43144d6b6d85cdb0bfbda2 21-May-2008 Ted Kremenek <kremenek@apple.com> When destroying DeclStmts, also destroy the associated Decl (reclaim its memory).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51379 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8e355f296a3ba45b94de49dbb18ae6a6e67df04c 21-May-2008 Ted Kremenek <kremenek@apple.com> When destroying DeclStmts, also destroy the associated Decl (reclaim its memory).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51379 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
01a8b6cf3e456145801f89b7af5414d8b21d4dd0 21-May-2008 Eli Friedman <eli.friedman@gmail.com> Fix the destruction "properly" in the sense that we actually destroy the
ASTs. This is a hack, but I haven't considered how we really
want to do this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
5f1adf8fb4b41988a8715492cc97c62873d25969 21-May-2008 Eli Friedman <eli.friedman@gmail.com> Fix the destruction "properly" in the sense that we actually destroy the
ASTs. This is a hack, but I haven't considered how we really
want to do this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
0b7b1cb2169742c4027d2b1db74788fa55f5da97 20-May-2008 Eli Friedman <eli.friedman@gmail.com> Some small changes to make the target info a bit more accurate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
61538a7d1336f3ef3cb81e09f11a1cbb282bcf81 20-May-2008 Eli Friedman <eli.friedman@gmail.com> Some small changes to make the target info a bit more accurate.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51319 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8c50c627fadb07d528b3d40a420395e513f8f20b 20-May-2008 Eli Friedman <eli.friedman@gmail.com> Add __builtin_frame_address and __builtin_return_address gcc builtins to
Sema. No codegen yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticKinds.def
6cfda23b3768f93a6eb0b2a9135c8334a20125bb 20-May-2008 Eli Friedman <eli.friedman@gmail.com> Add __builtin_frame_address and __builtin_return_address gcc builtins to
Sema. No codegen yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/DiagnosticKinds.def
5be49244bfb829b2b5108c39728a0b635fe94f74 20-May-2008 Ted Kremenek <kremenek@apple.com> Reclaim memory from chains of ScopedDecls, and reclaim memory for the initializers of EnumConstantDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d1ac17ae7d61a9244ee5e658d6f63b8fa3da3127 20-May-2008 Ted Kremenek <kremenek@apple.com> Reclaim memory from chains of ScopedDecls, and reclaim memory for the initializers of EnumConstantDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51299 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bde41096b6f9ea59cd2a9c7de9a5c1bf1cfb02a3 20-May-2008 Ted Kremenek <kremenek@apple.com> Delete AST nodes, not just Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f809e3bd0c3d063f22ba34981072dae306ca9272 20-May-2008 Ted Kremenek <kremenek@apple.com> Delete AST nodes, not just Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51298 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
345b93db8abc199f0c51f2b3bed2e80fde023a18 20-May-2008 Ted Kremenek <kremenek@apple.com> Reclaim memory allocated for ParmVarDecl's in FunctionDecl::Destroy.

Fixed a bug in ParmVarDecl::param_end(): Handle the case where there are no
ParmVarDecls for a FunctionDecl, but its function prototype has formal arguments
(can happen with typedefs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b65cf41707d190d5ce3d48b9e5bd2dc9d7b4a4c0 20-May-2008 Ted Kremenek <kremenek@apple.com> Reclaim memory allocated for ParmVarDecl's in FunctionDecl::Destroy.

Fixed a bug in ParmVarDecl::param_end(): Handle the case where there are no
ParmVarDecls for a FunctionDecl, but its function prototype has formal arguments
(can happen with typedefs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
afdf811b2494ca0d29fa47d848f63ac958455219 20-May-2008 Ted Kremenek <kremenek@apple.com> Try to plug some memory leaks...

1) Sema::ParseAST now constructs a TranslationUnit object to own the top-level Decls, which releases the top-level Decls upon exiting ParseAST.

2) Bug fix: TranslationUnit::~TranslationUnit handles the case where a Decl is added more than once as a top-level Decl.

3) Decl::Destroy is now a virtual method, obviating the need for a special dispatch based on DeclKind.

3) FunctionDecl::Destroy now releases its Body using its Destroy method.

4) Added Stmt::Destroy and Stmt::DestroyChildren, which recursively delete the child ASTs of a Stmt and call their dstors. We may need to special case dstor/Destroy methods for particular Stmt subclasses that own other dynamically allocated objects besides AST nodes.

5) REGRESSION: We temporarily are not deallocating attributes; a FIXME is provided.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/Stmt.h
27f8a28bee33bb0e857cfe1a61c281bbc234b338 20-May-2008 Ted Kremenek <kremenek@apple.com> Try to plug some memory leaks...

1) Sema::ParseAST now constructs a TranslationUnit object to own the top-level Decls, which releases the top-level Decls upon exiting ParseAST.

2) Bug fix: TranslationUnit::~TranslationUnit handles the case where a Decl is added more than once as a top-level Decl.

3) Decl::Destroy is now a virtual method, obviating the need for a special dispatch based on DeclKind.

3) FunctionDecl::Destroy now releases its Body using its Destroy method.

4) Added Stmt::Destroy and Stmt::DestroyChildren, which recursively delete the child ASTs of a Stmt and call their dstors. We may need to special case dstor/Destroy methods for particular Stmt subclasses that own other dynamically allocated objects besides AST nodes.

5) REGRESSION: We temporarily are not deallocating attributes; a FIXME is provided.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
ST/Stmt.h
1ed5dc67ac8b0473d675942e02efba550ffbd62a 20-May-2008 Ted Kremenek <kremenek@apple.com> Added Stmt::DestroyChildren, which will be used by the dstors of the subclasses of Stmt to recursively delete their child AST nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51278 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9c1863ef36a74e8203f00289d19856ad956f48b9 20-May-2008 Ted Kremenek <kremenek@apple.com> Added Stmt::DestroyChildren, which will be used by the dstors of the subclasses of Stmt to recursively delete their child AST nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51278 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
71de9eb042d2566a75aab7a03656cbdffaa2a86e 19-May-2008 Eli Friedman <eli.friedman@gmail.com> Add errors for some illegal constructs (specifically, "int a = {{3}};"
and "int a = {};"). I'll adjust the tests in a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bb504d3a63e0e4b2439900ba6d77b620fb6de857 19-May-2008 Eli Friedman <eli.friedman@gmail.com> Add errors for some illegal constructs (specifically, "int a = {{3}};"
and "int a = {};"). I'll adjust the tests in a bit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51265 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
300ada5c29750d0b709777a4b8bfd177e6e58800 16-May-2008 Nate Begeman <natebegeman@mac.com> Fix some prototypes, and implement some builtins until we have our header files completed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
24512501319aa6d7f70b1bd79470df0197b832c8 16-May-2008 Nate Begeman <natebegeman@mac.com> Fix some prototypes, and implement some builtins until we have our header files completed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51199 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
789c0b3ff75cdfd340076d1417df5f20dee18c76 16-May-2008 Ted Kremenek <kremenek@apple.com> Partitioned BugTypeCachedLocation::isCached() into two methods: one that accepts and ExplodedNode, and the other that accepts a ProgramPoint. The default behavior is to cache bug reports by the
location they occur (the end node). Subclasses can override this behavior by providing a different ProgramPoint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51197 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
76d90c8bf83d071fd1bdbffa6d9f2af87c6bb7b5 16-May-2008 Ted Kremenek <kremenek@apple.com> Partitioned BugTypeCachedLocation::isCached() into two methods: one that accepts and ExplodedNode, and the other that accepts a ProgramPoint. The default behavior is to cache bug reports by the
location they occur (the end node). Subclasses can override this behavior by providing a different ProgramPoint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51197 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
77ed53d7332fc5111da28bbc88f0002082849dac 16-May-2008 Eli Friedman <eli.friedman@gmail.com> Fix review nit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dde8c94873976632e3ada4d8d067e1e244184d51 16-May-2008 Eli Friedman <eli.friedman@gmail.com> Fix review nit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51194 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bdbd1b596e4b98698dfbd98738370f5e2aef0ca8 16-May-2008 Ted Kremenek <kremenek@apple.com> Added CFGBlock::hasBinaryBranchTerminator().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51190 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
9c2535a35db35b3a821a0d0c36a01a16f52f1ad0 16-May-2008 Ted Kremenek <kremenek@apple.com> Added CFGBlock::hasBinaryBranchTerminator().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51190 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
afa2d386a3c22b7a135c52b486917037550c0ffc 15-May-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Make isFileVarDecl() return true when the VarDecl is in a C++ namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1bf7dd75706a67de2368226b2d2c590c23d7dbf5 15-May-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make isFileVarDecl() return true when the VarDecl is in a C++ namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51153 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
37994b05af4d9bcae94769823be50d27b1b2efc9 15-May-2008 Steve Naroff <snaroff@apple.com> Add some of GCC's object checking builtin's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
6c178c563d51de6e5a12bd3a631728fd82fcad78 15-May-2008 Steve Naroff <snaroff@apple.com> Add some of GCC's object checking builtin's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51133 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
d0e9d095335fb20806f25e41af789ffd46920ea9 14-May-2008 Eli Friedman <eli.friedman@gmail.com> Implementation of __builtin_shufflevector, a portable builtin capable of
expressing the full flexibility of the LLVM shufflevector instruction.
The expected immediate usage is in *mmintrin.h, so that they don't
depend on the mess of gcc-inherited (and not completely implemented)
shuffle builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
d38617c8a50f9729c254ab76cd359af797c6739b 14-May-2008 Eli Friedman <eli.friedman@gmail.com> Implementation of __builtin_shufflevector, a portable builtin capable of
expressing the full flexibility of the LLVM shufflevector instruction.
The expected immediate usage is in *mmintrin.h, so that they don't
depend on the mess of gcc-inherited (and not completely implemented)
shuffle builtins.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
a1ae7442826c90beb66d6f314db8065c6cb3bafc 13-May-2008 Nate Begeman <natebegeman@mac.com> Remove AST dependency on VMCore by switching ExtVectorElementExpr off Constant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51068 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3b8d116703db8018f855cbb4733ace426422623b 13-May-2008 Nate Begeman <natebegeman@mac.com> Remove AST dependency on VMCore by switching ExtVectorElementExpr off Constant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51068 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
95cb389dab53396be89b308e0ac08bfe5cd1e98f 12-May-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/5928590> clang -fsyntax-only: "incompatible operand types ('int' and 'void')" on input that 'gcc -fsyntax-only' eats


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51002 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e701c0a953d05c3403a74fdb449a8f4a1e4e6594 12-May-2008 Steve Naroff <snaroff@apple.com> Fix <rdar://problem/5928590> clang -fsyntax-only: "incompatible operand types ('int' and 'void')" on input that 'gcc -fsyntax-only' eats


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51002 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
938845d84161f34e084a1bf10b224ad7fb561aeb 12-May-2008 Ted Kremenek <kremenek@apple.com> 80 col violation fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
901b412d65d40ed8df16701e89bf5dd5b145cbd0 12-May-2008 Ted Kremenek <kremenek@apple.com> 80 col violation fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50977 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5c45be48e6125c5981ad48708dc7e8267bace63a 12-May-2008 Ted Kremenek <kremenek@apple.com> Add Type::getAsTypedefType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
769c9cfc6e06bd9d8ffe7a4397b939f19b0e4dc3 12-May-2008 Ted Kremenek <kremenek@apple.com> Add Type::getAsTypedefType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9e2c1ea85d6af891082772a089e36bcf9b2fc7d5 10-May-2008 Ted Kremenek <kremenek@apple.com> Rename IsPointerType to LVal::IsLValType, and update CFRefCount::EvalSummary to use IsLValType when conjuring symbols for return values (this fixes a bug with an assertion firing in the analyzer when two qualified objective-c types were compared).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
0e470a5326ccf2f6a7c3d12b2aa54a7af2292837 10-May-2008 Ted Kremenek <kremenek@apple.com> Rename IsPointerType to LVal::IsLValType, and update CFRefCount::EvalSummary to use IsLValType when conjuring symbols for return values (this fixes a bug with an assertion firing in the analyzer when two qualified objective-c types were compared).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
bf020f3c9649ec3665d10636e5f8f48ea3a0ad17 10-May-2008 Mon P Wang <wangmp@apple.com> Added support to generate some atomic operators (add, sub, and, or etc..)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
1ffe281890f3cd7728316b45a1f3dd4d3120af7b 10-May-2008 Mon P Wang <wangmp@apple.com> Added support to generate some atomic operators (add, sub, and, or etc..)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50919 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
c8e51f89effc4003fc54aa4dc5a34127e793c7f4 09-May-2008 Nate Begeman <natebegeman@mac.com> Extend vector member references to include {.hi, .lo, .e, .o} which return a
vector of the same element type and half the width, with the high, low, even,
and odd elements respectively.

Allow member references to member references, so that .hi.hi gives you the high
quarter of a vector. This is fairly convenient syntax for some insert/extract
operations.

Remove some unnecessary methods/types in the ExtVectorElementExpr class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8a99764f9b778a54e7440b1ee06a1e48f25d76d8 09-May-2008 Nate Begeman <natebegeman@mac.com> Extend vector member references to include {.hi, .lo, .e, .o} which return a
vector of the same element type and half the width, with the high, low, even,
and odd elements respectively.

Allow member references to member references, so that .hi.hi gives you the high
quarter of a vector. This is fairly convenient syntax for some insert/extract
operations.

Remove some unnecessary methods/types in the ExtVectorElementExpr class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
727b3c4572f4107706b7530dbc1c3be668e42717 09-May-2008 Chris Lattner <sabre@nondot.org> parameterize pointer size/align better without doing virtual method calls in normal case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
927686fe8c968ca786fa44d2353eebf59c4f5b8a 09-May-2008 Chris Lattner <sabre@nondot.org> parameterize pointer size/align better without doing virtual method calls in normal case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50890 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
481dcf2bfc797afdb119f76afa88941574f78f94 09-May-2008 Chris Lattner <sabre@nondot.org> parameterize long long.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ec10f5886526124ba733fbd0ef8665d576285daa 09-May-2008 Chris Lattner <sabre@nondot.org> parameterize long long.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
e0efe2ef8f5758fe7fad7b005b4f69906b6c0e34 09-May-2008 Chris Lattner <sabre@nondot.org> correctly parameterize long, patch by Nate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
8059e997ee05e4aa87f7e21fed630429a140ee53 09-May-2008 Chris Lattner <sabre@nondot.org> correctly parameterize long, patch by Nate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50886 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6bc6551b38f412ed3293e05a33881254fb632ec8 08-May-2008 Nate Begeman <natebegeman@mac.com> Add the non-immediate-shift vector builtins


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
f8add5dd6fc6b114f694aeaff8c89e6b23fa3f29 08-May-2008 Nate Begeman <natebegeman@mac.com> Add the non-immediate-shift vector builtins


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50870 91177308-0d34-0410-b5e6-96231b3b80d8
ST/X86Builtins.def
9df18dababc2a8b65997d2d08d1bd0a27af60f8b 08-May-2008 Ted Kremenek <kremenek@apple.com> Added initial support for supporting __NSString__ in attribute "format".
Still need to iron out some of the semantics (fixmes are present).
This addresses <rdar://problem/5916348>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50866 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c5f551f06c3ac27826e3e5a7a29851fc5182f912 08-May-2008 Ted Kremenek <kremenek@apple.com> Added initial support for supporting __NSString__ in attribute "format".
Still need to iron out some of the semantics (fixmes are present).
This addresses <rdar://problem/5916348>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50866 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
40e56a18be09a45bfd315ab3c425d1ecbdca769e 08-May-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Added -g command line options to clang for generating source level debug information. This patch currently enables generation of line number debug information (stoppoints) and region begin/end debug information. The new files CGDebugInfo.h and CGDebugInfo.cpp implements the debug info manager class CGDebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50848 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
e8b9f5b8ea60983c4a74cb8b63879616b914b65a 08-May-2008 Sanjiv Gupta <sanjiv.gupta@microchip.com> Added -g command line options to clang for generating source level debug information. This patch currently enables generation of line number debug information (stoppoints) and region begin/end debug information. The new files CGDebugInfo.h and CGDebugInfo.cpp implements the debug info manager class CGDebugInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50848 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
85970f3f71b583df8ad9cbb66bc117728f797d7c 08-May-2008 Chris Lattner <sabre@nondot.org> Add basic support for the pic-* target triples and add support for
targets that do not support recursion (and thus codegen stack variables
as globals).

Patch contributed by Alireza Moshtaghi!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
2621fd1d6d3c5eadcae246859f62738645df7540 08-May-2008 Chris Lattner <sabre@nondot.org> Add basic support for the pic-* target triples and add support for
targets that do not support recursion (and thus codegen stack variables
as globals).

Patch contributed by Alireza Moshtaghi!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
5f2e2248dcee4ca2dcb080982a7ab9d00cf06661 07-May-2008 Fariborz Jahanian <fjahanian@apple.com> Synthesized getter/setter method declarations need not have
an implementation. This fixes couple of failing prperty tests
caused by my previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4607034e621aa77378ec75249d1e9eaf5de49b6a 07-May-2008 Fariborz Jahanian <fjahanian@apple.com> Synthesized getter/setter method declarations need not have
an implementation. This fixes couple of failing prperty tests
caused by my previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e4534e7c864452fd1f884668ea270d90bc586dcf 07-May-2008 Fariborz Jahanian <fjahanian@apple.com> This patch introduces declaration of getter methods for ObjC2's
properties. Couple of property tests will fail with this patch.
Will fix them next.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
33de3f0333ca0b5274291b8d76c86758c0484691 07-May-2008 Fariborz Jahanian <fjahanian@apple.com> This patch introduces declaration of getter methods for ObjC2's
properties. Couple of property tests will fail with this patch.
Will fix them next.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2b9422f15b71241fc5fca53858c1343f5012932e 07-May-2008 Douglas Gregor <doug.gregor@gmail.com> Diagnose attempts to use C++ default arguments outside of a function declaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50799 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6d6eb57225b53fb627c565861d1d0e90645400d1 07-May-2008 Douglas Gregor <dgregor@apple.com> Diagnose attempts to use C++ default arguments outside of a function declaration

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50799 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
86f070e725781f96fcba7783cebbc0b7360f8527 06-May-2008 Ted Kremenek <kremenek@apple.com> Added "DisplayHint" to PathDiagnosticPiece to provide a hint for the
PathDiagnosticClient of where to display a string (beyond just the SourceLocation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50773 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
466265cd04df98428967adfade577bed7636d910 06-May-2008 Ted Kremenek <kremenek@apple.com> Added "DisplayHint" to PathDiagnosticPiece to provide a hint for the
PathDiagnosticClient of where to display a string (beyond just the SourceLocation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50773 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
b7080aec42ece02e2b526eee5921b4ed4c50e60b 06-May-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to refactor setter/getter names of property attributes into Selector
(was IdentifierInfo * before). This will make method declartations whole
lot easier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50747 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/DeclSpec.h
5251e130a23d997f7c0dfdc250cdc41f179e5bed 06-May-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to refactor setter/getter names of property attributes into Selector
(was IdentifierInfo * before). This will make method declartations whole
lot easier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50747 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/DeclSpec.h
7d5a5ee961f399aa6d013ff3019f6a9c88410a42 06-May-2008 Ted Kremenek <kremenek@apple.com> Fixed subtle bug in the an GRAuditor object could mark a node as a sink
after it was already added to the destination NodeSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50701 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
922059dec59c7bed235da01aff75ae522a369811 06-May-2008 Ted Kremenek <kremenek@apple.com> Fixed subtle bug in the an GRAuditor object could mark a node as a sink
after it was already added to the destination NodeSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50701 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
4aa72a76d99c4c8b5c0f9264bfd98167afd4eea4 05-May-2008 Fariborz Jahanian <fjahanian@apple.com> percolate @optional/@required protocols down to ASTs for
properties declared in the protocol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50662 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
46b55e56d029aec699fc2701e43d70264da9ecd8 05-May-2008 Fariborz Jahanian <fjahanian@apple.com> percolate @optional/@required protocols down to ASTs for
properties declared in the protocol.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50662 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
cb1a77a0c0f0a0eff49ecf103adc87ea8d663222 05-May-2008 Chris Lattner <sabre@nondot.org> Fix a bug from when this was a pointer instead of vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
28a309e387a0a69b0c055c1565aa147fc695f906 05-May-2008 Chris Lattner <sabre@nondot.org> Fix a bug from when this was a pointer instead of vector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bef45c5ab99bc628c077299e2d599f7b0d823c00 05-May-2008 Chris Lattner <sabre@nondot.org> Neil pointed out that clang doesn't generate ranges from diagnostics
related to pp-expressions. Doing so is pretty simple and this
patch implements it, yielding nice diagnostics like:

t.c:2:7: error: division by zero in preprocessor expression
#if 1 / (0 + 0)
~ ^ ~~~~~~~
t.c:5:14: error: expected ')' in preprocessor expression
#if (412 + 42
~~~~~~~~^
t.c:5:5: error: to match this '('
#if (412 + 42
^
t.c:10:10: warning: left side of operator converted from negative value to unsigned: -42 to 18446744073709551574
#if (-42 + 0U) / -2
~~~ ^ ~~
t.c:10:16: warning: right side of operator converted from negative value to unsigned: -2 to 18446744073709551614
#if (-42 + 0U) / -2
~~~~~~~~~~ ^ ~~
5 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
8ed3044a33679cbfa0617d465a50ec557d671ed7 05-May-2008 Chris Lattner <sabre@nondot.org> Neil pointed out that clang doesn't generate ranges from diagnostics
related to pp-expressions. Doing so is pretty simple and this
patch implements it, yielding nice diagnostics like:

t.c:2:7: error: division by zero in preprocessor expression
#if 1 / (0 + 0)
~ ^ ~~~~~~~
t.c:5:14: error: expected ')' in preprocessor expression
#if (412 + 42
~~~~~~~~^
t.c:5:5: error: to match this '('
#if (412 + 42
^
t.c:10:10: warning: left side of operator converted from negative value to unsigned: -42 to 18446744073709551574
#if (-42 + 0U) / -2
~~~ ^ ~~
t.c:10:16: warning: right side of operator converted from negative value to unsigned: -2 to 18446744073709551614
#if (-42 + 0U) / -2
~~~~~~~~~~ ^ ~~
5 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50638 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/Preprocessor.h
74bf555d259f60449b8f2f47d532d1a1ec3bca10 04-May-2008 Chris Lattner <sabre@nondot.org> Simplify FunctionDecl::AddRedeclaration a bit by using std::swap.
Fix 'swapping' of attributes to not insert null values into the
DeclAttrs map.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
a212c56e9b7533bcc2d6be90efd52ad241bf894e 04-May-2008 Chris Lattner <sabre@nondot.org> Simplify FunctionDecl::AddRedeclaration a bit by using std::swap.
Fix 'swapping' of attributes to not insert null values into the
DeclAttrs map.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50612 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
56846f2ed2594f49d78eee3645482a5e77d5e236 04-May-2008 Chris Lattner <sabre@nondot.org> improve array type comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
da2d71a50fe724c881b148fcc2c05a5e9b56e3a5 04-May-2008 Chris Lattner <sabre@nondot.org> improve array type comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0f3524250a67fb911ed6a5c0167591fcf884b6b0 03-May-2008 Ted Kremenek <kremenek@apple.com> Rename member variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50597 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
200ed924bb13784ca043088f71c62fc323fd836d 03-May-2008 Ted Kremenek <kremenek@apple.com> Rename member variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50597 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
33973a2ce146d07ee6dba27d63028a7bf8939454 02-May-2008 Fariborz Jahanian <fjahanian@apple.com> This patch is about merging ObjC2's properties declared in class
protocols into class's property list and performing semantics
on them for while doing so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50587 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
aebf0cba02c014ac8b19d615c654248e0e93779f 02-May-2008 Fariborz Jahanian <fjahanian@apple.com> This patch is about merging ObjC2's properties declared in class
protocols into class's property list and performing semantics
on them for while doing so.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50587 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
2f62f356ad86d1f71426433c07a1128fbf386131 02-May-2008 Ted Kremenek <kremenek@apple.com> When running the reference count checker twice (GC and non-GC mode), only emit
basic warnings (dead stores, null dereferences) on the first pass.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50584 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
9f7416138b8befe2d274f6f2cadc792d2c279711 02-May-2008 Ted Kremenek <kremenek@apple.com> When running the reference count checker twice (GC and non-GC mode), only emit
basic warnings (dead stores, null dereferences) on the first pass.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50584 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
14dcc18504c8e297dc77779e7175d88bca5ef8f8 02-May-2008 Ted Kremenek <kremenek@apple.com> Lexicographically order enum declarations in AttributeList::Kind.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50577 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
55c28b7c66d39ab6b670aff5f95cad9d15dc7adf 02-May-2008 Ted Kremenek <kremenek@apple.com> Lexicographically order enum declarations in AttributeList::Kind.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50577 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
fe4d231b0c3c83c5710ca9071332e884deb084be 02-May-2008 Ted Kremenek <kremenek@apple.com> Added line number diagnostics to indicate the allocation site of the leaked object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50553 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
c9fa2f7bcc3061aa8bcdbe0df26d2c7cf7281539 02-May-2008 Ted Kremenek <kremenek@apple.com> Added line number diagnostics to indicate the allocation site of the leaked object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50553 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
5c3407ae429a4fa41579e86cb317f81ac7eb5760 02-May-2008 Ted Kremenek <kremenek@apple.com> Do not highlight bogus ranges for leaks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50549 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
bb77e9b908658b354b058509d3801f3aed052bec 02-May-2008 Ted Kremenek <kremenek@apple.com> Do not highlight bogus ranges for leaks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50549 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
5f20a638a4dd1646fca408964b9a3cb8dfc5f2a3 01-May-2008 Ted Kremenek <kremenek@apple.com> Added temporary fix for Obj-C exception handling in the static analyzer: treat these as panic functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50535 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
e448ab4f9dd162802f5d7cfea60f7830cc61c654 01-May-2008 Ted Kremenek <kremenek@apple.com> Added temporary fix for Obj-C exception handling in the static analyzer: treat these as panic functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50535 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
d34b7530a2da6e68fa56fdd42e9cbbdfd41b772c 01-May-2008 Ted Kremenek <kremenek@apple.com> Added default ctor to Selector.

REASON: Without a default ctor we cannot do "new Selector[xxx]" and similar
operations with ADTs that need to default constructor selectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50534 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
c65b8a3e1f8da6117a2b9ba57afe8b7a2ec887cc 01-May-2008 Ted Kremenek <kremenek@apple.com> Added default ctor to Selector.

REASON: Without a default ctor we cannot do "new Selector[xxx]" and similar
operations with ADTs that need to default constructor selectors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50534 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
513e30ae08329e39d9199225de87e7fc3f17d2ce 01-May-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to match and issue diagnostics on property type mismatch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50532 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3435096781465f6b8e69de4b35d9dd3a94a76468 01-May-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to match and issue diagnostics on property type mismatch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50532 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d029a6f8da922c13ffb7d1b8ffb27cc40ea71b2f 01-May-2008 Ted Kremenek <kremenek@apple.com> Use pointer swizziling to unify in ObjCMessageExpr the receiver and classname "fields". This saves us a pointer.
Implemented serialization for ObjCMessageExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ea958e57a370b641c5a69347b75e9f8e3b5a41a2 01-May-2008 Ted Kremenek <kremenek@apple.com> Use pointer swizziling to unify in ObjCMessageExpr the receiver and classname "fields". This saves us a pointer.
Implemented serialization for ObjCMessageExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50528 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b52b7f2d58f4eef8c67f41e050a2f0aff60e4255 01-May-2008 Ted Kremenek <kremenek@apple.com> Added comments to ObjCMessageExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
66783caa67fd947787a0656fa642ddb4e770f074 01-May-2008 Ted Kremenek <kremenek@apple.com> Added comments to ObjCMessageExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50525 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cb4709408a5ddd0919f97c95a1e97ec95a52d7b1 01-May-2008 Ted Kremenek <kremenek@apple.com> When processing "release", "retain", and "autorelease" messages return the
lval passed as an argument.

Fix: Inverted diagnostic messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50513 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
31593ac2782b2039484210052535f40c243dcf72 01-May-2008 Ted Kremenek <kremenek@apple.com> When processing "release", "retain", and "autorelease" messages return the
lval passed as an argument.

Fix: Inverted diagnostic messages.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50513 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
2e33547e94673a916ad9d54a63e00f5ed46f1c34 01-May-2008 Steve Naroff <snaroff@apple.com> Extend InitListExpr API/IMPL to support arbitrary add/remove (in support of the initializer rewrite I am doing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c5ae899b4bbf65488445316c63168079177db0ed 01-May-2008 Steve Naroff <snaroff@apple.com> Extend InitListExpr API/IMPL to support arbitrary add/remove (in support of the initializer rewrite I am doing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ed986606b5d9261e74cd63080c749b6a787744c3 01-May-2008 Fariborz Jahanian <fjahanian@apple.com> More ObjC2 property semantics work. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50508 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
02edb98b457c1be3fabe63f7390fe75fd6689def 01-May-2008 Fariborz Jahanian <fjahanian@apple.com> More ObjC2 property semantics work. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50508 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
fe30bebe8c2128285204ff5cc0441aa6d72d96b3 01-May-2008 Ted Kremenek <kremenek@apple.com> added preliminary diagnostics in scan-build results to denote whether
a CF memory leak occurred with GC enabled, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50507 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
072192bcbb05a0fee7ec3061750b27e8d2004952 01-May-2008 Ted Kremenek <kremenek@apple.com> added preliminary diagnostics in scan-build results to denote whether
a CF memory leak occurred with GC enabled, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50507 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathDiagnostic.h
nalysis/PathSensitive/BugReporter.h
7cefcaca1fac478f19b267b1c4fd7e121d307ac9 30-Apr-2008 Ted Kremenek <kremenek@apple.com> Teach more of the static analyzer about ObjCQualifiedIdType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c0c3f5dbc9e78aa53a86c7d5e3eeda23ddad93d6 30-Apr-2008 Ted Kremenek <kremenek@apple.com> Teach more of the static analyzer about ObjCQualifiedIdType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50494 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c4385b49a77bc8d51b9ac0d58f4764695aebb96e 30-Apr-2008 Ted Kremenek <kremenek@apple.com> Add lval::ArrayOffset, which represent the locations of entries in an array.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50453 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/RValues.h
4d0348b6c74d2710a3693bbfbcfc5fcb3bc132ee 30-Apr-2008 Ted Kremenek <kremenek@apple.com> Add lval::ArrayOffset, which represent the locations of entries in an array.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50453 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/RValues.h
465f25af8c6f328b31fa69d77328b8d7eb73130c 30-Apr-2008 Ted Kremenek <kremenek@apple.com> Added lval::FieldOffset, which represents symbolic lvalues for field offsets from other Lvalues.
This removes the failure in null-deref-ps.c (test suite).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50449 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/RValues.h
718c4f7b3ff713c3ebee46553d687bde63e5666f 30-Apr-2008 Ted Kremenek <kremenek@apple.com> Added lval::FieldOffset, which represents symbolic lvalues for field offsets from other Lvalues.
This removes the failure in null-deref-ps.c (test suite).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50449 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/RValues.h
5f6b44291ded2840274118e92bd358b7989e6f68 29-Apr-2008 Ted Kremenek <kremenek@apple.com> Major rewrite/refactoring of static analysis engine. We now use
EvalStore/EvalLoad to handle all loads/stores from symbolic memory, allowing us
to do checks for null dereferences, etc., at any arbitrary load/store (these
were missed checks before). This also resulted in some major cleanups, some
conceptual, and others just in the structure of the code.

This temporarily introduces a regression in the test suite (null-deref-ps.c)
before I add a new LVal type for structure fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50443 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
nalysis/ProgramPoint.h
1b8bd4d71c2098126041b4de4267175a82f0103c 29-Apr-2008 Ted Kremenek <kremenek@apple.com> Major rewrite/refactoring of static analysis engine. We now use
EvalStore/EvalLoad to handle all loads/stores from symbolic memory, allowing us
to do checks for null dereferences, etc., at any arbitrary load/store (these
were missed checks before). This also resulted in some major cleanups, some
conceptual, and others just in the structure of the code.

This temporarily introduces a regression in the test suite (null-deref-ps.c)
before I add a new LVal type for structure fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50443 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
nalysis/ProgramPoint.h
102d42e02189fcda61b5d094574f887ee46fbf8d 29-Apr-2008 Ted Kremenek <kremenek@apple.com> Provide the option to run the CF-retain checker in GC enabled mode.
The transfer functions for the checker don't do anything special yet in GC mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50394 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
e5c30122cae6113660c6098301fd22db1693e69a 29-Apr-2008 Ted Kremenek <kremenek@apple.com> Provide the option to run the CF-retain checker in GC enabled mode.
The transfer functions for the checker don't do anything special yet in GC mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50394 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
2658c4a2dc159938dede447db2c858657055e17e 29-Apr-2008 Ted Kremenek <kremenek@apple.com> Add -fobjc-gc and -fobjc-gc-only options to the driver.
Add corresponding enum in LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
01d9dbf4ae627e2ba42fc23485789a33fa296516 29-Apr-2008 Ted Kremenek <kremenek@apple.com> Add -fobjc-gc and -fobjc-gc-only options to the driver.
Add corresponding enum in LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50387 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
d058a9c63f621f101a94045bcc4f2030f4530a21 28-Apr-2008 Ted Kremenek <kremenek@apple.com> Bug fix in CFG::getBlockEdgeImpl(): Use a BumpPtrAllocator to allocate
std::pair<CFGBlock*, CFGBlock*> that have an 8-byte alignment for use with
ProgramPoint. This fixes a bug reported by Argiris where using std::set<> on
Windows would result in a 4-byte alignment, not an 8-byte alignment.

Fixes: <rdar://problem/5892265>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
274f4334f6dd35239e5c3d4b86198f7f5804b059 28-Apr-2008 Ted Kremenek <kremenek@apple.com> Bug fix in CFG::getBlockEdgeImpl(): Use a BumpPtrAllocator to allocate
std::pair<CFGBlock*, CFGBlock*> that have an 8-byte alignment for use with
ProgramPoint. This fixes a bug reported by Argiris where using std::set<> on
Windows would result in a 4-byte alignment, not an 8-byte alignment.

Fixes: <rdar://problem/5892265>


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
03e6aaf5e2fd711a043ed74465a81d1b46535976 27-Apr-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Parsing of namespaces:

-NamespaceDecl for the AST
-Checks for name clashes between namespaces and tag/normal declarations.

This commit doesn't implement proper name lookup for namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/DiagnosticKinds.def
arse/Action.h
2d1c5d313cd0c229cc614e74baa4c5756a4b46f4 27-Apr-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Parsing of namespaces:

-NamespaceDecl for the AST
-Checks for name clashes between namespaces and tag/normal declarations.

This commit doesn't implement proper name lookup for namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
asic/DiagnosticKinds.def
arse/Action.h
a53d553b4c079cbd01ae68223aff385a03e3d2cf 26-Apr-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Make assertions for all addresses passed to ProgramPoint that they have at least an 8-byte alignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50310 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
6e5977f0a8a680191fb4b4d8f32bc2c629faf0c2 26-Apr-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make assertions for all addresses passed to ProgramPoint that they have at least an 8-byte alignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50310 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
c56ff1642b305fbe04070eff5b4d776522131a30 25-Apr-2008 Chris Lattner <sabre@nondot.org> remove the 'unused static' diagnostic from codegen. This should be
reimplemented in Sema someday. This is tracked in PR2236. Until then
disabling it removes some bogus diagnostics (see 2236).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5827754da1773a7288480ce34bdf1f0a909fff21 25-Apr-2008 Chris Lattner <sabre@nondot.org> remove the 'unused static' diagnostic from codegen. This should be
reimplemented in Sema someday. This is tracked in PR2236. Until then
disabling it removes some bogus diagnostics (see 2236).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50263 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
463ec844a8f24650ea5239c39903b182f7a5b4d8 25-Apr-2008 Nuno Lopes <nunoplopes@sapo.pt> initial support for recognizing __transparent_union__ attributes
comments on the ML will follow

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
27ae6c6531ac13e4b316e7e0e7b7c846b61a8d15 25-Apr-2008 Nuno Lopes <nunoplopes@sapo.pt> initial support for recognizing __transparent_union__ attributes
comments on the ML will follow

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
ac91ce95d1c67b3cf82649c640d5663b79793ad8 25-Apr-2008 Ted Kremenek <kremenek@apple.com> Do a better job at computing dead symbols.

Implemented support for better localized leaks in the CF reference count checker.
Now leaks should be flagged close to where they occur.

This should implement the desired functionality in <rdar://problem/5879592>, although the diagnostics still need to be improved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50241 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
910e999c19dfcad3ae2a649e08e616525cef0af3 25-Apr-2008 Ted Kremenek <kremenek@apple.com> Do a better job at computing dead symbols.

Implemented support for better localized leaks in the CF reference count checker.
Now leaks should be flagged close to where they occur.

This should implement the desired functionality in <rdar://problem/5879592>, although the diagnostics still need to be improved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50241 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
fa7be36c11c0d3e7eee1a8b991c0a7ac952f1b6d 25-Apr-2008 Ted Kremenek <kremenek@apple.com> More boilerplate for handling specialized-transfer function logic for dead symbols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
846d4e923bf11bcdc2816758aafa331795f29230 25-Apr-2008 Ted Kremenek <kremenek@apple.com> More boilerplate for handling specialized-transfer function logic for dead symbols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50233 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
1e89de3472533483d1208d473b62f50bc6324e10 24-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to diagnose inconsistancies between properties declared in current and
its super class. This patch is incomplete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50228 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b5e0224173058c6fd5272d86bf251628c38b2513 24-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to diagnose inconsistancies between properties declared in current and
its super class. This patch is incomplete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50228 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7487f9433adf753dc76d3453344a20c692384ec3 24-Apr-2008 Ted Kremenek <kremenek@apple.com> Added initial boilerplate in GRExprEngine to allow checker-specific transfer
function logic to act when symbols become dead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50221 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
77d7ef8d8a80ccb2ab3d25c80810571e3ab14ee4 24-Apr-2008 Ted Kremenek <kremenek@apple.com> Added initial boilerplate in GRExprEngine to allow checker-specific transfer
function logic to act when symbols become dead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50221 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
b9b15bfac902ec61de26b2502989ccd121940f5e 24-Apr-2008 Ted Kremenek <kremenek@apple.com> When building PathDiagnostics for bug reports, generate a trimmed ExplodedGraph with a single path that BugReport objects can safely walk and introspect.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50194 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
a43a1eb6e7c773b79898541794bf819601719493 24-Apr-2008 Ted Kremenek <kremenek@apple.com> When building PathDiagnostics for bug reports, generate a trimmed ExplodedGraph with a single path that BugReport objects can safely walk and introspect.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50194 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
0a6a80b800844ba438f5b2902fc2e2053dd769f6 23-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed: <rdar://problem/5881148>

Problem:

In the recently refactored VisitDeref (which processes dereferences), we
were incorrectly skipping the node just generated for the subexpression
of the dereference. This was a horrible regression.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50176 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
186350f192bbc6a81bc6d7c3647c2243353f21ba 23-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed: <rdar://problem/5881148>

Problem:

In the recently refactored VisitDeref (which processes dereferences), we
were incorrectly skipping the node just generated for the subexpression
of the dereference. This was a horrible regression.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50176 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
863b01fd0008262475ff172bafa72e395dee0925 23-Apr-2008 Ted Kremenek <kremenek@apple.com> TranslationUnit now owns IdentifierTable, TargetInfo, and Selectors objects
when it is constructed via deserialization. This is done by recording a flag
indicating that this is the case, and it deletes these objects by getting
the references stored in the ASTContext object. This fixes some memory
leaks that occurs when we deserialize translation units from bitcode files.

The rationale between having TranslationUnit sometimes own these objects and
sometimes not is that a TranslationUnit object can be constructed from
state generated by the parser (Preprocessor; semantic analyzer, etc.), and thus
in these cases won't own the IdentifierTable or Selectors, etc. During
deserialization, there is no Preprocessor, so somebody needs to own these
objects in order for them to be properly reclaimed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
c1e9dea3d974dcfcf2baa15810aa3511db688bda 23-Apr-2008 Ted Kremenek <kremenek@apple.com> TranslationUnit now owns IdentifierTable, TargetInfo, and Selectors objects
when it is constructed via deserialization. This is done by recording a flag
indicating that this is the case, and it deletes these objects by getting
the references stored in the ASTContext object. This fixes some memory
leaks that occurs when we deserialize translation units from bitcode files.

The rationale between having TranslationUnit sometimes own these objects and
sometimes not is that a TranslationUnit object can be constructed from
state generated by the parser (Preprocessor; semantic analyzer, etc.), and thus
in these cases won't own the IdentifierTable or Selectors, etc. During
deserialization, there is no Preprocessor, so somebody needs to own these
objects in order for them to be properly reclaimed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50149 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
a7cd988977ef127ba4155f677d2962b70cadbde9 23-Apr-2008 Chris Lattner <sabre@nondot.org> fix a rewriter crash on zero length files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50126 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
c66d0aa934f2afd412f50881a5e959bb8582cf14 23-Apr-2008 Chris Lattner <sabre@nondot.org> fix a rewriter crash on zero length files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50126 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
dc0569e863a6d89da3491d29ed6c56c3325aa5c6 23-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to build AST for property implementation declarations and
to print declaration from its AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
628b96f34e93b643b6e15e75eabb8d96079a7e27 23-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to build AST for property implementation declarations and
to print declaration from its AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50117 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cfbc56a3476eb91f57b535a261b76e1aa3ce5404 23-Apr-2008 Ted Kremenek <kremenek@apple.com> Rewrote VisitDeclStmt to properly handle initializers that can do anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50112 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5b7dcce86c79370f16fd89ecebd454a3b4eec73c 23-Apr-2008 Ted Kremenek <kremenek@apple.com> Rewrote VisitDeclStmt to properly handle initializers that can do anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50112 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
be621290da83995e94817efe23a90f22a9cf1589 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Added lval type (and tracking) for StringLiterals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50109 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
a548846b471f7ca05ec6038c7d9d3b4d0de777cc 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Added lval type (and tracking) for StringLiterals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50109 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
fe1a0b1790392c89d39c4b68c47a6dd7d3611dbe 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "nonlval::LValAsInteger" to represent abstract LVals casted to integers, allowing us to track lvals when they are casted back to pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50108 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/RValues.h
0fe33bc94a822e315585e5cde1964d3c3b9052f9 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "nonlval::LValAsInteger" to represent abstract LVals casted to integers, allowing us to track lvals when they are casted back to pointers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50108 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/RValues.h
ef87a206940eb4a5400af11b128d60b532e14708 22-Apr-2008 Chris Lattner <sabre@nondot.org> "This patch renames

DeclContext *CtxDecl -> DeclContext *DeclCtx
DeclContext *CD -> DeclContext *DC

It makes the code more consistent."

Patch by Zhongxing Xu!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9fdf9c6d3530bb85f3166e6460d841e2ff8e1a2c 22-Apr-2008 Chris Lattner <sabre@nondot.org> "This patch renames

DeclContext *CtxDecl -> DeclContext *DeclCtx
DeclContext *CD -> DeclContext *DC

It makes the code more consistent."

Patch by Zhongxing Xu!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f309cf96478c2589365e3b05dbdeccc26131c203 22-Apr-2008 Ted Kremenek <kremenek@apple.com> PathDiagnosticClients now retain ownership of passed PathDiagnostics, requiring
them to not be stack-allocated.

HTMLDiagnostics now batches PathDiagnostics before emitting HTML in its dtor.
This is a workaround for a problem when we trampled the Preprocessor state
when highlighting macros (sometimes resulting in an assertion failure).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50102 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
5585114307b6ba4874546212cb6e5399cfff7ffb 22-Apr-2008 Ted Kremenek <kremenek@apple.com> PathDiagnosticClients now retain ownership of passed PathDiagnostics, requiring
them to not be stack-allocated.

HTMLDiagnostics now batches PathDiagnostics before emitting HTML in its dtor.
This is a workaround for a problem when we trampled the Preprocessor state
when highlighting macros (sometimes resulting in an assertion failure).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50102 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
6a3d1a0fcf11300b44dbbf9153458c71c991264e 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Add VisitArraySubscriptExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50090 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c5b1bf10133a8ecbfe9e6b3ec92bae84e3d927e8 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Add VisitArraySubscriptExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50090 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
d0d8620262e6dadd3835c52d3ad4fff3014f16e9 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Added support for detected bad dereferences involving MemberExprs, e.g. x->f where "x" is NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50071 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
469ecbded3616416ef938ed94a67f86149faf226 22-Apr-2008 Ted Kremenek <kremenek@apple.com> Added support for detected bad dereferences involving MemberExprs, e.g. x->f where "x" is NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50071 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1f0280045febde26e6331cefdedc73bfe5235d76 21-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> More semantics checks of properties. Property implementation can implicitly use
ivar of same name.
Better diagnostics to bring home this point.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50065 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6cdf16d61de193e0596c3c2cec02e4227212986a 21-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> More semantics checks of properties. Property implementation can implicitly use
ivar of same name.
Better diagnostics to bring home this point.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50065 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
900e3dc71a96168ba088b7d3f7153bd42777c0ab 21-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Support for @dynamic AST build.
More property semantics checking.
First test case for ObjC2's property implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
c35b9e4e2efad727538c848cf30d4b0eb1031dc9 21-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Support for @dynamic AST build.
More property semantics checking.
First test case for ObjC2's property implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50057 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
ef8a3df17c1a04eeffc875bd7eea4d60ac839c9b 21-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Continuation of work on ObjC2's properties.
Added iterators, methods to find property and categories.
Use them in doing semantic analysis on property implementation
declarations. Fixed typos.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
559c0c4bbecc017aab0716d546c4fefbcc194687 21-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Continuation of work on ObjC2's properties.
Added iterators, methods to find property and categories.
Use them in doing semantic analysis on property implementation
declarations. Fixed typos.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50050 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
42214c5200fa3576659646c50c709d830db64077 21-Apr-2008 Douglas Gregor <doug.gregor@gmail.com> Clean up handling of function redeclarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Scope.h
f009795057dc8ca254f5618c80a0a90f07cd44b4 21-Apr-2008 Douglas Gregor <dgregor@apple.com> Clean up handling of function redeclarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Scope.h
ad320b6365221806c92d3046becac0243e588f9e 20-Apr-2008 Nate Begeman <natebegeman@mac.com> Only generate code for static functions and global variables that are actually used.
Warn about unused static functions and variables.
This fixes PR1998.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4c13b7a3973d2d263d9682d7b68fbfeb76334af5 20-Apr-2008 Nate Begeman <natebegeman@mac.com> Only generate code for static functions and global variables that are actually used.
Warn about unused static functions and variables.
This fixes PR1998.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49987 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
50d7cf4407225f5492741cbda25c3dbf96166e73 20-Apr-2008 Ted Kremenek <kremenek@apple.com> html::EscapeText (using the Rewriter) now replaces tabs by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49982 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
7414dc05738bd0eb8ecb07f81d430d4b087c20ce 20-Apr-2008 Ted Kremenek <kremenek@apple.com> html::EscapeText (using the Rewriter) now replaces tabs by default.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49982 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
47b6a1623637d2fac60be98f65d1846368e4a96a 20-Apr-2008 Chris Lattner <sabre@nondot.org> simplify ownership of the predefines buffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49973 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
aa39197431a0a0b1326ecf6b3be6a11f6e2f8503 20-Apr-2008 Chris Lattner <sabre@nondot.org> simplify ownership of the predefines buffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49973 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
af6ed504d90dc3b813c573bfbee8bc0e92e7fdc0 19-Apr-2008 Nate Begeman <natebegeman@mac.com> OCUVector -> ExtVector, shorthand for extended vector, per feedback from Chris.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/StmtNodes.def
ST/Type.h
asic/DiagnosticKinds.def
arse/AttributeList.h
213541a68a3e137d11d2cefb612c6cdb410d7e8e 19-Apr-2008 Nate Begeman <natebegeman@mac.com> OCUVector -> ExtVector, shorthand for extended vector, per feedback from Chris.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49942 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/StmtNodes.def
ST/Type.h
asic/DiagnosticKinds.def
arse/AttributeList.h
e376985e473b9794d71d570661e178a24422c585 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Generalize caching mechanism for bugs reports. Now individual BugTypes
can decide the policy on how to cache related bugs. This allows us to
properly to handle warning about multiple leaks in the same location in the
ref count checker (not yet done).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49918 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
95cc1bae89ac68626d6f4d389e189ce1ef3aa7f6 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Generalize caching mechanism for bugs reports. Now individual BugTypes
can decide the policy on how to cache related bugs. This allows us to
properly to handle warning about multiple leaks in the same location in the
ref count checker (not yet done).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49918 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
0b03c6e37c40f48ee370008af6d848e312be610b 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed more caching bugs related to the one fixed in r49914. Silence
compiler warning introduced by a recent patch of mine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49917 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
b0533965f1b4db020692e3b23ca7b3bc15bf5897 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed more caching bugs related to the one fixed in r49914. Silence
compiler warning introduced by a recent patch of mine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49917 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
322657052e573913d7b0385e55fa1e66b8a93434 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed elusive caching bug that led to false positives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49914 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
eaa9edac11531178b14e060a32d0ac8b805021d0 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed elusive caching bug that led to false positives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49914 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
eef8f1ec057b06e422db6e1f464023bebbe7fdbc 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "GetErrorNodes()" to BugType so that -trim-egraph can recognize errors
from registered BugTypes. This helps with debugging.

Add detection of NULL values in ref count checker; this suppresses false positives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49912 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRTransferFuncs.h
cb61292aeafc1dc1bc4064fb3d2733717d1d50e5 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "GetErrorNodes()" to BugType so that -trim-egraph can recognize errors
from registered BugTypes. This helps with debugging.

Add detection of NULL values in ref count checker; this suppresses false positives.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49912 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRTransferFuncs.h
6da0f5a989982ac2ff60dae7fd4a6f97fc04f303 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "EvalAssume" virtual method to GRTransferFuncs; this is for evaluating
the checker-specific logic of symbolic assumptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49910 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
550a0f94938817e3550d79adcc6f1f27410f7593 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "EvalAssume" virtual method to GRTransferFuncs; this is for evaluating
the checker-specific logic of symbolic assumptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49910 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
64c0a0f6c68a951a55767a107120778a68559b59 18-Apr-2008 Nate Begeman <natebegeman@mac.com> Allow targets to override double size, alignment, and semantics, and tie this
information into the IR type codegen. This allows a target to codegen the C
'double' type as either double or float.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
c8b1227fa8c17d9881815e40c04e19334be536f8 18-Apr-2008 Nate Begeman <natebegeman@mac.com> Allow targets to override double size, alignment, and semantics, and tie this
information into the IR type codegen. This allows a target to codegen the C
'double' type as either double or float.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
a8c6aa80d0580b82189fca4df72e6041914339e9 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Provide a version of html::HighlightMacros that takes a Preprocessor&.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49896 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
fb58609c5b3f0d665ea58e37ef39eb7ea74758a4 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Provide a version of html::HighlightMacros that takes a Preprocessor&.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49896 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
c3ad5fe581baeb5eec8a1a32ab295a5187aec329 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Several Expr subclasses did not mark "getSourceRange()" virtual. Fixed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
866b5c03e3b9c01cf496ad97b85a05afc917345b 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Several Expr subclasses did not mark "getSourceRange()" virtual. Fixed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2be7ddbca38972168b28868b1d8a1e4f85a979b1 18-Apr-2008 Ted Kremenek <kremenek@apple.com> BugReport::VisitNode now takes BugReporter& instead of ASTContext&.

Shuffled around code in CFRefCount to better pair classes with implementation,
and started adding subclasses of RangedBugReport to handle better diagnostics
for reference count bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49889 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
8dd564630c901d6d62dd2ffd4110b613d0055078 18-Apr-2008 Ted Kremenek <kremenek@apple.com> BugReport::VisitNode now takes BugReporter& instead of ASTContext&.

Shuffled around code in CFRefCount to better pair classes with implementation,
and started adding subclasses of RangedBugReport to handle better diagnostics
for reference count bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49889 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
270ab7d5f24b7cc6207c66456dd5fc99744e06c8 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Simplified internal logic of BugReporter, consolidating EmitWarning and
EmitPathWarning into one method. We now properly handle emitting warnings
without a PathDiagnosticClient when the warning does not involve a particular
statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
75840e1501563fe7c3dcb5600b75965ba1fe1bc4 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Simplified internal logic of BugReporter, consolidating EmitWarning and
EmitPathWarning into one method. We now properly handle emitting warnings
without a PathDiagnosticClient when the warning does not involve a particular
statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
78f7e31a5fbfc5adbf989f201197047255c51b64 18-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Initial work for property implementation declarations.
Mostly semantic checking in this patch. This is on going
and incomplete.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
arse/Action.h
f624f8186d8fe474350051c6d3f00b2c204fbeae 18-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Initial work for property implementation declarations.
Mostly semantic checking in this patch. This is on going
and incomplete.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49882 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
arse/Action.h
215d9fb89792861db470430777ecef8e8b7b9647 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Modified BugReport::getEndPath() to handle the case where end path is at
the exit block of the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49880 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
bd7efa8ca27ed9676acf00abf31d5e1cd54651cc 18-Apr-2008 Ted Kremenek <kremenek@apple.com> Modified BugReport::getEndPath() to handle the case where end path is at
the exit block of the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49880 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
4e9899f6dbaa798ed73f347f5fc5dc6eb0909744 18-Apr-2008 Ted Kremenek <kremenek@apple.com> class Preprocessor: Now owns the "predefines" char*; it deletes [] it in its dstor.

clang.cpp: InitializePreprocessor now makes a copy of the contents of PredefinesBuffer and
passes it to the preprocessor object.

clang.cpp: DriverPreprocessorFactory now calls "InitializePreprocessor" instead of this being done in main().

html::HighlightMacros() now takes a PreprocessorFactory, allowing it to conjure up a new
Preprocessor to highlight macros.

class HTMLDiagnostics now takes a PreprocessorFactory* that it can use for html::HighlightMacros().
Updated clients of HTMLDiagnostics to use this new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49875 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ewrite/HTMLRewrite.h
339b9c27759d7b6a53e2370f83f66e78b3254595 18-Apr-2008 Ted Kremenek <kremenek@apple.com> class Preprocessor: Now owns the "predefines" char*; it deletes [] it in its dstor.

clang.cpp: InitializePreprocessor now makes a copy of the contents of PredefinesBuffer and
passes it to the preprocessor object.

clang.cpp: DriverPreprocessorFactory now calls "InitializePreprocessor" instead of this being done in main().

html::HighlightMacros() now takes a PreprocessorFactory, allowing it to conjure up a new
Preprocessor to highlight macros.

class HTMLDiagnostics now takes a PreprocessorFactory* that it can use for html::HighlightMacros().
Updated clients of HTMLDiagnostics to use this new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49875 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ewrite/HTMLRewrite.h
5ab36b0aba0206b2eed6c94c498c8d9a72e53d5c 17-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "PreprocessorFactory", an interface for lazily creating Preprocessor objects on-demand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49868 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ec6c574478a22008847d7ebc2498ef3336752096 17-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "PreprocessorFactory", an interface for lazily creating Preprocessor objects on-demand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49868 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
8516e9aeca0e3b8b9d064eeef0a3a25c07c850ab 17-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Added property decl support for protocols.
Added assertion if unexpected property decls are found where they don't belong.
Consolidated property decl. printing by using a helper function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3dd4ba4068e953125b95ce85c723322cdd0a3cb5 17-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Added property decl support for protocols.
Added assertion if unexpected property decls are found where they don't belong.
Consolidated property decl. printing by using a helper function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d358600db540bf90f686c91145cf422f122822f0 17-Apr-2008 Argiris Kirtzidis <akyrtzi@gmail.com> Addition of TranslationUnitDecl to the AST:

-Added TranslationUnitDecl class to serve as top declaration context
-ASTContext gets a TUDecl member and a getTranslationUnitDecl() function
-All ScopedDecls get the TUDecl as DeclContext when declared at global scope


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
ef177820100ab583b08fd3056e2a5a52ee4b1629 17-Apr-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Addition of TranslationUnitDecl to the AST:

-Added TranslationUnitDecl class to serve as top declaration context
-ASTContext gets a TUDecl member and a getTranslationUnitDecl() function
-All ScopedDecls get the TUDecl as DeclContext when declared at global scope


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclBase.h
af0100e37d6818548427f73a708751f54774b62b 17-Apr-2008 Chris Lattner <sabre@nondot.org> Make HighlightRange correctly handle multi-line ranges. This causes us to
correctly handle multi-line comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49827 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
9402b57a0dca4058fe56d7fd84e97fc496421125 17-Apr-2008 Chris Lattner <sabre@nondot.org> Make HighlightRange correctly handle multi-line ranges. This causes us to
correctly handle multi-line comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49827 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
c208f4ee3f5ecbb51be0f4b11ff982369bd145aa 17-Apr-2008 Ted Kremenek <kremenek@apple.com> Handle ReturnStmts by dispatching to "EvalReturn" in the transfer function object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49826 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
6b31e8ed11721505645860f40486e091ecd23dd0 17-Apr-2008 Ted Kremenek <kremenek@apple.com> Handle ReturnStmts by dispatching to "EvalReturn" in the transfer function object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49826 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
7e0d2ddc4c4b1defa8062922d890ec8729abfc74 17-Apr-2008 Chris Lattner <sabre@nondot.org> add a new HighlightRange API, it doesn't handle multiline ranges
yet, but it will soon...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49825 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
5ef3e2c45f13fccdb0d7bbcf24c1beee8eee6f64 17-Apr-2008 Chris Lattner <sabre@nondot.org> add a new HighlightRange API, it doesn't handle multiline ranges
yet, but it will soon...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49825 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
65a81737d419e60adf77ab865570a6ac6f267ab1 17-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> New AST class for property implementation declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
61d46159af2a740207de8dc024211d531ae290d9 17-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> New AST class for property implementation declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
79f0a63d595ce0ef9d6d72658703f934820081a6 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Added CFGBlock::getTerminatorCondition() to get the Expr* of the condition a block's terminator.
Refactored LiveVariables to use getTerminatorCondition() in VisitTerminator().

Bug fix: CFG now computes Block-level expression numbers using information
from block terminators. This fixes <rdar://problem/5868189>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
411cdee0b490f79428c9eb977f25199eb7d21cd8 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Added CFGBlock::getTerminatorCondition() to get the Expr* of the condition a block's terminator.
Refactored LiveVariables to use getTerminatorCondition() in VisitTerminator().

Bug fix: CFG now computes Block-level expression numbers using information
from block terminators. This fixes <rdar://problem/5868189>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
52ff8444b679c8e11e248e535a06fe11b0fe6503 16-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> This patch adds support for declaraing properties in categories,
just as they are declared in objc classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7e7e3872b584bc5e7de7a34c8b9c092032303b72 16-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> This patch adds support for declaraing properties in categories,
just as they are declared in objc classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9e0df791f8ee3ebbc3dd978c38303f91db588bb6 16-Apr-2008 Chris Lattner <sabre@nondot.org> reenable highlighting of (the first line of) comments


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49816 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
678c6358c8d4e368c78629099142397c63c1ee35 16-Apr-2008 Chris Lattner <sabre@nondot.org> reenable highlighting of (the first line of) comments


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49816 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
7aef4848c8b4ab836ba1ca000dcac42c1cc7704c 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Small tweaks to EvalStore: pass an "RVal" instead of "LVal" for the TargetLV to
represent possible stores to "Unknown."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49811 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
1392261ff4418a070fb919cb4832b76b468b6faa 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Small tweaks to EvalStore: pass an "RVal" instead of "LVal" for the TargetLV to
represent possible stores to "Unknown."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49811 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
4d22f0ed23a0d49a8fd250001805d8199d2fc6ec 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Hook up "EvalStore" from GRTransferFuncs to GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49804 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
ec96a2d52d16e150baaf629cd35e3fabff5d8915 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Hook up "EvalStore" from GRTransferFuncs to GRExprEngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49804 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
f5069587a4743b21ac897c8ea4de452a22fec8fd 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Take first step to migrating handling of "stores" to values from GRExprEngine
to the plug-in GRTransferFuncs object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49801 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
e38718e3251d9f2489f38a5467fdab06f53e8e77 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Take first step to migrating handling of "stores" to values from GRExprEngine
to the plug-in GRTransferFuncs object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49801 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
9de65d06d2ada3278f003c2d1e6b049fb5aa7a26 16-Apr-2008 Chris Lattner <sabre@nondot.org> split syntax highlighting of macros from keywords and comments,
allowing us to use a cheaper means to highlight keywords and making
it so that comments won't foul up macro expansions.

Start highlighting macro expansions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49779 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
c54d50a4180520370c12dd7d06d035263d357d56 16-Apr-2008 Chris Lattner <sabre@nondot.org> split syntax highlighting of macros from keywords and comments,
allowing us to use a cheaper means to highlight keywords and making
it so that comments won't foul up macro expansions.

Start highlighting macro expansions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49779 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
21f72d68bfd567ab91cedb2a0a05b978b2f7f959 16-Apr-2008 Chris Lattner <sabre@nondot.org> Add a mode of hackily syntax highlighting comments. This has a number of
problems, including the fact that it doesn't work well with multi-line
comments due to Ted's crazy table. However, that could be fixed, and it
does work with single-line ones :).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49778 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
3245a0a1c7a4fd74fca845b2edba275bb126d773 16-Apr-2008 Chris Lattner <sabre@nondot.org> Add a mode of hackily syntax highlighting comments. This has a number of
problems, including the fact that it doesn't work well with multi-line
comments due to Ted's crazy table. However, that could be fixed, and it
does work with single-line ones :).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49778 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
abe984ea34580f5ba640af6f9192103fa4d279d5 16-Apr-2008 Chris Lattner <sabre@nondot.org> In html::EscapeText, instead of going through the rewriter with
a SourceLocation to get a RewriteBuffer, poke the RewriteBuffer
with an offset directly. THis is no faster, but results in
cleaner code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49774 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
735271479ac57c27f744806859efd5b001dea248 16-Apr-2008 Chris Lattner <sabre@nondot.org> In html::EscapeText, instead of going through the rewriter with
a SourceLocation to get a RewriteBuffer, poke the RewriteBuffer
with an offset directly. THis is no faster, but results in
cleaner code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49774 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
2287cee1857a6aabb3daf1c79d0b703d1dee9640 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Remove uses of "Selector&" and "const Selector&", since Selector is just an
immutable smart pointer (we don't need to pass references, just pass Selector).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/IdentifierTable.h
97b7f26a92d87e514530a5b652460190ce48c974 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Remove uses of "Selector&" and "const Selector&", since Selector is just an
immutable smart pointer (we don't need to pass references, just pass Selector).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/IdentifierTable.h
204a65ede4f3da22a70fa5f7819c5fa97fad0aa3 16-Apr-2008 Chris Lattner <sabre@nondot.org> make a method public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49770 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
6837e38d4301d7874805ed4b24d8d14662789e10 16-Apr-2008 Chris Lattner <sabre@nondot.org> make a method public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49770 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
f8dea31d676df5cbf546de91b4bd32dcdabf315d 16-Apr-2008 Chris Lattner <sabre@nondot.org> speed up -emit-html in a release build by 6.5% by avoiding std::string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49764 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
b9bc3eca218e2670f05b34c0b3c33a46d710bd88 16-Apr-2008 Chris Lattner <sabre@nondot.org> speed up -emit-html in a release build by 6.5% by avoiding std::string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49764 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
ca5f620530abf463ac01dd9a4587485fb6a18864 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Added some comments to GRExprEngine. Reorder some of the method definitions
to start logically organizing them.

Added initial plug-in transfer function support for Objective-C message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49752 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
e695e1cd7d8a579455e8969be36cbaf10a316a64 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Added some comments to GRExprEngine. Reorder some of the method definitions
to start logically organizing them.

Added initial plug-in transfer function support for Objective-C message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49752 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
670b6e459a7d94595ccf350fb5de0e5a8e3014a2 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Revert my previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49751 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
d4bad1ed00d19c44d3c8122e4486486488f38ae9 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Revert my previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49751 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
ed4dfb95e4d0210c69418e2cd46ff52065391eac 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Remove dispatch to "VisitParmVarDecl".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49750 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
12ce650bbab95450b7b3d3399212609cd9aba72c 16-Apr-2008 Ted Kremenek <kremenek@apple.com> Remove dispatch to "VisitParmVarDecl".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49750 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
72a6ebcd14aa787c516d683a0efa1550440ad346 16-Apr-2008 Steve Naroff <snaroff@apple.com> Remove FileVarDecl and BlockVarDecl. They are replaced by VarDecl::isBlockVarDecl() and VarDecl::isFileVarDecl().

This is a fairly mechanical/large change. As a result, I avoided making any changes/simplifications that weren't directly related. I did break two Analysis tests. I also have a couple FIXME's in UninitializedValues.cpp. Ted, can you take a look? If the bug isn't obvious, I am happy to dig in and fix it (since I broke it).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
nalysis/Analyses/UninitializedValues.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
248a753f6b670692523c99afaeb8fe98f7ae3ca7 16-Apr-2008 Steve Naroff <snaroff@apple.com> Remove FileVarDecl and BlockVarDecl. They are replaced by VarDecl::isBlockVarDecl() and VarDecl::isFileVarDecl().

This is a fairly mechanical/large change. As a result, I avoided making any changes/simplifications that weren't directly related. I did break two Analysis tests. I also have a couple FIXME's in UninitializedValues.cpp. Ted, can you take a look? If the bug isn't obvious, I am happy to dig in and fix it (since I broke it).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
nalysis/Analyses/UninitializedValues.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
9ea943fd2a4c72fbbb16a478f6ab635829823592 15-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix bug in terminator processing for uninitialized-values: simply ignore the terminator, don't reprocess it.

LiveVariables analysis now does a flow-insensitive analysis to determine what variables have their address taken; these variables are now always treated as being live.

The DataflowSolver now uses "SetTopValue()" when getting the initial value for the entry/exit block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49734 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
7deed0c65b315cac037539401c49586283158d9f 15-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix bug in terminator processing for uninitialized-values: simply ignore the terminator, don't reprocess it.

LiveVariables analysis now does a flow-insensitive analysis to determine what variables have their address taken; these variables are now always treated as being live.

The DataflowSolver now uses "SetTopValue()" when getting the initial value for the entry/exit block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49734 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
ec14906f8644cf07c5b462c4b8dd5eba4e401128 15-Apr-2008 Ted Kremenek <kremenek@apple.com> Bug fix in VisitChildren: Only visit the last statement in a StmtExpr and the RHS of a comma expression, as the other Stmts will be visited elsewhere in a CFGBlock.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49710 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGStmtVisitor.h
42e7fe5685de54c18d1c466632dacacabde0b202 15-Apr-2008 Ted Kremenek <kremenek@apple.com> Bug fix in VisitChildren: Only visit the last statement in a StmtExpr and the RHS of a comma expression, as the other Stmts will be visited elsewhere in a CFGBlock.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49710 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGStmtVisitor.h
a0aa0b10f820b607e78aa7972b892dc37a43f36d 15-Apr-2008 Ted Kremenek <kremenek@apple.com> Added initial support into the flow-sensitive dataflow solver to visit the Block-level expression
in a block's terminator. This expression is visited within a block, but it is accessed by the
terminator. This is important to observe because for live-variables analysis the block-level
expression is live between the terminator and where the expression occurs in the block. So far
this hasn't been an issue to not observe this because the block-level expression used in the
terminator is always the last one in the block, and we have never queried the liveness information
about this point (but before the terminator).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49709 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
37622081d8a139a3249613acaa80106ec97261fb 15-Apr-2008 Ted Kremenek <kremenek@apple.com> Added initial support into the flow-sensitive dataflow solver to visit the Block-level expression
in a block's terminator. This expression is visited within a block, but it is accessed by the
terminator. This is important to observe because for live-variables analysis the block-level
expression is live between the terminator and where the expression occurs in the block. So far
this hasn't been an issue to not observe this because the block-level expression used in the
terminator is always the last one in the block, and we have never queried the liveness information
about this point (but before the terminator).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49709 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
0ceb4be0200f9f03f8ffe4c0986ef3cc09e15d36 15-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> New AST representation for each objc2's property declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49699 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
1de1e74541c25c1a7b721f1c3991ea34c8403420 15-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> New AST representation for each objc2's property declaration.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49699 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
d7307b4431d81f17d99d2a8e8116ac897c6f6215 14-Apr-2008 Chris Lattner <sabre@nondot.org> Add a bunch of comments, move RewriteRope::MakeRopeString out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49689 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
5618d88b93056bae76845b1503cce6ba0a6080f1 14-Apr-2008 Chris Lattner <sabre@nondot.org> Add a bunch of comments, move RewriteRope::MakeRopeString out of line.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49689 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
81019d79e21f8606b3c59d0d82db6df9548b0a89 14-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "getCanonicalID()", "isFromSameFile", and "isFromMainFile" to compare
the files of different SourceLocations. These methods correctly handle the
case where a file may have multiple FileIDs due to it being large enough
to be spread across several chunks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49682 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
9fd87b1db485e2f31d0e5687f9168b370d546847 14-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "getCanonicalID()", "isFromSameFile", and "isFromMainFile" to compare
the files of different SourceLocations. These methods correctly handle the
case where a file may have multiple FileIDs due to it being large enough
to be spread across several chunks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49682 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
6b0461faec7293f6fde500c536c7bcdbb6f1ec85 14-Apr-2008 Chris Lattner <sabre@nondot.org> move a ton of code out of line, from RewriteRope.h -> RewriteRope.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49664 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
5fd3e2673a1bd61d5f08f679555d15d23aba9314 14-Apr-2008 Chris Lattner <sabre@nondot.org> move a ton of code out of line, from RewriteRope.h -> RewriteRope.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49664 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
e3ef1c798103a27c28e5e2523b96a5a4e022a0ba 14-Apr-2008 Ted Kremenek <kremenek@apple.com> Hooked up the dead-store checker to the BugReporter interface. Now dead-store
warnings are emitted as part of the warnings registered by GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49658 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
d2f642b56e87493edfc3b0dab359b5e32d5f8a5e 14-Apr-2008 Ted Kremenek <kremenek@apple.com> Hooked up the dead-store checker to the BugReporter interface. Now dead-store
warnings are emitted as part of the warnings registered by GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49658 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRExprEngine.h
01eb23a98ad0c9d9442fe430e1f13e718793ab55 14-Apr-2008 Ted Kremenek <kremenek@apple.com> Added version of "getClient()" for class Diagnostic that returns a non-const
reference to the DiagnosticClient. This is useful for DiagnosticClients
that have internal state when processing diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2bf78fba7a37a42d4295999706053fdf4c9625e2 14-Apr-2008 Ted Kremenek <kremenek@apple.com> Added version of "getClient()" for class Diagnostic that returns a non-const
reference to the DiagnosticClient. This is useful for DiagnosticClients
that have internal state when processing diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49656 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
1050ba0beb21f7d6e49d7c32d3466875231b8ec5 14-Apr-2008 Chris Lattner <sabre@nondot.org> remove ifdefs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49651 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
e5cd857f7e71d5789df25d5046d104b93cf2a71c 14-Apr-2008 Chris Lattner <sabre@nondot.org> remove ifdefs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49651 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ab428cf01a3c88110326ddd064fcceff1b525ac4 14-Apr-2008 Chris Lattner <sabre@nondot.org> Change the RewriteRope::Chunks data structure from an std::list into
a nice shiny B+ Tree variant. This fixes the last of the known algorithmic
issues with the rewriter, allowing a significant speedup. For example,
-emit-html on Ted's 500K .i file speeds up from 26.8s -> 0.64s in a
debug build (41x!) and 5.475s -> 0.132s (41x!) in an optimized build.

This code is functional but needs to be cleaned up, ifdefs removed, better
commented, and moved to a .cpp file. I plan to do this tomorrow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49635 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
febe719596ee68605944da5f2e03258e18e6df8c 14-Apr-2008 Chris Lattner <sabre@nondot.org> Change the RewriteRope::Chunks data structure from an std::list into
a nice shiny B+ Tree variant. This fixes the last of the known algorithmic
issues with the rewriter, allowing a significant speedup. For example,
-emit-html on Ted's 500K .i file speeds up from 26.8s -> 0.64s in a
debug build (41x!) and 5.475s -> 0.132s (41x!) in an optimized build.

This code is functional but needs to be cleaned up, ifdefs removed, better
commented, and moved to a .cpp file. I plan to do this tomorrow.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49635 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
696be9385991891ec4ed60010b86b74b3c165ef0 14-Apr-2008 Douglas Gregor <doug.gregor@gmail.com> Make Parser::getAccessSpecifierIfPresent const, since it does not modify the state

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49629 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1b7f89846f10681ce3cbe89ef5d60691d55bd918 14-Apr-2008 Douglas Gregor <dgregor@apple.com> Make Parser::getAccessSpecifierIfPresent const, since it does not modify the state

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49629 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ec93f447b8634e58fc9f88cda6ef8a542c91ef70 13-Apr-2008 Douglas Gregor <doug.gregor@gmail.com> This patch adds very basic support for parsing and type-checking class
inheritance in C++. It'll parse the base-specifier list, e.g.,

class D : public B1, virtual public B2 { };

and do some of the simpler semantic checks (B1 and B2 are classes;
they aren't unions or incomplete types, etc).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49623 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/AccessSpecifier.h
arse/Action.h
arse/Parser.h
e37ac4ff1620ed2d7026f52baccbfa022d79ced1 13-Apr-2008 Douglas Gregor <dgregor@apple.com> This patch adds very basic support for parsing and type-checking class
inheritance in C++. It'll parse the base-specifier list, e.g.,

class D : public B1, virtual public B2 { };

and do some of the simpler semantic checks (B1 and B2 are classes;
they aren't unions or incomplete types, etc).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49623 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/AccessSpecifier.h
arse/Action.h
arse/Parser.h
1d661556b9263f4d635372aecdea8c55dac84e83 13-Apr-2008 Douglas Gregor <doug.gregor@gmail.com> Introduce support for finding class and enum names via ordinary name lookup in C++

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/Type.h
2ce52f3fb95bf544db6bd3d91a72bce7d9cceb6c 13-Apr-2008 Douglas Gregor <dgregor@apple.com> Introduce support for finding class and enum names via ordinary name lookup in C++

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49621 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclBase.h
ST/Type.h
514bf2ff7765efe659971b04893dbe342fb6d3dc 13-Apr-2008 Chris Lattner <sabre@nondot.org> Fix PR2220, making diagnostics for unexpected tokens in pp expressions
more nice.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d98d975ccdce7ec442ac26f682404cb71df40ff8 13-Apr-2008 Chris Lattner <sabre@nondot.org> Fix PR2220, making diagnostics for unexpected tokens in pp expressions
more nice.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49619 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
10e7fb1cddbe71deabaf296874ee0a5181f67d51 13-Apr-2008 Douglas Gregor <doug.gregor@gmail.com> Test commit: fix a typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49615 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
be432b3583bdf0fdc9c34be4bc0e6899f3aa9aa7 13-Apr-2008 Douglas Gregor <dgregor@apple.com> Test commit: fix a typo

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49615 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
2e78db3510b136b3f961af202e6a1a3df4839172 13-Apr-2008 Chris Lattner <sabre@nondot.org> This patch is just the easy part of the class names patch, which
allows the parsing of "class" in addition to "struct" and "union" to
declare a record. So this patch allows:

class C { };
class C c1;

But it does not contain the lookup bits, so this won't work yet:

C c2;

Patch by Doug Gregor!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/DeclSpec.h
99dc91422144483c20d1c7381bc9ac634b646b04 13-Apr-2008 Chris Lattner <sabre@nondot.org> This patch is just the easy part of the class names patch, which
allows the parsing of "class" in addition to "struct" and "union" to
declare a record. So this patch allows:

class C { };
class C c1;

But it does not contain the lookup bits, so this won't work yet:

C c2;

Patch by Doug Gregor!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
arse/DeclSpec.h
b1856dbbd26d8386899c46712e182e54f9833de6 13-Apr-2008 Chris Lattner <sabre@nondot.org> Default argument cleanups and minor improvements, patch by
Doug Gregor!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ewrite/RewriteRope.h
9e979557eea3875c9e3d100c68188233dd7f46c0 13-Apr-2008 Chris Lattner <sabre@nondot.org> Default argument cleanups and minor improvements, patch by
Doug Gregor!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ewrite/RewriteRope.h
237f8e1aff9a98514b10d28159d7aaf490f4c4ac 13-Apr-2008 Chris Lattner <sabre@nondot.org> move the DeltaTree implementation out of line, remove debugging printfs etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49591 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/DeltaTree.h
8100d749514748ab1e9f219d3a6ce2f4c6389140 13-Apr-2008 Chris Lattner <sabre@nondot.org> move the DeltaTree implementation out of line, remove debugging printfs etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49591 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/DeltaTree.h
29e5f440f06938bae357f1bcf7d0afdd4d4c39ad 12-Apr-2008 Chris Lattner <sabre@nondot.org> remove ifdefs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49587 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
77257889f5829144767c8a1d7fc18a929a377b5c 12-Apr-2008 Chris Lattner <sabre@nondot.org> remove ifdefs


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49587 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
12a785c25c2174e23db5956d3817dbbeba80f593 12-Apr-2008 Chris Lattner <sabre@nondot.org> Do an initial hack at replacing one of the incredibly inefficient
(but simple!) datastructures in the rewriter with a more complex but
more efficient one.

This replaces the Deltas vector with a specialized BTree that makes
delta lookups much more efficient. This speeds up -emit-html on a 500K
.i file from 157.154 to 27.127 seconds on my machine (5.8x).

While this code is functional, it isn't very pretty, I have much
refactoring planned for it, and will remove the USE_VECTOR ifdef.
Stay tuned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49586 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/DeltaTree.h
ewrite/Rewriter.h
5c9dc5ac75de8d620311cdc20223998e0293d61f 12-Apr-2008 Chris Lattner <sabre@nondot.org> Do an initial hack at replacing one of the incredibly inefficient
(but simple!) datastructures in the rewriter with a more complex but
more efficient one.

This replaces the Deltas vector with a specialized BTree that makes
delta lookups much more efficient. This speeds up -emit-html on a 500K
.i file from 157.154 to 27.127 seconds on my machine (5.8x).

While this code is functional, it isn't very pretty, I have much
refactoring planned for it, and will remove the USE_VECTOR ifdef.
Stay tuned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49586 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/DeltaTree.h
ewrite/Rewriter.h
e707172d121c4072834e59067eec77fd410b5764 12-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> AST generation for objc2's property declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49565 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
dae1a1a2aa4f245b1958dc8db6089f24c575ef13 12-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> AST generation for objc2's property declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49565 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
18ee8fffa9e97d7d854cfeccc2e17cef24dfbb32 12-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "EvalEndPath" to GRTransferFuncs: the default implementation does not
change the state (and thus the GREndPathNodeBuilder automatically contructs a
node).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49563 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
52f379500f4290efaf425a9a5cbc631e2e48a559 12-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "EvalEndPath" to GRTransferFuncs: the default implementation does not
change the state (and thus the GREndPathNodeBuilder automatically contructs a
node).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49563 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
db4412d2ceb9361322185964ba2be9d2e25a36a7 12-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "GREndPathNodeBuilder", a new node builder that will be used for
evaluating transfer functions at the end-of-path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49561 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
11062b118476368fa5b294954713e5df97d8599f 12-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "GREndPathNodeBuilder", a new node builder that will be used for
evaluating transfer functions at the end-of-path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49561 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
7c371743821713cb9627af576fadc890185c75e2 11-Apr-2008 Steve Naroff <snaroff@apple.com> Add class and super class location info to ObjCInterfaceDecl...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d6a07aaf62b40cdfbd96f6b874d02b06fc22d015 11-Apr-2008 Steve Naroff <snaroff@apple.com> Add class and super class location info to ObjCInterfaceDecl...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
965c2fd30d881004fc64d71aadb0966da6d2281f 11-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "RangedBugReport".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
5e55cda64f4452fa65d83f66390c7126a8b248bb 11-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "RangedBugReport".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
21d4e81557e118167c0acd8030ec68ff5d9ffc1a 11-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Invoke destructors in Decl::Destroy().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
1bb19638f2ec0d63ed131b51ca8d9542d1a9afee 11-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Invoke destructors in Decl::Destroy().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
4e0bb9874657593aaba9ed3a53ecc801180ede6f 11-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Minor changes per Chris L's review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49539 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
45bc03f9202d5649fd41f35b98d34bb34823d0f3 11-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Minor changes per Chris L's review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49539 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
274366f8e637c55be456dfc7bb4ea54fe5e5af97 11-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Stub out and start using a Decl::Destroy() method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49532 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
bb45c512e0dfbe96bfe377ac642e726c0ba0affa 11-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Stub out and start using a Decl::Destroy() method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49532 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
751c61790a689820aa64ddfb4069f1bfc6a88952 11-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Patch for:
1) objc ivar processing is split out of ActOnField into its own ActOnIvar method.
2) the new objc ivar action takes visibility info directly, eliminating
AllVisibilities in ParseObjCClassInstanceVariables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49506 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1d78cc443084134428c4c333fab25148900c3ca4 11-Apr-2008 Fariborz Jahanian <fjahanian@apple.com> Patch for:
1) objc ivar processing is split out of ActOnField into its own ActOnIvar method.
2) the new objc ivar action takes visibility info directly, eliminating
AllVisibilities in ParseObjCClassInstanceVariables.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49506 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a4c74292c33ad86125d215b8607b30911524d76b 11-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix some bonehead bugs in summary generation in CFRefCount.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49503 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
3ea0b6a0870889fc2822549ed52d98bf5e292a24 11-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix some bonehead bugs in summary generation in CFRefCount.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49503 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
b1983ba30244d44562b78fd56b4f471761109bd5 11-Apr-2008 Ted Kremenek <kremenek@apple.com> Refactored all logic to run the GRSimpleVals and CFRef checker into a common
code path in the clang driver.

Renamed options --grsimple to -checker-simple and -check-cfref to -checker-cfref.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49500 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
d71ed26dd80cdfebb5bb49000cce538e6c9a90e3 11-Apr-2008 Ted Kremenek <kremenek@apple.com> Refactored all logic to run the GRSimpleVals and CFRef checker into a common
code path in the clang driver.

Renamed options --grsimple to -checker-simple and -check-cfref to -checker-cfref.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49500 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
f62fb735c9c955f7ae367987458153d201a151da 10-Apr-2008 Chris Lattner <sabre@nondot.org> reduce the amount of 'C++ magic' this code depends on :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49489 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
ebe457c3443af253bc14ae77c2013b088370a66b 10-Apr-2008 Chris Lattner <sabre@nondot.org> reduce the amount of 'C++ magic' this code depends on :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49489 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
128d65fb99d942fb9666fd8fec8b4616fb212d41 10-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed regressions in error reporting due to copy-paste errors (using the "begin"
iterator instead of "end") and not implementing "getDescription()" for Nil
argument checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49485 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
4d35dacf85fc9fb257baa1a846abef2361a1c426 10-Apr-2008 Ted Kremenek <kremenek@apple.com> Fixed regressions in error reporting due to copy-paste errors (using the "begin"
iterator instead of "end") and not implementing "getDescription()" for Nil
argument checks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49485 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
3dd8d3948621b5a3165fcc9ee769e7f10a8c54de 10-Apr-2008 Chris Lattner <sabre@nondot.org> refactor Parser::ParseStructDeclaration to return a vector of uninterpreted
declarators. This allows the clients (C structs, objc classes, objc
properties, [future] C++ classes) etc, to do custom processing before invoking
an action.

This has two benefits in the short term:
1) objc ivar processing should be split out of ActOnField into its own ActOn method.
2) the new objc ivar action can take visibility info directly, eliminating
AllVisibilities in ParseObjCClassInstanceVariables.
3) objc properties can pass their own special sauce down to sema as well.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49468 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
e13594279a952537ac903325efff57e3edca79d9 10-Apr-2008 Chris Lattner <sabre@nondot.org> refactor Parser::ParseStructDeclaration to return a vector of uninterpreted
declarators. This allows the clients (C structs, objc classes, objc
properties, [future] C++ classes) etc, to do custom processing before invoking
an action.

This has two benefits in the short term:
1) objc ivar processing should be split out of ActOnField into its own ActOn method.
2) the new objc ivar action can take visibility info directly, eliminating
AllVisibilities in ParseObjCClassInstanceVariables.
3) objc properties can pass their own special sauce down to sema as well.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49468 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
1d8a35e687005f5e1380259c017127edae8a8876 10-Apr-2008 Eric Christopher <echristo@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49464 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
97d0205d16fef2a783e785459b5f30f6a9dfbcb9 10-Apr-2008 Eric Christopher <echristo@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49464 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
da7b5f03e9390e1f5d25ca5c7bbd07a9cce95d28 10-Apr-2008 Chris Lattner <sabre@nondot.org> typedef void T;
void f(T);

is only invalid in C++ mode, not C89 mode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49460 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
def026a193b8218a58d112414515cb87fdf89c15 10-Apr-2008 Chris Lattner <sabre@nondot.org> typedef void T;
void f(T);

is only invalid in C++ mode, not C89 mode.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49460 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
97316c05084fc9a360b3d38af939c30cdd3c6034 10-Apr-2008 Chris Lattner <sabre@nondot.org> Several improvements from Doug Gregor related to default
argument handling. I'll fix up the c89 (void) thing next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49459 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
asic/DiagnosticKinds.def
8123a95c33b792d35c2e4992ba6e27882748fb0d 10-Apr-2008 Chris Lattner <sabre@nondot.org> Several improvements from Doug Gregor related to default
argument handling. I'll fix up the c89 (void) thing next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49459 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
asic/DiagnosticKinds.def
0e80deaa6027ea5fcc5a5a9eb55ea63b03106f57 09-Apr-2008 Ted Kremenek <kremenek@apple.com> Major refactoring/cleanup of GRExprEngine, ExplodedGraph, and BugReporter.

Bugs are now reported using a combination of "BugType" (previously
BugDescription) and Bug "BugReport" objects, which are fed to BugReporter (which
generates PathDiagnostics). This provides a far more modular way of registering
bug types and plugging in diagnostics.

GRExprEngine now owns its copy of GRCoreEngine, and is not owned by the
ExplodedGraph.

ExplodedGraph is no longer templated on the "checker", but instead on the state
contained in the nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49453 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
50a6d0ce344c02782e0207574005c3b2aaa5077c 09-Apr-2008 Ted Kremenek <kremenek@apple.com> Major refactoring/cleanup of GRExprEngine, ExplodedGraph, and BugReporter.

Bugs are now reported using a combination of "BugType" (previously
BugDescription) and Bug "BugReport" objects, which are fed to BugReporter (which
generates PathDiagnostics). This provides a far more modular way of registering
bug types and plugging in diagnostics.

GRExprEngine now owns its copy of GRCoreEngine, and is not owned by the
ExplodedGraph.

ExplodedGraph is no longer templated on the "checker", but instead on the state
contained in the nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49453 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
nalysis/PathSensitive/GRTransferFuncs.h
4067480cce9d74af32c132433e0cf1ed206ddec9 09-Apr-2008 Ted Kremenek <kremenek@apple.com> Added new "BugReporterHelper" class which is used by BugReporter to emit
checker-specific diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
6837faa083bebad39aa342f84c2b450fb6410eaf 09-Apr-2008 Ted Kremenek <kremenek@apple.com> Added new "BugReporterHelper" class which is used by BugReporter to emit
checker-specific diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49412 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
88aeff9cd0fdc030d35a009beffbc2667c0b0beb 09-Apr-2008 Ted Kremenek <kremenek@apple.com> Don't expand tabs in EscapeText, but rather expand them when writing out
the HTML file. This should reduce the amount of memory pressure on the
rewriter for files that have a lot of tabs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49406 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
fa5be3617294f0e3c341f0ecb6b2076478b1b5ac 09-Apr-2008 Ted Kremenek <kremenek@apple.com> Don't expand tabs in EscapeText, but rather expand them when writing out
the HTML file. This should reduce the amount of memory pressure on the
rewriter for files that have a lot of tabs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49406 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
a0bc14d9a13c535f7e21d6b4eed5fa2f1bbc7fd9 08-Apr-2008 Ted Kremenek <kremenek@apple.com> Make SourceManager::getFullFilePos() public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49402 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
25ba02630820a798ace3f71a212c7bff00236748 08-Apr-2008 Ted Kremenek <kremenek@apple.com> Make SourceManager::getFullFilePos() public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49402 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
be9c27a46f4668b89388704afb1f5335bd423229 08-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Changed the Decl::Kind enum of the ObjCPropertyDecl class, so that it follows
the pattern of the other Decl classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49399 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
670aa9d7639278f507930e95dc89c12032ab7c7e 08-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Changed the Decl::Kind enum of the ObjCPropertyDecl class, so that it follows
the pattern of the other Decl classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49399 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclBase.h
ST/DeclObjC.h
3e254fbafd851bc9d6872cf52ee5740c79b3e627 08-Apr-2008 Chris Lattner <sabre@nondot.org> Add support for C++ default arguments, and rework Parse-Sema
interaction for function parameters, fixing PR2046.

Patch by Doug Gregor!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49369 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
04421087832a031c90bd58f128c7c0e741db8dd2 08-Apr-2008 Chris Lattner <sabre@nondot.org> Add support for C++ default arguments, and rework Parse-Sema
interaction for function parameters, fixing PR2046.

Patch by Doug Gregor!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49369 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/ExprCXX.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
arse/DeclSpec.h
e1bf35175aed2aa96da1bd73601ac2fd3e02c500 07-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Pass the ASTContext object around when deserializing Decl and Stmt objects, so
they can be created using the same allocator as in the "from source code" case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49353 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
ST/Stmt.h
e2563ca02a519c2ad6d64dfed87d6e86c5d3c072 07-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Pass the ASTContext object around when deserializing Decl and Stmt objects, so
they can be created using the same allocator as in the "from source code" case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49353 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/Expr.h
ST/Stmt.h
f0d2ee0dfb27a0b6d08173822ebb7cf8d44b96b3 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify array compatibility testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49326 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
acc9972da24df89ea283d6f979ffbd0e4fa0e1a5 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify array compatibility testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49326 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
390564e2ad5e3582a67d76b3a611b375ae5c4b9a 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify compatibility testing for tag types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
78eca286b0898e98bb2cee943b4ecbea9cc07dd6 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify compatibility testing for tag types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49323 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fd5690fe6b5ea1c553dfe20f99d3fef269a50bd1 07-Apr-2008 Chris Lattner <sabre@nondot.org> Fix a really bad bug where type uniquing would merge a<x> with b<x> as the same
type, because it did not include a/b in the hash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1ee0700c7dbe3554df09b4558e0b35a53d487ff2 07-Apr-2008 Chris Lattner <sabre@nondot.org> Fix a really bad bug where type uniquing would merge a<x> with b<x> as the same
type, because it did not include a/b in the hash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49321 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d1240fac4ac3849087c8860c584f9b4581813b7b 07-Apr-2008 Chris Lattner <sabre@nondot.org> Remove a dead check for compatible builtin types


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3cc4c0c3058a788689b8fc73c0ac139544435c97 07-Apr-2008 Chris Lattner <sabre@nondot.org> Remove a dead check for compatible builtin types


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
0d3e6455188fc84c24b0635a0249398c6e9d3a47 07-Apr-2008 Chris Lattner <sabre@nondot.org> futher simplify compatibility testing of objc interface types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6e26f5db807a75713dbf6e34cf93da6fffe18cc3 07-Apr-2008 Chris Lattner <sabre@nondot.org> futher simplify compatibility testing of objc interface types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b8890206ac094c282c8a830c715029b9fe1c9852 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify vector type compatibility testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f62f9cd5a78e5445a02e37b277f7a2df9c19b7a3 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify vector type compatibility testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49314 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fe1f40359ec02723629c0ddf5bf92c7a18221f84 07-Apr-2008 Chris Lattner <sabre@nondot.org> move ObjCQualifiedIdTypesAreCompatible out of ASTContext into Sema.
While it is similar to the other compatibility predicates in ASTContext,
it is not used by them and is different.

In addition, greatly simplify ObjCQualifiedIdTypesAreCompatible and
fix some canonical type bugs. Also, simplify my Type::getAsObjC* methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49313 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
eca7be6b7ebd93682eeaab2c71d59f2995dacdcc 07-Apr-2008 Chris Lattner <sabre@nondot.org> move ObjCQualifiedIdTypesAreCompatible out of ASTContext into Sema.
While it is similar to the other compatibility predicates in ASTContext,
it is not used by them and is different.

In addition, greatly simplify ObjCQualifiedIdTypesAreCompatible and
fix some canonical type bugs. Also, simplify my Type::getAsObjC* methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49313 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/DeclObjC.h
e86716008551d268871e9aa7b27ea1b64b462991 07-Apr-2008 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49311 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
372bed091b6b1eca596130208e227e7077154de4 07-Apr-2008 Chris Lattner <sabre@nondot.org> improve comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49311 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a371cfdce39dd1297aa27ce1b919ca699cbb388a 07-Apr-2008 Chris Lattner <sabre@nondot.org> add an example.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49309 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
28c0b7df574599d4c19a4c09ca61bb3d70a338cc 07-Apr-2008 Chris Lattner <sabre@nondot.org> add an example.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49309 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
b0c6a1fcc5d43696387d2870cc4722581f6db671 07-Apr-2008 Chris Lattner <sabre@nondot.org> eliminate getReferencedProtocols from
ObjCQualifiedIdType/ObjCQualifiedInterfaceType, adding an interator
interface instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
065f0d7b00c3cd2b3139ebd105f50462fc778859 07-Apr-2008 Chris Lattner <sabre@nondot.org> eliminate getReferencedProtocols from
ObjCQualifiedIdType/ObjCQualifiedInterfaceType, adding an interator
interface instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49308 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e7bf8df2a54184ee19ec217ff9ddafca47b21900 07-Apr-2008 Chris Lattner <sabre@nondot.org> make QualifiedInterfaceTypesAreCompatible a static function
and start simplifying it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3b27546b42bc3d5ec261f3228192350affb370be 07-Apr-2008 Chris Lattner <sabre@nondot.org> make QualifiedInterfaceTypesAreCompatible a static function
and start simplifying it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49307 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
40d6317c310092e4811dbc2b0f5ac81deb10bcae 07-Apr-2008 Chris Lattner <sabre@nondot.org> This predicate is just a generic "issuperclass" predicate, move it to the
ObjCInterfaceType as a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
53efc251792bf2c9c5f295bd3507facc51a1fe7e 07-Apr-2008 Chris Lattner <sabre@nondot.org> This predicate is just a generic "issuperclass" predicate, move it to the
ObjCInterfaceType as a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49306 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
855fed4a2b53d1fd6f8d9054967e39dd4ccc3f81 07-Apr-2008 Chris Lattner <sabre@nondot.org> Simplify some objc compatibility testing, make interfaceTypesAreCompatible
a static function named isCompatibleInterfaceAssign.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
c4e405996217f4be20f73186da53b23b5c4783dc 07-Apr-2008 Chris Lattner <sabre@nondot.org> Simplify some objc compatibility testing, make interfaceTypesAreCompatible
a static function named isCompatibleInterfaceAssign.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49305 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b06cf30badcddfea862bc9a538447453bdd94598 07-Apr-2008 Chris Lattner <sabre@nondot.org> clean up some logic in objc type handling. Specifically, make it so that
there are QualType::getAsObjc* type methods, and make isa<ObjCInterfaceType>
return true for ObjCQualifiedInterfaceType's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
368eefa081d12f0a265ee90ee8ec61b54168d57d 07-Apr-2008 Chris Lattner <sabre@nondot.org> clean up some logic in objc type handling. Specifically, make it so that
there are QualType::getAsObjc* type methods, and make isa<ObjCInterfaceType>
return true for ObjCQualifiedInterfaceType's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49300 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
51285d8efe73ba2c6d30145da33b3d05829ceaba 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify max type computation by making it return an integer (like
getFloatingTypeOrder) instead of a type. Fix a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7cfeb08f2466d6263ec6ff1402298f93f6d6991f 07-Apr-2008 Chris Lattner <sabre@nondot.org> simplify max type computation by making it return an integer (like
getFloatingTypeOrder) instead of a type. Fix a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d7135b47ba2583ad564ad347002eeb0ba17b9b07 07-Apr-2008 Chris Lattner <sabre@nondot.org> minor simplifications/cleanups to type comparisons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a75cea3f6be0daa8054d36af81a6ffda1713f82d 07-Apr-2008 Chris Lattner <sabre@nondot.org> minor simplifications/cleanups to type comparisons.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49296 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
42a2174a9824760c915bb815c877b664dd37d97d 07-Apr-2008 Chris Lattner <sabre@nondot.org> remove the Decl::getCanonicalType() method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8bcfc5bef434d7052e28d0ce45182855659ebd3d 07-Apr-2008 Chris Lattner <sabre@nondot.org> remove the Decl::getCanonicalType() method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c1b68dbbf3d1d032957c50d9d5b96bba565073ca 07-Apr-2008 Chris Lattner <sabre@nondot.org> Start switching clients over from CT.getCanonicalType() to Context.getCanonicalType(CT) for PR2189.

While I'm at it, clean up a bit of maxIntegerType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49292 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f52ab250ff92bc51a9ac9a8e19bd43b63a5f844f 07-Apr-2008 Chris Lattner <sabre@nondot.org> Start switching clients over from CT.getCanonicalType() to Context.getCanonicalType(CT) for PR2189.

While I'm at it, clean up a bit of maxIntegerType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49292 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3dae6f4e34139e208fb0eccc35c0e43e4be24510 07-Apr-2008 Chris Lattner <sabre@nondot.org> introduce a new ASTContext::getCanonicalType method. This is the first
step towards fixing PR2189.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
77c9647cae939104c6cb2b6a4dd8ca859d2e5770 07-Apr-2008 Chris Lattner <sabre@nondot.org> introduce a new ASTContext::getCanonicalType method. This is the first
step towards fixing PR2189.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49291 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
eae0eaa09f163aa27d2eb0244ed2d3ebed8eed6f 07-Apr-2008 Chris Lattner <sabre@nondot.org> Make EnumType/RecordType classof predicates simpler and more efficient in
some cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49287 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2daa5df1b53f7ef745d724771384409f6f5df5c1 07-Apr-2008 Chris Lattner <sabre@nondot.org> Make EnumType/RecordType classof predicates simpler and more efficient in
some cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49287 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1baaf13ea33c7b60742bf772bca8df2ccc1a51a8 06-Apr-2008 Chris Lattner <sabre@nondot.org> add a helper EnumType object for asking about tagtypes for enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5edb8bfe8472e7d7bf6a82386394ef27359eb846 06-Apr-2008 Chris Lattner <sabre@nondot.org> add a helper EnumType object for asking about tagtypes for enums.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49286 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
acb67d91c95c76e18f26e994e927a8b733fa16aa 06-Apr-2008 Chris Lattner <sabre@nondot.org> reject 'typedef int y; int test(x, y)'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49270 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
aaf9ddbeab08a43203cf6b9ca4986c8c6fe6fdc6 06-Apr-2008 Chris Lattner <sabre@nondot.org> reject 'typedef int y; int test(x, y)'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49270 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
35d9c91741f39b7a008b0a254ee2775805288b98 06-Apr-2008 Chris Lattner <sabre@nondot.org> split parsing of identifier lists in function declarators out into
their own method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49268 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
66d28650752eeac0b02802a1d8cea425cb6b1c0f 06-Apr-2008 Chris Lattner <sabre@nondot.org> split parsing of identifier lists in function declarators out into
their own method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49268 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a0d056dc3bb8ed2166d4cd81501232b3832f6323 06-Apr-2008 Chris Lattner <sabre@nondot.org> split code for handling grouping parens in declarators from code that
handles function argument parens in declarators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49265 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ef4715c3feb2c77f07171577510ef861753280b6 06-Apr-2008 Chris Lattner <sabre@nondot.org> split code for handling grouping parens in declarators from code that
handles function argument parens in declarators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49265 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
44f6d9d3d52f33a4e5558a550233b7927bf0da3c 06-Apr-2008 Chris Lattner <sabre@nondot.org> Use token lookahead to simplify some code that is rarely executed.
Since it is rare, the cost is not significant and we enjoy the
simplification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49263 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5dcc6ce4a68b3bd4b89c5697c9728e1533e71e03 06-Apr-2008 Chris Lattner <sabre@nondot.org> Use token lookahead to simplify some code that is rarely executed.
Since it is rare, the cost is not significant and we enjoy the
simplification.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49263 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
052fbcdab1bfcd795ebd5d1f2f9ccfc95671431b 06-Apr-2008 Chris Lattner <sabre@nondot.org> Fix a bug I introduced in my const'ification patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5619688510185081cbb4621d703daf7ee24cf39a 06-Apr-2008 Chris Lattner <sabre@nondot.org> Fix a bug I introduced in my const'ification patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f3874bc89a4f4c4af2ea41900b782a8381d1fcba 06-Apr-2008 Chris Lattner <sabre@nondot.org> This patch contains these changes:

-Renamed ContextDecl -> DeclContext
-Removed DeclContext pointer from FieldDecl
-EnumDecl inherits from DeclContext, instead of TagDecl

Patch by Argiris Kirtzidis!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
b048c9835969c4f7fe06264748be18ed4b442116 06-Apr-2008 Chris Lattner <sabre@nondot.org> This patch contains these changes:

-Renamed ContextDecl -> DeclContext
-Removed DeclContext pointer from FieldDecl
-EnumDecl inherits from DeclContext, instead of TagDecl

Patch by Argiris Kirtzidis!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49261 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
3b3012ee16ae2a625c6ad5c6e12823de8833ab4c 06-Apr-2008 Chris Lattner <sabre@nondot.org> don't dereference hte end iterator when inserting at end of buffer.
Patch by Cédric Venet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49259 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
19bf719a2b9033e00d9e5931d700b7c1c893b8d6 06-Apr-2008 Chris Lattner <sabre@nondot.org> don't dereference hte end iterator when inserting at end of buffer.
Patch by Cédric Venet!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49259 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
546b68cfff587943414a19119add6bf9c06c2152 06-Apr-2008 Chris Lattner <sabre@nondot.org> fix a number of const qualification bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Expr.h
ST/Stmt.h
nalysis/Support/ExprDeclBitVector.h
e0def7589a8afa8a6acef13476bb3f882c104b91 06-Apr-2008 Chris Lattner <sabre@nondot.org> fix a number of const qualification bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Expr.h
ST/Stmt.h
nalysis/Support/ExprDeclBitVector.h
6ab935ba6195062045a0921cd519d520a9216b50 05-Apr-2008 Chris Lattner <sabre@nondot.org> Fix handling of implicit int, resolving PR2012 and reverting (and
subsuming) my patch for PR1999.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/LangOptions.h
arse/DeclSpec.h
d658b562e80d6ef7a1118e34ff12802c6e2fcced 05-Apr-2008 Chris Lattner <sabre@nondot.org> Fix handling of implicit int, resolving PR2012 and reverting (and
subsuming) my patch for PR1999.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/LangOptions.h
arse/DeclSpec.h
a15e9d26cdd4ec49fc44946a6f18040668ae773c 05-Apr-2008 Chris Lattner <sabre@nondot.org> Step #1 to fixing PR2012: c89 allows declspecs to be completely
missing from function definitions only. If we see a function
definiton with missing declspecs, just fudge in an int.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
a798ebc82627ea9cb7a00da07d2b60f9f2114f69 05-Apr-2008 Chris Lattner <sabre@nondot.org> Step #1 to fixing PR2012: c89 allows declspecs to be completely
missing from function definitions only. If we see a function
definiton with missing declspecs, just fudge in an int.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49250 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
328bdf212a0515875a0064832a02c9565be55280 04-Apr-2008 Steve Naroff <snaroff@apple.com> Rename ScopedDecl::getContext() -> getContextDecl(). Two motivations:

#1: To be consistent with FieldDecl::getContextDecl(), which serves the same purpose.
#2: From my perspective, getContext() is too general (and used by several other classes for different purposes).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b6e64c57e45e52a46b63acc10d7f468cf1339746 04-Apr-2008 Steve Naroff <snaroff@apple.com> Rename ScopedDecl::getContext() -> getContextDecl(). Two motivations:

#1: To be consistent with FieldDecl::getContextDecl(), which serves the same purpose.
#2: From my perspective, getContext() is too general (and used by several other classes for different purposes).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3277df47de6b65b55721726dc3f7b294e70ef6fe 04-Apr-2008 Chris Lattner <sabre@nondot.org> add an isAnyComplexType() method, which returns true for both
integer and FP complexes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f23d364084d1aabea688222780d6fc1dd8c7f78c 04-Apr-2008 Chris Lattner <sabre@nondot.org> add an isAnyComplexType() method, which returns true for both
integer and FP complexes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49219 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9104f3c7cd14b86540031cb3699b159f874d7c68 04-Apr-2008 Steve Naroff <snaroff@apple.com> Add explicit support for diagnosing implicit function decls.
Without this, the diagnostic is very confusing. The diag is now consistent with gcc as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
e2ef815de1da36c1ad1494cb58ce37adac1efa26 04-Apr-2008 Steve Naroff <snaroff@apple.com> Add explicit support for diagnosing implicit function decls.
Without this, the diagnostic is very confusing. The diag is now consistent with gcc as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
eee57c013158e34b6a472d9d07b73ba271523eff 04-Apr-2008 Chris Lattner <sabre@nondot.org> Introduce ContextDecl, patch by Argiris Kirtzidis!

-Added ContextDecl (no TranslationUnitDecl)
-ScopedDecl class has a ContextDecl member
-FieldDecl class has a ContextDecl member, so that a Field or a ObjCIvar can be traced back to their RecordDecl/ObjCInterfaceDecl easily
-FunctionDecl, ObjCMethodDecl, TagDecl, ObjCInterfaceDecl inherit from ContextDecl. With TagDecl as ContextDecl, enum constants have a EnumDecl as their context.
-Moved Decl class to a "DeclBase.h" along with ContextDecl class
-CurContext is handled by Sema




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49208 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
0ed844b04ea4387caa4e1cf3dc375d269657536b 04-Apr-2008 Chris Lattner <sabre@nondot.org> Introduce ContextDecl, patch by Argiris Kirtzidis!

-Added ContextDecl (no TranslationUnitDecl)
-ScopedDecl class has a ContextDecl member
-FieldDecl class has a ContextDecl member, so that a Field or a ObjCIvar can be traced back to their RecordDecl/ObjCInterfaceDecl easily
-FunctionDecl, ObjCMethodDecl, TagDecl, ObjCInterfaceDecl inherit from ContextDecl. With TagDecl as ContextDecl, enum constants have a EnumDecl as their context.
-Moved Decl class to a "DeclBase.h" along with ContextDecl class
-CurContext is handled by Sema




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49208 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclBase.h
ST/DeclObjC.h
175f1c52bf3686bca6471af351db77b795161e46 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Make typedefs public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49185 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b22d589e2ccd09cada0bcea136f0966883a8bb11 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Make typedefs public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49185 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f00daf04022f980526dbfe98aad03fc95431449d 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Hooked up GRSimpleAPICheck and the simple Objective-C Foundation checks to use
the new BugReporter interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49180 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRSimpleAPICheck.h
f1ae705460552655fe7275327804444c62e86bae 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Hooked up GRSimpleAPICheck and the simple Objective-C Foundation checks to use
the new BugReporter interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49180 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
nalysis/PathSensitive/GRSimpleAPICheck.h
61912d28a2bacd9e3a91e1d79ffedec216dc9fcb 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Mark nodes as sinks that GRAuditor says should be marked as sinks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49179 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
84867e60a466fa1199eb4e838ddf873a2f7658a9 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Mark nodes as sinks that GRAuditor says should be marked as sinks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49179 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
54042a51eb806d310df0fc48433ca6013e345fbc 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "getLogicalLineNumber" and "getLogicalColumnNumber" to FullSourceLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
1758b07ef7c554b06c48a43df2edaba85e918031 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "getLogicalLineNumber" and "getLogicalColumnNumber" to FullSourceLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49177 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
8c2044b2e9712b046df2c723529c81794a8feee1 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "isFileID()" to FullSourceLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ec5d81b73fc8b7bceaf7a8ad3c7a1ffd6dca78b8 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "isFileID()" to FullSourceLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
49492515b23e3b5f0f1319c87bd84fb6d57847ec 03-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Created a destructor so that the top-level decls can be deleted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
71de20ef8bf50e83f60d4b191cc6797cf27853d3 03-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Created a destructor so that the top-level decls can be deleted.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49142 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
74af9e99f71c492653da4d9d4351f8998c20e456 03-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Temporarily make the Decl virtual destructor public, so that calls to "delete"
can be tested on derived classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7dd1cf4031a2a06be3e3c15353ff34d5ee6e8754 03-Apr-2008 Sam Bishop <sam@bishop.dhs.org> Temporarily make the Decl virtual destructor public, so that calls to "delete"
can be tested on derived classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49141 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9f3f0fd04f34c513383f43eda01964eeb9580cc9 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added node_iterator to ExplodedGraph to allow iteration over all nodes in
the graph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49132 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
7ebde953bb050caa69f791fc1de449d435c6a36f 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added node_iterator to ExplodedGraph to allow iteration over all nodes in
the graph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49132 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
7d88220bbef0fba1ed51dd716b319f6f31fcd61e 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Created new path-sensitive bug-reporting scheme based on the classes
"BugReporter" and "BugDescription". BugDescription is used to describe
a bug and provide pieces of the PathDiagnostic, and BugReporter creates
the actual PathDiagnostic by crawling through the ExplodedGraph.

Migrated checks done by GRSimpleVals to be reported using the new BugReporter
mechanism.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49127 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
61f3e058056ab519d249aa67e3d52b0ead57c63e 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Created new path-sensitive bug-reporting scheme based on the classes
"BugReporter" and "BugDescription". BugDescription is used to describe
a bug and provide pieces of the PathDiagnostic, and BugReporter creates
the actual PathDiagnostic by crawling through the ExplodedGraph.

Migrated checks done by GRSimpleVals to be reported using the new BugReporter
mechanism.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49127 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BugReporter.h
e5bcec0a4f1060d99242601707d69a1487703bd3 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added missing #ifndef...#define...#endif directives to protect against
double includes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49126 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
d065d6080f0620bb80b933f3f5d52d37bb2ea770 03-Apr-2008 Ted Kremenek <kremenek@apple.com> Added missing #ifndef...#define...#endif directives to protect against
double includes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49126 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c7065b3440fd8a00da7e3c03f3b964a7c2039097 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix initialization bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49115 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
3352fbab86aa669453c9d39cb1581dd229d20af3 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix initialization bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49115 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
1e748a1da57932a54a673e0046b1f5696971b9a3 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "back()" method to PathDiagnostic to access the last piece in a path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49112 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
725779aa8f786fc844c6db89f52de47a8b24d229 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "back()" method to PathDiagnostic to access the last piece in a path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49112 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
152081673111bafc852c4f90b45e9930cbbc84ed 02-Apr-2008 Steve Naroff <snaroff@apple.com> Change ObjCInterfaceDecl to inherit from NamedDecl (not TypeDecl). While ObjCInterfaceDecl is arguably a TypeDecl, it isn't a ScopedDecl. Since TypeDecl's are scoped, it makes sense to simply treat them as NamedDecl's. I could have fiddled a bit more with the hierarchy (in terms of creating a non-scoped TypeDecl), however this probably isn't worth the effort.

I also finished unifying access to scope decl change by converting Sema::getObjCInterfaceDecl() to use Sema::LookupDecl(). This is much cleaner now:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49107 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
3110251f13981689f384eb3c0aba2afffea18d9d 02-Apr-2008 Steve Naroff <snaroff@apple.com> Change ObjCInterfaceDecl to inherit from NamedDecl (not TypeDecl). While ObjCInterfaceDecl is arguably a TypeDecl, it isn't a ScopedDecl. Since TypeDecl's are scoped, it makes sense to simply treat them as NamedDecl's. I could have fiddled a bit more with the hierarchy (in terms of creating a non-scoped TypeDecl), however this probably isn't worth the effort.

I also finished unifying access to scope decl change by converting Sema::getObjCInterfaceDecl() to use Sema::LookupDecl(). This is much cleaner now:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49107 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
cfac88de7de7d970a2436af939ea87c0e5a9cf9f 02-Apr-2008 Chris Lattner <sabre@nondot.org> add a common base class "PointerLikeType" for PointerType and ReferenceType,
allowing them to be treated the same in some contexts. A suggestion for a
better name is welcome :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49100 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
bdcd637c29ec1540f912ea6860c88b910e78c329 02-Apr-2008 Chris Lattner <sabre@nondot.org> add a common base class "PointerLikeType" for PointerType and ReferenceType,
allowing them to be treated the same in some contexts. A suggestion for a
better name is welcome :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49100 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
67241b4149e7b96287568e89ef2dc550a8bd68b5 02-Apr-2008 Chris Lattner <sabre@nondot.org> improve error to be something end users will actually understand :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49097 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
26b7661b1db92ed611f5c02d61e40e4071aa2058 02-Apr-2008 Chris Lattner <sabre@nondot.org> improve error to be something end users will actually understand :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49097 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6384a01cde21198c8f6d24d3bd26a3eec18601c2 02-Apr-2008 Steve Naroff <snaroff@apple.com> Two changes to Sema::LookupDecl() interface.
(1) Remove IdLoc (it's never used).
(2) Add a bool to enable/disable lazy builtin creaation (defaults to true).

This enables us to use LookupDecl() in Sema::isTypeName(), which is also part of this commit.

To make this work, I changed isTypeName() to be a non-const member function. I'm not happy with this, however I fiddled with making LookupDecl() and friends const and it got ugly pretty quickly. We can certainly add it back if/when someone has time to fiddle with it. For now, I thought this simplification was more important than retaining the const-ness.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49087 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b327ce02959d4e6224732e1c362e7f8e0688581f 02-Apr-2008 Steve Naroff <snaroff@apple.com> Two changes to Sema::LookupDecl() interface.
(1) Remove IdLoc (it's never used).
(2) Add a bool to enable/disable lazy builtin creaation (defaults to true).

This enables us to use LookupDecl() in Sema::isTypeName(), which is also part of this commit.

To make this work, I changed isTypeName() to be a non-const member function. I'm not happy with this, however I fiddled with making LookupDecl() and friends const and it got ugly pretty quickly. We can certainly add it back if/when someone has time to fiddle with it. For now, I thought this simplification was more important than retaining the const-ness.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49087 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d42de4d59c7d9361de3a5ba53435a0bb1b973eb8 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "description" field to PathDiagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49083 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
845ddbcd7f0eacbf59ea85e5dcccbe18eaae35eb 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Added "description" field to PathDiagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49083 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
9db553e9ffdcd7c9fbd2fa6cf70646370e589159 02-Apr-2008 Chris Lattner <sabre@nondot.org> Various parts of the standard require something to be an "incomplete or
object type". Add a predicate that checks exactly this, as it is equivalent
to checking ot see if the type is *not* a function type, which is faster
to check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d805bec0fbb98aa10abbb41bfdcb2e2fab1bac96 02-Apr-2008 Chris Lattner <sabre@nondot.org> Various parts of the standard require something to be an "incomplete or
object type". Add a predicate that checks exactly this, as it is equivalent
to checking ot see if the type is *not* a function type, which is faster
to check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5fcb38b4b0da5bbb7d49f98325dba73a7a5e3dc1 02-Apr-2008 Chris Lattner <sabre@nondot.org> 1) Enforce C99 6.7.3p2: "Types other than pointer types derived from
object or incomplete types shall not be restrict-qualified."

2) Warn about qualifiers on function types: C99 6.7.3p8: "If the
specification of a function type includes any type qualifiers, the
behavior is undefined."

3) Implement restrict on C++ references.

4) fix some locations for various C++ reference diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
96b77fc05ed4a052a9e614f72b0e83572408ce48 02-Apr-2008 Chris Lattner <sabre@nondot.org> 1) Enforce C99 6.7.3p2: "Types other than pointer types derived from
object or incomplete types shall not be restrict-qualified."

2) Warn about qualifiers on function types: C99 6.7.3p8: "If the
specification of a function type includes any type qualifiers, the
behavior is undefined."

3) Implement restrict on C++ references.

4) fix some locations for various C++ reference diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49081 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
19eb97ea0abbfde182bf4cd3120261ec224c20a9 02-Apr-2008 Chris Lattner <sabre@nondot.org> Fix several bugs in array -> pointer decomposition.

First, we got several CVR propagation cases wrong, which Eli pointed
out in PR2039.

Second, we didn't propagate address space qualifiers correctly, leading
to incorrect lowering of code in CodeGen/address-space.c.

Third, we didn't uniformly propagate the specifier in the array to the
pointer ("int[restrict 4]" -> "int *restrict").

This adds an ASTContext::getArrayDecayedType member that handles the
non-trivial logic for this seemingly simple operation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e6327747b72bb687c948270f702ff53c30f411a6 02-Apr-2008 Chris Lattner <sabre@nondot.org> Fix several bugs in array -> pointer decomposition.

First, we got several CVR propagation cases wrong, which Eli pointed
out in PR2039.

Second, we didn't propagate address space qualifiers correctly, leading
to incorrect lowering of code in CodeGen/address-space.c.

Third, we didn't uniformly propagate the specifier in the array to the
pointer ("int[restrict 4]" -> "int *restrict").

This adds an ASTContext::getArrayDecayedType member that handles the
non-trivial logic for this seemingly simple operation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49078 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
642d5316a4984d7003ae65f1940b30db4a2b7bef 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix copy-paste error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49076 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
0e8a3c743b9b3e3039e329a1736122d3b5b5fed9 02-Apr-2008 Ted Kremenek <kremenek@apple.com> Fix copy-paste error.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49076 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
e57c21a9247ac0755b4464c522c8d9f1db39bb1f 02-Apr-2008 Steve Naroff <snaroff@apple.com> Fairly large "cleaup" related to changing ObjCCompatibleAliasDecl superclass (to inherit from NamedDecl, instead of ScopedDecl).

- Added a DenseMap to associate an IdentifierInfo with the ObjCCompatibleAliasDecl.
- Renamed LookupScopedDecl->LookupDecl and changed it's return type to Decl. Also added lookup for ObjCCompatibleAliasDecl's.
- Removed Sema::LookupInterfaceDecl(). Converted clients to used LookupDecl().
- Some minor indentation changes.

Will deal with ObjCInterfaceDecl and getObjCInterfaceDecl() in a separate commit...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49058 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/DiagnosticKinds.def
e8043c39176e7f253fbd92982b077eca6bf2fd59 02-Apr-2008 Steve Naroff <snaroff@apple.com> Fairly large "cleaup" related to changing ObjCCompatibleAliasDecl superclass (to inherit from NamedDecl, instead of ScopedDecl).

- Added a DenseMap to associate an IdentifierInfo with the ObjCCompatibleAliasDecl.
- Renamed LookupScopedDecl->LookupDecl and changed it's return type to Decl. Also added lookup for ObjCCompatibleAliasDecl's.
- Removed Sema::LookupInterfaceDecl(). Converted clients to used LookupDecl().
- Some minor indentation changes.

Will deal with ObjCInterfaceDecl and getObjCInterfaceDecl() in a separate commit...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49058 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/DiagnosticKinds.def
8666d841f8ac32518ab78a9bffc9d2807f8e30b4 01-Apr-2008 Chris Lattner <sabre@nondot.org> improve comma consistency, yes I'm anal


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ade9bf0fabca700bc2a1dadb071179d03515e3cb 01-Apr-2008 Chris Lattner <sabre@nondot.org> improve comma consistency, yes I'm anal


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
dd0126baa1b3d162f9bd786c93e3bde0f15d5432 31-Mar-2008 Ted Kremenek <kremenek@apple.com> Inlined clang/Analysis/Analyses/GRSimpleVals.h into LocalCheckers.h and removed
GRSimpleVals.h

Added a PathDiagnosticClient option to the driver functions for the
CFRefCountChecker and the GRSimpleVals analysis. Both analyses now accept a "-o"
argument from the driver that specifies where HTML reports should be dumped.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48989 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/LocalCheckers.h
4dc41cc8de3a915d8dfb3b02d91304a3975aa3ca 31-Mar-2008 Ted Kremenek <kremenek@apple.com> Inlined clang/Analysis/Analyses/GRSimpleVals.h into LocalCheckers.h and removed
GRSimpleVals.h

Added a PathDiagnosticClient option to the driver functions for the
CFRefCountChecker and the GRSimpleVals analysis. Both analyses now accept a "-o"
argument from the driver that specifies where HTML reports should be dumped.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48989 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/LocalCheckers.h
7877f2b742d4debac40f73be39d6d4b0f35b8a9e 31-Mar-2008 Ted Kremenek <kremenek@apple.com> Added variation of the "Report" method in the class Diagnostic that takes
an optional DiagnosticClient argument that differs from the client stored
internally in the Diagnostic object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
615f5177095e62b36bf88f1b1b7b644295e4097b 31-Mar-2008 Ted Kremenek <kremenek@apple.com> Added variation of the "Report" method in the class Diagnostic that takes
an optional DiagnosticClient argument that differs from the client stored
internally in the Diagnostic object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48986 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
108048c2ecc925c541a8ff5eac0dc26ac60450b1 31-Mar-2008 Ted Kremenek <kremenek@apple.com> Added path-sensitive check for return statements that return the address
of a stack variable. This is the path-sensitive version of a check that
is already done during semantic analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48980 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
02737ed29d7fff2206f7c7ee958cdf0665e35542 31-Mar-2008 Ted Kremenek <kremenek@apple.com> Added path-sensitive check for return statements that return the address
of a stack variable. This is the path-sensitive version of a check that
is already done during semantic analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48980 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c72d22d716c178a40b37a40bfc2e1b046c15e541 31-Mar-2008 Chris Lattner <sabre@nondot.org> rename Decl::CompatibleAlias -> ObjCCompatibleAlias.

Fix objc ivar lookup. Ivar lookup should occur between lookup
of method-local values and lookup of globals. Emulate this with
some logic in the handling of Sema::ActOnIdentifierExpr.

Two todo's left:
1) sema shouldn't turn a bare reference to an ivar into "self->ivar"
in the AST. This is a hack.
2) The new ScopedDecl::isDefinedOutsideFunctionOrMethod method does
not correctly handle typedefs and enum constants yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
8a934233d1582b5bde9d270bc0705aa81e471a79 31-Mar-2008 Chris Lattner <sabre@nondot.org> rename Decl::CompatibleAlias -> ObjCCompatibleAlias.

Fix objc ivar lookup. Ivar lookup should occur between lookup
of method-local values and lookup of globals. Emulate this with
some logic in the handling of Sema::ActOnIdentifierExpr.

Two todo's left:
1) sema shouldn't turn a bare reference to an ivar into "self->ivar"
in the AST. This is a hack.
2) The new ScopedDecl::isDefinedOutsideFunctionOrMethod method does
not correctly handle typedefs and enum constants yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
9fcf5b6d3601e65814957739b92273c9ef51cac0 28-Mar-2008 Steve Naroff <snaroff@apple.com> Make sure Sema::ActOnClassMessage() correctly diagnoses "super".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48924 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
95110968dcd6ba2baef2a23549cd5592f01eca59 28-Mar-2008 Steve Naroff <snaroff@apple.com> Make sure Sema::ActOnClassMessage() correctly diagnoses "super".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48924 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
583c438e04a6b7fd66df5736bb18c7f385e6577d 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Hooked up initial NSString interface checking to GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48895 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
e5d5c204c761cc3b2a6374a15b035420f207c7af 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Hooked up initial NSString interface checking to GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48895 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
d9ee999a74702227f2c61c164cdbca54f98b9f70 27-Mar-2008 Ted Kremenek <kremenek@apple.com> ProgramPoint is just a smart pointer; no reason to return a constant reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48891 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
0f9063c116b7c3b05d8042b5976463c2dae04861 27-Mar-2008 Ted Kremenek <kremenek@apple.com> ProgramPoint is just a smart pointer; no reason to return a constant reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48891 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
139e47dc74dde8792557689f81c88f77a3d763fe 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Add default ctor implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48885 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
5c6422f36c5280046bbbcb54ff797639458a64ff 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Add default ctor implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48885 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
57ba65c26016702384aaa7a993af77c597b92344 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Add html::EscapeText for std::string; use this function to escape text in message bubbles.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48884 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
053ef593fa9d2b890645a914eee203231fb34458 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Add html::EscapeText for std::string; use this function to escape text in message bubbles.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48884 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
b0a2e47e145741d2e668a406947775c0002e59c4 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "GRAuditor" and "GRSimpleAPICheck" interface to allow simple stateless checkers to be injected into the analyzer.
Added "AnnotatedPath" class to record an annotated path that will be useful for inspecting paths.
Added some boilerplate code for simple checks of Apple's Foundation API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48867 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
99c6ad3f22b865d0f4cce52bc36904403c9ed4c4 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "GRAuditor" and "GRSimpleAPICheck" interface to allow simple stateless checkers to be injected into the analyzer.
Added "AnnotatedPath" class to record an annotated path that will be useful for inspecting paths.
Added some boilerplate code for simple checks of Apple's Foundation API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48867 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnnotatedPath.h
nalysis/PathSensitive/GRAuditor.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRSimpleAPICheck.h
aa3e537ffa168f9ec5bf6034062620d07639ff4e 27-Mar-2008 Ted Kremenek <kremenek@apple.com> PathDiagnosticPiece no longer contains a vector of strings; just one string.
PathDiagnostic no longer contains a diagnostic ID or diagnostic level.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48864 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
120187de4be187a6b0f903c05175bfa05af8002f 27-Mar-2008 Ted Kremenek <kremenek@apple.com> PathDiagnosticPiece no longer contains a vector of strings; just one string.
PathDiagnostic no longer contains a diagnostic ID or diagnostic level.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48864 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
14f145794006e3500a9e33d38f6c55cd607d5fd8 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Added classes "PathDiagnosticPiece", "PathDiagnostic", and "PathDiagnosticClient", which encapsulate diagnostic reporting for paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48861 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
d3abcdfa30e476571e214d5d74fb12ac43d153ba 27-Mar-2008 Ted Kremenek <kremenek@apple.com> Added classes "PathDiagnosticPiece", "PathDiagnostic", and "PathDiagnosticClient", which encapsulate diagnostic reporting for paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48861 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathDiagnostic.h
5648a71297e17c05c0f986d18f27584990e38926 27-Mar-2008 Ted Kremenek <kremenek@apple.com> In ObjCMessageExpr: getSelector() const should just return "Selector", not "const Selector&" because Selector is just a smart pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c74840329eeee429d9527cf2f3694a74accd1603 27-Mar-2008 Ted Kremenek <kremenek@apple.com> In ObjCMessageExpr: getSelector() const should just return "Selector", not "const Selector&" because Selector is just a smart pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
efc11216a5755f69b5540289aa2dd374d4bc82ab 25-Mar-2008 Nate Begeman <natebegeman@mac.com> Extend QualType::getAddressSpace to do the right thing for array types, and in
the future, RecordTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8e7dafec4b70303dfaff95151cd06bfc5532720c 25-Mar-2008 Nate Begeman <natebegeman@mac.com> Extend QualType::getAddressSpace to do the right thing for array types, and in
the future, RecordTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48784 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d58da2b500dce6a238f3b80b89acbc3a402ce77d 25-Mar-2008 Ted Kremenek <kremenek@apple.com> GRSimple analysis now outputs additional diagnostic warnings about
passing an uninitialized value to a message expresion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48776 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
dbfe41acda3078f8fe566318c0097f7ae683c6bb 25-Mar-2008 Ted Kremenek <kremenek@apple.com> GRSimple analysis now outputs additional diagnostic warnings about
passing an uninitialized value to a message expresion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48776 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
71507477206267b1bc2c374319132bda88a6aba2 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Tweak to transfer function for ObjCMessageExpr: handle both instance methods
and message expressions with a specified receiver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48773 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b9308372e0d40c85cb573c4982fdf5089d89ab6d 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Tweak to transfer function for ObjCMessageExpr: handle both instance methods
and message expressions with a specified receiver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48773 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
4b2bdd5e50df02ffdfd026bca7b0ea03af4e0c49 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Added logic to check for uninitialized values as the receivers for message expressions
and uninitialized values passed-by-value as arguments to message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48760 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
23a4f917cd8d1090be7c96c4eda8643086f64d36 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Added logic to check for uninitialized values as the receivers for message expressions
and uninitialized values passed-by-value as arguments to message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48760 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c6b7a1eb20269eb56d7b57efd86b9fe15d4bec53 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Added initial transfer function support for ObjCMessageExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48757 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
55deb97341819080d6d127d29e25b9502e4f2e3c 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Added initial transfer function support for ObjCMessageExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48757 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
0cdce4dabe2953f76a00e46c084acad98588139c 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "arg_iterators" to ObjCMessageExpr (for iterating over the arguments of a message expression)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3fb94d87b937a89400d1195479702b6f6bb9a59e 25-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "arg_iterators" to ObjCMessageExpr (for iterating over the arguments of a message expression)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
f10f288d7ef2d2603a1d2f438e539eb7f6cdb4fa 21-Mar-2008 Ted Kremenek <kremenek@apple.com> Rename "Nodify" to "MakeNode"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48659 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
0e561a3e6755c4f248a8bb05d49071ddf4f2ef7b 21-Mar-2008 Ted Kremenek <kremenek@apple.com> Rename "Nodify" to "MakeNode"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48659 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
9b9f2b931535a518579c9c34a26bd1c1ffd3d825 20-Mar-2008 Ted Kremenek <kremenek@apple.com> LiveVariables analysis now uses intersect for the merge of block-level expression liveness information.
The rationale is that a block-level expression cannot be live in a parent block unless it is live in all of the successor blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48618 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
fa59f1f053235e9adf32425f2b6049185771246d 20-Mar-2008 Ted Kremenek <kremenek@apple.com> LiveVariables analysis now uses intersect for the merge of block-level expression liveness information.
The rationale is that a block-level expression cannot be live in a parent block unless it is live in all of the successor blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48618 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/ExprDeclBitVector.h
570721970dc760b43ebacd2a88907868f201e46c 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Minor speed tweak per Chris's suggestion: use &S[0] instead of S.c_str().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48544 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
1ab09f52be88641b7b780d0bcc29aae889313098 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Minor speed tweak per Chris's suggestion: use &S[0] instead of S.c_str().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48544 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
32ffc566bb974f03b0f3bb16cae70c2ec1f68e3d 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Integrated some of Chris's comments; check for an empty string in InsertStrXXX()
before descending into the bowels of the Rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48541 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
4cefe486dcebde4945e6e02dd0a261d9188b3235 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Integrated some of Chris's comments; check for an empty string in InsertStrXXX()
before descending into the bowels of the Rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48541 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
0735c172b31ee6487d5619ef9bcb7d76fe1e4da5 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Moved generation of html header/footer with builtin CSS to the rewriter library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48537 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
ad0a203130dc5d1fb7231b88767174511424fa98 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Moved generation of html header/footer with builtin CSS to the rewriter library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48537 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
df93c28af2683194521b922b405306be424883ec 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Added InsertStrXXX/InsertCStrXXX methods to the Rewriter to provide a simpler
interface to the rewriter when clients have NULL terminated strings or std::string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48532 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
329f0f5df1a4b45740312a53b8d01e32a76c91a5 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Added InsertStrXXX/InsertCStrXXX methods to the Rewriter to provide a simpler
interface to the rewriter when clients have NULL terminated strings or std::string.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48532 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
90588af39e278f5594c23d9aaeb33aae5a266711 19-Mar-2008 Ted Kremenek <kremenek@apple.com> More cleanups to HTML rewriter API: remove the InsertTag method; was too complicated
and clients can achieve a cleaner design just by inserting tags directly. Reserve
the "html" namespace for meta-level operations (e.g., escaping text, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48524 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
f830997de6ca8aa9526a9f4bb44593c19040ca85 19-Mar-2008 Ted Kremenek <kremenek@apple.com> More cleanups to HTML rewriter API: remove the InsertTag method; was too complicated
and clients can achieve a cleaner design just by inserting tags directly. Reserve
the "html" namespace for meta-level operations (e.g., escaping text, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48524 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
a38818486f49634709a4e304394db2b3188507f8 19-Mar-2008 Ted Kremenek <kremenek@apple.com> More HTML rewriter cleanups. Preliminary CSS support in code pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48518 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
1b3188cfc2bfaeb14d40c43c1df62097b79016d1 19-Mar-2008 Ted Kremenek <kremenek@apple.com> More HTML rewriter cleanups. Preliminary CSS support in code pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48518 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
f08ee32d1ab4939513c19f9ed299a659b4445eda 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Some cleanups to the HTMLRewrite API. Added support for printing out line
numbers (more work to be done on aesthetics).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48512 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
b485cd1e0a5a1e942d0e682b9b1c4bc9df111528 19-Mar-2008 Ted Kremenek <kremenek@apple.com> Some cleanups to the HTMLRewrite API. Added support for printing out line
numbers (more work to be done on aesthetics).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48512 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
a8c90ddd861833ea9cc165228c41f089e47588de 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Modified "InsertTag" (HTML rewriter) to have an optional "OutermostTag" flag to
indicate whether or not the new tag should be the outermost tag at the specified
location (in the case that other tags have been inserted at the same spot).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48506 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
c22efea6f999e98733f3431db03b10ce619faa8b 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Modified "InsertTag" (HTML rewriter) to have an optional "OutermostTag" flag to
indicate whether or not the new tag should be the outermost tag at the specified
location (in the case that other tags have been inserted at the same spot).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48506 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
24612aedb28c37adf0cc1cb004c3b60607fcc538 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Added the beginning of a set of rewriter functions for pretty-printing source
code as HTML. Added a new driver option "--emit-html" to dump the source
of the main input file as HTML.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48505 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
6a34083e9f74a45e2f79c9fab66f177809a5db66 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Added the beginning of a set of rewriter functions for pretty-printing source
code as HTML. Added a new driver option "--emit-html" to dump the source
of the main input file as HTML.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48505 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/HTMLRewrite.h
8d0368c83606c9b7a6900b9ff8a708eee30ead07 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Added variant of "InsertText" in the Rewriter to support inserting text both
*before* and after a specific location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48504 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
886c8db545170850f7806f47b5f6120864effd09 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Added variant of "InsertText" in the Rewriter to support inserting text both
*before* and after a specific location.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48504 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
c710e5dce9733e2ca11f77e2f453920043716455 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48501 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
9f68fa52543e04736cf6f40d82f3d6d49a3a0989 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48501 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
61045079f7f8f380ef6ae34f56da4e80448c5ed4 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Added method "getSourceMgr" to class Rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48496 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
4c535ace52492cf2b5fdf97752e76ed2991f3ef4 18-Mar-2008 Ted Kremenek <kremenek@apple.com> Added method "getSourceMgr" to class Rewriter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48496 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
e439fe0cb471da19ddb807acdf355baa816ea145 18-Mar-2008 Nate Begeman <natebegeman@mac.com> Fix a typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6a1bc1b95ee31c6892d46a6993b9e2d2d66831ee 18-Mar-2008 Nate Begeman <natebegeman@mac.com> Fix a typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
31803c37d86172e7ae2a2242c83d7850a34d4bc2 17-Mar-2008 Ted Kremenek <kremenek@apple.com> Added initial transfer function support for inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48466 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
ef44bfb9d0f15ba0391f8346c9f01355fb450a09 17-Mar-2008 Ted Kremenek <kremenek@apple.com> Added initial transfer function support for inline asm.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48466 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8f9b504219b6c810318a8335626fa656058610d1 17-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "inputs" and "outputs" iterator (expression) for AsmStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ec2f7dccb1f30ae137f74e764e44c2332b0a2ec0 17-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "inputs" and "outputs" iterator (expression) for AsmStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
29ed685364c1f93720d3fc08037d93b18b7074e2 17-Mar-2008 Chris Lattner <sabre@nondot.org> eliminate the last signed element count.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b5feb35360526da42ad7e3fa7ef3d44a5992b83c 17-Mar-2008 Chris Lattner <sabre@nondot.org> eliminate the last signed element count.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
526bf9163cb103c06fbd1e77429baf22384d68b5 17-Mar-2008 Chris Lattner <sabre@nondot.org> clean up iteration over propertydecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a5674258f5e6f74f1c0ed3ece4d64fbb1b9afb11 17-Mar-2008 Chris Lattner <sabre@nondot.org> clean up iteration over propertydecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
44859618fbb881db1728da0bb6e82553f579d2ec 17-Mar-2008 Chris Lattner <sabre@nondot.org> clean up property memory allocation to move it into the ast classes
like the rest of the classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f4af5154571e0c5eadb19df10e65464766ef6683 17-Mar-2008 Chris Lattner <sabre@nondot.org> clean up property memory allocation to move it into the ast classes
like the rest of the classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48434 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cffe36686142e06ce67fd4f0469ecc58e1286bdf 16-Mar-2008 Chris Lattner <sabre@nondot.org> make property addition work list all other "add" methods. Do
the allocation in the class, not in sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
55d13b4d5530a14d5baa72adab32ae78ba256caf 16-Mar-2008 Chris Lattner <sabre@nondot.org> make property addition work list all other "add" methods. Do
the allocation in the class, not in sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2d1c43110a0f4ba4b9b6de2364959a238baf1c12 16-Mar-2008 Chris Lattner <sabre@nondot.org> add the last two Create methods for decls, woo!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f8d17a59167d9c2026506ed8813ea434d93b662a 16-Mar-2008 Chris Lattner <sabre@nondot.org> add the last two Create methods for decls, woo!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ec4979bdcb038c005fdcc1bd9d3ecc56d10ff1c2 16-Mar-2008 Chris Lattner <sabre@nondot.org> Convert more counts to be zero based instead of -1 based, make them unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f3a7af901231535191d14cb524d58f22907ac4d2 16-Mar-2008 Chris Lattner <sabre@nondot.org> Convert more counts to be zero based instead of -1 based, make them unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48429 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1b6de3378e0af075b0254da7ba8c2e80f2753609 16-Mar-2008 Chris Lattner <sabre@nondot.org> add two more Create methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48428 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
75c9cae5f85c72cbb1649e93849e16ede3f07522 16-Mar-2008 Chris Lattner <sabre@nondot.org> add two more Create methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48428 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
321b5d12d1ed2c6b5a2faab712c3e3572c76eef6 16-Mar-2008 Chris Lattner <sabre@nondot.org> simplify the way ObjCCategoryDecl's get their referenced protocols list
specified. Previously, the ctor would allocate memory for the list and then
it would get filled in later. Move the allocation+filling in to be more
consistent with other stuff, e.g. the addMethods method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48427 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
68c82cf61228102aba1194efef222fa1478af2a8 16-Mar-2008 Chris Lattner <sabre@nondot.org> simplify the way ObjCCategoryDecl's get their referenced protocols list
specified. Previously, the ctor would allocate memory for the list and then
it would get filled in later. Move the allocation+filling in to be more
consistent with other stuff, e.g. the addMethods method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48427 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e29dc839e5d2cb44824463a2968a3c04d28245f4 16-Mar-2008 Chris Lattner <sabre@nondot.org> Add create methods for ObjCCategoryDecl, ObjCForwardProtocolDecl, ObjCClassDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
61f9d41036e30ff80130f99b31c0626e3ef057cc 16-Mar-2008 Chris Lattner <sabre@nondot.org> Add create methods for ObjCCategoryDecl, ObjCForwardProtocolDecl, ObjCClassDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48426 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e2e6ab496be9134e80abaf56c76c0de45e65cc26 16-Mar-2008 Chris Lattner <sabre@nondot.org> make some more 'counts' unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
62db2f4214c1589082960f12c9cb8924fe0cf8c5 16-Mar-2008 Chris Lattner <sabre@nondot.org> make some more 'counts' unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48425 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
243ddef001bc8803df3a0a4c62f720e816ac0e75 16-Mar-2008 Chris Lattner <sabre@nondot.org> make NumClassMethods unsigned in categories


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48424 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a906135721c350435319347d2672bbb3bf494f91 16-Mar-2008 Chris Lattner <sabre@nondot.org> make NumClassMethods unsigned in categories


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48424 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7afba9ccb99d94be9dbd0a5d4a1d749e4880b864 16-Mar-2008 Chris Lattner <sabre@nondot.org> minor cleanups, make getNumInstanceMethods always return unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c858105d41602a2dadb2efbc1af80a7b791ebac3 16-Mar-2008 Chris Lattner <sabre@nondot.org> minor cleanups, make getNumInstanceMethods always return unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
180f7e2b7bab938bc797f3ed459826720866655a 16-Mar-2008 Chris Lattner <sabre@nondot.org> Give ObjCProtocolDecl a Create method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
cca59d77c4b84fd2da268018dbaf9431a621e75b 16-Mar-2008 Chris Lattner <sabre@nondot.org> Give ObjCProtocolDecl a Create method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0db541b0fc07aaa800e7f687b2a39a931db8f3b1 16-Mar-2008 Chris Lattner <sabre@nondot.org> Add create methods for ObjCIvarDecl and ObjCInterfaceDecl


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48408 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0e77ba0bf769e2e5a4a93c079f241b02aeb3ef93 16-Mar-2008 Chris Lattner <sabre@nondot.org> Add create methods for ObjCIvarDecl and ObjCInterfaceDecl


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48408 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
685d792c2a41538694068ad014622d81980853c1 16-Mar-2008 Chris Lattner <sabre@nondot.org> Make the parameter count of ObjCMethodDecl unsigned, you
can't have negative arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
58cce3b0dcbdcc95b7e713795834b4cb2c8a008a 16-Mar-2008 Chris Lattner <sabre@nondot.org> Make the parameter count of ObjCMethodDecl unsigned, you
can't have negative arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48407 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f735583ce92b5539bb607bfc57de9e90b1498429 16-Mar-2008 Chris Lattner <sabre@nondot.org> remove some dead arguments to ObjCMethodDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b06fa3b86951b9f179c99c3768331536c32e902d 16-Mar-2008 Chris Lattner <sabre@nondot.org> remove some dead arguments to ObjCMethodDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48406 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
114add6e2b53b3b1953db4fb721db65f3b8dd173 16-Mar-2008 Chris Lattner <sabre@nondot.org> Give ObjCMethodDecl a Create method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48405 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6c4ae5de0c356777446f823b573821fb95560d91 16-Mar-2008 Chris Lattner <sabre@nondot.org> Give ObjCMethodDecl a Create method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48405 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
81db64a7628f64f16a986a8e314d1d792a2259cb 16-Mar-2008 Chris Lattner <sabre@nondot.org> switch the rest of the C decl classes to do their
allocation through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8e25d8681822d8094bfeb97b2239363552548171 16-Mar-2008 Chris Lattner <sabre@nondot.org> switch the rest of the C decl classes to do their
allocation through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48403 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9ea647e7f3d7ccbc62caa84b67211f4b9d29304a 16-Mar-2008 Chris Lattner <sabre@nondot.org> Make a ctor protected


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
fbdeba1c530dc3534a6f5b788e43d1a43c260128 16-Mar-2008 Chris Lattner <sabre@nondot.org> Make a ctor protected


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
58114f09323daa78692ca3d61a6a876d44705533 15-Mar-2008 Chris Lattner <sabre@nondot.org> move the ASTContext argument to be first in the argument list of
all Create methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c63e660882ff93841fa234d70ef6757038302b92 15-Mar-2008 Chris Lattner <sabre@nondot.org> move the ASTContext argument to be first in the argument list of
all Create methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4c7802b2a6c8ce3e65fd16ff97d6e25f821e5d4f 15-Mar-2008 Chris Lattner <sabre@nondot.org> Switch over functiondecl. This makes it obvious that the ASTContext
argument to Create should be first, not last.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a98e58ddb4696a0020fe97439d5295413f9e90b1 15-Mar-2008 Chris Lattner <sabre@nondot.org> Switch over functiondecl. This makes it obvious that the ASTContext
argument to Create should be first, not last.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
48d225c6b3bbcab06c12756cc0ca4c2a21d214ed 15-Mar-2008 Chris Lattner <sabre@nondot.org> switch the VarDecl allocation model to go through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9e151e154780e9cd443336143af1e996d1f387e5 15-Mar-2008 Chris Lattner <sabre@nondot.org> switch the VarDecl allocation model to go through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48396 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e4650488e8b15c43079c783191734d116fc7be3d 15-Mar-2008 Chris Lattner <sabre@nondot.org> start switching decls over to using an allocator controlled by ASTContext.
Right now only some ctors are switched over. I need to switch them all
over so I can change the dtor over.

This lets us experiment with region allocation and other things in the
future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
6c2b6eb8d836da19007f7540709e16d5e39a1cba 15-Mar-2008 Chris Lattner <sabre@nondot.org> start switching decls over to using an allocator controlled by ASTContext.
Right now only some ctors are switched over. I need to switch them all
over so I can change the dtor over.

This lets us experiment with region allocation and other things in the
future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
2f0c0e12f243d35d9e117e46c71afa2b99548b9d 14-Mar-2008 Ted Kremenek <kremenek@apple.com> Emit warnings for undefined control-flow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48368 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1b9df4c307b650526344ba0a28534268f6920745 14-Mar-2008 Ted Kremenek <kremenek@apple.com> Emit warnings for undefined control-flow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48368 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5d257d4912ca9c5cb2c02d6cd579fd0a4478da5a 14-Mar-2008 Ted Kremenek <kremenek@apple.com> Path-sensitive analyses no longer take a FunctionDecl, but any Decl representing
a block of "code".

Patched various ASTConsumers (such as ASTDumper) to have more support for
processing ObjCMethodDecl. CFGVisitor now builds CFGs for ObjCMethodDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48363 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/LocalCheckers.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
63bbe5312cd89ce0ceb684bff68c5baef636e93c 14-Mar-2008 Ted Kremenek <kremenek@apple.com> Path-sensitive analyses no longer take a FunctionDecl, but any Decl representing
a block of "code".

Patched various ASTConsumers (such as ASTDumper) to have more support for
processing ObjCMethodDecl. CFGVisitor now builds CFGs for ObjCMethodDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48363 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/LocalCheckers.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
658298169b32019ea380c779ec31203a6deedefd 14-Mar-2008 Chris Lattner <sabre@nondot.org> Make the preprocessor own its PPCallbacks, fixing a memory leak.
Patch by Sam Bishop!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48357 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
eb50ed88c2aa040fac08bf2a50bde4dd3da6eb19 14-Mar-2008 Chris Lattner <sabre@nondot.org> Make the preprocessor own its PPCallbacks, fixing a memory leak.
Patch by Sam Bishop!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48357 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
0606819b6c45de7773f7d7f4a95ad51faa393b1f 14-Mar-2008 Nate Begeman <natebegeman@mac.com> ISO/IEC TR 18037
An address space name cannot be used to qualify an object that has automatic
storage duration. Still not catching ASQual'd allocas of array type, just
scalars at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5af27e02917089dd107c58c1cfdb064544010773 14-Mar-2008 Nate Begeman <natebegeman@mac.com> ISO/IEC TR 18037
An address space name cannot be used to qualify an object that has automatic
storage duration. Still not catching ASQual'd allocas of array type, just
scalars at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a353fc2d374894ef2c2a41481423159f035c5c37 14-Mar-2008 Nate Begeman <natebegeman@mac.com> Fix comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
2b59a2cbfdb93fcf1a4a303e1ea7753ff1c7b319 14-Mar-2008 Nate Begeman <natebegeman@mac.com> Fix comment


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48347 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f41ac5fd16bc7e2d1de59f4df292c9a7518606e8 13-Mar-2008 Ted Kremenek <kremenek@apple.com> The LiveVariables analysis no longer requires a FunctionDecl&; this allows it
to be run on other declarations of blocks of code (e.g., Objective-C methods.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48339 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/LocalCheckers.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/Support/ExprDeclBitVector.h
7cb15939e08ea31f0fadcd24c974dbc9e4b61c01 13-Mar-2008 Ted Kremenek <kremenek@apple.com> The LiveVariables analysis no longer requires a FunctionDecl&; this allows it
to be run on other declarations of blocks of code (e.g., Objective-C methods.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48339 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/LocalCheckers.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/Support/ExprDeclBitVector.h
a4ff4277d928a0a8dc96e3b1381c37fbaf922e48 13-Mar-2008 Chris Lattner <sabre@nondot.org> improve DeclStmt to be able to store SourceRange info correctly.
Set the start of DeclStmt range. Right now the end is meaningless
though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/DeclSpec.h
81c018d9482e7cc2addadc6202dcf162a01faefd 13-Mar-2008 Chris Lattner <sabre@nondot.org> improve DeclStmt to be able to store SourceRange info correctly.
Set the start of DeclStmt range. Right now the end is meaningless
though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48330 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/DeclSpec.h
d4676513ec14b9a1f5445d528356c0eb7b6e9520 12-Mar-2008 Ted Kremenek <kremenek@apple.com> Changed CallRetValSymbol to SymbolConjured to allow "conjured" symbols to be created for any expression, not just CallExprs.
Added experimental support for conjuring symbols during assingments where the RHS is "unknown". This allows more value tracking for path-sensitivity.
Fixed bug in "assumption" logic when processing symbolic constraints; we would improperly mark constraints we didn't support as infeasible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
361fa8ecd122a5b06c2c59d44419e202f42e1c5d 12-Mar-2008 Ted Kremenek <kremenek@apple.com> Changed CallRetValSymbol to SymbolConjured to allow "conjured" symbols to be created for any expression, not just CallExprs.
Added experimental support for conjuring symbols during assingments where the RHS is "unknown". This allows more value tracking for path-sensitivity.
Fixed bug in "assumption" logic when processing symbolic constraints; we would improperly mark constraints we didn't support as infeasible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
173b3cb823c3f37952845a5c6aaa5908342ec27c 12-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed regression in SymbolManager introduced in r48272.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48273 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
a8b53643b618e2f0b094b8c86ec9650e0625a486 12-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed regression in SymbolManager introduced in r48272.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48273 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
ce3ed1ecf6bc55c453a4957ff604dd7b78050c7d 12-Mar-2008 Ted Kremenek <kremenek@apple.com> Prototype (pre-alpha) implementation of CFRef checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueState.h
00a3a5f024ac54088ab887712b292171188064f0 12-Mar-2008 Ted Kremenek <kremenek@apple.com> Prototype (pre-alpha) implementation of CFRef checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueState.h
9f597924c271fa7a0221dbfe2777fedd411e861b 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Expanded graph-visualization to include optional pretty-printing of checker-specific state.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48238 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
75da3e82722cc6a616eaab28b75f9a6973178c49 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Expanded graph-visualization to include optional pretty-printing of checker-specific state.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48238 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
d36564973d5bbdcae930bba14e0948026a615867 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Expanded ValueState pretty-printing to use an optional "CheckerStatePrinter"
object to pretty-print the component of a state that is specific to a checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48237 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
461f9776f2b3bc307dd4706822ffc7ef43102fd2 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Expanded ValueState pretty-printing to use an optional "CheckerStatePrinter"
object to pretty-print the component of a state that is specific to a checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48237 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
e44a830c69194ae52acf76d9cbb55b6ec61890fc 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Expanded graph visualization interface to include specifying a range of
nodes to use a trim sources.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48236 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
493d7a26d5ea319770ba904b43f2740d43b820cb 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Expanded graph visualization interface to include specifying a range of
nodes to use a trim sources.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48236 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
a7338b47915f32659682dc6a7d1a02ebff0c92f0 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Added main skeleton for CFRetain transfer function logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48214 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
6b3a0f72137570d5fd93a8919abe16cbc9359d31 11-Mar-2008 Ted Kremenek <kremenek@apple.com> Added main skeleton for CFRetain transfer function logic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48214 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
8b8720fb70ebf3f45caac7feea5edcff5b006ad7 10-Mar-2008 Chris Lattner <sabre@nondot.org> Add some missing #includes for GCC mainline, patch by Shantonu Sen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48153 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
87cf5ac1b046a1db874b77dcb6e35f9c4b88c386 10-Mar-2008 Chris Lattner <sabre@nondot.org> Add some missing #includes for GCC mainline, patch by Shantonu Sen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48153 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
1faa41603b2fae19f8f316cc4b3d55f55466f469 10-Mar-2008 Ted Kremenek <kremenek@apple.com> Add transfer function support for pointer arithmetic where the
increment/decrement operand is on the left side.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
3f916501c91d3f6f37b1d43276c440343f9454f6 10-Mar-2008 Ted Kremenek <kremenek@apple.com> Add transfer function support for pointer arithmetic where the
increment/decrement operand is on the left side.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
8071239a066f7aefc23bd1552d022a4e31876988 10-Mar-2008 Chris Lattner <sabre@nondot.org> implement simple support for arbitrary token lookahead. Change the
objc @try parser to use it, fixing a FIXME. Update the
objc-try-catch-1.m file to pass now that we get more reasonable
errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48129 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/TokenLexer.h
arse/Parser.h
6b884508c3bc97cc9df9516adb92fbf88dd0a2e4 10-Mar-2008 Chris Lattner <sabre@nondot.org> implement simple support for arbitrary token lookahead. Change the
objc @try parser to use it, fixing a FIXME. Update the
objc-try-catch-1.m file to pass now that we get more reasonable
errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48129 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ex/TokenLexer.h
arse/Parser.h
a1d070b25c18b75e7e2daa75a35537bac20f7e80 10-Mar-2008 Ted Kremenek <kremenek@apple.com> More edge-case handling with using liveness information to prune dead state values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48127 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
3bbad550be7edc628be31b51d2a51b6d7d46eafb 10-Mar-2008 Ted Kremenek <kremenek@apple.com> More edge-case handling with using liveness information to prune dead state values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48127 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
50ef5ff5be5c1a2d4937d455b0c50ee44470b11b 10-Mar-2008 Ted Kremenek <kremenek@apple.com> More cleanups with using the liveness analysis to removed dead symbols and
variables from the symbolic state. Now we keep a mapping from the predecessor
node of a statement and its cleaned state, and interpose an accessor
"GetState()" to return the cleaned state when the node is the predecessor node,
and the real state otherwise. This obviates problem of ever accidentally
cleaning the state more than once (thus blowing away new bindings by mistake).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48124 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
0d093d3005dd583675a45a85bd688063572cc8af 10-Mar-2008 Ted Kremenek <kremenek@apple.com> More cleanups with using the liveness analysis to removed dead symbols and
variables from the symbolic state. Now we keep a mapping from the predecessor
node of a statement and its cleaned state, and interpose an accessor
"GetState()" to return the cleaned state when the node is the predecessor node,
and the real state otherwise. This obviates problem of ever accidentally
cleaning the state more than once (thus blowing away new bindings by mistake).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48124 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
02331460242a9b3af06683c3e947aa732248bede 09-Mar-2008 Ted Kremenek <kremenek@apple.com> When processing the transfer function for a statement, evaluate
RemoveDeadBindings early because (1) it will always be called and (2) we can
dispatch to a plug-in transfer function that can evaluate the effect of dead
symbols (not yet added).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48114 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
512c913a6f93d225faacdb8e20308f5c4065c3eb 09-Mar-2008 Ted Kremenek <kremenek@apple.com> When processing the transfer function for a statement, evaluate
RemoveDeadBindings early because (1) it will always be called and (2) we can
dispatch to a plug-in transfer function that can evaluate the effect of dead
symbols (not yet added).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48114 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f973eb03e40c007cf49f2d23d5695b3a9b40d41c 09-Mar-2008 Ted Kremenek <kremenek@apple.com> Refactored guards for "GRExprEngine::RemoveDeadBindings" directly into the
method. This paves the way for other alterations to RemoveDeadBindings that are
transparent to its callers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48113 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
daa497e3ae567ba6684226b86e6e1fe900112dab 09-Mar-2008 Ted Kremenek <kremenek@apple.com> Refactored guards for "GRExprEngine::RemoveDeadBindings" directly into the
method. This paves the way for other alterations to RemoveDeadBindings that are
transparent to its callers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48113 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
f97c6682762f5f87e774fdf61a8f3e92bd16327f 09-Mar-2008 Ted Kremenek <kremenek@apple.com> Bug fix: Don't call RemoveDeadBindings more than once (can kill newly generated values to Block-Level Expressions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48079 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
9b5551d7f0209cec8b9c555cf70e893940674e5c 09-Mar-2008 Ted Kremenek <kremenek@apple.com> Bug fix: Don't call RemoveDeadBindings more than once (can kill newly generated values to Block-Level Expressions).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48079 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
325c197aa8a6558f112a4b342e970efcd616cae2 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename HandleEndOfMacro -> HandleEndOfTokenLexer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48076 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
fde2bf9befede63e3f01f84519784c17b4c81480 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename HandleEndOfMacro -> HandleEndOfTokenLexer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48076 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
568ec6b6a0a512853afe2365d558efa1daf29c2e 09-Mar-2008 Chris Lattner <sabre@nondot.org> split the MacroArgs class out of TokenLexer.cpp/h into
MacroArgs.cpp/h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48075 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
e5c8ffe09f8fec836b90f23c2a3b996bfc5b09c4 09-Mar-2008 Chris Lattner <sabre@nondot.org> split the MacroArgs class out of TokenLexer.cpp/h into
MacroArgs.cpp/h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48075 91177308-0d34-0410-b5e6-96231b3b80d8
ex/TokenLexer.h
5b54ed90ea5bd5380d9948b64b3f53b4097d49a1 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename some MacroExpander-related ivars to TokenLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48073 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6cfe7594a46b5d270142cfcb688a9c1a3a487a48 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename some MacroExpander-related ivars to TokenLexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48073 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
5d097bdee7bc10cab9ee431106ac4915a4da42d2 09-Mar-2008 Chris Lattner <sabre@nondot.org> Rename MacroExpander.cpp/h -> TokenLexer.cpp/h



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48072 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
ex/TokenLexer.h
5d75de0f821023f4ed4815825bf3aea8a0b5e40d 09-Mar-2008 Chris Lattner <sabre@nondot.org> Rename MacroExpander.cpp/h -> TokenLexer.cpp/h



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48072 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
ex/TokenLexer.h
7b9ed9c7e7b3d8a8a98ef209b910c9d3cbffecda 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename the MacroExpander class to TokenLexer. It handles both
token streams and macro lexing, so a more generic name is useful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48071 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
1543e9c69202b8e128c7fe34784ae7aa90964889 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename the MacroExpander class to TokenLexer. It handles both
token streams and macro lexing, so a more generic name is useful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48071 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
28c1c9d7c7a991689d2ef793f442749836815ca1 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename MacroTokens -> Tokens. When this is a token stream, there is no macro
involved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48070 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
8d896438031f5990cb42eb95a7bae233db2eb333 09-Mar-2008 Chris Lattner <sabre@nondot.org> rename MacroTokens -> Tokens. When this is a token stream, there is no macro
involved.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48070 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
21f38b0c5b92b72615d349beb8e9bd19f5738604 08-Mar-2008 Chris Lattner <sabre@nondot.org> add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9c4bea1fa7291035325575c02d33552a124d8ef3 08-Mar-2008 Chris Lattner <sabre@nondot.org> add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48053 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3b74cac0ff167dbd3c8a89a7d00830e3339e42c8 08-Mar-2008 Chris Lattner <sabre@nondot.org> make float format handling more regular.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
cd4fc42896f926ffc081e1c4a8bf4cd647883c14 08-Mar-2008 Chris Lattner <sabre@nondot.org> make float format handling more regular.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
fc18dcc08c482a18596f576264d5c72c3d85eb66 08-Mar-2008 Chris Lattner <sabre@nondot.org> simplify all the type info accessors in TargeTInfo to return scalars,
which is simpler to use and provide.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
9e9b6dc3fd413f5341fab54b681420eeb21cd169 08-Mar-2008 Chris Lattner <sabre@nondot.org> simplify all the type info accessors in TargeTInfo to return scalars,
which is simpler to use and provide.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48051 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
461a6c5751ddea5d9d5ed42be229cceecf5bbad7 08-Mar-2008 Chris Lattner <sabre@nondot.org> Fix a fixme by allowing pointers in different address spaces to have
different widths. Start simplifying TargetInfo accessor methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
f72a44330b9d9a4b2d93e9b91cfb8ab7bd4a0643 08-Mar-2008 Chris Lattner <sabre@nondot.org> Fix a fixme by allowing pointers in different address spaces to have
different widths. Start simplifying TargetInfo accessor methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0fb8d8568f6da443711e41e91f607e9f7b7d43f8 08-Mar-2008 Chris Lattner <sabre@nondot.org> eliminate the TargetInfoImpl stuff, simplifying the target implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0eaed12e634dfd14f44620f63b8d3276fed028dd 08-Mar-2008 Chris Lattner <sabre@nondot.org> eliminate the TargetInfoImpl stuff, simplifying the target implementations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48049 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
0e4ed8e55256a6d0132549e5008441b658b2cace 08-Mar-2008 Chris Lattner <sabre@nondot.org> eliminate ComputeWCharInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
390161183919169c493916efac4c1e1b3828fea6 08-Mar-2008 Chris Lattner <sabre@nondot.org> eliminate ComputeWCharInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48048 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
5e1e05cebb0ce9d7c32c0db17c69d03ab4cb4fcb 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Added --trim-path-graph to the driver to trim paths from the ExplodedGraph
that are not related to error nodes.

Fixed bug where we did not detect some NULL dereferences.

Added "ExplodedGraph::Trim" to trim all nodes that cannot transitively reach
a set of provided nodes.

Fixed subtle bug in ExplodedNodeImpl where we could create predecessor
iterators that included the mangled "sink" bit. The better fix is to integrate
this bit into the void* for the wrapped State, not the NodeGroups representing
a node's predecessors and successors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48036 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
ffe0f43806d4823271c2406c1fccc2373115c36a 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Added --trim-path-graph to the driver to trim paths from the ExplodedGraph
that are not related to error nodes.

Fixed bug where we did not detect some NULL dereferences.

Added "ExplodedGraph::Trim" to trim all nodes that cannot transitively reach
a set of provided nodes.

Fixed subtle bug in ExplodedNodeImpl where we could create predecessor
iterators that included the mangled "sink" bit. The better fix is to integrate
this bit into the void* for the wrapped State, not the NodeGroups representing
a node's predecessors and successors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48036 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
8ad1987085a0b24d909ce7ebcb85ad2d5665e746 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Renamed ValueManager to BasicValueFactory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48025 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/ValueManager.h
nalysis/PathSensitive/ValueState.h
240f1f00dda1d481276ea872fe8f8851581a7e6b 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Renamed ValueManager to BasicValueFactory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48025 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/BasicValueFactory.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/ValueManager.h
nalysis/PathSensitive/ValueState.h
d75d28b0ac4547ebf0e80f11a5c13a1415bca14e 07-Mar-2008 Nate Begeman <natebegeman@mac.com> Add fastcall/stdcall attribute support
Generate CallingConv::Fast when fastcall attribute is present


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48017 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
440b456709526c4277e71d2e0ff49e5d88dc7b17 07-Mar-2008 Nate Begeman <natebegeman@mac.com> Add fastcall/stdcall attribute support
Generate CallingConv::Fast when fastcall attribute is present


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48017 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
75f32c655b9c94affecf89c487991f4d22a4b0cc 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Refined divide-by-zero checking to distinguish between must and may
divide-by-zero errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48013 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
4d839b4949efe9e2b16eeab679c25b28e31ea742 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Refined divide-by-zero checking to distinguish between must and may
divide-by-zero errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48013 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
e576941625af241f4bc0920a398927f8ba89bf9b 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Patch by Nuno Lopes:

Added more comments for code processing attribute "format".
Added more checks for corner cases, test cases, and warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48011 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
aa8f976111e75427fa41e0f84b78fe086ce0f4e6 07-Mar-2008 Ted Kremenek <kremenek@apple.com> Patch by Nuno Lopes:

Added more comments for code processing attribute "format".
Added more checks for corner cases, test cases, and warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48011 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2224fcbe656de9a28a2c4553072105617f268f06 06-Mar-2008 Gabor Greif <ggreif@gmail.com> fix typos

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47995 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
nalysis/PathSensitive/ValueState.h
843e934ba8c6ebc00d2f6969a50af7074597e8e3 06-Mar-2008 Gabor Greif <ggreif@gmail.com> fix typos

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47995 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
nalysis/PathSensitive/ValueState.h
827f93ba40f07ee80ef9cdbe984151f65a11442b 06-Mar-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate to execute the CF reference count checker (which isn't yet implemented).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47982 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
2fff37ecce1efd21ecb9bb4937dca83bdea715ff 06-Mar-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate to execute the CF reference count checker (which isn't yet implemented).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47982 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
f1d8db6f8e43f27e987bd86cc6dde0784be16680 06-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "CheckerState" field to ValueState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47979 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
cb0ab296dd7942b951ca84a0b82b954e3642b116 06-Mar-2008 Ted Kremenek <kremenek@apple.com> Added "CheckerState" field to ValueState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47979 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
a2822ebe93fc84a8a992d6f014b569426dbf920c 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Small bug fix when handling CallExprs that generate sink nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47970 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
5dc7f8b2d6a4f94ab4d1377912499a23cf8bc024 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Small bug fix when handling CallExprs that generate sink nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47970 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
b451dd30a9abf5b24d2173a1f415602f604e3055 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed bug that could case unwanted bifurcation of states when evaluating calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47964 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
4bf38da038cebf9396470630c3c39519e41706da 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed bug that could case unwanted bifurcation of states when evaluating calls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47964 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
399e901122d68daa45c7fef54c697784adf4e8d6 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed a horribly insidious bit-masking bug in the implementation of
ExplodedNode that would occasionally result in heap corruption.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47956 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
596f0a1e54f610926e8bfded9efa1c639f824ded 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed a horribly insidious bit-masking bug in the implementation of
ExplodedNode that would occasionally result in heap corruption.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47956 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
8cd0e9334436a89e85d8769d1d8f52d763497ee9 05-Mar-2008 Chris Lattner <sabre@nondot.org> remove the source location arguments to various target query methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/ValueManager.h
asic/TargetInfo.h
98be4943e8dc4f3905629a7102668960873cf863 05-Mar-2008 Chris Lattner <sabre@nondot.org> remove the source location arguments to various target query methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/ValueManager.h
asic/TargetInfo.h
cc80f188a59570132ec8029f523e1904a5218d57 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Reverted patch 47926 for ProgramPoint.h because it is currently buggy. May add back (fixed) later.
Updated CFGStmtVisitor to be in accord with rr47913: CallExprs are no longer (automatically) block-level expressions in the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47935 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
nalysis/Visitors/CFGStmtVisitor.h
ea45bb2d3b5e445029ad8f42d88bc1ed5b483a0b 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Reverted patch 47926 for ProgramPoint.h because it is currently buggy. May add back (fixed) later.
Updated CFGStmtVisitor to be in accord with rr47913: CallExprs are no longer (automatically) block-level expressions in the CFG.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47935 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
nalysis/Visitors/CFGStmtVisitor.h
fc45700f04023c8aa4e841baeff0825ad7212cb6 05-Mar-2008 Chris Lattner <sabre@nondot.org> Remove the first layer of support for "portability" warnings. This is
theoretically useful, but not useful in practice. It adds a bunch of
complexity, and not much value. It's best to nuke it. One big advantage
is that it means the target interfaces will soon lose their SLoc arguments
and target queries can never emit diagnostics anymore (yay). Removing this
also simplifies some of the core preprocessor which should make it slightly
faster.

Ted, I didn't simplify TripleProcessor, which can now have at most one
triple, and can probably just be removed. Please poke at it when you have
time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/IdentifierTable.h
asic/TargetInfo.h
asic/TokenKinds.def
ex/MacroInfo.h
ex/Preprocessor.h
42e6737f2efb113563140ad794c21c7709250402 05-Mar-2008 Chris Lattner <sabre@nondot.org> Remove the first layer of support for "portability" warnings. This is
theoretically useful, but not useful in practice. It adds a bunch of
complexity, and not much value. It's best to nuke it. One big advantage
is that it means the target interfaces will soon lose their SLoc arguments
and target queries can never emit diagnostics anymore (yay). Removing this
also simplifies some of the core preprocessor which should make it slightly
faster.

Ted, I didn't simplify TripleProcessor, which can now have at most one
triple, and can probably just be removed. Please poke at it when you have
time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47930 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/IdentifierTable.h
asic/TargetInfo.h
asic/TokenKinds.def
ex/MacroInfo.h
ex/Preprocessor.h
12839eeec68774a5f922837db8fb49dc6b42f1e1 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Added support for ProgramPoints to represent ExplodedNodes in another
ExplodedGraph. This allows us to build "layered" ExplodedGraphs where one
simulation is layered on another.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
424f67155475296804f9b9159dba606859441924 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Added support for ProgramPoints to represent ExplodedNodes in another
ExplodedGraph. This allows us to build "layered" ExplodedGraphs where one
simulation is layered on another.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
3eea8dd710437324c091b39a2bbd349877fecfac 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Plug-in transfer function "EvalCall" now takes as an argument the current
GRStmtNodeBuilder and is now responsible for adding its own nodes to the graph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47923 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
330dddd19406f9cc227e59e0bb0a36ecdc52915e 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Plug-in transfer function "EvalCall" now takes as an argument the current
GRStmtNodeBuilder and is now responsible for adding its own nodes to the graph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47923 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
c9358578fcbbceca8f9ff524f1e0c5c2202e8008 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Cleaned up typedefs involving StateTy so that we always use "StateTy*" instead of StateTy.
This is conceptually much cleaner, as it shows that the state is always a pointer.
It also makes it easier to marshall these values around across the internal APIs
of the path-sensitive engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47921 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
e5f4dcb6bd73a10df6eb6c3cfe057c88cb2362cc 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Cleaned up typedefs involving StateTy so that we always use "StateTy*" instead of StateTy.
This is conceptually much cleaner, as it shows that the state is always a pointer.
It also makes it easier to marshall these values around across the internal APIs
of the path-sensitive engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47921 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
bbd18e9cf60c2a0be46e54a0ca301caa13990bf6 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Make GRStmtNodeBuilder only depend on StateTy, and not the type definition
of the entire checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47920 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
f116bd654bcdb5d7c22656f224deeb7a67f7d0cd 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Make GRStmtNodeBuilder only depend on StateTy, and not the type definition
of the entire checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47920 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
65f841f8469ea2def561d4776a2df939cfcfe6d4 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Moved implementation of GRExprEngine::Nodify into GRStmtNodeBuilder. This will
allow us to pass the builder to plug-in transfer functions and allow those
functions to create intermediate nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47919 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
5c684c4be01fb98077a9b5e07ca1fdc01d8d97cb 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Moved implementation of GRExprEngine::Nodify into GRStmtNodeBuilder. This will
allow us to pass the builder to plug-in transfer functions and allow those
functions to create intermediate nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47919 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
e788ca9256957b3cdb1a68ef1bda9aab2d92e18c 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Moved GRExprEngine::NodeSet out of GRExprEngine and made it a standalone class: ExplodedNodeSet.
Made GRExprEngine::NodeSet a typedef of ExplodedNodeSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47914 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
f6f5ef4aaa66b60270e84d1fe1292886369d2f38 05-Mar-2008 Ted Kremenek <kremenek@apple.com> Moved GRExprEngine::NodeSet out of GRExprEngine and made it a standalone class: ExplodedNodeSet.
Made GRExprEngine::NodeSet a typedef of ExplodedNodeSet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47914 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
65f40305f9ba9f1c3248579cb5d179a3c6e17071 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed another obscure node-caching bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ValueState.h
7fa6a4079fd68344e4d38c30f7681b3a7d30fbd1 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed another obscure node-caching bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47898 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ValueState.h
e1cfa99e0753a71c26d6d5d831fe5bb08c448218 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Implemented "print" method for ValueState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
59894f9d4560021b12ff3e0207ae6046bc3b050a 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Implemented "print" method for ValueState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47894 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ValueState.h
d507bab9ac623edb72caee75a96bac8f1caeba7f 04-Mar-2008 Ted Kremenek <kremenek@apple.com> TargetInfo objects now own the TargetInfoImpl objects they refer to.
TargetInfo::AddSecondaryTarget is now private, as it is only used during
object construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
fb79f7cc00f9c1e04f11ed636eefb36d246b0fb8 04-Mar-2008 Ted Kremenek <kremenek@apple.com> TargetInfo objects now own the TargetInfoImpl objects they refer to.
TargetInfo::AddSecondaryTarget is now private, as it is only used during
object construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47891 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ef7ea077f8e97529cc5580a14b992bf42e43944c 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed insidious state propagation bug that would sometimes cause the state
to bifurcate at the wrong places and not propagate at others.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
ed2d2edecc0c5b92df99baf0ee31ac915b2e7c6a 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed insidious state propagation bug that would sometimes cause the state
to bifurcate at the wrong places and not propagate at others.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47876 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
4aa575903f6e45e037bb7075c6296e9262301b6a 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Enhanced pretty-printing of undefined-argument errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
1e80aa49ec689d1937e54fb353d6626e0a58f0db 04-Mar-2008 Ted Kremenek <kremenek@apple.com> Enhanced pretty-printing of undefined-argument errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47873 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
547e77f36006acd19f25b12e2accd6ff96fa04fd 03-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed subtle caching bug in ExplodedGraph that would cause some nodes to
be incorrectly merged together.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/ProgramPoint.h
5226755ab5ce6346f98b5f41cdcffbe84c5bb484 03-Mar-2008 Ted Kremenek <kremenek@apple.com> Fixed subtle caching bug in ExplodedGraph that would cause some nodes to
be incorrectly merged together.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47851 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/ProgramPoint.h
402b337840023aa37ec402be193717ce6caed5d4 03-Mar-2008 Chris Lattner <sabre@nondot.org> Add a bunch of attributes, patch by Nuno Lopes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
ddee4231e9bdfbac1e1f5385ff1a17fd0e0b0e39 03-Mar-2008 Chris Lattner <sabre@nondot.org> Add a bunch of attributes, patch by Nuno Lopes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47837 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
b9f54c31e6775bd74ab01284d61862252684fcf3 01-Mar-2008 Chris Lattner <sabre@nondot.org> newline at end of file, by David Chisnall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
72fc3b30d775a6b720dd0dd87aa853226f0625dd 01-Mar-2008 Chris Lattner <sabre@nondot.org> newline at end of file, by David Chisnall


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
9b31f5b5ac931ca9ab7790b61f36832e595a15cb 01-Mar-2008 Ted Kremenek <kremenek@apple.com> Added extra check for calls to functions where we pass undefined values
as arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47778 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
2ded35a576e3899553ea0ccfcbf5cbdb3d8cf664 01-Mar-2008 Ted Kremenek <kremenek@apple.com> Added extra check for calls to functions where we pass undefined values
as arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47778 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
73cf87e59c2e06cc8c7292ed50a34d1625de4925 01-Mar-2008 Steve Naroff <snaroff@apple.com> Fix http://llvm.org/bugs/show_bug.cgi?id=2103.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47775 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bcb2b6112072b071aafb0a7a28f16239c6a006a5 01-Mar-2008 Steve Naroff <snaroff@apple.com> Fix http://llvm.org/bugs/show_bug.cgi?id=2103.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47775 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
43863eb0d2edb95eaa24b77b8ab669fc51b66d46 01-Mar-2008 Ted Kremenek <kremenek@apple.com> Add checks for function calls via a function pointer that is NULL, Undefined,
or otherwise a constant integer value that doesn't evaluate to an address.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47774 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5e03fcb5420c33207433dd6f800588e256dd9bdb 01-Mar-2008 Ted Kremenek <kremenek@apple.com> Add checks for function calls via a function pointer that is NULL, Undefined,
or otherwise a constant integer value that doesn't evaluate to an address.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47774 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
70f16246dc0be87dabc42e6ef78b0fbfae3a7388 29-Feb-2008 Steve Naroff <snaroff@apple.com> Fix http://llvm.org/bugs/show_bug.cgi?id=2106.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
da323adbb99cee19a203ead852d5d9bfebb23fb7 29-Feb-2008 Steve Naroff <snaroff@apple.com> Fix http://llvm.org/bugs/show_bug.cgi?id=2106.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47768 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5c6eeb16a2f15c85c0a07a9b6ec9eee4f541ee55 29-Feb-2008 Ted Kremenek <kremenek@apple.com> "Refinement" of hack to bound loop-traversals: visit any block at a maximum of 3 times along a given path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47766 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
6a6719a3a11087b48d9f1a4eb08b3bd43cb05a65 29-Feb-2008 Ted Kremenek <kremenek@apple.com> "Refinement" of hack to bound loop-traversals: visit any block at a maximum of 3 times along a given path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47766 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
ee4c3bfe73bf1302b8e59c76e057f0f79e649650 29-Feb-2008 Chris Lattner <sabre@nondot.org> Add support for attribute(deprecated), patch by Nuno Lopes!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
7e669b25144c7cfae0e51d4098016d6982504dbd 29-Feb-2008 Chris Lattner <sabre@nondot.org> Add support for attribute(deprecated), patch by Nuno Lopes!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47753 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
c2d0720cb9bcc6a0fdfc496ca8c50015b8f52ffa 28-Feb-2008 Ted Kremenek <kremenek@apple.com> Added checking for undefined results of '<<' and '>>' (shifting by too many bits, etc.)
This current implementation only works when both operands are concrete values; later we will add support for symbolic values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/ValueManager.h
8cc13ea74fea1c04042a2f4087665bc5182e8408 28-Feb-2008 Ted Kremenek <kremenek@apple.com> Added checking for undefined results of '<<' and '>>' (shifting by too many bits, etc.)
This current implementation only works when both operands are concrete values; later we will add support for symbolic values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47726 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/ValueManager.h
f4b49dfa7ea6100c196d713adbeac87328064209 28-Feb-2008 Ted Kremenek <kremenek@apple.com> Merged ValueState and ValueStateImpl into just ValueState, with GRExprEngine::StateTy just becoming ValueState*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
aed9b6ac2ed0013133e4d4aebf2fad2ccd27f3e6 28-Feb-2008 Ted Kremenek <kremenek@apple.com> Merged ValueState and ValueStateImpl into just ValueState, with GRExprEngine::StateTy just becoming ValueState*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47714 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/ValueState.h
b31af24d7deec9f2893037605c99565e0da7ab7c 28-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed "Uninitialized" -> "Undefined" in path-sensitive value tracking engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47713 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SymbolManager.h
4a4e524afef40d6f3ddb25d0e407c814e4ca56a8 28-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed "Uninitialized" -> "Undefined" in path-sensitive value tracking engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47713 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SymbolManager.h
59938cadaf8aba59a5dba4e0f11fc55f413bf952 27-Feb-2008 Ted Kremenek <kremenek@apple.com> End paths when calling a function marked "noreturn."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47690 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
affb2159712b2373a18a89ed205c1a309d3aec12 27-Feb-2008 Ted Kremenek <kremenek@apple.com> End paths when calling a function marked "noreturn."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47690 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
13bfae66b70d770df75dcdc4f624f9a596b48e78 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Added support for attribute "noreturn."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
aecb38368546aa2cdb58d53bbcb3e8ad46365fc6 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Added support for attribute "noreturn."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47689 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
arse/AttributeList.h
5778d62432c481798479b7fba71c9da577cd076f 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Removed VarDecl::hasStaticStorage() (redundant with hasGlobalStorage())
Removed VarDecl::hasAutoStorage() (only used by hasLocalStorage())

Merged logic from VarDecl::hasAutoStorage() into VarDecl::hasLocalStorage(),
and expanded (fixed) the logic of hasLocalStorage() to handle Extern and PrivateExtern.

Renamed Expr::hasStaticStorage() to Expr::hasGlobalStorage().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
2e5f54aa1dd15a62c34a9d1d24a5a0692f43934a 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Removed VarDecl::hasStaticStorage() (redundant with hasGlobalStorage())
Removed VarDecl::hasAutoStorage() (only used by hasLocalStorage())

Merged logic from VarDecl::hasAutoStorage() into VarDecl::hasLocalStorage(),
and expanded (fixed) the logic of hasLocalStorage() to handle Extern and PrivateExtern.

Renamed Expr::hasStaticStorage() to Expr::hasGlobalStorage().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47681 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
b5175bf752f1ae00da4aefcf7e2bfbf8a6357e49 27-Feb-2008 Ted Kremenek <kremenek@apple.com> When analyzing a function, eagerly create symbolic values for all
globals/parameters at the beginning of the analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47664 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
0793263741a2343e0cf9b9ca5079ac4992657037 27-Feb-2008 Ted Kremenek <kremenek@apple.com> When analyzing a function, eagerly create symbolic values for all
globals/parameters at the beginning of the analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47664 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueState.h
9f6b161217d8653058fd2b9b578286c33a52ae25 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Header file cleanups: reduce number of includes; move ValueState.h into include directory tree.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47661 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueManager.h
nalysis/PathSensitive/ValueState.h
0f5f0595d6a038843a7051c5a65fca7bce2915a0 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Header file cleanups: reduce number of includes; move ValueState.h into include directory tree.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47661 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/ValueManager.h
nalysis/PathSensitive/ValueState.h
ad5d5c55b23f0441a32dbddddb74dd618c6ecdef 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Fix bug when processing '?' operator: invalidate the old "Uninitialized" value of the block-level expression for ?.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47645 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
5a7b3821c6abed7f58a53a94eac128bd23d23289 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Fix bug when processing '?' operator: invalidate the old "Uninitialized" value of the block-level expression for ?.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47645 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
348d7858c662417a89c5bd6d40ae8a787a7b76f0 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate for plug-in transfer function support for CallExprs.
GRSimpleVals performs the following action: invalidate all values passed-by-reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47638 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
06747691096654742d9ed7342e63828456b4f40c 27-Feb-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate for plug-in transfer function support for CallExprs.
GRSimpleVals performs the following action: invalidate all values passed-by-reference.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47638 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
f69c06ffebac44c5224209eb29f652b73045ab05 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Changed VarDecl::hasGlobalStorage() to be the negation of hasLocalStorage().
Before it was the negation of hasAutoStorage(), which is incorrect.
"Register" storage for Decls do not indicate global variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47630 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9cae51aa5027dfb57bf1cc6b5fd1bdcec632aa14 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Changed VarDecl::hasGlobalStorage() to be the negation of hasLocalStorage().
Before it was the negation of hasAutoStorage(), which is incorrect.
"Register" storage for Decls do not indicate global variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47630 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f567a8227b3f675735a02f9f0b2c7237fa3888e2 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Removed static analysis-specific diagnostics from DiagnosticKinds.def.
Use custom diagnostics for static analysis checkers. Added warnings
for dereferencing uninitialized values and divide-by-zeroes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47626 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
asic/DiagnosticKinds.def
d87a321a3c3902f7acfc6539b8946a00da6e45cc 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Removed static analysis-specific diagnostics from DiagnosticKinds.def.
Use custom diagnostics for static analysis checkers. Added warnings
for dereferencing uninitialized values and divide-by-zeroes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47626 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
asic/DiagnosticKinds.def
99ecce7bdeb690c751ce446d6ecf59d55c407163 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Major cleanup of the transfer function logic for '&&', '||', and '?'. We
now store in the state essentially which branch we took. This removes
a bunch of bogus assumptions (and likely bugs), reduces the complexity of
the implementation, and facilitates more optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47613 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
05a2378c708688c8ef498a5cea40ed7f5db15fa5 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Major cleanup of the transfer function logic for '&&', '||', and '?'. We
now store in the state essentially which branch we took. This removes
a bunch of bogus assumptions (and likely bugs), reduces the complexity of
the implementation, and facilitates more optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47613 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
bb37a046baa47e074d4f7a8903d0fd4e8509e8cd 26-Feb-2008 Lauro Ramos Venancio <lauro.venancio@gmail.com> Convert x86 target specific inline asm constraints to LLVM.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
a5694b8b0096215137bf1c273764ec93ac4898fd 26-Feb-2008 Lauro Ramos Venancio <lauro.venancio@gmail.com> Convert x86 target specific inline asm constraints to LLVM.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47609 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ef0007f55dd270b4db49b38d27e525ec3bcb9137 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Added lazy "symbolication" of parameter variables and global variables.
Added recording of divide-by-zero and divide-by-uninitialized nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47586 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SymbolManager.h
d763eb91aab5bdecd11825fadb35d6d8cc905f63 26-Feb-2008 Ted Kremenek <kremenek@apple.com> Added lazy "symbolication" of parameter variables and global variables.
Added recording of divide-by-zero and divide-by-uninitialized nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47586 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/SymbolManager.h
a7447ba9898d5534c9a9ce63784cdbeb30aa366d 26-Feb-2008 Chris Lattner <sabre@nondot.org> add parsing, ast building and pretty printing support for C++ throw expressions.
Patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47582 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
50dd289f45738ed22b7583d52ed2525b927042ff 26-Feb-2008 Chris Lattner <sabre@nondot.org> add parsing, ast building and pretty printing support for C++ throw expressions.
Patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47582 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
467d9d2f39f56ac637167c9cc4c2d91addfb084d 26-Feb-2008 Chris Lattner <sabre@nondot.org> fix const correctness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b22ef6feb04e6c960f2bfe7bb9ffa8d2ebb4fa14 26-Feb-2008 Chris Lattner <sabre@nondot.org> fix const correctness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
61fff7dfad1a2d2272c3e07962b3c7aa8bc5103d 25-Feb-2008 Ted Kremenek <kremenek@apple.com> doxygenify some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2de4a9b1d6186f83d98975e02daeb71bd9605440 25-Feb-2008 Ted Kremenek <kremenek@apple.com> doxygenify some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
43b885f70c4b4a2813c020e18415ebd052caabb8 25-Feb-2008 Chris Lattner <sabre@nondot.org> convert tabs to spaces, patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47560 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
c81c8144a661a49d7b9dae8d2080dee2e43186ec 25-Feb-2008 Chris Lattner <sabre@nondot.org> convert tabs to spaces, patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47560 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
d25c7e78c3cc631cb45c0f8dca0d9bfaaae8e921 25-Feb-2008 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix PR2086.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47551 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MultipleIncludeOpt.h
0184cc719f06d2c5da6ae0725847ef875c6128cd 25-Feb-2008 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix PR2086.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47551 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MultipleIncludeOpt.h
6ff5f7f19960f8de836ef264fe85b24ba00e204a 25-Feb-2008 Ted Kremenek <kremenek@apple.com> Added transfer function support for checking for divide-by-zero errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47547 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
07d83aa220567bef263ef76cfc9b0159320bb640 25-Feb-2008 Ted Kremenek <kremenek@apple.com> Added transfer function support for checking for divide-by-zero errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47547 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
0297c76e5752f99540cdf3d06dc755088142db6b 25-Feb-2008 Chris Lattner <sabre@nondot.org> enable digraphs for C94, thanks to Neil for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
3426b9bdc236df389f3aa00b56bf9154659511f2 25-Feb-2008 Chris Lattner <sabre@nondot.org> enable digraphs for C94, thanks to Neil for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
91cdf9f40847cec1bee7981833bd23bec7fa932c 24-Feb-2008 Chris Lattner <sabre@nondot.org> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47539 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
edf9c7f1bc0cb329df87ca3388fce8b6234f0359 24-Feb-2008 Chris Lattner <sabre@nondot.org> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47539 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
dbd96b23eae3784172d91cfb086abb8ca732f92e 24-Feb-2008 Ted Kremenek <kremenek@apple.com> Two more Windows-related fixes:

- More enum signeness bitfield fixes (MSVC treats enums as signed).

- Fixed in Lex/HeaderSearch.cpp an unsafe copy between two
HeaderSearch::PerFileInfo entries in a common vector. The copy involved two
calls to getFileInfo() within the assignment; these calls could have
side-effects that enlarged the internal vector, and with MSVC this would
invalidate one of the values in the assignment.

Patch by Argiris Kirtzidis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Type.h
asic/IdentifierTable.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
arse/DeclSpec.h
ca63fa00786e51c207c829f4182f11a6c6b552be 24-Feb-2008 Ted Kremenek <kremenek@apple.com> Two more Windows-related fixes:

- More enum signeness bitfield fixes (MSVC treats enums as signed).

- Fixed in Lex/HeaderSearch.cpp an unsafe copy between two
HeaderSearch::PerFileInfo entries in a common vector. The copy involved two
calls to getFileInfo() within the assignment; these calls could have
side-effects that enlarged the internal vector, and with MSVC this would
invalidate one of the values in the assignment.

Patch by Argiris Kirtzidis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
ST/Type.h
asic/IdentifierTable.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
arse/DeclSpec.h
c692520545ef3c9ecae8f1c5e17c12ca28e074c5 24-Feb-2008 Ted Kremenek <kremenek@apple.com> In FileManager: use full paths to unique files and directories on Windows,
since inodes are bogus abstraction on that platform.

Patch by Argiris Kirtzidis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47535 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
6bb816a3b895e9c983d89b22d510dca58a0eb75e 24-Feb-2008 Ted Kremenek <kremenek@apple.com> In FileManager: use full paths to unique files and directories on Windows,
since inodes are bogus abstraction on that platform.

Patch by Argiris Kirtzidis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47535 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
d938a896228445480990577df0d2b47273443eb0 23-Feb-2008 Ted Kremenek <kremenek@apple.com> Change encoding of TokenKind in IdentifierTable to be of type "unsigned"
instead of TokenKind because of signedness issues with MSVC and enums.

Patch from Argiris Kirtzidis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/Token.h
8e748ab52395328f2905855b295a22e33dc800b2 23-Feb-2008 Ted Kremenek <kremenek@apple.com> Change encoding of TokenKind in IdentifierTable to be of type "unsigned"
instead of TokenKind because of signedness issues with MSVC and enums.

Patch from Argiris Kirtzidis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47515 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ex/Token.h
38706196dce13df25ff6a1b3891d9724b1710f06 22-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "assumption" logic for lval::FuncVal and lval::GotoLabel, and simplified
assumption logic for lval::DeclVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47466 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
dc3936b0557ce7377905b387d3c69bc8fa484b9c 22-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "assumption" logic for lval::FuncVal and lval::GotoLabel, and simplified
assumption logic for lval::DeclVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47466 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
08cd370a26313462fc11fd8596782f8fc4c06585 21-Feb-2008 Ted Kremenek <kremenek@apple.com> Regression fix: Handle binary operators where both the left and right
operands are symbolic lvalues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47459 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
10c16657eec144def180ee53d1e0249c9ed2b3b5 21-Feb-2008 Ted Kremenek <kremenek@apple.com> Regression fix: Handle binary operators where both the left and right
operands are symbolic lvalues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47459 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
754d3fcd1db30ab9db9f03db80b81ff887e79eef 21-Feb-2008 Nate Begeman <natebegeman@mac.com> Handle __attribute__((annotate("string")))


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
c398f0b5efb2f8ba39cd5b0170cf697f714afbcb 21-Feb-2008 Nate Begeman <natebegeman@mac.com> Handle __attribute__((annotate("string")))


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47451 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
arse/AttributeList.h
3087ac2c41bb5b8b8894801addc938e595b51ed4 21-Feb-2008 Ted Kremenek <kremenek@apple.com> RemoveDeadBindings should now check for UninitalizedVal, as it is a now
an error to cast it to LVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47450 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
c3055ab39ac3535ffd581d33e21b72133099a6eb 21-Feb-2008 Ted Kremenek <kremenek@apple.com> RemoveDeadBindings should now check for UninitalizedVal, as it is a now
an error to cast it to LVal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47450 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
9cfda3fdcb1214c67a84c8b26a327c428d7d8b9f 21-Feb-2008 Ted Kremenek <kremenek@apple.com> Simplified and generalized transfer function logic for casts, allowing
the transfer function to be invoked without an Expr* for the Cast operation.

Added implicit promotions to the transfer function logic for compound
assignments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47444 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
9ef1ec98a8fc17e7560e07641184bc4daee39b46 21-Feb-2008 Ted Kremenek <kremenek@apple.com> Simplified and generalized transfer function logic for casts, allowing
the transfer function to be invoked without an Expr* for the Cast operation.

Added implicit promotions to the transfer function logic for compound
assignments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47444 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
07baa25305b8021347bd6010ce193b3397717d9a 21-Feb-2008 Ted Kremenek <kremenek@apple.com> Major cleanup of path-sensitive analysis engine and the current analysis
based on constant. prop. and limited symbolics.

- Renamed class: RValue -> RVal, LValue -> LVal, etc.
- Minor method renamings and interface cleanups.
- Tightened the RVal "type system" so that UninitializedVal and UnknownVal
cannot be cast to LVal or NonLVal. This forces these corner cases values
to be explicitly handled early before being dispatched to plug-in transfer
function logic.
- Major cleanup in the transfer function logic for binary and unary operators.
Still fixing some regressions, but we now explicitly handle Uninitialized
and Unknown values in a more rigorous way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47441 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
aa1c4e5a6b87b62d991c55a0d4522bcd778068d7 21-Feb-2008 Ted Kremenek <kremenek@apple.com> Major cleanup of path-sensitive analysis engine and the current analysis
based on constant. prop. and limited symbolics.

- Renamed class: RValue -> RVal, LValue -> LVal, etc.
- Minor method renamings and interface cleanups.
- Tightened the RVal "type system" so that UninitializedVal and UnknownVal
cannot be cast to LVal or NonLVal. This forces these corner cases values
to be explicitly handled early before being dispatched to plug-in transfer
function logic.
- Major cleanup in the transfer function logic for binary and unary operators.
Still fixing some regressions, but we now explicitly handle Uninitialized
and Unknown values in a more rigorous way.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47441 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
69f0193ae38db8d347b69ef27e51b4c268f91309 21-Feb-2008 Chris Lattner <sabre@nondot.org> Collect and build and process type attributes on pointers. For
example, we can now correctly build the type for things like:
_AS1 float * _AS2 *B;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47420 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
7654914fc5c6e2683d9e7358a64b3b53f368a8fc 21-Feb-2008 Chris Lattner <sabre@nondot.org> Collect and build and process type attributes on pointers. For
example, we can now correctly build the type for things like:
_AS1 float * _AS2 *B;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47420 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
9e98250ac056f5deb05a0afdad155377a7a6b11a 21-Feb-2008 Chris Lattner <sabre@nondot.org> move type attribute processing into the creatively named ProcessTypeAttributes method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47418 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
f1d705c3e2276f7f5b97b8b3394b9b3068fdf25b 21-Feb-2008 Chris Lattner <sabre@nondot.org> move type attribute processing into the creatively named ProcessTypeAttributes method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47418 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
49d15cb040bdae6a8697ddeb281847edb0e689ef 21-Feb-2008 Chris Lattner <sabre@nondot.org> Correctly handle address space qualifiers in declspecs. This
allows us to correctly handle stuff like:

_AS1 float *B;

and to reject stuff like:

_AS1 _AS2* x;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47417 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
74788ba1dc1dd836edd1956c1a4b071b2bb71574 21-Feb-2008 Chris Lattner <sabre@nondot.org> Correctly handle address space qualifiers in declspecs. This
allows us to correctly handle stuff like:

_AS1 float *B;

and to reject stuff like:

_AS1 _AS2* x;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47417 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
9384f50a52e5db0610b88da495898d28006141c5 21-Feb-2008 Chris Lattner <sabre@nondot.org> rename some methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47414 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
2070d809d208ae17fe81dfe6fad445e7bd8e3283 21-Feb-2008 Chris Lattner <sabre@nondot.org> rename some methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47414 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
d243eb4ab264d2c2144b27bad7845f738a7c0301 21-Feb-2008 Chris Lattner <sabre@nondot.org> add a method to AttributeList that converts an identifier to an enum.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47412 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
2335191341a58fa3f8abea3c9b391c5bb03d67b3 21-Feb-2008 Chris Lattner <sabre@nondot.org> add a method to AttributeList that converts an identifier to an enum.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47412 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
d496fb9f073b0169f367b5f87ffd74985b1ba9bf 20-Feb-2008 Chris Lattner <sabre@nondot.org> add some code that will be used to remove processed attrs from
declspec, it is currently nonfunctional though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47405 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
38d8b98803ac354dba15578d65ea99a83dead046 20-Feb-2008 Chris Lattner <sabre@nondot.org> add some code that will be used to remove processed attrs from
declspec, it is currently nonfunctional though.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47405 91177308-0d34-0410-b5e6-96231b3b80d8
arse/AttributeList.h
35fef52886c88e3855745917fcb0bf6a19fa0ba1 20-Feb-2008 Chris Lattner <sabre@nondot.org> Alternate address spaces work:

rename QualType::getQualifiers to getCVRQualifiers.
Add some fixme's and clean up some code relevant to qualifiers.
Change ASQualType to contain a Type* instead of a QualType.
Any CVR qualifiers should be on the outer qual type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
f46699ce225811d8d9dbab9d00189a0e54469457 20-Feb-2008 Chris Lattner <sabre@nondot.org> Alternate address spaces work:

rename QualType::getQualifiers to getCVRQualifiers.
Add some fixme's and clean up some code relevant to qualifiers.
Change ASQualType to contain a Type* instead of a QualType.
Any CVR qualifiers should be on the outer qual type.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47398 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
0cd9635bb3b4b52f69d8375c88f49747a410a71a 20-Feb-2008 Ted Kremenek <kremenek@apple.com> Implemented transfer function logic for unary '+'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47357 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
90e420321f60860f4c4e7a68ca9f7567824b46ec 20-Feb-2008 Ted Kremenek <kremenek@apple.com> Implemented transfer function logic for unary '+'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47357 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
b996ebcb6f8d3bf4354e83994a5ebea14c971fa7 20-Feb-2008 Ted Kremenek <kremenek@apple.com> Placed transfer function logic for dereferences in its own method, while at
the same time clearing up some logic of how the unary '*' operator is processed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47356 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
d8e9f0dc737133d4e8342f39389064620f5a7f8f 20-Feb-2008 Ted Kremenek <kremenek@apple.com> Placed transfer function logic for dereferences in its own method, while at
the same time clearing up some logic of how the unary '*' operator is processed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47356 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
9d4895cead5a9a0d88e1a9720483e2febe4ccb97 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Added special handling for UninitializedVals for the transfer function logic
for pointer dereferences.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47340 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b5339121f63f2754d4f26e8f3a092caf9f7d9290 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Added special handling for UninitializedVals for the transfer function logic
for pointer dereferences.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47340 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
962af8b169ab3ee296d30bff2dcdccbbab28a756 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Implemented "getType()" for symbolic values representing the "contents" of
another symbolic value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47339 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
a888c98b424b0232c45ae61d13b073bf81eaa859 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Implemented "getType()" for symbolic values representing the "contents" of
another symbolic value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47339 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SymbolManager.h
319ef15b2cb4cce30739106157bbbd28c7cbd067 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Fixed bug classof() bug with RValues that could cause an UninitializedVal
or UnknownVal to be interpreted as an actual NonLValue/LValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47304 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
e6ea2d572d8e09670c8d143e58380bf8145b123d 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Fixed bug classof() bug with RValues that could cause an UninitializedVal
or UnknownVal to be interpreted as an actual NonLValue/LValue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47304 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
d9268e3948b2274780ed1d230ca01d599b73aded 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate transfer function support for CallExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
de43424560f1a744de6214dab6bbee28ad8437f5 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate transfer function support for CallExprs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/RValues.h
bf988d01ec6dfdee28cdf983ce199a28485591b3 19-Feb-2008 Ted Kremenek <kremenek@apple.com> --grsimple now reports the number of nodes in the ExplodedGraph for
an analyzed function.

GRExprEngine now records stores to "uninitialized lvalues" (which are sinks in
the ExplodedGraph).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47293 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/GRExprEngine.h
9dca062461a6244cf0f733346657fa3eee853f9b 19-Feb-2008 Ted Kremenek <kremenek@apple.com> --grsimple now reports the number of nodes in the ExplodedGraph for
an analyzed function.

GRExprEngine now records stores to "uninitialized lvalues" (which are sinks in
the ExplodedGraph).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47293 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/GRExprEngine.h
7f5efbbbab5f19a98ae36122881f5e5a72a9e544 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "size()" and "empty()" methods to ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47289 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
39b4c6c98d391b25c376782cf92346aa88c96f7e 19-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "size()" and "empty()" methods to ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47289 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
bc965a603a67c59d49fad2ea0d4d2eef2e5c52ad 18-Feb-2008 Ted Kremenek <kremenek@apple.com> Added more assertions and checks in transfer function logic to check for
UninitializedVals and UnknownVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47288 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
692416c214a3b234236dedcf875735a9cc29e90b 18-Feb-2008 Ted Kremenek <kremenek@apple.com> Added more assertions and checks in transfer function logic to check for
UninitializedVals and UnknownVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47288 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
7dce029af034c8a9794ea55590f05aac159422ae 16-Feb-2008 Anders Carlsson <andersca@mac.com> Better handling of the aligned attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
042c4e7e9f0b54104f4f2e098c028aa8247b6bed 16-Feb-2008 Anders Carlsson <andersca@mac.com> Better handling of the aligned attribute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47216 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
asic/DiagnosticKinds.def
8d2b2b7adf81184ea632dafa42caa94294d6a9c7 16-Feb-2008 Anders Carlsson <andersca@mac.com> Make sizeof and __alignof work correctly with packed structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6a24acbb3dbb3bea9426716bee6ad6023ad15f3f 16-Feb-2008 Anders Carlsson <andersca@mac.com> Make sizeof and __alignof work correctly with packed structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47202 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
94e915e640e0d8092410fe3c9cbfa48af6568466 16-Feb-2008 Ted Kremenek <kremenek@apple.com> Further cleanup. Moved definitions for SymbolManager and ValueManager into
their own [.cpp;.h] files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47201 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/StateVariant.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
d70d0b05e5143be9e952eceb5aad7914b2ecab97 16-Feb-2008 Ted Kremenek <kremenek@apple.com> Further cleanup. Moved definitions for SymbolManager and ValueManager into
their own [.cpp;.h] files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47201 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
nalysis/PathSensitive/StateVariant.h
nalysis/PathSensitive/SymbolManager.h
nalysis/PathSensitive/ValueManager.h
136cdc36af5ac4c9c98930b111f3a3a7c756a0d6 16-Feb-2008 Anders Carlsson <andersca@mac.com> Handle packed attribute correctly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47197 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ad148069328e73c839c9284f70635cbc0d366bf8 16-Feb-2008 Anders Carlsson <andersca@mac.com> Handle packed attribute correctly

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47197 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5cf4d81c323fe4b16ea517a70fad62a95440f194 16-Feb-2008 Anders Carlsson <andersca@mac.com> Address comments from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
baa66fc389ca0a9f11e0c864304bcfd89de39439 16-Feb-2008 Anders Carlsson <andersca@mac.com> Address comments from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47195 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
e6da55e20f225677fb3cf1e59d8552db201c1a17 16-Feb-2008 Anders Carlsson <andersca@mac.com> Store attributes in a global hash map instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
adf21bdb3d17acfdb74657fcbc5035a404c6c8f4 16-Feb-2008 Anders Carlsson <andersca@mac.com> Store attributes in a global hash map instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47193 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
484eb5f5dcfd2620539e2fa89955d277da9d8c46 16-Feb-2008 Anders Carlsson <andersca@mac.com> Store attributes in a global hash map instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47191 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
b0dd26825e58a5f2982fd6d4ffa4c4ae6e24ff17 16-Feb-2008 Anders Carlsson <andersca@mac.com> Store attributes in a global hash map instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47191 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
521d97270ea22580264212433c9036dd6f1af029 16-Feb-2008 Ted Kremenek <kremenek@apple.com> Refactored code for transfer functions for binary operators involving two LValues.

Fixed bug in transfer functions for sizeof(*); we were incorrectly evaluating to
a value of the wrong type.

Fixed bug in transfer functions for compound assignments where we did not properly
handle assignments involving dereferences of symbolic values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47190 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
c6fbdcdb3b84d8a6bffa59b0848a8f53cf0bd11a 16-Feb-2008 Ted Kremenek <kremenek@apple.com> Refactored code for transfer functions for binary operators involving two LValues.

Fixed bug in transfer functions for sizeof(*); we were incorrectly evaluating to
a value of the wrong type.

Fixed bug in transfer functions for compound assignments where we did not properly
handle assignments involving dereferences of symbolic values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47190 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
22640cead67382ee76dfef913c4ecfcd8990ab73 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Simplified transfer function logic for ++/-- operators.
Added more boilerplate transfer function support for pointer arithmetic.
Added more pretty-printing support for symbolic constraints.
Added transfer function support for handling enum values.
Minor pointer types cleanup in ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47183 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
50d0ac299c641bee9024f3fbae2ea0640898a040 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Simplified transfer function logic for ++/-- operators.
Added more boilerplate transfer function support for pointer arithmetic.
Added more pretty-printing support for symbolic constraints.
Added transfer function support for handling enum values.
Minor pointer types cleanup in ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47183 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
851392614b02103894cb132000527e9d168df22e 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added predicate function "UnaryOperator::isIncrementOp()".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47181 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5d826b82936beb2c32dd02460332ba8035192c65 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added predicate function "UnaryOperator::isIncrementOp()".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47181 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8ff077864feed2c2b75424d37724f60e56d5a597 15-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Split out incomplete arrays from VariableArrayType into
IncompleteArrayType. This should make code dealing with both incomplete
and variable length arrays much more readable, plus it allows properly
making the distinction between isVariableArrayType() and
isVariablyModifiedType(). The patch is a little big, but it's
strightforward. so I don't think there should be any issues.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c5773c4b8ce1ed6ed5c7112c9020c954a47dce96 15-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Split out incomplete arrays from VariableArrayType into
IncompleteArrayType. This should make code dealing with both incomplete
and variable length arrays much more readable, plus it allows properly
making the distinction between isVariableArrayType() and
isVariablyModifiedType(). The patch is a little big, but it's
strightforward. so I don't think there should be any issues.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47165 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d717b22edd21a3c9e226bc804b33aa5713d79d31 15-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR2041: restrict is not a keyword in c90.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
3e5849ecfc02e362beb195d35100f868b1699176 15-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR2041: restrict is not a keyword in c90.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47160 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
62f67fd7f670f1a8b222c6565b257c05e8e80fae 15-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Remove useless parameter from isConstantSizeType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3c2b3170041f69a92904e3bab9b6d654eaf260ac 15-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Remove useless parameter from isConstantSizeType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3f70c54223bb78cfdb6699dc296c3467c86e3b04 15-Feb-2008 Anders Carlsson <andersca@mac.com> Get rid of AttributeList in the AST and use the new Attr class instead

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
f78915fa196b3d284ad756f65eecadaefef71eef 15-Feb-2008 Anders Carlsson <andersca@mac.com> Get rid of AttributeList in the AST and use the new Attr class instead

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
ST/Decl.h
775e0d81349c97209eaca9cd0079dae346e95c81 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate transfer function support for pointer arithmetic operations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47147 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
b640b3b5dfccaf259967cb2cb6755c9aa20d4423 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate transfer function support for pointer arithmetic operations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47147 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
nalysis/PathSensitive/GRTransferFuncs.h
1da5b146c90221aeb387f8ef7e5f65d8ad7e8ca9 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added --grsimple-view option to clang driver; this is the same as
--grsimple except that it visualizes the ExplodedGraph using dot and
outputs the current function being analyzed. --grsimple is now silent
except when it emits diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47146 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
d55fe520e79960afa796bda53cb4273fb1be4811 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added --grsimple-view option to clang driver; this is the same as
--grsimple except that it visualizes the ExplodedGraph using dot and
outputs the current function being analyzed. --grsimple is now silent
except when it emits diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47146 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRSimpleVals.h
0e39dcf9939c48d2568f17ec31de397b4c5bd57d 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "symbol iterators" for RValues, allowing easy iteration over the symbols
referenced by an RValue, instead of having to query the type of the RValue.

Modified ValueState::RemoveDeadBindings to also prune dead symbols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47142 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
90e1481ef15ec75e3503e0c6e5effad5bd639f01 15-Feb-2008 Ted Kremenek <kremenek@apple.com> Added "symbol iterators" for RValues, allowing easy iteration over the symbols
referenced by an RValue, instead of having to query the type of the RValue.

Modified ValueState::RemoveDeadBindings to also prune dead symbols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47142 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
3862eb1450ba3995c5ebc0f7bfc7acd3c8d95f73 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed GRConstants => GRSimpleVals.
Moved driver logic for --grsimple to GRSimpleVals.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/GRExprEngine.h
e01c98767dfd7153c3c84637c36659e3bbe16ff7 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed GRConstants => GRSimpleVals.
Moved driver logic for --grsimple to GRSimpleVals.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
nalysis/Analyses/GRSimpleVals.h
nalysis/PathSensitive/GRExprEngine.h
d446743981dce050bbe003ff92d8f6a5b40407c3 14-Feb-2008 Ted Kremenek <kremenek@apple.com> #include cleanups in GRExprEngine.cpp/GRExprEngine.h. Moved GRExprEngine to
clang namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47136 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b387a3f23e423d62c053be86294b703da1d1a222 14-Feb-2008 Ted Kremenek <kremenek@apple.com> #include cleanups in GRExprEngine.cpp/GRExprEngine.h. Moved GRExprEngine to
clang namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47136 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
50df4f4c829e61dd7cef79179158a2eedf123181 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Partitioned definition/implementation of GRExperEngine into .h and .cpp.
Still some cleanup to do, but this initial checkin compiles and runs correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47135 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
77349cb20bfd7069d081f84c91975bfa8ef60a32 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Partitioned definition/implementation of GRExperEngine into .h and .cpp.
Still some cleanup to do, but this initial checkin compiles and runs correctly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47135 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRExprEngine.h
b193413054de04eedc7db27cbfb9b9e0a190f0c8 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Migrated transfer functions for binary operators for simple value tracking
from RValues to GRTransferFuncs/GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47131 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
6cb0b541fee2cac9b242b1666cecc464feaabaf5 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Migrated transfer functions for binary operators for simple value tracking
from RValues to GRTransferFuncs/GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47131 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
c9922fd8c6ef9e65b4a952926bc775d1fa74a43b 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Migrated transfer functions for unary "~" and "-" to GRTransferFuncs/GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47126 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
c3f261de2d3a48d412ec4a9ce44b3b4a3982dddb 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Migrated transfer functions for unary "~" and "-" to GRTransferFuncs/GRSimpleVals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47126 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
25a484d696f19b4d8cf104c06ec0f0df79379a5a 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Started partitioning of transfer function logic (and thus the policy behind
these operations) into GRTransferFuncs and its subclasses. Originally all
of this logic was handled by the class RValue, but in reality different
analyses will want more flexibility on how they evaluate different values.

Transfer functions migrated so far: "Cast"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47125 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
d59cccc0b6cd4485897526699fe98514805c1883 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Started partitioning of transfer function logic (and thus the policy behind
these operations) into GRTransferFuncs and its subclasses. Originally all
of this logic was handled by the class RValue, but in reality different
analyses will want more flexibility on how they evaluate different values.

Transfer functions migrated so far: "Cast"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47125 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRTransferFuncs.h
nalysis/PathSensitive/RValues.h
5a535ba2448a4e07c7d988f245bdd1390c045961 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Moved Rvalues.h from "Analysis/" to "include/clang/Analysis/PathSensitive".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47123 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
cc409b764e12ff81d422bc4317e0b7552cf10011 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Moved Rvalues.h from "Analysis/" to "include/clang/Analysis/PathSensitive".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47123 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/RValues.h
cee3de855472f38a1014945d070f9a1c44b44229 14-Feb-2008 Anders Carlsson <andersca@mac.com> Address comments from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
81226601148d7e7c187b96c6ef86e83df204f59f 14-Feb-2008 Anders Carlsson <andersca@mac.com> Address comments from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47118 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
3c0e34853256d096b794944bea52853d3a711ab7 14-Feb-2008 Anders Carlsson <andersca@mac.com> Add Attr.h which is an AST-level class for GCC attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
d429cd459aef723fa0e7a44ac957d4c2256e241c 14-Feb-2008 Anders Carlsson <andersca@mac.com> Add Attr.h which is an AST-level class for GCC attributes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47112 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Attr.h
91cf86e759e34bd597d13921e05fe1049f3a0b0e 14-Feb-2008 Steve Naroff <snaroff@apple.com> Remove DeclSpec::Invalid, a recently added bool that allowed the parser to detect if the decl spec was invalid.

For now, we will stick with the original strategy - clients of Parse::ParseDeclarationSpecifiers() should never have to know this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47104 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
96715ae0c6a88d6f40cdd6e1164a1308a15874ea 14-Feb-2008 Steve Naroff <snaroff@apple.com> Remove DeclSpec::Invalid, a recently added bool that allowed the parser to detect if the decl spec was invalid.

For now, we will stick with the original strategy - clients of Parse::ParseDeclarationSpecifiers() should never have to know this.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47104 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
8329885b8af3c6556a05c2e49a79bb548c8d7962 14-Feb-2008 Steve Naroff <snaroff@apple.com> A much better fix for http://llvm.org/bugs/show_bug.cgi?id=1987.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47103 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e39bfd0c52975dfb038413aa55147df2fc709ce2 14-Feb-2008 Steve Naroff <snaroff@apple.com> A much better fix for http://llvm.org/bugs/show_bug.cgi?id=1987.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47103 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
aee121c53a4c9a85548c89286f4eeb3aa0397152 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Added support to GRCoreEngine/GRExprEngine for processing control-flow
from switch...case...default statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47100 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
daeb9a7376830d637e02b5bc51faf4750a7bce70 14-Feb-2008 Ted Kremenek <kremenek@apple.com> Added support to GRCoreEngine/GRExprEngine for processing control-flow
from switch...case...default statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47100 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRCoreEngine.h
8f348096ef79c6b09da9e48b76becaa53e935665 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed files to match class renaming in r47070:

http://llvm.org/viewvc/llvm-project?rev=47070&view=rev


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47071 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GREngine.h
a82799e63f42646ca878792f9f9a982510dc6e83 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed files to match class renaming in r47070:

http://llvm.org/viewvc/llvm-project?rev=47070&view=rev


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47071 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRCoreEngine.h
nalysis/PathSensitive/GREngine.h
30fa28b155fbe6c3ccfc63e11c2b56dd6b6daf3a 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed class GREngine => GRCoreEngine.
Renamed class GRConstants => GRExprEngine.

This was done with a Perl script, and will result in 80 col. violations that
I will gradually fix up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47070 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
4d4dd85923ecfc9c38ac0e94fb2602e1cce4406b 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Renamed class GREngine => GRCoreEngine.
Renamed class GRConstants => GRExprEngine.

This was done with a Perl script, and will result in 80 col. violations that
I will gradually fix up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47070 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
79f63f5e144078f4e138824865947aaddd3ade98 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Simplify GRIndirectGotoNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47068 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
24f1a967741ff9f8025ee23be12ba6feacc31f77 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Simplify GRIndirectGotoNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47068 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
7a48d9c7189d7f7271d8c92aa51a63c79ee4c0cc 13-Feb-2008 Chris Lattner <sabre@nondot.org> Move IgnoreParenCasts to be a method on Expr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
56f349400c5932a196509c0480ff6f99a9a0b48f 13-Feb-2008 Chris Lattner <sabre@nondot.org> Move IgnoreParenCasts to be a method on Expr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
677f4ef0ab9da17cd49f9ded4ed7a55ceeed24ee 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Added support to GREngine/GRConstants for handling computed gotos.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47038 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
nalysis/ProgramPoint.h
754607e7cff2d902d9af8b771409449fb2f8d2bf 13-Feb-2008 Ted Kremenek <kremenek@apple.com> Added support to GREngine/GRConstants for handling computed gotos.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47038 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
nalysis/ProgramPoint.h
61814ffd7455e59135e6f32b682357e8c1c1ef8a 12-Feb-2008 Ted Kremenek <kremenek@apple.com> Fixed misspelling in comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6083ea3723ec3996ae3bdf8d1b352b0c3b3922c8 12-Feb-2008 Ted Kremenek <kremenek@apple.com> Fixed misspelling in comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
9dd8a70fc9e35488c437f200adc4d3f0bd574205 12-Feb-2008 Ted Kremenek <kremenek@apple.com> Moved class declaration for ObjCForCollectionStmt to be co-located with
the class declarations for the other ObjC***Stmt classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
78492dae00fb85e0da0f966df4745edafdafb66c 12-Feb-2008 Ted Kremenek <kremenek@apple.com> Moved class declaration for ObjCForCollectionStmt to be co-located with
the class declarations for the other ObjC***Stmt classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47013 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4b170e59391e6cd89a1de3ea328399f3f50ac9de 12-Feb-2008 Ted Kremenek <kremenek@apple.com> Added GRBlockCounter class, which tracks the number of times blocks
have been visited in a path. Added GRBlockCounter as an item to be
enqueued to the worklist.

Modified "ProcessBranch" in GRConstants to prune branches with symbolic
conditions that have been already taken.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47010 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
8e49dd6e7e73b275a74338a5127a524f0765303c 12-Feb-2008 Ted Kremenek <kremenek@apple.com> Added GRBlockCounter class, which tracks the number of times blocks
have been visited in a path. Added GRBlockCounter as an item to be
enqueued to the worklist.

Modified "ProcessBranch" in GRConstants to prune branches with symbolic
conditions that have been already taken.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47010 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GRBlockCounter.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
fdd35d727f251c4d314521645534d80b38cf6ba3 12-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Add wchar_t type to ASTContext. Will be needed for wide strings, since
they are of type wchar_t[].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fd888a581d6d329f5b447c8ff4d37cf396315993 12-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Add wchar_t type to ASTContext. Will be needed for wide strings, since
they are of type wchar_t[].



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47004 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3cd7fc3d4d63d89391a0f09978c315b86538f0a8 12-Feb-2008 Steve Naroff <snaroff@apple.com> Allow the parser to detect invalid DeclSpec's. This fixes http://llvm.org/bugs/show_bug.cgi?id=1987.

This commit only "guards" the call to ParseDeclarationSpecifiers() in ParseDeclarationOrFunctionDefinition().

We could consider guarding all calls, however this is a bit radical (since it effectively stops parsing the declaration once we have a bad declspec). Will discuss with Chris tomorrow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46984 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
9532414c45a7114d9e94a733121655a5b5d5b473 12-Feb-2008 Steve Naroff <snaroff@apple.com> Allow the parser to detect invalid DeclSpec's. This fixes http://llvm.org/bugs/show_bug.cgi?id=1987.

This commit only "guards" the call to ParseDeclarationSpecifiers() in ParseDeclarationOrFunctionDefinition().

We could consider guarding all calls, however this is a bit radical (since it effectively stops parsing the declaration once we have a bad declspec). Will discuss with Chris tomorrow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46984 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
6f9f95522ab5bcf07275a3bb7a3d0649b6a042be 12-Feb-2008 Steve Naroff <snaroff@apple.com> Several cleanups surrounding Parser::ParseAsmStatement() and Parser::FuzzyParseMicrosoftAsmStatement().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46977 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
5f8aa696619e32bf307232841fedb704ba733b4d 12-Feb-2008 Steve Naroff <snaroff@apple.com> Several cleanups surrounding Parser::ParseAsmStatement() and Parser::FuzzyParseMicrosoftAsmStatement().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46977 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
cfe7821216b8450d4d846f554b347778b1ecb138 11-Feb-2008 Steve Naroff <snaroff@apple.com> Move Microsoft __declspec hack from the parser to the preprocessor. Since we have no plans to actually implement this construct, it is cleaner to limit the change to the preprocessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46973 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
705b5b532939740344d9a65cffc82f798d9332e6 11-Feb-2008 Steve Naroff <snaroff@apple.com> Move Microsoft __declspec hack from the parser to the preprocessor. Since we have no plans to actually implement this construct, it is cleaner to limit the change to the preprocessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46973 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
576df2979dd20306289699d4926f3025aa12d80a 11-Feb-2008 Steve Naroff <snaroff@apple.com> After yesterday's discussion (http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-February/001044.html), decided not to change the semantics of Type::isIncompleteType().

This commit simply changes a couple comments to reflect this decision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
406db935610a6e4f41c151d85b623c43967ba422 11-Feb-2008 Steve Naroff <snaroff@apple.com> After yesterday's discussion (http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-February/001044.html), decided not to change the semantics of Type::isIncompleteType().

This commit simply changes a couple comments to reflect this decision.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a6dcce3fa6567d1cef5e7388a7fb06d3c7fe97fa 11-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR1992 by computing the right type for string literals, which
is an array type not a pointer type. This requires updating some
diags that change and updating the code generator to handle the
proper form of strings.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a7ad98ff0919d6a24ea7c46634ea29bea551c1a0 11-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR1992 by computing the right type for string literals, which
is an array type not a pointer type. This requires updating some
diags that change and updating the code generator to handle the
proper form of strings.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46941 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
871fd79d634934b8a7d1c61ed6ee3d1ce9a2f19d 11-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR1999, by emitting a hard error only if an argument declarator is completely
missing. Otherwise, it is an implicit int case, which is valid in c90 and invalid
elsewhere, but accepted as an extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
99d724f6a31b5521ded95adf10ef7f3c62a0b18e 11-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR1999, by emitting a hard error only if an argument declarator is completely
missing. Otherwise, it is an implicit int case, which is valid in c90 and invalid
elsewhere, but accepted as an extension.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46938 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
749d7b06fc657e6785bc4ad19a8b0eaa7cb6cfaa 09-Feb-2008 Anders Carlsson <andersca@mac.com> Behave correctly if a constraint expression is invalid.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46910 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
8bd36fcb4427519f41197d88b9121e2bbe9e3fc3 09-Feb-2008 Anders Carlsson <andersca@mac.com> Behave correctly if a constraint expression is invalid.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46910 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b268d2a13860f49f2ff0c20253eab52ee6b1c185 08-Feb-2008 Steve Naroff <snaroff@apple.com> A bunch-o changes to fix <rdar://problem/5716046> incomplete implementation of ObjC class warning is incomplete

As part of this fix, I made a low-level change to the text diagnostics machinery (to basically avoid printing duplicate source lines/carets when you have multiple diagnostics that refer to the same exact place). For now, this only happens with we don't have a source range (could be extended to support source ranges as well).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
efe7f36f4d87b6e64b87128a81018350b2f21987 08-Feb-2008 Steve Naroff <snaroff@apple.com> A bunch-o changes to fix <rdar://problem/5716046> incomplete implementation of ObjC class warning is incomplete

As part of this fix, I made a low-level change to the text diagnostics machinery (to basically avoid printing duplicate source lines/carets when you have multiple diagnostics that refer to the same exact place). For now, this only happens with we don't have a source range (could be extended to support source ranges as well).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6528099ff8e22a9d2e3e8d06ef84d71ac44b99b8 08-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Improve diagnostic for illegal array initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46869 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a312ce2bdaaff62f21d560bad6cb0519f613d334 08-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Improve diagnostic for illegal array initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46869 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4f7f441db1d7b7137a39219ed3e0198385831b71 08-Feb-2008 Anders Carlsson <andersca@mac.com> Put back the top-level asm code; all tests pass now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
dfab6cb59a703f2ce4d58371652ce879f4c85a09 08-Feb-2008 Anders Carlsson <andersca@mac.com> Put back the top-level asm code; all tests pass now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
f41100b0236a5561c6c72635493c2d21d66121e9 08-Feb-2008 Anders Carlsson <andersca@mac.com> Back out 46855 for now, it causes test failures on Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46867 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
3f9424f3206b834b5dd0e7c403348651ab6fafbb 08-Feb-2008 Anders Carlsson <andersca@mac.com> Back out 46855 for now, it causes test failures on Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46867 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
be880ece609fa70a2516558ce2131990e30c9932 08-Feb-2008 Steve Naroff <snaroff@apple.com> - Add support for fuzzy parsing line-oriented __asm's (yuck).
- Change handling of __w64 to a built-in macro.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
b746ce84fb5c3fd2c5659f84dc6f2a883b499dc2 08-Feb-2008 Steve Naroff <snaroff@apple.com> - Add support for fuzzy parsing line-oriented __asm's (yuck).
- Change handling of __w64 to a built-in macro.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46864 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
7deb29f2d1d8e062e52c5ccba9994039db6a554b 07-Feb-2008 Anders Carlsson <andersca@mac.com> Handle top-level asm declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
61900f0ef4fc705e62609939f30a375a9576e43d 07-Feb-2008 Anders Carlsson <andersca@mac.com> Handle top-level asm declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46855 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
f9bba1315276a41b65f42a9ffcece0bf583eaffe 07-Feb-2008 Steve Naroff <snaroff@apple.com> Minor cleanup from yesterday's -fms-extension commit. Move __int* MS keywords to predefined macros. This removes some of the MS-madness from Parser::ParseDeclarationSpecifiers().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46852 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
419154d6d8e80ff2083dd039095781a0eb99444f 07-Feb-2008 Steve Naroff <snaroff@apple.com> Minor cleanup from yesterday's -fms-extension commit. Move __int* MS keywords to predefined macros. This removes some of the MS-madness from Parser::ParseDeclarationSpecifiers().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46852 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
e086636e93be8a146df429076e4258b3303b0532 07-Feb-2008 Ted Kremenek <kremenek@apple.com> Added proof-of-concept NULL pointer diagnostics to GRConstants.
Modified the driver to pass the Diagnostic object to GRConstants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46847 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
asic/DiagnosticKinds.def
19227e32af1f903541214ef24f693688e67c58d6 07-Feb-2008 Ted Kremenek <kremenek@apple.com> Added proof-of-concept NULL pointer diagnostics to GRConstants.
Modified the driver to pass the Diagnostic object to GRConstants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46847 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
asic/DiagnosticKinds.def
64b32ecc7a2d768b96d2f6d98d247bd7c3f01b4d 07-Feb-2008 Chris Lattner <sabre@nondot.org> Implement support for the extremely atrocious MS /##/ extension,
which pastes together a comment. This is only enabled with
-fms-extensions of course.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46845 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
3f1cc838f9caf469990f23fccd0940263c0c61ff 07-Feb-2008 Chris Lattner <sabre@nondot.org> Implement support for the extremely atrocious MS /##/ extension,
which pastes together a comment. This is only enabled with
-fms-extensions of course.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46845 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
10cccdc0b10d6416e00073dc1ada3bff6471ae44 07-Feb-2008 Chris Lattner <sabre@nondot.org> these aren't tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
18354de8c0e408a9a07cac75af2105d36587bc57 07-Feb-2008 Chris Lattner <sabre@nondot.org> these aren't tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46844 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
73a07035d0559b5d02f3bac9eec5a4f763639a40 07-Feb-2008 Steve Naroff <snaroff@apple.com> Implement -fms-extensions. This allows us to fuzzy parse non-standard MS constructs used in "windows.h".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
d62701bc5321049353017e9abf1963edd57646aa 07-Feb-2008 Steve Naroff <snaroff@apple.com> Implement -fms-extensions. This allows us to fuzzy parse non-standard MS constructs used in "windows.h".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
76b4983f4c80a8f51c57bc29dd2368353cdf4743 06-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Make sure to propagate qualifiers through the member operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
510190777c4bd53e960eea4665b204778fec1b64 06-Feb-2008 Eli Friedman <eli.friedman@gmail.com> Make sure to propagate qualifiers through the member operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6b806042bb9da382ec2d0f8ae42cc17f967fb52d 06-Feb-2008 Chris Lattner <sabre@nondot.org> explicitly document that return statement argument does not necessarily follow the result type of the function. Add testcase.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
c8edf6bd5f76bf50411d037c83d36847edfa68f0 06-Feb-2008 Chris Lattner <sabre@nondot.org> explicitly document that return statement argument does not necessarily follow the result type of the function. Add testcase.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f5e9db0e0fa71929155ec088996f7ee29eee8f9f 06-Feb-2008 Chris Lattner <sabre@nondot.org> move the codegen ASTConsumer out of the driver into libcodegen,
eliminating a bunch of forwarding methods and generally
simplifying things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46792 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
8ee3c0340ff10f0d98e2e138813ada3b36239038 06-Feb-2008 Chris Lattner <sabre@nondot.org> move the codegen ASTConsumer out of the driver into libcodegen,
eliminating a bunch of forwarding methods and generally
simplifying things.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46792 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
a8c2d59f71f037e273a9b7e351aa3352a5ae3a73 06-Feb-2008 Chris Lattner <sabre@nondot.org> pass the astconsumer into Sema's ctor, clean up some stuff in
Sema::ActOnTranslationUnitScope. The various ObjC pieces at the top
of Sema.cpp should be moved into SemaObjC or something.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
2ae34ed8caf90ca4044feca07811561053c08666 06-Feb-2008 Chris Lattner <sabre@nondot.org> pass the astconsumer into Sema's ctor, clean up some stuff in
Sema::ActOnTranslationUnitScope. The various ObjC pieces at the top
of Sema.cpp should be moved into SemaObjC or something.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
0bed6ecb468e91a14a6062ac6934eb3f2e8163a5 06-Feb-2008 Chris Lattner <sabre@nondot.org> rename ASTSTreamer.{h|cpp} -> ParseAST.{h|cpp}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ASTStreamer.h
ema/ParseAST.h
e91c134d8fee0179d4e88235fe3ac721bb467cd8 06-Feb-2008 Chris Lattner <sabre@nondot.org> rename ASTSTreamer.{h|cpp} -> ParseAST.{h|cpp}


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46786 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ASTStreamer.h
ema/ParseAST.h
de6a9c48c246c04625d9cdca499f2d089c7fb55a 06-Feb-2008 Anders Carlsson <andersca@mac.com> Handle simple asm statements correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
dfab34a696d1dba8622248c31aaf605906cb6109 06-Feb-2008 Anders Carlsson <andersca@mac.com> Handle simple asm statements correctly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46777 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
c949a46e9184ae4e3c2eade3665af9623e068dc7 05-Feb-2008 Steve Naroff <snaroff@apple.com> Fix Parser::ParseObjCTryStmt() to allow for trailing @-keyword statements/expressions.

This bug fix is the result of not having 2-token lookahead to recognize specific @-keywords.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46768 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
64515f31850024a263e8f55f81e9ea4b39925cfa 05-Feb-2008 Steve Naroff <snaroff@apple.com> Fix Parser::ParseObjCTryStmt() to allow for trailing @-keyword statements/expressions.

This bug fix is the result of not having 2-token lookahead to recognize specific @-keywords.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46768 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0a3324940837ae34bc166f89f4d23c82c4dd049a 05-Feb-2008 Anders Carlsson <andersca@mac.com> Use correct flag value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46752 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ef09d2b70a3b6f04c5d31c4c2bab2b7849f22561 05-Feb-2008 Anders Carlsson <andersca@mac.com> Use correct flag value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46752 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
1b22f8b1cea81aa432ca8bf57ac2ec3b402f53c0 05-Feb-2008 Chris Lattner <sabre@nondot.org> rewrite some of the type refinement code to eliminate dangling pointers
simplify the code and generally make it more robust.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46745 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
d86e6bc7ab4388a578daf46e7c76be9122a25072 05-Feb-2008 Chris Lattner <sabre@nondot.org> rewrite some of the type refinement code to eliminate dangling pointers
simplify the code and generally make it more robust.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46745 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
5ff8c2c80586688a8062a32f6a0c1520bb478500 05-Feb-2008 Ted Kremenek <kremenek@apple.com> ValueManager now uses the BumpPtrAllocator owned by the ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46740 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
768ad16a4ab79fbc52f6f3bdc9362fd4e1d51d53 05-Feb-2008 Ted Kremenek <kremenek@apple.com> ValueManager now uses the BumpPtrAllocator owned by the ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46740 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
1f0eb99f0a4ebf826b3d7a3079efd84d23d8eef7 05-Feb-2008 Ted Kremenek <kremenek@apple.com> Implemented initial transfer function support for '&&', '||', '?', and
__builtin_choose.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
f233d48cfc513b045e2c2cfca5c175220fbd0a82 05-Feb-2008 Ted Kremenek <kremenek@apple.com> Implemented initial transfer function support for '&&', '||', '?', and
__builtin_choose.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46731 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
2a72bb32dfda134cb2bab50f5bb4a6b214f84348 04-Feb-2008 Christopher Lamb <christopher.lamb@gmail.com> Add experimental support for address space qualified types. Address space
qualifiers use the __attribute__((address_space(id))) syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
ebb97e98c03f8d7034bd3748a10e35f39a95c289 04-Feb-2008 Christopher Lamb <christopher.lamb@gmail.com> Add experimental support for address space qualified types. Address space
qualifiers use the __attribute__((address_space(id))) syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46691 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
84602d71f7bedbbe0619db1c16a9f0d59f00c4b4 03-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR1966 by ignoring non-error diagnostics from system headers even if they are
*mapped* onto errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
7097d9167dc6b5d6ab5ebf149b296a43939d4b36 03-Feb-2008 Chris Lattner <sabre@nondot.org> Fix PR1966 by ignoring non-error diagnostics from system headers even if they are
*mapped* onto errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46686 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
dfcad7862e9f9d219f64dadad8eed0c77e80b9f9 03-Feb-2008 Chris Lattner <sabre@nondot.org> the macro start and macro end bits in source location are dead, remove them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
f8484542bbd9f3445b22fe8d240a1eac790cd8ca 03-Feb-2008 Chris Lattner <sabre@nondot.org> the macro start and macro end bits in source location are dead, remove them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46685 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
543c7c6ea0ef655d5c7391ce049e17ef1a851a92 02-Feb-2008 Steve Naroff <snaroff@apple.com> Cleanup previous patch (based on feedback from Ted).

Since this behavior is useful for most classes, we might consider adding a simple 3 method class that implements the behavior. Ted said that Boost has such a class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46654 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/HeaderSearch.h
49c1f4aa2a6c360d25d605004ec3c4affd62db77 02-Feb-2008 Steve Naroff <snaroff@apple.com> Cleanup previous patch (based on feedback from Ted).

Since this behavior is useful for most classes, we might consider adding a simple 3 method class that implements the behavior. Ted said that Boost has such a class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46654 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/HeaderSearch.h
30b6d143523cac3b728abc7e60a891bb6db9f65e 02-Feb-2008 Steve Naroff <snaroff@apple.com> Make sure SourceManager/HeaderSearch don't support default copy constructors (since they result in bad runtime behavior).

I'm sure there are other classes that might need this "guard", however I was bitten by these 2 recently (so I thought I'd fix them).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46653 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/HeaderSearch.h
27e2eb40b9adc876c05e0260d1100385c9f0e5f5 02-Feb-2008 Steve Naroff <snaroff@apple.com> Make sure SourceManager/HeaderSearch don't support default copy constructors (since they result in bad runtime behavior).

I'm sure there are other classes that might need this "guard", however I was bitten by these 2 recently (so I thought I'd fix them).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46653 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/HeaderSearch.h
232324e1ea952421e63228d58fa11f81b6418f0c 01-Feb-2008 Steve Naroff <snaroff@apple.com> Rename diagnostic to reflect it's role...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c0ff1caab20f13e99cd94e4263ba3e625e1aae92 01-Feb-2008 Steve Naroff <snaroff@apple.com> Rename diagnostic to reflect it's role...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46650 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
397c4ce5d9535c21cb52679327960fd349c25cdf 01-Feb-2008 Steve Naroff <snaroff@apple.com> Minor API cleanup...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
be4b3332c2d17c03af6d015d9e8e2cc524806e6e 01-Feb-2008 Steve Naroff <snaroff@apple.com> Minor API cleanup...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
61aa7f9fda3864fb86e1efe6c1c33259a9e4d76f 01-Feb-2008 Ted Kremenek <kremenek@apple.com> For ObjCAtCatchStmt, removed field 'NextAtCatchStmt' (which referenced the next @catch)
and put the the next ObjcAtCatchStmt* as part of SubExprs. This fixes a bug with
iterating over the children of ObjcAtCatch, where the next @catch was not
properly being iterated over as a child.

Altered serialization of ObjCAtCatchStmt to reflect this new layout of
its subexpressions, and fixed an ownership issue with the next @catch not
being serialized as an owned pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ff981021554a4965943ca2d19019cea811614602 01-Feb-2008 Ted Kremenek <kremenek@apple.com> For ObjCAtCatchStmt, removed field 'NextAtCatchStmt' (which referenced the next @catch)
and put the the next ObjcAtCatchStmt* as part of SubExprs. This fixes a bug with
iterating over the children of ObjcAtCatch, where the next @catch was not
properly being iterated over as a child.

Altered serialization of ObjCAtCatchStmt to reflect this new layout of
its subexpressions, and fixed an ownership issue with the next @catch not
being serialized as an owned pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
05fd1cc23a6f2407ccf10eb9b3997fadb39daeef 01-Feb-2008 Chris Lattner <sabre@nondot.org> make some diagnostics more terse, update testcases.

Fix Sema::ActOnInstanceMessage to correctly do things in terms of canonical
types, fixing bogus errors like:

NSDistantObject.m:10383:120: error: bad receiver type 'typeof((id<NSMutableCopying>)self)'
id mess = ({ id __inv__ = ((void *)0); id __mb__ = _NSMessageBuilder((id <NSMutableCopying>)self, &__inv__); (void)[(__typeof__((id <NSMutableCopying>)self))__mb__ mutableCopyWithZone:((void *)0)]; if (!objc_collecting_enabled()) object_dispose(__mb__); __inv__; });



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46633 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6e10a08fe0427ab34c463dd59d9c0997d4f72170 01-Feb-2008 Chris Lattner <sabre@nondot.org> make some diagnostics more terse, update testcases.

Fix Sema::ActOnInstanceMessage to correctly do things in terms of canonical
types, fixing bogus errors like:

NSDistantObject.m:10383:120: error: bad receiver type 'typeof((id<NSMutableCopying>)self)'
id mess = ({ id __inv__ = ((void *)0); id __mb__ = _NSMessageBuilder((id <NSMutableCopying>)self, &__inv__); (void)[(__typeof__((id <NSMutableCopying>)self))__mb__ mutableCopyWithZone:((void *)0)]; if (!objc_collecting_enabled()) object_dispose(__mb__); __inv__; });



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46633 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5f8c60921d638abb845afcdad93f59b13ed869a8 01-Feb-2008 Anders Carlsson <andersca@mac.com> Implement __builtin_huge_val.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
f7682b039609e1394f0f711de11ab3fb640289f2 01-Feb-2008 Anders Carlsson <andersca@mac.com> Implement __builtin_huge_val.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46627 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
b8a1b045231632158301b71c37eebabc828e5c53 31-Jan-2008 Chris Lattner <sabre@nondot.org> add some helper methods for removing and replacing text, this makes the
rewriter more robust.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46622 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
aadaf78d65daef3ac1b45e4ad6136ce859962fe2 31-Jan-2008 Chris Lattner <sabre@nondot.org> add some helper methods for removing and replacing text, this makes the
rewriter more robust.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46622 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
b154837c1300a155ae147d6b6d51530126df22c1 31-Jan-2008 Chris Lattner <sabre@nondot.org> Make rewriter::inserttext return a bool to indicate if it failed.

Add a RewriteTest::ReplaceStmt method to factor the 'checking for
rewrite failed + emitting diagnostic if so' code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46619 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
dcbc5b0b0722282a0fdd829359fe0d7e22adb882 31-Jan-2008 Chris Lattner <sabre@nondot.org> Make rewriter::inserttext return a bool to indicate if it failed.

Add a RewriteTest::ReplaceStmt method to factor the 'checking for
rewrite failed + emitting diagnostic if so' code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46619 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
e5db29f53fdc9f1fa5a535dfa6ca8e43e21e56df 31-Jan-2008 Chris Lattner <sabre@nondot.org> Fix PR1965: missing diagnostics for parameters that are missing
type specifiers. This required updating some (buggy) tests, and the
testcase was previously accidentally committed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e0e713b661ed07b7e012147344220583a91ab1bf 31-Jan-2008 Chris Lattner <sabre@nondot.org> Fix PR1965: missing diagnostics for parameters that are missing
type specifiers. This required updating some (buggy) tests, and the
testcase was previously accidentally committed.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46603 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c6078c9d9f70ba6fbcc3bc0150de889e397ba7a9 31-Jan-2008 Nate Begeman <natebegeman@mac.com> Remainder of the __builtin_overload feedback


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
796ef3d4a32ce8d9e76df0d5bcab07db97883064 31-Jan-2008 Nate Begeman <natebegeman@mac.com> Remainder of the __builtin_overload feedback


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46601 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
44aec4c8f8e3a76485a9238176285413a2a548c1 31-Jan-2008 Steve Naroff <snaroff@apple.com> Add support for CallExpr::isBuiltinConstantExpr(). For now, this hook is used to support CFConstantStrings. Can be extended to support other built-in functions.

This allows the following code to compile without error...

#include <CoreFoundation/CoreFoundation.h>

#define CONST_STRING_DECL(S, V) const CFStringRef S = (const CFStringRef)__builtin___CFStringMakeConstantString(V);

CONST_STRING_DECL(kCFTimeZoneSystemTimeZoneDidChangeNotification, "kCFTimeZoneSystemTimeZoneDidChangeNotification")



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c4f8e8b645b8e0e685c089dde0674c6f29a24168 31-Jan-2008 Steve Naroff <snaroff@apple.com> Add support for CallExpr::isBuiltinConstantExpr(). For now, this hook is used to support CFConstantStrings. Can be extended to support other built-in functions.

This allows the following code to compile without error...

#include <CoreFoundation/CoreFoundation.h>

#define CONST_STRING_DECL(S, V) const CFStringRef S = (const CFStringRef)__builtin___CFStringMakeConstantString(V);

CONST_STRING_DECL(kCFTimeZoneSystemTimeZoneDidChangeNotification, "kCFTimeZoneSystemTimeZoneDidChangeNotification")



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
428d39e600ded5adff2eabf0e705400fabb0a10d 31-Jan-2008 Ted Kremenek <kremenek@apple.com> We now delay adding nodes created by GRBranchNodeBuilder to the analysis
worklist until the dstor of GRBranchNodeBuilderImpl. This way clients can mark
creates nodes as "sinks" before they are added to the worklist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46582 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
3b4f6702860208692f6ef28401e68de4e3ff9af9 31-Jan-2008 Ted Kremenek <kremenek@apple.com> We now delay adding nodes created by GRBranchNodeBuilder to the analysis
worklist until the dstor of GRBranchNodeBuilderImpl. This way clients can mark
creates nodes as "sinks" before they are added to the worklist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46582 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
90960979d4875317037e8d3af4d20c8fae0be2a3 31-Jan-2008 Ted Kremenek <kremenek@apple.com> Implemented some branch pruning in GRConstants using != and == for
constant integers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46581 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
b38911f16b4943548db6a3695fc6ae23070b25d2 31-Jan-2008 Ted Kremenek <kremenek@apple.com> Implemented some branch pruning in GRConstants using != and == for
constant integers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46581 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
1eaa671cb983cb325022fa58a64f48782ca02aa3 31-Jan-2008 Ted Kremenek <kremenek@apple.com> Added method "printTerminator" to CFGBlock so that external clients can
pretty-print a block's terminator.

When building CFGs, for IfStmts ('if'), we no longer add the ParenExpr
that is the subexpression of the IfStmt to the CFG; instead we add its
first descendant subexpression that is not a ParenExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
a292585207adbf6dcf6347db3526a7ec861d8eac 31-Jan-2008 Ted Kremenek <kremenek@apple.com> Added method "printTerminator" to CFGBlock so that external clients can
pretty-print a block's terminator.

When building CFGs, for IfStmts ('if'), we no longer add the ParenExpr
that is the subexpression of the IfStmt to the CFG; instead we add its
first descendant subexpression that is not a ParenExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
bd881ef0b56faad84f6e81ba56c6d107b8dac28e 30-Jan-2008 Nate Begeman <natebegeman@mac.com> Implement first round of feedback on __builtin_overload



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
67295d05c50ab0b5d1b0f9ef82a906701c348715 30-Jan-2008 Nate Begeman <natebegeman@mac.com> Implement first round of feedback on __builtin_overload



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
f0154e97e54100534ea0fb0495c9f91a6cbcda4a 30-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
bd144b7ac70cc96cb1ff822347c2bb9b330729ec 30-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5f5d622213a719e1da54300bf14639a6b677ab0e 30-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Fixed misc. issues raised by Chris L. on @synchronized implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46558 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
78a677bbb5fa115fa0995b5783adeeefad67167e 30-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Fixed misc. issues raised by Chris L. on @synchronized implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46558 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
26a9d928c664d0584828590755a9a8944412a5bb 30-Jan-2008 Chris Lattner <sabre@nondot.org> Eli points out this can only happen for scalar elements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46550 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3fd1dfa22f2642c627ad2139b048b99fc5507ef3 30-Jan-2008 Chris Lattner <sabre@nondot.org> Eli points out this can only happen for scalar elements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46550 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
61f8977174bd3b0dff44c921d600aea6a2ff0c46 30-Jan-2008 Chris Lattner <sabre@nondot.org> Be more explicit about what flavors of initlistexpr's we can see. I don't
know if all of this is exactly right, but it seems like the right thing to
aim for. Steve, please review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
196ef51bc4d008ec1c69851fb3b0f8d036065931 30-Jan-2008 Chris Lattner <sabre@nondot.org> Be more explicit about what flavors of initlistexpr's we can see. I don't
know if all of this is exactly right, but it seems like the right thing to
aim for. Steve, please review.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
006d1542188bc9b77c31246cbc344f724dce64a0 30-Jan-2008 Chris Lattner <sabre@nondot.org> move some constructors out of line and fix indentation in ObjCAtThrowStmt::getSourceRange.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
db6ed1786bf460e1143f67d14bf2d71ad9856f81 30-Jan-2008 Chris Lattner <sabre@nondot.org> move some constructors out of line and fix indentation in ObjCAtThrowStmt::getSourceRange.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46547 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b00247fd2fbaa3106c0863d88f94abd8837fecee 30-Jan-2008 Steve Naroff <snaroff@apple.com> Many refinements to Sema::MergeVarDecl(). This routine still needs some re-work to fully handle tentative decls.

This includes a fix to bz1908.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b7b032ecb23e5a2ebff89d62478f93313c04d367 30-Jan-2008 Steve Naroff <snaroff@apple.com> Many refinements to Sema::MergeVarDecl(). This routine still needs some re-work to fully handle tentative decls.

This includes a fix to bz1908.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46540 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
707108bc6a081e4662644c00e48ceffad8ba16e3 30-Jan-2008 Ted Kremenek <kremenek@apple.com> Added method "markInfeasible" to GRBranchNodeBuilder to disable the
auto-propagation of state along a branch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46537 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
52a16499df87730c0252b431abdf2b2e32d756a6 30-Jan-2008 Ted Kremenek <kremenek@apple.com> Added method "markInfeasible" to GRBranchNodeBuilder to disable the
auto-propagation of state along a branch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46537 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
6ff3cea6ddf953777c093a9de93790f39e1d83fa 30-Jan-2008 Ted Kremenek <kremenek@apple.com> Implemented more boilerplate in GREngine for processing branches. Now
we automatically generate a new successor node along an edge if the checker
did not explicitly do so (i.e., we just propagate the current state).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46536 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
71c29bdc931bc49644c581ec7d698f0dbf01a0aa 30-Jan-2008 Ted Kremenek <kremenek@apple.com> Implemented more boilerplate in GREngine for processing branches. Now
we automatically generate a new successor node along an edge if the checker
did not explicitly do so (i.e., we just propagate the current state).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46536 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
499bf41ed7af222723eda7d0e0e3364f688d92ab 29-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Rewriting of @synchronized. This has one FIXME in it. But this should allow @sychronized to be rewritten.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
a0f55792409289d1d343023fa8292cff6355e538 29-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Rewriting of @synchronized. This has one FIXME in it. But this should allow @sychronized to be rewritten.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46533 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
19fbb10dc35473198b6343063b0301e03ae3e210 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate logic in GREngine for processing branches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46532 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
7d7fe6d539b3bdb1701835223cca306c325614a7 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Added boilerplate logic in GREngine for processing branches.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46532 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
1118e582637e263b4a012e75621498bf5484ba25 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed GRNodeBuilder to GRStmtNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46531 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
f4b7a6940070f04d7845ac55f0d1e300a8bee0d9 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed GRNodeBuilder to GRStmtNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46531 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
c9fd4d19ac2d2884dfceb8bbf8186b6529dde192 29-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> AST for @synchronized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46524 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
fa3ee8e6776634caf064ba5928ca7699d317a280 29-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> AST for @synchronized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46524 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
993360a70feeeb16068ad9d1342ababab6ee35d7 29-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Bunch of type defs, etc. for @synchronized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Parser.h
c385c90c68dfa376650e2facfbb444b2ec9bd110 29-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Bunch of type defs, etc. for @synchronized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46520 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Parser.h
52774ad4dcf54d85813a93001c3b866842f792cf 29-Jan-2008 Anders Carlsson <andersca@mac.com> Implement __builtin_offsetof.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5a1deb8d9c0722beae28d693fa137bbb942bd11f 29-Jan-2008 Anders Carlsson <andersca@mac.com> Implement __builtin_offsetof.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d3df8e76334b0bdaec2e0ec783cecba4109b571a 29-Jan-2008 Chris Lattner <sabre@nondot.org> fix comment typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46505 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
12fe558612303cb2188c321a77a21f7df23b6ae8 29-Jan-2008 Chris Lattner <sabre@nondot.org> fix comment typo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46505 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
e890f4b302b9a2517803ef03bcb7e50b5220bc2a 29-Jan-2008 Chris Lattner <sabre@nondot.org> add diagnostic


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46504 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
73bd901764906cc0a9a2aef5f55eeae207bb5743 29-Jan-2008 Chris Lattner <sabre@nondot.org> add diagnostic


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46504 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d03aecea5161b7ab01ad57028bf4c1d1fcafe993 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Modified LiveVariables to perform all of its base initialization in the ctor,
and now we require a FunctionDecl* object so that we can also keep track of
all of the ParmDecls.

Modified clients of LiveVariables to conform to the new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46490 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/LocalCheckers.h
bffaa831478baf584e74dfb7917861e865d99640 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Modified LiveVariables to perform all of its base initialization in the ctor,
and now we require a FunctionDecl* object so that we can also keep track of
all of the ParmDecls.

Modified clients of LiveVariables to conform to the new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46490 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/LocalCheckers.h
7c647411547751aec6ea11b2771bceb49760eab1 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Driver now passes the top-level FunctionDecl* to GRConstants.

Refactoring: for GREngine and GRConstants, pushed references to CFG, ASTContext,
and the top-level FunctionDecl into ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46475 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
cb48b9c9c3c95f2650b74530264c288d1f58c73c 29-Jan-2008 Ted Kremenek <kremenek@apple.com> Driver now passes the top-level FunctionDecl* to GRConstants.

Refactoring: for GREngine and GRConstants, pushed references to CFG, ASTContext,
and the top-level FunctionDecl into ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46475 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
d404c3524e2e00e8c859fff659d5444a412dda23 28-Jan-2008 Steve Naroff <snaroff@apple.com> Implement "private extern" on function decls!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7dd0bd4f8f83d9e679c830b30d67028b3609fde1 28-Jan-2008 Steve Naroff <snaroff@apple.com> Implement "private extern" on function decls!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46464 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1cbb276ad30a12054198499ccd12bb608c695eae 25-Jan-2008 Steve Naroff <snaroff@apple.com> Add more support for Apple's "private extern" extension...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/DeclSpec.h
d6326c6fe586ba178734c49ba33a2c1af021822c 25-Jan-2008 Steve Naroff <snaroff@apple.com> Add more support for Apple's "private extern" extension...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46371 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/DeclSpec.h
c0587e1b7355076066538e31257050ec9f6c248f 25-Jan-2008 Chris Lattner <sabre@nondot.org> Factor a complex predicate out to a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46365 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
14dd98a7952c9559e0d17fff8272bf3be67135af 25-Jan-2008 Chris Lattner <sabre@nondot.org> Factor a complex predicate out to a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46365 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
ed27a53fb4967394fa6d111dda26b8dcf1e30c22 25-Jan-2008 Chris Lattner <sabre@nondot.org> split the second half of ParseObjCMessageExpression into a new
ParseObjCMessageExpressionBody method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46363 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
699b66138ac307a32e238463e0eff513ff17d337 25-Jan-2008 Chris Lattner <sabre@nondot.org> split the second half of ParseObjCMessageExpression into a new
ParseObjCMessageExpressionBody method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46363 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
bc662011993dbe26d4416f8c61b6dc44f7d1bcfb 25-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Diagnose bad receiver type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46358 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1dad5b2f0e5737afe6847b97a18492bab93517d5 25-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Diagnose bad receiver type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46358 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f3cb514bc61842b54776e106dcb4e06456e19232 25-Jan-2008 Steve Naroff <snaroff@apple.com> Replace Sema::CheckVariableInitList, CheckConstantInitList, and CheckForCharArrayInitializer with CheckInitializerListTypes. The new routine now supports struct/union initializers.

This is a modified version of a patch by Eli Friedman. This version passes all of the clang tests and supports vectors:-)

Note that Eli and I are still unsatisfied the implementation of CheckInitializerListTypes(). We'd like to find a more elegant implementation. Nevertheless, this is a complex part of the standard (and may be hard to simplify). Since the complexity is localized to this routine, we can iterate without too much disruption:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a99603333fffb57cf9ac37eabb190c8f5afc914b 25-Jan-2008 Steve Naroff <snaroff@apple.com> Replace Sema::CheckVariableInitList, CheckConstantInitList, and CheckForCharArrayInitializer with CheckInitializerListTypes. The new routine now supports struct/union initializers.

This is a modified version of a patch by Eli Friedman. This version passes all of the clang tests and supports vectors:-)

Note that Eli and I are still unsatisfied the implementation of CheckInitializerListTypes(). We'd like to find a more elegant implementation. Nevertheless, this is a complex part of the standard (and may be hard to simplify). Since the complexity is localized to this routine, we can iterate without too much disruption:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46339 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
54eddaea23ac4de145b7cf5a5c230ec20ab4b25d 24-Jan-2008 Ted Kremenek <kremenek@apple.com> Added passing "ASTContext" to both GREngine and GRConstants.
Added initial support for integer casting operations to GRConstants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
nalysis/PathSensitive/GREngine.h
874d63fc63387365a21775a14c01963b10fde689 24-Jan-2008 Ted Kremenek <kremenek@apple.com> Added passing "ASTContext" to both GREngine and GRConstants.
Added initial support for integer casting operations to GRConstants.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
nalysis/PathSensitive/GREngine.h
c884988f88ef700a358fb137bdcb8b5bf0af732c 23-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Fixed a nasty bug which took a while to come up with a test case,
diagnose, and took even longer to fix. It has to do with rewriting of a message
receiver which is an 'ivar' reference. Fix, however, is to remove a code which
was not doing the right thing and no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46279 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7da8d94cb79f311c5b126483b8edfe5dc70d6c8f 23-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Fixed a nasty bug which took a while to come up with a test case,
diagnose, and took even longer to fix. It has to do with rewriting of a message
receiver which is an 'ivar' reference. Fix, however, is to remove a code which
was not doing the right thing and no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46279 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a616ee3e95d4f6084990c01b16d4f66d718a2485 23-Jan-2008 Chris Lattner <sabre@nondot.org> add support for -Wundef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
116a4b148ec9ad3f3a60044c7fb03f28dc620b7b 23-Jan-2008 Chris Lattner <sabre@nondot.org> add support for -Wundef.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46274 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
248db26430b2f5b826001755dc998b0e9dcfcd01 22-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Problem with ObjC's type-encoding of nested structs causing infinit recursion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7d6b46d9a9d75dea8ef9f6973dd50633c1f37963 22-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Problem with ObjC's type-encoding of nested structs causing infinit recursion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46260 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
00a313b920df9931e893c7194f932ff6f7580e04 21-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Elimate bogus warning when va_start is correctly used in
a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2338d58a905191c4205d4f73affd0bdaa13493b4 21-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Elimate bogus warning when va_start is correctly used in
a method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46232 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
771d8f421cc12a168e92a45f7f0be713ebda5b11 21-Jan-2008 Steve Naroff <snaroff@apple.com> Add a predicate/getter when checking for incomplete array types ("[]").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5c06a69a3ef19cc6dbeed7f2acb9de28b66c45d4 21-Jan-2008 Steve Naroff <snaroff@apple.com> Add a predicate/getter when checking for incomplete array types ("[]").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46231 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
be72efa82435bb10430db4a5608ef3f8fb2f4907 19-Jan-2008 Steve Naroff <snaroff@apple.com> Fix two bugs with an @throw that doesn't have a statement.
- ObjCAtThrowStmt::getSourceRange() needs to check if it has a statement (and not go "boom":-)
- RewriteTest::RewriteObjCThrowStmt() needs to generate refer to the current exception.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
20ebf8f15df48f27ce2bf7c1b3ae87565235600f 19-Jan-2008 Steve Naroff <snaroff@apple.com> Fix two bugs with an @throw that doesn't have a statement.
- ObjCAtThrowStmt::getSourceRange() needs to check if it has a statement (and not go "boom":-)
- RewriteTest::RewriteObjCThrowStmt() needs to generate refer to the current exception.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46184 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
1c5027795c4a48ce4b9202b767b58cd7697c5204 18-Jan-2008 Ted Kremenek <kremenek@apple.com> Changed DataflowSolver to always associated recorded dataflow values with
the position *before* a statement, regardless of whether we are doing a
forward or backwards analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46151 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
51f5499420e3e2344c1e6c3eff4764c4ec0b47ca 18-Jan-2008 Ted Kremenek <kremenek@apple.com> Changed DataflowSolver to always associated recorded dataflow values with
the position *before* a statement, regardless of whether we are doing a
forward or backwards analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46151 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
ab6c590678b82ae86a72e024eac9dda6437eb76b 17-Jan-2008 Ted Kremenek <kremenek@apple.com> Modified the notion of "Block-level expressions" in CFGs to include Stmt*. This
is because GNU-style Statement-expressions cause the last statement in the
statement-expression to act like an expression.

We now have two notions: block-level statements and block-level expressions.

The former are all Stmt* that appear in the list of statements in CFGBlocks. The
latter is the subset of the former; these block-level statements are used as
subexpressions somewhere in the AST. CFG::isBlockExpr() returns true for the
latter, not the former (previously isBlockExpr() always returned true for
non-Expr Stmt*).

Modified the LiveVariables analysis to also track liveness state for block-level
expressions (using the updated definition of block-level expressions).

Modified the dataflow solver so that when it records values for block-level
statements, it records the dataflow value *before* the transfer function for a
Stmt* is evaluated (not after). This is more in sync in what clients will want.

Modified CFGStmtVisitor to record the current block-level statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/Support/ExprDeclBitVector.h
nalysis/Visitors/CFGStmtVisitor.h
86946745225096243f6969dc745267b78fc211a6 17-Jan-2008 Ted Kremenek <kremenek@apple.com> Modified the notion of "Block-level expressions" in CFGs to include Stmt*. This
is because GNU-style Statement-expressions cause the last statement in the
statement-expression to act like an expression.

We now have two notions: block-level statements and block-level expressions.

The former are all Stmt* that appear in the list of statements in CFGBlocks. The
latter is the subset of the former; these block-level statements are used as
subexpressions somewhere in the AST. CFG::isBlockExpr() returns true for the
latter, not the former (previously isBlockExpr() always returned true for
non-Expr Stmt*).

Modified the LiveVariables analysis to also track liveness state for block-level
expressions (using the updated definition of block-level expressions).

Modified the dataflow solver so that when it records values for block-level
statements, it records the dataflow value *before* the transfer function for a
Stmt* is evaluated (not after). This is more in sync in what clients will want.

Modified CFGStmtVisitor to record the current block-level statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/Support/ExprDeclBitVector.h
nalysis/Visitors/CFGStmtVisitor.h
0eeeece004bb2c8cb850673a961faa9bd7d6ca1b 17-Jan-2008 Steve Naroff <snaroff@apple.com> Improve diagnostic wording...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2c0f01a65d727407f803b69f93ad597fda454e87 17-Jan-2008 Steve Naroff <snaroff@apple.com> Improve diagnostic wording...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46138 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ab8ed959c2840957d56462f1332d75639f81a54c 17-Jan-2008 Ted Kremenek <kremenek@apple.com> Added support to dataflow solver to (when requested) also record dataflow
values for the block-level expressions.

Modified 'LiveVariables' to provide the option to clients to record
liveness information for block-level expressions (using the above feature).

Modified 'DeadStores' to conform to the new interface of 'LiveVariables'.

Modified 'GRConstants' to compute liveness information for block-level
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
79649dfed2fc4b8cf0f7b6890df69458dbceeb04 17-Jan-2008 Ted Kremenek <kremenek@apple.com> Added support to dataflow solver to (when requested) also record dataflow
values for the block-level expressions.

Modified 'LiveVariables' to provide the option to clients to record
liveness information for block-level expressions (using the above feature).

Modified 'DeadStores' to conform to the new interface of 'LiveVariables'.

Modified 'GRConstants' to compute liveness information for block-level
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46137 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
9f3bfb7f98f3e4eb7641c700081eecd16d055c3a 17-Jan-2008 Nate Begeman <natebegeman@mac.com> Implement basic overload support via a new builtin, __builtin_overload.

__builtin_overload takes 2 or more arguments:
0) a non-zero constant-expr for the number of arguments the overloaded
functions will take
1) the arguments to pass to the matching overloaded function
2) a list of functions to match.

The return type of __builtin_overload is inferred from the function whose args
match the types of the arguments passed to the builtin. For example:

float a;
float sinf(float);
int sini(int);

float b = __builtin_overload(1, a, sini, sinf);

Says that we are overloading functions that take one argument, and trying to
pass an argument of the same type as 'a'. sini() does not match since it takes
and argument of type int. sinf does match, so at codegen time this will turn
into float b = sinf(a);


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
asic/TokenKinds.def
arse/Action.h
e2ce1d9440186cf3332368291cd884a6e3ae8946 17-Jan-2008 Nate Begeman <natebegeman@mac.com> Implement basic overload support via a new builtin, __builtin_overload.

__builtin_overload takes 2 or more arguments:
0) a non-zero constant-expr for the number of arguments the overloaded
functions will take
1) the arguments to pass to the matching overloaded function
2) a list of functions to match.

The return type of __builtin_overload is inferred from the function whose args
match the types of the arguments passed to the builtin. For example:

float a;
float sinf(float);
int sini(int);

float b = __builtin_overload(1, a, sini, sinf);

Says that we are overloading functions that take one argument, and trying to
pass an argument of the same type as 'a'. sini() does not match since it takes
and argument of type int. sinf does match, so at codegen time this will turn
into float b = sinf(a);


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46132 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
asic/TokenKinds.def
arse/Action.h
dcecd5cbbe024118ef7432299a44dbb511588cfc 17-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Renamed getSynthesizedSelectorSize to getSynthesizedMethodSize. Compute method name
size in accordance with how rewriter synthesizes method name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46131 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
faf5e779d16bb4590f2a97e1c7ded255eddd90f3 17-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Renamed getSynthesizedSelectorSize to getSynthesizedMethodSize. Compute method name
size in accordance with how rewriter synthesizes method name.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46131 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
87e30c5f73ee7a900367a5f776f03a49807bf7c7 17-Jan-2008 Ted Kremenek <kremenek@apple.com> Added method Expr::IgnoreParens(), which returns the first non-ParenExpr Expr*.
Refactored the use of this method into both the Sema module and Analysis module,
which were using their own static functions that did the same thing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4e99a5fc3b203397a91136c6e695e405fb8fc606 17-Jan-2008 Ted Kremenek <kremenek@apple.com> Added method Expr::IgnoreParens(), which returns the first non-ParenExpr Expr*.
Refactored the use of this method into both the Sema module and Analysis module,
which were using their own static functions that did the same thing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46129 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4aaf0c933f55f2cfcb8fa873ba56272bad5658a2 17-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Computed length of a __func__ identifier used in an objective-c method correctly,
when creating its type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
847794a7620bfd5fda09ee06bc0205d30e17e2aa 17-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Computed length of a __func__ identifier used in an objective-c method correctly,
when creating its type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46109 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
aa43cc1718abd85165acdb43a9f6d152bfdb118d 17-Jan-2008 Steve Naroff <snaroff@apple.com> Declarator::clear(): Null out variable after it's been deleted.

This avoids a double free (which is good:-)

Bug submitted by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46105 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
1b4a6227f3ee6fca074d0f521757d1ed4f95ef38 17-Jan-2008 Steve Naroff <snaroff@apple.com> Declarator::clear(): Null out variable after it's been deleted.

This avoids a double free (which is good:-)

Bug submitted by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46105 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
ba9a28748502398a323994d6d43b26c669b77dc4 17-Jan-2008 Steve Naroff <snaroff@apple.com> Type::isArithmeticType(): disallow incomplete enum decls.

Bug submitted by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
67c49e892b50a9ccb64f7296e00c23c61a8b7186 17-Jan-2008 Steve Naroff <snaroff@apple.com> Type::isArithmeticType(): disallow incomplete enum decls.

Bug submitted by Eli.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46102 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f8f582c7b5ce4ccdff9ca4e884a7cfea056d1e14 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed invalid typedefs in the root and eop iterators for ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
1501c82ecb0a853f7e6bb9622e49bfc2f0413c0e 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed invalid typedefs in the root and eop iterators for ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46091 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
2c421bc2e631478472181d7c958b292f97149b93 16-Jan-2008 Chris Lattner <sabre@nondot.org> add accessors to switchstmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
20dabe8b8ff7ed6d2d0158fee43755a4bc7642c3 16-Jan-2008 Chris Lattner <sabre@nondot.org> add accessors to switchstmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46082 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5d0c778c885374348e9e443a794aa56c381354eb 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed broken bitmasking in the ctor of ProgramPoint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46081 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
b365b702229999bf90b668bbe4a95bc0d2293d69 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed broken bitmasking in the ctor of ProgramPoint.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46081 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
0fe3f3a78eba3e14534a4d87be4fe124bb621e61 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Added missing call to the checker's Initialize() method in the alternate
ctor for GREngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46080 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
faa5b48710cc5c4c85df3218e567745b81b0ace4 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Added missing call to the checker's Initialize() method in the alternate
ctor for GREngine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46080 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
f11dcf3290bc5e4ea11e34e9cf35366183ee0704 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Added missing ctor to ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46079 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
b2d763a7987a2c5854d302f82f8b3c7ac5b92e20 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Added missing ctor to ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46079 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
f32a96bae9b29b13973461fcb0a768e590ceb092 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed incorrect pointer mask.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46078 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
5e2fa75c211519719687a81c6b6db85fbaa80254 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed incorrect pointer mask.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46078 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
bbb8a52e535a94593bb959e3f4a43674c74c6b29 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Add missing header file for GRConstants analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46075 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
1f3722b29fbf0791ba0fc5411f624359672c5685 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Add missing header file for GRConstants analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46075 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/GRConstants.h
d2500ab93d31c358b045eb53e525408cb1067549 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Hooked up the GRConstants analysis to the driver.
Fixed some compilation errors with GREngine that showed up during
template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46074 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
ee98546b0d5f3439c4a590b0d7d1545af794a0ec 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Hooked up the GRConstants analysis to the driver.
Fixed some compilation errors with GREngine that showed up during
template instantiation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46074 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
6c9e792f8f8127cbbb79e43f2cdf803f305d432b 16-Jan-2008 Steve Naroff <snaroff@apple.com> Sema::MergeFunctionDecl()...make sure diagnostic is accurate (wrt function declarations/definitions). Patch by Carl Lewis!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46070 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
837618c0945e1f67ec1e39000c568a1fa857a5a9 16-Jan-2008 Steve Naroff <snaroff@apple.com> Sema::MergeFunctionDecl()...make sure diagnostic is accurate (wrt function declarations/definitions). Patch by Carl Lewis!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46070 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3eef64dd904fbc1651b25dbf63047ce0b65693be 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Added ctor to GRNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46035 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
4992b7333c3ede5a97c8657833304df8d9a00ac1 16-Jan-2008 Ted Kremenek <kremenek@apple.com> Added ctor to GRNodeBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46035 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
4300121ffff80d4b23d17689930e2aa2a83086b9 15-Jan-2008 Steve Naroff <snaroff@apple.com> - Change Type::isComplexType() to exlude GCC's complex integer extension. In general, we will keep the lowest level Type predicates "pure" (i.e. true to the C99 spec).
- Modify Sema::UsualArithmeticConversions() to work with the new definition of Type::isComplexType().

This is a nice cleanup and also fixes a bug submitted by Eli (which I've added to the test suite).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
02f62a9fedbc370fba081303399410a3afdde29f 15-Jan-2008 Steve Naroff <snaroff@apple.com> - Change Type::isComplexType() to exlude GCC's complex integer extension. In general, we will keep the lowest level Type predicates "pure" (i.e. true to the C99 spec).
- Modify Sema::UsualArithmeticConversions() to work with the new definition of Type::isComplexType().

This is a nice cleanup and also fixes a bug submitted by Eli (which I've added to the test suite).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8888c7acd5cd43c7f910bfe03f5979ed4011de2a 15-Jan-2008 Steve Naroff <snaroff@apple.com> Add a comment...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
96d2c438f5c9ada8229f7f2ac049d2e9957bc954 15-Jan-2008 Steve Naroff <snaroff@apple.com> Add a comment...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45993 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
36e35e652e28cbdffbeda8cc3362888357ec7173 15-Jan-2008 Steve Naroff <snaroff@apple.com> Rework commit r45976, which was incorrect.

- Add Type::isComplexIntegerType(), Type::getAsComplexIntegerType().
- Don't inlude complex types with Type::isIntegerType(), which is too general.
- Use the new predicates in Sema::UsualArithmeticConversions() to recognize/convert the types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4cdec1c3ca80124024a787ce32833fd5b20cbb15 15-Jan-2008 Steve Naroff <snaroff@apple.com> Rework commit r45976, which was incorrect.

- Add Type::isComplexIntegerType(), Type::getAsComplexIntegerType().
- Don't inlude complex types with Type::isIntegerType(), which is too general.
- Use the new predicates in Sema::UsualArithmeticConversions() to recognize/convert the types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45992 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3226a651485897528178af195dc57550ab119770 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed implicit transitions to a "BlockExit" location; we now handle
the end of the block by processing empty blocks (at BlockEntrance) or
when we have just processed the last statement in a block (at PostStmt).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45991 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
425c08c53ccbfb84e52129406b259ec59da22e64 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed implicit transitions to a "BlockExit" location; we now handle
the end of the block by processing empty blocks (at BlockEntrance) or
when we have just processed the last statement in a block (at PostStmt).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45991 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/GREngine.h
f3b25969dfe50a46b0a655cb2d1587e55a8e8c08 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed mutation of CFGBlock through operator[]. For now the underlying ASTs,
however, can still be manipulated through the returned Stmt*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
3bf49e3fa8fa4630c48d78c19e3640fcaf67d07c 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed mutation of CFGBlock through operator[]. For now the underlying ASTs,
however, can still be manipulated through the returned Stmt*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45990 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ef27b4b4889c9da0e5e77a328e34551a041b233a 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Added prototype implementation of path-sens. analysis core engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45986 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
f24af5bc2e01ca8e7396ed997378a77fddfa521e 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Added prototype implementation of path-sens. analysis core engine.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45986 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/GREngine.h
nalysis/PathSensitive/GRWorkList.h
3b1c3c095fca9acb7976cf11b2055cfa07996c6d 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Added operator[] for CFGBlock. This provides random access to the statements
of a block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
be7a7d6f2e5b86807afd08a568863df973baaa38 15-Jan-2008 Ted Kremenek <kremenek@apple.com> Added operator[] for CFGBlock. This provides random access to the statements
of a block.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45984 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
229bcdd2b25343e76da813ac6ef5391519a06676 14-Jan-2008 Ted Kremenek <kremenek@apple.com> Cleaned up comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
86d1777a6b7723865c1e67a7aafc797ec0a574ff 14-Jan-2008 Ted Kremenek <kremenek@apple.com> Cleaned up comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45970 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
a4f6b1f476b7094acedf1acfd23e2e8d09c6cd9d 14-Jan-2008 Ted Kremenek <kremenek@apple.com> Cleaned up comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
95b1a9055ea7a27c231f6e082e5bcee4947ea0ce 14-Jan-2008 Ted Kremenek <kremenek@apple.com> Cleaned up comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45969 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
be37fc0e62b9eba4f30a54e6188382bfb462b627 14-Jan-2008 Steve Naroff <snaroff@apple.com> Record if a compound literal expression is @ file scope. This allows us to implement C99 6.5.2.5p6. This could have been done without modifying the AST (by checking the decl type and passing the info down to isContextExpr), however we concluded this is more desirable.

Bug/patch by Eli Friedman!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e9b12198c4cc7f5687960100351b4af006c14469 14-Jan-2008 Steve Naroff <snaroff@apple.com> Record if a compound literal expression is @ file scope. This allows us to implement C99 6.5.2.5p6. This could have been done without modifying the AST (by checking the decl type and passing the info down to isContextExpr), however we concluded this is more desirable.

Bug/patch by Eli Friedman!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1efb45ecf34a78cba57e95882f8e5c033bd41f96 14-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed 'inline' keywords from methods now defined in ExplodedGraph.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45965 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
5d5480380d7b7c3590a0283ddf239220e514e576 14-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed 'inline' keywords from methods now defined in ExplodedGraph.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45965 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
9d4c97eea6412798fd4317d566fa1b8bf12d4455 14-Jan-2008 Anders Carlsson <andersca@mac.com> _asm is another valid alias for asm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45957 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
579712091a22f12de911f9949aedc4366f492c78 14-Jan-2008 Anders Carlsson <andersca@mac.com> _asm is another valid alias for asm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45957 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
9c6c3590c1e7b6f878f10f5d001a688a7bd4a03f 13-Jan-2008 Steve Naroff <snaroff@apple.com> Change Sema::CheckAddressOfOperation() to respect C99-only addressof rules.
Remove diagnostics from Sema::CheckIndirectionOperand(). C89/C99 allow dereferencing an incomplete type. clang appears to be emulating some incorrect gcc behavior (see below).

void
foo (void)
{
struct b;
struct b* x = 0;
struct b* y = &*x; // gcc produces an error ("dereferencing pointer to incomplete type")
}

With this patch, the above is now allowed.

Bug/Patch by Eli Friedman!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
08f196716775e3b5a5406b588f5f01a0169a8a5b 13-Jan-2008 Steve Naroff <snaroff@apple.com> Change Sema::CheckAddressOfOperation() to respect C99-only addressof rules.
Remove diagnostics from Sema::CheckIndirectionOperand(). C89/C99 allow dereferencing an incomplete type. clang appears to be emulating some incorrect gcc behavior (see below).

void
foo (void)
{
struct b;
struct b* x = 0;
struct b* y = &*x; // gcc produces an error ("dereferencing pointer to incomplete type")
}

With this patch, the above is now allowed.

Bug/Patch by Eli Friedman!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
811d430842cc5116af3398e1fb5f87e1d4775930 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Moved destructor logic of templated class ExplodedGraph to non-templated
parent class ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45930 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
d880c1829395f55129fee31e2df542a475ec3cd7 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Moved destructor logic of templated class ExplodedGraph to non-templated
parent class ExplodedGraphImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45930 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
b997adec16c1ca931835a6e6198746d4c861d195 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Added node cleanup to dstor of ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45929 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
90e2280fd242b02d9829365570ba3966217cb0e0 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Added node cleanup to dstor of ExplodedGraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45929 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
f7c3becda680aba20d7040970eb376524c23f134 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Created ExplodedGraph.cpp and moved most method implementations of
ExplodedNodeImpl::NodeGroup from being defined inline to being defined
"out-of-line" in ExplodedGraph.cpp. This removes a dependence on including
<vector> in ExplodedGraph.h, and will hopefully result in smaller generated code
with negligible performance impact.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45928 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
9eb49a40df510313132eef147419c5abefff23eb 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Created ExplodedGraph.cpp and moved most method implementations of
ExplodedNodeImpl::NodeGroup from being defined inline to being defined
"out-of-line" in ExplodedGraph.cpp. This removes a dependence on including
<vector> in ExplodedGraph.h, and will hopefully result in smaller generated code
with negligible performance impact.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45928 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
7d3ab545c5685bac9dce2a5bf4afb738884f698d 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Moved 'ExplodedNodeGroup' into class 'ExplodedNode' as the nested class
'NodeGroup.'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45927 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
4c4cb527a44037d076da82ad9d12b4e655e64dbb 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Moved 'ExplodedNodeGroup' into class 'ExplodedNode' as the nested class
'NodeGroup.'


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45927 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
d82124288caa17aaf009685604dc143c520638cd 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed lines preventing compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
37d887c6c8e3c653fc581183d012a646d1653f57 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed lines preventing compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45926 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
0f0daa779783d9ad33d004e267edec006fd2a2f5 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Now include "CFG.h" because the inline methods of "BlockEntrance" accessor
the methods of CFGBlock.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45925 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
05e14cd46ef44c07385aae96ec2fdcb9bf7e9467 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Now include "CFG.h" because the inline methods of "BlockEntrance" accessor
the methods of CFGBlock.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45925 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramPoint.h
702ae069cbec5f1679a9f9d0dff9b778346c11d5 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
51125a21eafc29c925cac3655b46cfd8ef55f764 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45924 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
a750f3ec402ed1d68c907a9b2d6cfa9091a29f15 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed ExplodedNode.h, since its contents are now in ExplodedGraph.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45923 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
ce9328bd3b22ac46256501bc63660b7de820a197 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed ExplodedNode.h, since its contents are now in ExplodedGraph.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45923 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
5a6fc1285c8e20db476469c3c7508d7c9285f958 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Merged ExplodedNode.h into ExplodedGraph.h, since the ExplodedNode class will
only be used in the context of the ExplodedGraph class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45922 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
4a0f5f1646637fcf90eb236b5a46f40e5a5dd739 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Merged ExplodedNode.h into ExplodedGraph.h, since the ExplodedNode class will
only be used in the context of the ExplodedGraph class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45922 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
dafa1ecedf263ceb56b0a97e3a14f45fb9366939 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Changed implementation of successor and predecessor sets for ExplodedNode
to optimize for the common case of having a single predecessor and a single
successor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45921 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
46dc4e5f526407a089a4fb3fdf12e20d04f08c86 13-Jan-2008 Ted Kremenek <kremenek@apple.com> Changed implementation of successor and predecessor sets for ExplodedNode
to optimize for the common case of having a single predecessor and a single
successor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45921 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
e12ca5d11e69e0c5e0ec5a5dcd185637e43f7fc4 12-Jan-2008 Chris Lattner <sabre@nondot.org> Tighten up handling of __func__ and friends: it should be an array
of const char, and it should error if it occurs outside a function.

Is it valid in an objc method? If so we should handle that too.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1423ea4146f0f71e027adbcd04c9e715711d8063 12-Jan-2008 Chris Lattner <sabre@nondot.org> Tighten up handling of __func__ and friends: it should be an array
of const char, and it should error if it occurs outside a function.

Is it valid in an objc method? If so we should handle that too.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45910 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
806a5f566a37736a7de1eae35d324ce5ce7669ae 12-Jan-2008 Chris Lattner <sabre@nondot.org> Add first pieces of support for parsing and representing
extern "C" in C++ mode. Patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
odeGen/ModuleBuilder.h
arse/Action.h
arse/Parser.h
c6fdc34ac0183bfa03d65f317c78b7bdac52897e 12-Jan-2008 Chris Lattner <sabre@nondot.org> Add first pieces of support for parsing and representing
extern "C" in C++ mode. Patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45904 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
odeGen/ModuleBuilder.h
arse/Action.h
arse/Parser.h
ca12e19b518e615c35d4634abd55e7bb4fed39d8 11-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed ProgramEdge.h to ProgramPoint.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45847 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramEdge.h
nalysis/ProgramPoint.h
a1d44b5b7dbd39d4cfdbbb5ceb1885499ea03c77 11-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed ProgramEdge.h to ProgramPoint.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45847 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramEdge.h
nalysis/ProgramPoint.h
5ee98a7de4266ec2de0bff9fcb270c3960aa52e6 11-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed ProgramEdge to ProgramPoint and changed subclasses of ProgramEdge
to have a much simpler, cleaner interpretation of what is a "location"
in a function (as encoded by a CFG).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45846 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramEdge.h
83c01da96f57cf732a5da9a83e2981241f205dc4 11-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed ProgramEdge to ProgramPoint and changed subclasses of ProgramEdge
to have a much simpler, cleaner interpretation of what is a "location"
in a function (as encoded by a CFG).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45846 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/Analyses/LiveVariables.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/ProgramEdge.h
59df76ba7573b3724ea60aa7655278a0ced40273 10-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Remove non-ascii chaaracter from diagnostic


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45836 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a12a75faa61d7298ea27d8606a7d8f8f3584f9fa 10-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Remove non-ascii chaaracter from diagnostic


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45836 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3aa34e22fc739d80152c97b54b82ec21a3a1e348 10-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed non-ASCII quote.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8c04a4ca98454236e612e6e5c8eb791579e0e9ca 10-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed non-ASCII quote.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45835 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1a8dcaf20aa59a039eb78f3fea98091f4d736c07 10-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Warn (as gcc does) when @end does not close anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
94cdb25a49bd3716ab56ef6de0ea57d29e686bf2 10-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Warn (as gcc does) when @end does not close anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45834 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f103f0c903f55cc54bd35200a51691ecb3284458 10-Jan-2008 Ted Kremenek <kremenek@apple.com> Added "InfeasibleEdge" to represent an infeasible state transition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45802 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
b6d2360787e5a0bb5d26f3bc7a83059a8b050dc4 10-Jan-2008 Ted Kremenek <kremenek@apple.com> Added "InfeasibleEdge" to represent an infeasible state transition.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45802 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
df2b095116b8d71caeb20cf9b54c51c727403c67 10-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Allow messaging expression as foreach's collection expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7571228ec9b31de7733ae96352ee4eaa8afcf2b5 10-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Allow messaging expression as foreach's collection expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
c9c9136990e722603929070e5daefcbd20919602 10-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed various traits and classes. Added "Infeasible" bit to ExplodedNodeImpl
so that nodes can be marked as representing an infeasible program point. This
flag lets the path-sensitive solver know that no successors should be generated
for such nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ExplodedNode.h
974c676306758c8c84f5c25e3708186557a678bd 10-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed various traits and classes. Added "Infeasible" bit to ExplodedNodeImpl
so that nodes can be marked as representing an infeasible program point. This
flag lets the path-sensitive solver know that no successors should be generated
for such nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45788 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ExplodedNode.h
548d10c594d88c15a8f3adc5e5a8f9c778a5b1ef 09-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed Stmt***Edge and ***StmtEdge (where *** = "Stmt" or "Blk") classes to
BExpr*** and ***BExpr respectively. These edges represent program locations
between the entrance/exit of a block and Block-level Expressions.

Also added ***SExpr and SExpr*** ProgramEdges to represent the locations in the
program between the evaluation of subexpressions and block-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
bd129696c554fbbcd9405104641e292f0fb4678d 09-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed Stmt***Edge and ***StmtEdge (where *** = "Stmt" or "Blk") classes to
BExpr*** and ***BExpr respectively. These edges represent program locations
between the entrance/exit of a block and Block-level Expressions.

Also added ***SExpr and SExpr*** ProgramEdges to represent the locations in the
program between the evaluation of subexpressions and block-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45786 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
91876868dc74e69f9076ee1b99742a3134028006 09-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed some files related to the path-sensitive solver as part of some
code restructuring. (new files will be introduced shortly)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45785 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ReachabilityEngine.h
a2f4ef2c11c5cd8dcd5aa3d691f3a4bd971f96c2 09-Jan-2008 Ted Kremenek <kremenek@apple.com> Removed some files related to the path-sensitive solver as part of some
code restructuring. (new files will be introduced shortly)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45785 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ReachabilityEngine.h
43cdbf5cfe2da354d3d54655952ee7a8ae142485 09-Jan-2008 Chris Lattner <sabre@nondot.org> implement proper support for _Bool in memory, which is usually i8, not i1.
This fixes a crash reported by Seo Sanghyeon


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45778 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
19009e6fe7e0f51d2e49f4c94928a048c11c5281 09-Jan-2008 Chris Lattner <sabre@nondot.org> implement proper support for _Bool in memory, which is usually i8, not i1.
This fixes a crash reported by Seo Sanghyeon


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45778 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
2ea769b494649b5ca4864acf154f2fedc7718029 09-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a typo, patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3830f68e9e461a1b812b70f93103f8fb4ccb8c40 09-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a typo, patch by Mike Stump!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45763 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
16420585203608517b029404a3a7ea363535cb87 08-Jan-2008 Chris Lattner <sabre@nondot.org> readability improvement suggested by Sam Bishop, thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45735 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
94b3cdb57fd5d245963e597626e0dfd88d479795 08-Jan-2008 Chris Lattner <sabre@nondot.org> readability improvement suggested by Sam Bishop, thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45735 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ca6769676d1b0170bc3b3bc6230a4185b09593fd 08-Jan-2008 Ted Kremenek <kremenek@apple.com> Added nodes_iterator to the GraphTrait for ExplodedNode<>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
3f51a20208ddb0dd4ae0495832c1872cb1efe021 08-Jan-2008 Ted Kremenek <kremenek@apple.com> Added nodes_iterator to the GraphTrait for ExplodedNode<>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45730 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
3142c535e91b5bdfae637482868069beb94a2b31 08-Jan-2008 Ted Kremenek <kremenek@apple.com> Added GraphTraits<> partial specializations for ExplodedNode<> classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45729 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
5d78cf787b1c702ba2172e7a68ca7a272a8f3c65 08-Jan-2008 Ted Kremenek <kremenek@apple.com> Added GraphTraits<> partial specializations for ExplodedNode<> classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45729 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedNode.h
bcf8d5b3b47ea6bdeb5e3ac54b8c205d7a333b2d 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Added more boilerplate for processing end-of-paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45724 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ReachabilityEngine.h
d25725e2f1b2aecc45a70b7e3b63d52caae4e9cd 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Added more boilerplate for processing end-of-paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45724 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ReachabilityEngine.h
20d1d4b34f4c3481e48f790205336d25b4136e14 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Added ownership of "checker state" within the ExplodedGraph. Moved code that
creates the initial root node from the constructor of ReachabilityEngine to
ReachabilityEngine::ExecuteWorklist.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ReachabilityEngine.h
ede5a4ba111f0590879670b6cb07f4d6d0bd9075 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Added ownership of "checker state" within the ExplodedGraph. Moved code that
creates the initial root node from the constructor of ReachabilityEngine to
ReachabilityEngine::ExecuteWorklist.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45722 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ReachabilityEngine.h
c834ea640f7d32f28c9080131a2ea5664f0c9857 07-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a nasty corner case that Neil noticed in PR1900, where we would
incorrectly apply the multiple include optimization to files with
guards like:

#if !defined(x) MACRO

where MACRO could expand to different things in different contexts.
Thanks Neil!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45716 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MultipleIncludeOpt.h
4d730461735cc5cb8ecbd2f6106da9ec234064ad 07-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a nasty corner case that Neil noticed in PR1900, where we would
incorrectly apply the multiple include optimization to files with
guards like:

#if !defined(x) MACRO

where MACRO could expand to different things in different contexts.
Thanks Neil!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45716 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MultipleIncludeOpt.h
42730c53aeef9ac6c258d317065fdf38da4e043c 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Substituted all instances of the string "Objc" for "ObjC". This fixes
some naming inconsistencies in the names of classes pertaining to Objective-C
support in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
ST/Stmt.h
ST/StmtNodes.def
ST/Type.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
a526c5c67e5a0473c340903ee542ce570119665f 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Substituted all instances of the string "Objc" for "ObjC". This fixes
some naming inconsistencies in the names of classes pertaining to Objective-C
support in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
ST/Stmt.h
ST/StmtNodes.def
ST/Type.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
324949ada542f6eabd2989c2240475a6526f829a 07-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Make interfaceTypesAreCompatible a private method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8cc71e8d00896e758cf56ea86cfc1f62ade16478 07-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Make interfaceTypesAreCompatible a private method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
8e513d62f6d690801f240f95c12debad2852a510 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed SimulVertex, SimulGraph, and SimulEngine to:
ExplodedNode, ExplodedGraph (to match the vocabulary in the RHS paper)
ReachabilityEngine

The implementation of the core of the path-sensitive dataflow solver has
been de-templatized and places in ReachabilityEngine.cpp.

The solver is still incomplete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45711 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ExplodedNode.h
nalysis/PathSensitive/ReachabilityEngine.h
nalysis/PathSensitive/SimulEngine.h
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
4241b3d1ad87e9a593bbc6cdf0f49435d5aec235 07-Jan-2008 Ted Kremenek <kremenek@apple.com> Renamed SimulVertex, SimulGraph, and SimulEngine to:
ExplodedNode, ExplodedGraph (to match the vocabulary in the RHS paper)
ReachabilityEngine

The implementation of the core of the path-sensitive dataflow solver has
been de-templatized and places in ReachabilityEngine.cpp.

The solver is still incomplete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45711 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ExplodedGraph.h
nalysis/PathSensitive/ExplodedNode.h
nalysis/PathSensitive/ReachabilityEngine.h
nalysis/PathSensitive/SimulEngine.h
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
e677f5a78ca92206850f387345e27a6173a5c408 07-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Issue diagnostics if more than one declaration in objectove-c's foreach-stmt header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
8ce5da30642cd23968daf5bc2af5f6cd658c9c16 07-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Issue diagnostics if more than one declaration in objectove-c's foreach-stmt header.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45708 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
fabcc645e309b3037595ed15ccce3ed39083fe79 06-Jan-2008 Chris Lattner <sabre@nondot.org> Emit warnings like "dereferencing void pointer" instead of trying to
pretty print the type name for void.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5d5d210062b44ba40c1bb90b73c67be91428f54e 06-Jan-2008 Chris Lattner <sabre@nondot.org> Emit warnings like "dereferencing void pointer" instead of trying to
pretty print the type name for void.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45664 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cadb0704e778f9ebdf6e58c399f435a5eae354cb 05-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Minor changes as suggested by Chris L.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Parser.h
335a2d4122e41343fe11a775889b8bec5b14be60 05-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Minor changes as suggested by Chris L.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45598 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Parser.h
d951b7ba63db86731592cfdab84cf8c87ed35136 04-Jan-2008 Chris Lattner <sabre@nondot.org> add comments for the various AssignConvertType's, and split int->pointer from pointer->int.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b7b61159325e002998ff950fdc70a6425a6b13b3 04-Jan-2008 Chris Lattner <sabre@nondot.org> add comments for the various AssignConvertType's, and split int->pointer from pointer->int.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
005ed756c8250ca96ff88fa7582752d5e9c9141b 04-Jan-2008 Chris Lattner <sabre@nondot.org> Merge all the 'assignment' diagnostic code into one routine, decloning
it from several places. This merges the diagnostics, making them more
uniform and fewer in number. This also simplifies and cleans up the code.

Some highlights:
1. This removes a bunch of very-similar diagnostics.
2. This renames AssignmentCheckResult -> AssignConvertType
3. This merges PointerFromInt + IntFromPointer which were always treated the same.
4. This updates a bunch of test cases that have minor changes to the produced diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45589 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5cf216b7fa64b933b60743b0b26053e8e7aa87be 04-Jan-2008 Chris Lattner <sabre@nondot.org> Merge all the 'assignment' diagnostic code into one routine, decloning
it from several places. This merges the diagnostics, making them more
uniform and fewer in number. This also simplifies and cleans up the code.

Some highlights:
1. This removes a bunch of very-similar diagnostics.
2. This renames AssignmentCheckResult -> AssignConvertType
3. This merges PointerFromInt + IntFromPointer which were always treated the same.
4. This updates a bunch of test cases that have minor changes to the produced diagnostics.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45589 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
662d7089946c48822e5665c69e46a0e5844a4ea0 04-Jan-2008 Chris Lattner <sabre@nondot.org> fix a build problem where NULL isn't implicitly defined by the headers this file includes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45587 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
6d9b9e4f61e790d71e134cb84ec21230fb41341f 04-Jan-2008 Chris Lattner <sabre@nondot.org> fix a build problem where NULL isn't implicitly defined by the headers this file includes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45587 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
fe0982d3e8a15eaa22ae8443e4ae916bd1971b32 04-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to add semantics check for ObjC2's foreacn statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1f990d67c2d24cb330434f42dd62a3a0cc4aa6e9 04-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to add semantics check for ObjC2's foreacn statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45561 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
01e854d5f285424a565355abade7ff49ef76a111 04-Jan-2008 Chris Lattner <sabre@nondot.org> generalize some of the conversion warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4667ac39be4a96725373c0317ad6827e1bb71502 04-Jan-2008 Chris Lattner <sabre@nondot.org> generalize some of the conversion warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45560 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e62d63840904e24dc387bf9a60c7194fbfaf5c2b 04-Jan-2008 Chris Lattner <sabre@nondot.org> regroup assignment-related diagnostics, fix a mistake in one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45558 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2119c489cd251e104e1d472bafacd78784758536 04-Jan-2008 Chris Lattner <sabre@nondot.org> regroup assignment-related diagnostics, fix a mistake in one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45558 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4ca3d77f132bff94d7ea6bf90d2dc3a8f41bb9bb 03-Jan-2008 Chris Lattner <sabre@nondot.org> give better diagnostics for converting between function pointer and void*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bfe639e4d39b1afa05d66aaea0378d6c10df4ffc 03-Jan-2008 Chris Lattner <sabre@nondot.org> give better diagnostics for converting between function pointer and void*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45556 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
17a2b52b972037d57a78e4b53be6862c917a4ae9 03-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed misuse of pointer within SimulVertex::addPredecessor()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
1dcf0a4546df4edbc7e8c660de0be46ae60c95cc 03-Jan-2008 Ted Kremenek <kremenek@apple.com> Fixed misuse of pointer within SimulVertex::addPredecessor()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45551 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
a5dd7a67b0d08a7ede7a1564a706994e1873757b 03-Jan-2008 Ted Kremenek <kremenek@apple.com> SimulGraph::getVertex() now also returns a bool indicating if the returned
vertex was freshly created.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45550 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
f3b92122623a9341411b65afc89fceaf743de08f 03-Jan-2008 Ted Kremenek <kremenek@apple.com> SimulGraph::getVertex() now also returns a bool indicating if the returned
vertex was freshly created.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45550 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
04379f1f873cb08721223dabf4fa23e964b5087d 03-Jan-2008 Ted Kremenek <kremenek@apple.com> Constified methods front() and back() in CFGBlock.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
5156ad8b2e64850a13d4e9d9ddeb3f9c6b9d3ebb 03-Jan-2008 Ted Kremenek <kremenek@apple.com> Constified methods front() and back() in CFGBlock.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45549 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
1b5f5e1ff997799926d3cd3253121999c9e3f225 03-Jan-2008 Ted Kremenek <kremenek@apple.com> De-constified the pointers returned by the Dst() and Src() methods of
the various ProgramEdge classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45548 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
02ad1a2c515683ae5365d31c2c86c735d6104c13 03-Jan-2008 Ted Kremenek <kremenek@apple.com> De-constified the pointers returned by the Dst() and Src() methods of
the various ProgramEdge classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45548 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ProgramEdge.h
1300bc7d727d199bb0634bc074de9deda7d48c29 03-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to parse/build AST ObjC2's foreach statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45539 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3ba5a0f90a03d5e13d02cbee9abd2a1ba01b18bc 03-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> Patch to parse/build AST ObjC2's foreach statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45539 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9e920f38a2b2fb3c019f518c82d798452cd8b3b4 02-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> New declarations/defs for Objc2's foreach-statement. This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Parser.h
0196cab54007ff072ec2642da8911c6b7e8d3fb5 02-Jan-2008 Fariborz Jahanian <fjahanian@apple.com> New declarations/defs for Objc2's foreach-statement. This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45511 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Parser.h
11ed4ca362958162d11612c9318cde7760cb7afe 02-Jan-2008 Ted Kremenek <kremenek@apple.com> SimulVertex: Inverted argument order when calling the Profile method of StateTy.

SimulGraph: Inverted argument order when calling the Profile method of VertexTy
(plus minor cleanups)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45508 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
f56dac9ae9b1f3061b24d2a8257327a97adc6bd7 02-Jan-2008 Ted Kremenek <kremenek@apple.com> SimulVertex: Inverted argument order when calling the Profile method of StateTy.

SimulGraph: Inverted argument order when calling the Profile method of VertexTy
(plus minor cleanups)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45508 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
386ab8a072825ab47365159a2a078e3da1d752ae 02-Jan-2008 Chris Lattner <sabre@nondot.org> Compute the proper sourcerange for an CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0fc53dfc7a33f68e71ef245389c4e7cd34a62a39 02-Jan-2008 Chris Lattner <sabre@nondot.org> Compute the proper sourcerange for an CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
71b99c4b22f730792e63ebd7bcefa99f354db993 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Converted state reference within SimulVertex from StateTy* to StateTy.
This is more flexible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
41bc5cda96a8893e12d2750779e307ae92da4be6 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Converted state reference within SimulVertex from StateTy* to StateTy.
This is more flexible.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45502 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
b18ca46f912086ef8a36fe6718858ae2bb0d1c1c 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Added/fixed some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45490 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
e8599e570ed55a9c170fed43e39a1e1d4c3f70a8 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Added/fixed some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45490 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
ad6442ede2fd94cda32b8e1ecfd782ee64a6cc16 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Sprinkled 'typename' and fixed a few typos and type declaration errors to
make these headers compile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45488 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
5d5c462e416ef29ad2005daf7d39a82c6e4c61bf 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Sprinkled 'typename' and fixed a few typos and type declaration errors to
make these headers compile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45488 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
0a4df30e653aed6948f5e63ca91ee70afc0be388 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Added fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45487 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
a5c999d518823df28761a9326907b20beb8c4d5d 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Added fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45487 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
5c0563177d9abdca1697bbb80d18ab97cefef6cb 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Allocate vertices using a BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45486 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
b679fed0008131f18d2f8034146732c7dad9367f 02-Jan-2008 Ted Kremenek <kremenek@apple.com> Allocate vertices using a BumpPtrAllocator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45486 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
350b6ddaea5f7b260edc07567b6710077c786a31 29-Dec-2007 Chris Lattner <sabre@nondot.org> remove attributions from .def files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/PPCBuiltins.def
ST/StmtNodes.def
ST/X86Builtins.def
asic/DiagnosticKinds.def
asic/TokenKinds.def
0538bc56e3fbb580921082bd80b2ddefb6ed2532 29-Dec-2007 Chris Lattner <sabre@nondot.org> remove attributions from .def files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/PPCBuiltins.def
ST/StmtNodes.def
ST/X86Builtins.def
asic/DiagnosticKinds.def
asic/TokenKinds.def
959e5be188a505881058777f35abaaa3fe2de40b 29-Dec-2007 Chris Lattner <sabre@nondot.org> Don't attribute in file headers anymore. See llvmdev for the
discussion of this change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/Builtins.h
ST/CFG.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
ST/ExprCXX.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Stmt.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtVisitor.h
ST/TargetBuiltins.h
ST/TranslationUnit.h
ST/Type.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/LocalCheckers.h
nalysis/PathSensitive/SimulEngine.h
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
nalysis/PathSensitive/StateVariant.h
nalysis/ProgramEdge.h
nalysis/Support/ExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
asic/Diagnostic.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/SourceLocation.h
asic/SourceManager.h
asic/TargetInfo.h
asic/TokenKinds.h
odeGen/ModuleBuilder.h
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroExpander.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/Pragma.h
ex/Preprocessor.h
ex/ScratchBuffer.h
ex/Token.h
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ema/ASTStreamer.h
0bc735ffcfb223c0186419547abaa5c84482663e 29-Dec-2007 Chris Lattner <sabre@nondot.org> Don't attribute in file headers anymore. See llvmdev for the
discussion of this change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45410 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/ASTConsumer.h
ST/ASTContext.h
ST/Builtins.h
ST/CFG.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
ST/ExprCXX.h
ST/PrettyPrinter.h
ST/RecordLayout.h
ST/Stmt.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
ST/StmtVisitor.h
ST/TargetBuiltins.h
ST/TranslationUnit.h
ST/Type.h
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/LocalCheckers.h
nalysis/PathSensitive/SimulEngine.h
nalysis/PathSensitive/SimulGraph.h
nalysis/PathSensitive/SimulVertex.h
nalysis/PathSensitive/StateVariant.h
nalysis/ProgramEdge.h
nalysis/Support/ExprDeclBitVector.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
asic/Diagnostic.h
asic/FileManager.h
asic/IdentifierTable.h
asic/LangOptions.h
asic/SourceLocation.h
asic/SourceManager.h
asic/TargetInfo.h
asic/TokenKinds.h
odeGen/ModuleBuilder.h
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroExpander.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/Pragma.h
ex/Preprocessor.h
ex/ScratchBuffer.h
ex/Token.h
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
ewrite/RewriteRope.h
ewrite/Rewriter.h
ema/ASTStreamer.h
e9064e7d2ba2a867fdcc334fa5dd9b9b5c70cf67 29-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Fix an error in the base/idx accessors for ArraySubscriptExpr's that crops up with vector element access.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
33fd5c124aac15bab7cad95e4e0e7761356d2c06 29-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Fix an error in the base/idx accessors for ArraySubscriptExpr's that crops up with vector element access.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45390 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c257c0df2ed131339c32d69f8c0da15628acef1f 28-Dec-2007 Chris Lattner <sabre@nondot.org> Add accessors + iterator interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d18b3299debb7b0dbd9d34d9369189dc98c87f53 28-Dec-2007 Chris Lattner <sabre@nondot.org> Add accessors + iterator interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45378 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d57e9bfcceb57e62a46416e6154099c4102ed99c 22-Dec-2007 Ted Kremenek <kremenek@apple.com> Added (incomplete) implementation of SimulEngine, a worklist-based dataflow
solver for path-sensitive, intra-procedural analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulEngine.h
nalysis/PathSensitive/SimulGraph.h
1cbb58f1e846f282679ce314307753dc1a76bb77 22-Dec-2007 Ted Kremenek <kremenek@apple.com> Added (incomplete) implementation of SimulEngine, a worklist-based dataflow
solver for path-sensitive, intra-procedural analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45306 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulEngine.h
nalysis/PathSensitive/SimulGraph.h
050377b183597320de429520595686068b85fbe0 22-Dec-2007 Ted Kremenek <kremenek@apple.com> Converted Loc back to being of type ProgramEdge. Ultimately I believe we want
the ability to refer to the vertex set for all the vertices associated with an
edge. This will allow some nice queries over the graph, and (hopefully) will
reduce the memory footprint of SimulVertex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45299 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
30f790afe175c3d5dba7acd8bb31997da8773add 22-Dec-2007 Ted Kremenek <kremenek@apple.com> Converted Loc back to being of type ProgramEdge. Ultimately I believe we want
the ability to refer to the vertex set for all the vertices associated with an
edge. This will allow some nice queries over the graph, and (hopefully) will
reduce the memory footprint of SimulVertex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45299 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
e33b9c1b7bf714bb803dcd6bf724df9e43cd41e9 22-Dec-2007 Ted Kremenek <kremenek@apple.com> Added preliminary implementation of SimulGraph, which represents the
intra-procedural supergraph of a path-sensitive dataflow analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
0b506a11425daafe85ada555dd37da2d9fea76f0 22-Dec-2007 Ted Kremenek <kremenek@apple.com> Added preliminary implementation of SimulGraph, which represents the
intra-procedural supergraph of a path-sensitive dataflow analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45298 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulGraph.h
63376be78abc208c4a9b3cb03cec360b87df0b96 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Changed "Location" from "ProgramEdge" to "ProgramEdge&" (slightly more svelt
memory representation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45297 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
9db9bd9850aac7c90fc902307a742400c4d72d10 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Changed "Location" from "ProgramEdge" to "ProgramEdge&" (slightly more svelt
memory representation).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45297 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
e74bc483d75be1065b81c87a11ff518316e6a0fe 21-Dec-2007 Ted Kremenek <kremenek@apple.com> SimulVertex now subclasses FoldingSetNode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45296 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
5facce90d015c3785d8052990ca88b7e4bf77892 21-Dec-2007 Ted Kremenek <kremenek@apple.com> SimulVertex now subclasses FoldingSetNode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45296 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
3752e70ab66261a1be0cb777256b5b10a49390b9 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Added Profile method to SimulVertex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45295 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
a3b859120923648dc91a0bc7e7c4e471abe10cef 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Added Profile method to SimulVertex.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45295 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/SimulVertex.h
cdf8e84f5df032b9d47792ab88e91055228aa0a4 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Directory restructing of Analysis files.

Created include/clang/Analysis/Analyses directory.
- Moved LiveVariables.h and UninitializedValues.h into this dir.

Moved ExprDeclBitVector.h into Analysis/Support.

Updated all clients who use these headers to reflect the new paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/ExprDeclBitVector.h
nalysis/LiveVariables.h
nalysis/Support/ExprDeclBitVector.h
nalysis/UninitializedValues.h
cf6e41baf2b23b6b56f0f79fff5554b7745737ac 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Directory restructing of Analysis files.

Created include/clang/Analysis/Analyses directory.
- Moved LiveVariables.h and UninitializedValues.h into this dir.

Moved ExprDeclBitVector.h into Analysis/Support.

Updated all clients who use these headers to reflect the new paths.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Analyses/LiveVariables.h
nalysis/Analyses/UninitializedValues.h
nalysis/ExprDeclBitVector.h
nalysis/LiveVariables.h
nalysis/Support/ExprDeclBitVector.h
nalysis/UninitializedValues.h
5cc97646e41a6791beb443ad308cd0dca942e800 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed file AnalysisVertex.h to SimulVertex.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisVertex.h
nalysis/PathSensitive/SimulVertex.h
7bb371da749a414c301562eee9d18da4d52aec86 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed file AnalysisVertex.h to SimulVertex.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45291 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisVertex.h
nalysis/PathSensitive/SimulVertex.h
682d7d6cff97acbe9bfae86b1130cd56b9f5c049 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed class AnalysisVertex to SimulVertex


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45290 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisVertex.h
b3144968b6a99258327eef453b7d3e151e32b6ca 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed class AnalysisVertex to SimulVertex


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45290 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisVertex.h
cd71bf4d38c564db4147a53aad25adbc82406436 21-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> More objective-c type analysis. This time involving objective types
of conforming protocols (or not).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45276 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
d0c89c4609494e4aae0afb7704c35c0e9523f532 21-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> More objective-c type analysis. This time involving objective types
of conforming protocols (or not).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45276 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
04f2dcf671b4524d0412699220a9048b223d6752 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Added class "StateVariant", a template class which serves to wrap states that
are generated by transfer functions used by the path-sensitive dataflow solver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45273 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/StateVariant.h
eaac0b0d727a7fd5df08bd548ffdcfd354b91480 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Added class "StateVariant", a template class which serves to wrap states that
are generated by transfer functions used by the path-sensitive dataflow solver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45273 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/StateVariant.h
5caa75781d5cb1cb42999d8a8ff68f4376b200ec 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Added initial implementation of "AnalysisVertex", a class to represent a
location*state vertex in an intra-procedural, path-sensitive dataflow
supergraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisVertex.h
2a11a5f13aec18eb8c076bc2c3249afc932c921a 21-Dec-2007 Ted Kremenek <kremenek@apple.com> Added initial implementation of "AnalysisVertex", a class to represent a
location*state vertex in an intra-procedural, path-sensitive dataflow
supergraph.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45272 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/AnalysisVertex.h
8782907922eb4311cd1ae35703695f9499a14362 20-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to do type-checking for objctive-c's object types.
More is yet to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c395bda57a0b2f6d8433a462caa780a7dcb7307b 20-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to do type-checking for objctive-c's object types.
More is yet to come.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45263 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3900a1d8cc0ee7815f928dd588032d5b29166269 20-Dec-2007 Chris Lattner <sabre@nondot.org> add accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
18b2515e1bf8c86a4900792692e42fe1296be28d 20-Dec-2007 Chris Lattner <sabre@nondot.org> add accessor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45262 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0fcdfd48a9c2ed3903f8eb70316ec506a9c821cf 20-Dec-2007 Seo Sanghyeon <sanxiyn@gmail.com> Add newline

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45257 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
7360f9f2a5445064ae9728d19245104600886235 20-Dec-2007 Seo Sanghyeon <sanxiyn@gmail.com> Add newline

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45257 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
73bb782e7409719aa45626220429204e3847dda3 20-Dec-2007 Chris Lattner <sabre@nondot.org> Fix trivial self-infinite-recursion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
7697b5c5a918729718da9ecd9e374bbd973a69e9 20-Dec-2007 Chris Lattner <sabre@nondot.org> Fix trivial self-infinite-recursion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45248 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5319d9cf6aa4db4992d7c426d0fabfec0a49011a 20-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> More objective-c typechecking stuff. This is work in progress and more patches
are due to arrive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7359f04a80cae1dcbd944ee07eb50a27ce7f5077 20-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> More objective-c typechecking stuff. This is work in progress and more patches
are due to arrive.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45244 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c338e4cc44f426e11866caf0d8409d2684851454 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed "FileEntry::getDev()" to "FileEntry::getDevice()"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
7f1752797d4a4344b539ad9452471871c0eec64b 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed "FileEntry::getDev()" to "FileEntry::getDevice()"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45240 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
7c8d1afe531dc6c6a8d88fb161a84c7eb2730f01 20-Dec-2007 Chris Lattner <sabre@nondot.org> implement semantic analysis for __builtin_islessequal and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
1b9a0793955070738cac6f04b5abe9496be9b317 20-Dec-2007 Chris Lattner <sabre@nondot.org> implement semantic analysis for __builtin_islessequal and friends.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45239 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d41db190ddfe4eecc2c97da9a4c50253beec1ad9 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Added method getFileEntryForID() to SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
97394f23ca55c35beaa1538e446e5154f311f49c 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Added method getFileEntryForID() to SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45237 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
5333a6b1be5e1df8217a1997cc1958efd7d2f0dc 20-Dec-2007 Chris Lattner <sabre@nondot.org> Add iterator interface to function/method parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45233 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
d57f635d520e8cb5b93d3d770ff58db06c62de54 20-Dec-2007 Chris Lattner <sabre@nondot.org> Add iterator interface to function/method parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45233 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
6d1d3ac57f9ed8cad6755ab73b201e85ef8b3fda 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Added methods createMainFileID() and createMainFileIDForMemBuffer() to
SourceManager to allow SourceManager to directly intern the MainFileID
when it is created. Removed setMainFileID().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
1036b68525f39cb69ac22c679ed440acd8392a16 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Added methods createMainFileID() and createMainFileIDForMemBuffer() to
SourceManager to allow SourceManager to directly intern the MainFileID
when it is created. Removed setMainFileID().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45231 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
17861c5ed9cb5eab947d99520a6ef9c706e65dbc 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Interned MainFileID within SourceManager. Since SourceManager is referenced by
both Preprocessor and ASTContext, we no longer need to explicitly pass
MainFileID around in function calls that also pass either Preprocessor or
ASTContext. This resulted in some nice cleanups in the ASTConsumers and the
driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45228 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ex/Preprocessor.h
ema/ASTStreamer.h
95041a2029a069386ee67439f6d0fb524a9d184f 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Interned MainFileID within SourceManager. Since SourceManager is referenced by
both Preprocessor and ASTContext, we no longer need to explicitly pass
MainFileID around in function calls that also pass either Preprocessor or
ASTContext. This resulted in some nice cleanups in the ASTConsumers and the
driver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45228 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ex/Preprocessor.h
ema/ASTStreamer.h
0fd6e49fb57aea918976cef1119797ba2248c79b 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Typo fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45227 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
7dcc968f17a6ff9088c9651dddccc8d4025a1271 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Typo fix.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45227 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
2578dd0ff5f589c79bfb55d4c1a7bddc2c69ac53 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Added storage of the FileID of the the main source file of a translation unit
in SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45225 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
76edd0e4ae0592a7225d50d0bad6732ac64dca2a 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Added storage of the FileID of the the main source file of a translation unit
in SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45225 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
74273de1e1c97b860e811d4917f11e1bfe6e0120 19-Dec-2007 Steve Naroff <snaroff@apple.com> Various tweaks to the get/lookup instance/class method API's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
94a5c3334bba3cc8cd1da85ba1118bc2c080add9 19-Dec-2007 Steve Naroff <snaroff@apple.com> Various tweaks to the get/lookup instance/class method API's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45224 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d890f6a31b4814021ccaf8f2d82667a061b23bd5 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed "SourceFile" from TranslationUnit. This same information will (soon)
be available by querying the SourceManager within the ASTContext referenced by
the TranslationUnit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
fdfc198013c372c41669957639eac56d27fd57f4 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed "SourceFile" from TranslationUnit. This same information will (soon)
be available by querying the SourceManager within the ASTContext referenced by
the TranslationUnit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45223 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
c0f6b22f9985a19805ee41c9f2a551340886c742 19-Dec-2007 Chris Lattner <sabre@nondot.org> Add support for #pragma mark, which shouldn't warn about bogus tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45212 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
2243449253475574fc6f14986ff8f7fce5d46799 19-Dec-2007 Chris Lattner <sabre@nondot.org> Add support for #pragma mark, which shouldn't warn about bogus tokens.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45212 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ab74937a9a27abd5b5ca8456e0bd4f19f1f76a42 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed storing inode and device number in TranslationUnit.

Added "SourceFile" string to TranslationUnit to record corresponding
source file.

Updated serialization of TranslationUnits and logic in the driver to
correctly pass the source file information to the serializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
63ea863d4715249551ab10ae207386ddc383419e 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed storing inode and device number in TranslationUnit.

Added "SourceFile" string to TranslationUnit to record corresponding
source file.

Updated serialization of TranslationUnits and logic in the driver to
correctly pass the source file information to the serializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
89296c5e0beffc12f0e604716a53f2b19ed4903f 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Updated locations of TranslationUnit.[cpp,h] in XCode project.
Added AST/ASTConsumer.cpp to XCode project.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45206 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
9dadf5a3ffe04bfe7c00668557a947b5d474268b 19-Dec-2007 Ted Kremenek <kremenek@apple.com> Updated locations of TranslationUnit.[cpp,h] in XCode project.
Added AST/ASTConsumer.cpp to XCode project.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45206 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
957442db1d23f62ee2d0d71310bee240606b267d 19-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> This patch concludes implementation of dynamic objective-c type qualified by
protocol list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
411f373abf5692a1bd90d35a139d955fa67ae82d 19-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> This patch concludes implementation of dynamic objective-c type qualified by
protocol list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
e4e5e26d50a11cd848c54028599f3fdebfafa96b 19-Dec-2007 Steve Naroff <snaroff@apple.com> Emit errors when attempting to rewrite ObjC expressions that originate from a macro expansion.

We plan on fixing this and removing this restriction after the break...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45200 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5ca4020c6e1e4f8d81cf4c2890ca8a7c0dd28d56 19-Dec-2007 Steve Naroff <snaroff@apple.com> Emit errors when attempting to rewrite ObjC expressions that originate from a macro expansion.

We plan on fixing this and removing this restriction after the break...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45200 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6ad7e885c1ef78f9d4ff957b4dd85047e889ea71 19-Dec-2007 Chris Lattner <sabre@nondot.org> Implement C99 6.7.5.3p1


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cd8812948bc8a65dcf10c541c1775e5ba44def6c 19-Dec-2007 Chris Lattner <sabre@nondot.org> Implement C99 6.7.5.3p1


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45188 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c94f9092eb2032a21aad48b454260483eae55c35 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Refactored inode and device number into FileEntry, and changed the
ADT storing FileEntry's in FileManager from a map to a set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
bca6d125c77c93c7fa41798c15348175a6bb1267 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Refactored inode and device number into FileEntry, and changed the
ADT storing FileEntry's in FileManager from a map to a set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45184 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
eccf070720b0db3d1ab9b55aca49347b927afda5 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Moved ReadBitcodeFile and EmitBitcodeFile out of TranslationUnit and made them
the standalone functions ReadASTBitcodeFile and EmitASTBitcodeFile
respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
dca29279d724a5a84343d27644e7ba172570079f 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Moved ReadBitcodeFile and EmitBitcodeFile out of TranslationUnit and made them
the standalone functions ReadASTBitcodeFile and EmitASTBitcodeFile
respectively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
c863207fa9c8b0bea3b99f381914db3c8e2a0b1d 18-Dec-2007 Steve Naroff <snaroff@apple.com> Fix serious regression with ObjcInterfaceDecl. Now that we are storing -1 to mean undefined, we need to change the respective getters from unsigned->int.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
49747fdd0a05dfc1f15910267d6f86dfe83e6fc8 18-Dec-2007 Steve Naroff <snaroff@apple.com> Fix serious regression with ObjcInterfaceDecl. Now that we are storing -1 to mean undefined, we need to change the respective getters from unsigned->int.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3f08f18630d9a41a933051510f9dd74604b1b43e 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Moved TranslationUnit.h to include path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
9765ec210b8df446fd591ebbac848d805f7d4836 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Moved TranslationUnit.h to include path.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45176 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TranslationUnit.h
dcb2b1e489948a570ee07ca65e12d42edffa20ef 18-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Refactoring work. ObjcQualifiedIdType is now derived from 'Type'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45174 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d58fabf7ed279be18a5e82617f809c9deff9be67 18-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Refactoring work. ObjcQualifiedIdType is now derived from 'Type'.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45174 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
3e2dcaac0891017f356faeda2945cc497ed4b299 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Added to FileEntry a pointer to the <dev_t,ino_t> pair for the file, and
accessors to FileEntry to query these values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45171 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
da9954400aab56bc3df60eb1b7be2489121c6166 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Added to FileEntry a pointer to the <dev_t,ino_t> pair for the file, and
accessors to FileEntry to query these values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45171 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
0448b4f2fecceebc0bddd67fe0f2c89afe604fdf 18-Dec-2007 Chris Lattner <sabre@nondot.org> remove the loc argument to Type::isConstantSizeType, which isn't useful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
9bfa73c5ab7bf4b0e749d04f29da6884e8d5bd9f 18-Dec-2007 Chris Lattner <sabre@nondot.org> remove the loc argument to Type::isConstantSizeType, which isn't useful.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45155 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6df9359cad97dc722c01e3ddbc6686ebcf21189c 18-Dec-2007 Chris Lattner <sabre@nondot.org> Fix const propagation bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6e999782a102eb444cfc7b8eaa64f84911fdcf4f 18-Dec-2007 Chris Lattner <sabre@nondot.org> Fix const propagation bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45152 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f258a0f7ad1d658c249488382d34f21c35f390e2 18-Dec-2007 Steve Naroff <snaroff@apple.com> Add __private_extern__ keyword and recognize it. Added a FIXME to indicate there is still work to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
8d54bf2e280bdfc917e7faacbf99ae477d8aa6db 18-Dec-2007 Steve Naroff <snaroff@apple.com> Add __private_extern__ keyword and recognize it. Added a FIXME to indicate there is still work to do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45135 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
78ee226e9da7aa94293501521d0e3ecc6c2269c5 17-Dec-2007 Chris Lattner <sabre@nondot.org> implement enough helper functions to successfully dump out the
contents of the header map. Look ma, no assumptions about input data
here (aka, corrupt header maps can't crash the compiler - crazy thought).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45122 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
1adbf6349d4701771a814542008386ad39e3d614 17-Dec-2007 Chris Lattner <sabre@nondot.org> implement enough helper functions to successfully dump out the
contents of the header map. Look ma, no assumptions about input data
here (aka, corrupt header maps can't crash the compiler - crazy thought).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45122 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
e76e8416ff29ee39140b64ed47731237c67434ae 17-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to implemented objective-c's dynamic object pointer qualified with
the protocol list (id<P,...> types).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45121 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
c569249ca0ab755ac79d8cbbfcb2bcae19743624 17-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to implemented objective-c's dynamic object pointer qualified with
the protocol list (id<P,...> types).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45121 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
22387e196a19662752e52789a202e2c10ec98ed6 17-Dec-2007 Chris Lattner <sabre@nondot.org> Finish hooking up the scaffolding for headermaps. They can now do everything
except resolve lookups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45111 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
98751314c4ba596860b574c3d3551030f01ff7d8 17-Dec-2007 Chris Lattner <sabre@nondot.org> Finish hooking up the scaffolding for headermaps. They can now do everything
except resolve lookups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45111 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
9af36d3a23be82668281ebbf9e3030adc6193b3d 17-Dec-2007 Chris Lattner <sabre@nondot.org> Start reading the headermap header, drop the 'errorstr' argument to
the create method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45109 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
ex/HeaderSearch.h
1bfd4a6313ea8ebf710c46c10111732cc65d51f6 17-Dec-2007 Chris Lattner <sabre@nondot.org> Start reading the headermap header, drop the 'errorstr' argument to
the create method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45109 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
ex/HeaderSearch.h
1df68f9c8ca691c7341625fa08b673ae52fbecd0 17-Dec-2007 Chris Lattner <sabre@nondot.org> Sink getName into DirectoryLookup to simplify the client in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45106 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
3af66a9335966e9114e660cf7aafbb9272190ec2 17-Dec-2007 Chris Lattner <sabre@nondot.org> Sink getName into DirectoryLookup to simplify the client in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45106 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
6707f27fc045df4c44024cd0290dd1f68f9ab06c 17-Dec-2007 Chris Lattner <sabre@nondot.org> add headermap.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45095 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
0f441ab20ccd8d21fd3d034de866bfcaf6cb72b2 17-Dec-2007 Chris Lattner <sabre@nondot.org> add headermap.cpp


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45095 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
61349712347a36a87257625dcb4f830a59ac1f65 17-Dec-2007 Chris Lattner <sabre@nondot.org> finish stubbing out support for HeaderMap. Now we just need an implementation!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45094 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
b09e71fd52d0e7fdf3e88b1df72ea0cee5d9b37b 17-Dec-2007 Chris Lattner <sabre@nondot.org> finish stubbing out support for HeaderMap. Now we just need an implementation!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45094 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderMap.h
7d0ad4a8cb4d596bef4ffb6f8e63afe1a9161aa8 17-Dec-2007 Chris Lattner <sabre@nondot.org> refactor an better comment framework lookup code. This moves it from
HeaderSearch into DirectoryLookup, as a particular framework lookup is
specific to the directory we are currently querying.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45093 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderSearch.h
afded5bbb85607023c710c3d6a96c372feb84d7f 17-Dec-2007 Chris Lattner <sabre@nondot.org> refactor an better comment framework lookup code. This moves it from
HeaderSearch into DirectoryLookup, as a particular framework lookup is
specific to the directory we are currently querying.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45093 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderSearch.h
b74267886889242367f2665a91529b097554ac3a 17-Dec-2007 Chris Lattner <sabre@nondot.org> as it turns out, frameworks and headermaps are orthogonal. Make this so in
the internal representation. This also fixes a bug where -I foo -F foo would
not search foo as both a normal and framework include dir.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45092 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
df772336655fd84ee2c0ce514c93cef0b29d60d4 17-Dec-2007 Chris Lattner <sabre@nondot.org> as it turns out, frameworks and headermaps are orthogonal. Make this so in
the internal representation. This also fixes a bug where -I foo -F foo would
not search foo as both a normal and framework include dir.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45092 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
cf33e93a9f9d6d04d0cfc3b565c395a501bc5b4d 17-Dec-2007 Chris Lattner <sabre@nondot.org> teach RemoveDuplicates about header maps.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45090 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
b94c707350ee2099996a80c8d97f28b61ff98c7b 17-Dec-2007 Chris Lattner <sabre@nondot.org> teach RemoveDuplicates about header maps.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45090 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
c2043bffa47bf90087652a673efa22aa1f5c4500 17-Dec-2007 Chris Lattner <sabre@nondot.org> Step #1 in adding headermap support to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45089 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
822da61b74ce14e89b3fa8774db18c833aa5748b 17-Dec-2007 Chris Lattner <sabre@nondot.org> Step #1 in adding headermap support to clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45089 91177308-0d34-0410-b5e6-96231b3b80d8
ex/DirectoryLookup.h
ex/HeaderMap.h
ex/HeaderSearch.h
6d7ea52e0877109e4be0969d83b6071fbc314529 15-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed "isSizeOfExpr" mode from StmtIterator. It turned out not to be
so useful and introduced a few bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
f816f77480e70caadfdbd741cf17d84a6be30b71 15-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed "isSizeOfExpr" mode from StmtIterator. It turned out not to be
so useful and introduced a few bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
e726eb4f743e253c666958e2517479e305e9cfcb 15-Dec-2007 Ted Kremenek <kremenek@apple.com> Added "mode" to StmtIterator to record if the expression being iterated
over is the subexpression of a sizeof(expression). Different clients
will wish to handle iteration over such subexpressions differently, and can
now easily query if they are iterating over such statements using the
StmtIterator's inSizeOfExpr().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45047 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
b51d2b2d5497693783338c58dd778b6427e85ba7 15-Dec-2007 Ted Kremenek <kremenek@apple.com> Added "mode" to StmtIterator to record if the expression being iterated
over is the subexpression of a sizeof(expression). Different clients
will wish to handle iteration over such subexpressions differently, and can
now easily query if they are iterating over such statements using the
StmtIterator's inSizeOfExpr().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45047 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
2ce399af4d1d1e32b32241b284f41484d810ffa6 15-Dec-2007 Steve Naroff <snaroff@apple.com> - Remove getInstanceMethods/getClassMethods API on ObjcInterfaceDecl, ObjcProtocolDecl, and ObjcCategoryDecl. These methods are replaced by the respective iterators on each class.
- Add getInstanceMethodForSelector to ObjcInterfaceDecl, ObjcProtocolDecl, and ObjcCatgoryDecl. This hook will do a "shallow" lookup. This is a convenience method that reducing some of the iterator usage.
- Various changes to convert all clients to the above API's...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
58dbdeb69c063f82d644504fc638120198f7fad2 15-Dec-2007 Steve Naroff <snaroff@apple.com> - Remove getInstanceMethods/getClassMethods API on ObjcInterfaceDecl, ObjcProtocolDecl, and ObjcCategoryDecl. These methods are replaced by the respective iterators on each class.
- Add getInstanceMethodForSelector to ObjcInterfaceDecl, ObjcProtocolDecl, and ObjcCatgoryDecl. This hook will do a "shallow" lookup. This is a convenience method that reducing some of the iterator usage.
- Various changes to convert all clients to the above API's...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45046 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b7cf09564c2681feac87ffa509dab98174e6ea06 14-Dec-2007 Ted Kremenek <kremenek@apple.com> Added support to StmtIterator to traverse the size expression of a VLA type
declared in a sizeof. For example:

sizeof(int[foo()]);

the expression "foo()" is an expression that is executed during the evaluation
of sizeof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
699e9fbeae34cdd651b8e6308649c8939f090cbd 14-Dec-2007 Ted Kremenek <kremenek@apple.com> Added support to StmtIterator to traverse the size expression of a VLA type
declared in a sizeof. For example:

sizeof(int[foo()]);

the expression "foo()" is an expression that is executed during the evaluation
of sizeof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45043 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
0c2f214d3500d1d080afa36b96db40407b91e70d 13-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to make ObjcQualifiedInterfaceType inherit ObjcInterfaceType



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
06cef25d0b8c383217413f061441c7ea40d1052b 13-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to make ObjcQualifiedInterfaceType inherit ObjcInterfaceType



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45014 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
54e10418b0a93e9c5e902254cae018f6990b72d5 13-Dec-2007 Chris Lattner <sabre@nondot.org> add some builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
99852af849df426018ba84d28b3a8f621dbf9e60 13-Dec-2007 Chris Lattner <sabre@nondot.org> add some builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
e33928b6572c72f7fe87b57db4f8ae3ed7baa9f1 13-Dec-2007 Ted Kremenek <kremenek@apple.com> Updated serialization of ParmVarDecl to serialize out objcDeclQualifier.
Previously this field was serialized out in VarDecl (a parent class), but
now the field belongs to ParmVarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
137bd91e8ef5fb407dce910704101bf730b13696 13-Dec-2007 Ted Kremenek <kremenek@apple.com> Updated serialization of ParmVarDecl to serialize out objcDeclQualifier.
Previously this field was serialized out in VarDecl (a parent class), but
now the field belongs to ParmVarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7208a4b192e4ea66009267cdc56cc0b3ba77cac3 13-Dec-2007 Chris Lattner <sabre@nondot.org> add a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44976 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
53702cd401b8fdca985aede7732c2f6a82ad9b1c 13-Dec-2007 Chris Lattner <sabre@nondot.org> add a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44976 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
2e1eb2049a9823869b8d96ea400c9098acd85509 13-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Moved ObjcDeclQualifier to ParmVarDecl from VarDecl.
Ted, this change necessitates (de)/serialization of ParmVarDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
de7b4cd12d0d1d3bb781a6633c46131747c8dc27 13-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Moved ObjcDeclQualifier to ParmVarDecl from VarDecl.
Ted, this change necessitates (de)/serialization of ParmVarDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44972 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d7f64cde88c04e9f4a2c6295bf797fa31921296c 12-Dec-2007 Ted Kremenek <kremenek@apple.com> TargetInfo no longer includes a reference to SourceManager.

Moved all clients of Diagnostics to use FullSourceLoc instead of SourceLocation.
Added many utility methods to FullSourceLoc to provide shorthand for:

FullLoc.getManager().someMethod(FullLoc.getLocation());

instead we have:

FullLoc.someMethod();

Modified TextDiagnostics (and related classes) to use this short-hand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
asic/SourceLocation.h
asic/TargetInfo.h
arse/DeclSpec.h
9c728dc4d8da89c73fcae74c9e72d7a83ffd7b6d 12-Dec-2007 Ted Kremenek <kremenek@apple.com> TargetInfo no longer includes a reference to SourceManager.

Moved all clients of Diagnostics to use FullSourceLoc instead of SourceLocation.
Added many utility methods to FullSourceLoc to provide shorthand for:

FullLoc.getManager().someMethod(FullLoc.getLocation());

instead we have:

FullLoc.someMethod();

Modified TextDiagnostics (and related classes) to use this short-hand.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
asic/SourceLocation.h
asic/TargetInfo.h
arse/DeclSpec.h
239192354804a1a9a231fe6b7d2b4f0eb164743b 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed "NULL" from default construction of FullSourceLoc (compilation errors on
some systems).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
21584fe015705ca1ea2d852b7ad188c4baf9ffcf 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed "NULL" from default construction of FullSourceLoc (compilation errors on
some systems).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44953 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
c92da85bbc99797721d80dcfa6c9914e78a76c67 12-Dec-2007 Ted Kremenek <kremenek@apple.com> constified getFullLoc().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44951 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
e0579f08d4a4ae57971b74ca1863106df4c6399f 12-Dec-2007 Ted Kremenek <kremenek@apple.com> constified getFullLoc().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44951 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
6bdf7e428e37a6274d20f0776e0893c9e753e1c3 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Changes to FullSourceLoc:
- Added cstor that takes no arguments to create an "invalid" location.
- Removed non-const version of getSourceManager().
- Renamed getSourceManager() to getManager.
- Remover operator SourceLocatio().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
1b924fd6a9730e7de1b175fb82434de6e7e0f0f8 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Changes to FullSourceLoc:
- Added cstor that takes no arguments to create an "invalid" location.
- Removed non-const version of getSourceManager().
- Renamed getSourceManager() to getManager.
- Remover operator SourceLocatio().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44950 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
718ba816fc383128aaa39f001937b42d8c128275 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed getFullSourceLoc() -> getFullLoc().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44949 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
2a2da1d0522b59c8c56f97a8607106be977a14af 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed getFullSourceLoc() -> getFullLoc().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44949 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
db87dfe7db4de738a4a6ec3e37b447a5535a43c4 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Added method: Preprocessor::getFullSourceLoc. Used by clients of Preprocessor
to get a FullSourceLoc from a SourceLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44948 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ea8646993741739d8a04d67396fe466dcc3a104f 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Added method: Preprocessor::getFullSourceLoc. Used by clients of Preprocessor
to get a FullSourceLoc from a SourceLocation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44948 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
ae9a97798bba8a1ddd7cbd50ede549515ad6bd2d 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed FullContextSourceLocation to FullSourceLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
e03a2f39accad260c021b7f24f082363578e7a93 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed FullContextSourceLocation to FullSourceLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44947 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
2e941fa862f9cc78fa51a93a6cde9ec11751d62e 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Added utility static method to FullContextSourceLocation
for creating "invalid" location objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
b71d5f8111d750ba4b3c70aee45bf04a081c6329 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Added utility static method to FullContextSourceLocation
for creating "invalid" location objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44946 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
847de6f7b3aec443adc2d093efde67bae54c770a 12-Dec-2007 Chris Lattner <sabre@nondot.org> make it a bit more clear in what way the ivar is consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44945 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0e391052d74eaff4de2ac15a7194673d39444b5b 12-Dec-2007 Chris Lattner <sabre@nondot.org> make it a bit more clear in what way the ivar is consistent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44945 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c26188aa9644a3575a86966d675972577ca1bde2 12-Dec-2007 Chris Lattner <sabre@nondot.org> add an ivar_size() method that never returns -1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
5564e07af5e62875f3b83fc2e5a8823588b5adea 12-Dec-2007 Chris Lattner <sabre@nondot.org> add an ivar_size() method that never returns -1.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44944 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9efc035aedaabaddf1a58ca0b65da129d107c857 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Constified a predicate method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
25bb23aa20b69b107bbb4526b2d156599c2434ca 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Constified a predicate method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
e1c6ea71e47f9f28e2ca7702ebae304abcff5c23 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Added class FullContextSourceLocation: a tuple class that
contains both a SourceLocation and its associated
SourceManager. This class is useful for argument passing to
functions that expect both objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44942 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
a9793ed6a77946c988ee38035baf4cde6ff2e864 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Added class FullContextSourceLocation: a tuple class that
contains both a SourceLocation and its associated
SourceManager. This class is useful for argument passing to
functions that expect both objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44942 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
38591a27d9bde16a0c337d5400fb146fca964e57 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Moved construction of TargetInfo objects out of the Driver
and into the "Basic" library. TargetInfo objects are now
constructed from triples by calling the static method
TargetInfo::CreateTargetInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
bbced580c92afa09cd4423a9bdc90ff61cb1e79a 12-Dec-2007 Ted Kremenek <kremenek@apple.com> Moved construction of TargetInfo objects out of the Driver
and into the "Basic" library. TargetInfo objects are now
constructed from triples by calling the static method
TargetInfo::CreateTargetInfo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44940 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
69b38e8c570cf37dac82e9cc0c735f12b9bec3f8 12-Dec-2007 Chris Lattner <sabre@nondot.org> handle the -1'ness of undefined lists


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
23c3bb768fd3eb24ff1a7402856405129afac0e3 12-Dec-2007 Chris Lattner <sabre@nondot.org> handle the -1'ness of undefined lists


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9d76c72cd3748d1b1e105129614220cea8d665af 12-Dec-2007 Chris Lattner <sabre@nondot.org> unbreak the build. I'm still working on test failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44938 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4c52509ffb9fdd6c93aa7b50812e316f1d920a26 12-Dec-2007 Chris Lattner <sabre@nondot.org> unbreak the build. I'm still working on test failures.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44938 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c7b06750b64b3898d5bcbaf68dcdd9ba0aba9f40 12-Dec-2007 Chris Lattner <sabre@nondot.org> more cleanups changing things like getInstanceVariables to iterators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
be6df088d69bca0e99c7845a6cd8c1ca85034f31 12-Dec-2007 Chris Lattner <sabre@nondot.org> more cleanups changing things like getInstanceVariables to iterators.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
dea5bece2eca7fcfa93656588cf6d5535fb65897 12-Dec-2007 Chris Lattner <sabre@nondot.org> resolve some fixmes and clean up some code by eliminating the get*Vars apis to some classes and use iterators instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44927 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ab4c4d5e5ececa77aae7e291fafcba3049319cdc 12-Dec-2007 Chris Lattner <sabre@nondot.org> resolve some fixmes and clean up some code by eliminating the get*Vars apis to some classes and use iterators instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44927 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ac9ab53d381740181c97506d8a1c95b11d9bef1f 12-Dec-2007 Chris Lattner <sabre@nondot.org> start cleaning up interfaces for objc bits and pieces by switching to an
iterator interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0157c5144513438bb74aebf50d18f95df4104acb 12-Dec-2007 Chris Lattner <sabre@nondot.org> start cleaning up interfaces for objc bits and pieces by switching to an
iterator interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44926 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ddd3e63a9b951abcd6b2731d79e3902ab515e574 12-Dec-2007 Chris Lattner <sabre@nondot.org> Add ObjC parser support for concatenated ObjC strings. Note that
this is passed to sema and ignored there, so the second part of the
string will not make it into the AST. Passing to Fariborz to finish
Sema + AST construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
b3a99cd5bcaeff0c5ff6a60788b5eb68e52a3953 12-Dec-2007 Chris Lattner <sabre@nondot.org> Add ObjC parser support for concatenated ObjC strings. Note that
this is passed to sema and ignored there, so the second part of the
string will not make it into the AST. Passing to Fariborz to finish
Sema + AST construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
12519d477514bb7c7ff3431211f43d08e15e3966 12-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Implemented type checking for pointer of objects of protocol-qualified types.
Note that incompatible-protocol-qualified-types.m is currently failing. This is
unrelated to this patch and Steve is looking at the general problem of not reporting
incompitible pointer types in return stetement..


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4ffc54111fdc0baa45bb287f59774e06dea8caa4 12-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Implemented type checking for pointer of objects of protocol-qualified types.
Note that incompatible-protocol-qualified-types.m is currently failing. This is
unrelated to this patch and Steve is looking at the general problem of not reporting
incompitible pointer types in return stetement..


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44897 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
de79f79ec5c281d13b992494139ce25762afee65 11-Dec-2007 Ted Kremenek <kremenek@apple.com> Modified the internals of Diagnostic and DiagnosticClient to use
SourceManager*'s instead of SourceManager&'s. This allows the client specify a
NULL SourceManager when using a default constructed SourceLocation. Thus the
SourceManager can be NULL when the SourceLocation's isValid() == false.

The interface to most clients of Diagnostic remains the same.
Diagnostic::Report() is overload to either accept a SourceLocation and a
SourceManager&, or neither. Thus clients that do not have a SourceManager
cannot specify a SourceLocation.

Modified TextDiagnostics* to use this new interface.
Modified the driver to not passed in SourceManager when warning about "-I-".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
2eefd8657c233bc7c9330acfe475fc270bbe7cab 11-Dec-2007 Ted Kremenek <kremenek@apple.com> Modified the internals of Diagnostic and DiagnosticClient to use
SourceManager*'s instead of SourceManager&'s. This allows the client specify a
NULL SourceManager when using a default constructed SourceLocation. Thus the
SourceManager can be NULL when the SourceLocation's isValid() == false.

The interface to most clients of Diagnostic remains the same.
Diagnostic::Report() is overload to either accept a SourceLocation and a
SourceManager&, or neither. Thus clients that do not have a SourceManager
cannot specify a SourceLocation.

Modified TextDiagnostics* to use this new interface.
Modified the driver to not passed in SourceManager when warning about "-I-".


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44887 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b3ee1931bdd9322d3e29b7d104273eced454844c 11-Dec-2007 Ted Kremenek <kremenek@apple.com> Mega-patch: ripped SourceManager out of Diagnostic/DiagnosticClient. Now
SourceManager is passed by reference, allowing the SourceManager to be
associated with a specific translation unit, and not the entire execution
of the driver.

Modified all users of Diagnostics to comply with this new interface.

Integrated SourceManager as a member variable of TargetInfo. TargetInfo will
eventually be associated with a single translation unit (just like
SourceManager).

Made the SourceManager reference in ASTContext private. Provided accessor
getSourceManager() for clients to use instead. Modified clients to comply with
new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
asic/TargetInfo.h
arse/DeclSpec.h
7a9d49fd2bfac00e905b361ba76d26ab5b6c3b09 11-Dec-2007 Ted Kremenek <kremenek@apple.com> Mega-patch: ripped SourceManager out of Diagnostic/DiagnosticClient. Now
SourceManager is passed by reference, allowing the SourceManager to be
associated with a specific translation unit, and not the entire execution
of the driver.

Modified all users of Diagnostics to comply with this new interface.

Integrated SourceManager as a member variable of TargetInfo. TargetInfo will
eventually be associated with a single translation unit (just like
SourceManager).

Made the SourceManager reference in ASTContext private. Provided accessor
getSourceManager() for clients to use instead. Modified clients to comply with
new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44878 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/Diagnostic.h
asic/TargetInfo.h
arse/DeclSpec.h
9a3dedfe1e7680bd985a5e125b183136766cff94 11-Dec-2007 Chris Lattner <sabre@nondot.org> properly namespacify.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44845 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
fb344d3ddd538746be75941d50b78ff148441abc 11-Dec-2007 Chris Lattner <sabre@nondot.org> properly namespacify.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44845 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
1a4a74f4fe25144d11fb507a532dcf44196c1f9e 11-Dec-2007 Steve Naroff <snaroff@apple.com> Change err_undef_protocolref to warn_undef_protocolref (this is consistent with GCC).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44840 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
afedd225ffcbe39aee080ef7b7245d26dbb0ce58 11-Dec-2007 Steve Naroff <snaroff@apple.com> Change err_undef_protocolref to warn_undef_protocolref (this is consistent with GCC).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44840 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
962212dbd2a11bc4e6148681a6fad9a4dd75074a 11-Dec-2007 Ted Kremenek <kremenek@apple.com> Fixed bug in CFG::PopulateBlkExprMap where the ordering
between fetching the size of the expression map (for use as
the next integer id for an Expr*) and the creation of the
entry in the map could be non-deterministic. This could
cause the size of the map to be incremented prior to the
index being determine.

On Linux the map entry would be created first, causing the
map to the "size" to be incremented prior to it being
queried. On Mac OS X we had the reverse behavior. Now the
size is always queried prior to the new id being inserted
into the map.

This was the real cause of the bit-overrun triggered in
PR 1847:

http://llvm.org/bugs/show_bug.cgi?id=1847

Also reverted the change in patch 44813, which was a bogus
fix to this problem:

http://llvm.org/viewvc/llvm-project?rev=44813&view=rev


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44822 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
9a8385d6653a50169284fa031be287645ae4b114 11-Dec-2007 Ted Kremenek <kremenek@apple.com> Fixed bug in CFG::PopulateBlkExprMap where the ordering
between fetching the size of the expression map (for use as
the next integer id for an Expr*) and the creation of the
entry in the map could be non-deterministic. This could
cause the size of the map to be incremented prior to the
index being determine.

On Linux the map entry would be created first, causing the
map to the "size" to be incremented prior to it being
queried. On Mac OS X we had the reverse behavior. Now the
size is always queried prior to the new id being inserted
into the map.

This was the real cause of the bit-overrun triggered in
PR 1847:

http://llvm.org/bugs/show_bug.cgi?id=1847

Also reverted the change in patch 44813, which was a bogus
fix to this problem:

http://llvm.org/viewvc/llvm-project?rev=44813&view=rev


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44822 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
cb69fb7e1aa5ae6627e993c6b39fa3c66e0ea36c 10-Dec-2007 Steve Naroff <snaroff@apple.com> Add support for initializing char arrays from string literals.

Adapted from a patch by Anders Carlsson.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44816 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2fdc3749097a581567dbd9fe66c48c0458bd3e34 10-Dec-2007 Steve Naroff <snaroff@apple.com> Add support for initializing char arrays from string literals.

Adapted from a patch by Anders Carlsson.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44816 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c3ec0a785e2c1707def7be0c21c335f9edf29993 10-Dec-2007 Ted Kremenek <kremenek@apple.com> Fixed off-by-one-error when resizing Bitvectors used for
dataflow analysis over expressions and decls.

This should fix bug 1847:

http://llvm.org/bugs/show_bug.cgi?id=1847

Thanks to Török Edwin for providing a test case that
identified the problem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44813 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
76315cabb3d65145dd1f49696c725c04df378cd5 10-Dec-2007 Ted Kremenek <kremenek@apple.com> Fixed off-by-one-error when resizing Bitvectors used for
dataflow analysis over expressions and decls.

This should fix bug 1847:

http://llvm.org/bugs/show_bug.cgi?id=1847

Thanks to Török Edwin for providing a test case that
identified the problem.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44813 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
c55a288e30894fbe804aad36581df1d7bf327aed 10-Dec-2007 Anders Carlsson <andersca@mac.com> Revert change that broke the build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44808 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
05f753b996a6ea712ab06787190fb3287610fc59 10-Dec-2007 Anders Carlsson <andersca@mac.com> Revert change that broke the build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44808 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
e8b36072c2d8b1577f1d03c364492c7689207ddb 10-Dec-2007 Anders Carlsson <andersca@mac.com> Address comments from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
c099b9a94f52f9d2c9135cfcfbc32bc17401500b 10-Dec-2007 Anders Carlsson <andersca@mac.com> Address comments from Chris.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
7484e11f3388384be75237ca032161961a22bc93 10-Dec-2007 Anders Carlsson <andersca@mac.com> Forgot this file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44790 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
c916d70e0b65bbf6c2800e2818995ab1ce31388e 10-Dec-2007 Anders Carlsson <andersca@mac.com> Forgot this file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44790 91177308-0d34-0410-b5e6-96231b3b80d8
ST/TargetBuiltins.h
e1449c127b59bae6266b307ec551e67c9558967c 10-Dec-2007 Anders Carlsson <andersca@mac.com> Move target specific builtin IDs to TargetBuiltins.h so that they can be used by CGBuiltin.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PPCBuiltins.def
ST/X86Builtins.def
564f1de67d7ba43646b8740db86d6269e3dfbe0b 10-Dec-2007 Anders Carlsson <andersca@mac.com> Move target specific builtin IDs to TargetBuiltins.h so that they can be used by CGBuiltin.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44748 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PPCBuiltins.def
ST/X86Builtins.def
f6da2916d4691154254e51bf970ff336d25a8e95 09-Dec-2007 Chris Lattner <sabre@nondot.org> Implement correct semantic analysis of subtractions, implementing
C99 6.5.6.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6e4ab61300e77f3cc303046c0107b8a961d7dc66 09-Dec-2007 Chris Lattner <sabre@nondot.org> Implement correct semantic analysis of subtractions, implementing
C99 6.5.6.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44746 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c0f7c51c02d5ebf867b1794980d2b7f3a13c5633 09-Dec-2007 Chris Lattner <sabre@nondot.org> Add dumping support for locations, make -dumptokens print out the location
info of each token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44741 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
c3d8d57b010e2ed15a2a7685d5761db14f5d2252 09-Dec-2007 Chris Lattner <sabre@nondot.org> Add dumping support for locations, make -dumptokens print out the location
info of each token.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44741 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
333052c8f19ae074707208a23ef66e7bf09e5ebd 08-Dec-2007 Anders Carlsson <andersca@mac.com> Add getTargetPrefix to TargetInfo, to be used with target specific intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44712 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
44fe49c9ccf29b8e9b66ce1f2375be6ec591c03c 08-Dec-2007 Anders Carlsson <andersca@mac.com> Add getTargetPrefix to TargetInfo, to be used with target specific intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44712 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
be4283cec1365a49e88859586c7caea491501892 07-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Implemented when static typing is combined with protocols and use as receiver
type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7dd82836dca87cf828ce994f161b53a34f6cdb7e 07-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Implemented when static typing is combined with protocols and use as receiver
type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3b1caacf673de9811fea28268f33707b24a1d759 07-Dec-2007 Steve Naroff <snaroff@apple.com> Rewrite 'super' within a class method. This required some minor tweaks to the front-end.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44673 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9bcb5fc1fd48c1f40c6a3b5a59130ebc313b4957 07-Dec-2007 Steve Naroff <snaroff@apple.com> Rewrite 'super' within a class method. This required some minor tweaks to the front-end.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44673 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b4452ed9cfeba4dfbb9155b828e2b052dbd6cdbf 07-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to implement "Protocol" as a built-in type declared as
"@class Protocol;"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
66c5dfc193c4090b67c5effb0e80e287b94de17e 07-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to implement "Protocol" as a built-in type declared as
"@class Protocol;"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cb1262c45ad249a93e5566c38bcc743d82e72a7d 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
491420984f3276fdc1343ab399d9afe199f9828d 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of LangOptions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
3102df94d63800bf0dbfbf7ede77c86848d4244b 05-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to prevent crash on use of objc2 syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44617 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5ef404f08b42c58fd8d4c93d1672ab28f61befa6 05-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to prevent crash on use of objc2 syntax.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44617 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a8897f00c3e8bee75e248feb9ad6fafbd541e264 05-Dec-2007 Anders Carlsson <andersca@mac.com> Implement codegen for builtin infinity functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
c8ee7988c4ea9ec784625d2a47a8575feb191421 05-Dec-2007 Anders Carlsson <andersca@mac.com> Implement codegen for builtin infinity functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
1defb8d5ad19aeafd348b63463abd3844908ccf8 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of: ObjCEncodeExpr, ObjCSelectorExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8f6dc77d1fa6c9fd71d26c96bfa007775d8e3905 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of: ObjCEncodeExpr, ObjCSelectorExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44593 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bc54abfb6bf59fbc6b30e82d146fb69753e030e3 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed SourceManager::Read to SourceManager::CreateAndRegister.
Now sourcemanager deserializer automatically self-registers itself with
the deserializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
1f94100e53a7d45cea706c09ac0f35cf723a8d83 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed SourceManager::Read to SourceManager::CreateAndRegister.
Now sourcemanager deserializer automatically self-registers itself with
the deserializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44591 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9c856e9a30971beb84123094b543530edc4641bb 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented initial serialization support for SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
099b4747042352f69184481a48508b599a8d3f73 05-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented initial serialization support for SourceManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44590 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
2b238dfc15e90e2e27087fd7306c0ae4f5c6ca18 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed serialization of FileEntry and DirectoryEntry. This objects will
now be lazily recreated upon deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
8fbc88e5faee291e2e5039ec4c1dac3cfd219704 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed serialization of FileEntry and DirectoryEntry. This objects will
now be lazily recreated upon deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44585 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
0ad06d124033f75fc3b8d269ec3a04dd3f54c893 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SrcMgr::ContentCache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44578 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e21272fbdbfbf5bf3461d3e9b42279f4d47caa42 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SrcMgr::ContentCache.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44578 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
336b2e876f0748659dbf8415e24d41ba88e66f8a 04-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Simplified setting up Method's scope before generating AST for its nody.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
b107ce82d425939ce32fc3c02faf7c2364abc1a3 04-Dec-2007 Fariborz Jahanian <fjahanian@apple.com> Simplified setting up Method's scope before generating AST for its nody.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44576 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6a186355042fdbfd31749d030e8082225a2fa0bd 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Fixed a few more comments to change "FileInfo" to "ContentCache."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
b6427f821de8cce1566fb6e755143ea0918d5543 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Fixed a few more comments to change "FileInfo" to "ContentCache."


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
16a070770469b5fec47c890a1902258c9a96f3fe 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FileEntry and DirectoryEntry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
9551a2cbe5fdf316c126a39ec310208c2121321f 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FileEntry and DirectoryEntry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44573 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
1c3728ea5f0d868e9e383243df9afb91e2435162 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed IntrusiveSPtr. There are no clients of this class anymore, so it is
not needed, and it was never extensively tested. If we need an intrusive
reference-counting smart pointer, we can always import intrusive_ptr from
boost.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44571 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/IntrusiveSPtr.h
05db37eb596d8a2cc3d1b8e9e04b1c33aea34cd1 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed IntrusiveSPtr. There are no clients of this class anymore, so it is
not needed, and it was never extensively tested. If we need an intrusive
reference-counting smart pointer, we can always import intrusive_ptr from
boost.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44571 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/IntrusiveSPtr.h
abb4f6ac8b35246285fe31035ee915e6a137c68b 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ObjCStringLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
46dc0a54ed6deb165117a6b0166d9bb7acb785f5 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ObjCStringLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
461155627628ee992cd92e7d60920e84b2a675ea 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ObjcAtThrowStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5bdd4e300b432246b9d261702828e9875414128b 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ObjcAtThrowStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44567 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b006fb3973661ac21f589829bf573b403371111b 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ObjcAtTryStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9c1efff14b0e001f73c875ed5b184fb3569d641d 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ObjcAtTryStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44566 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
54ef3bd4604692e1671d9e8466be598c86490750 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ObjcAtFinallyStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
04be5aae2dc17292e2007401599638f3c6ba30de 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ObjcAtFinallyStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44564 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
a0c7df3c56442c64697595b4fa499defe31f7fd9 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ObjcAtCatchStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
af526779b36f43f59e47cfc5b10bb0c48562f4a9 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ObjcAtCatchStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44563 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
40499489f0f4449591cfefa7c3e7f158affe7421 03-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented initial support for "-triple" option to the clang driver. This
replaces the functionality previously provided by just "-arch" (which is still
supported but has different semantics).

The new behavior is as follows:

(1) If the user does not specify -triple:

(a) If no -arch options are specified, the target triple used is the host
triple (in llvm/Config/config.h).

(b) If one or more -arch's are specified (and no -triple), then there is
one triple for each -arch, where the specified arch is substituted
for the arch in the host triple. Example:
host triple = i686-apple-darwin9
command: clang -arch ppc -arch ppc64 ...
triples used: ppc-apple-darwin9 ppc64-apple-darwin9

(2) The user does specify a -triple (only one allowed):

(a) If no -arch options are specified, the triple specified by -triple
is used. E.g clang -triple i686-apple-darwin9

(b) If one or more -arch options are specified, then the triple specified
by -triple is used as the primary target, and the arch's specified
by -arch are used to create secondary targets. For example:

clang -triple i686-apple-darwin9 -arch ppc -arch ppc64

has the following targets:
i686-apple-darwin9 (primary target)
ppc-apple-darwin9
ppc64-apple-darwin9


Other changes related to the changes to the driver:

- TargetInfoImpl now includes the triple string.

- TargetInfo::getTargetTriple returns the triple for its primary target.

- test case test/Parser/portability.c has been updated because "-arch linux" is
no longer valid ("linux" is an OS, not an arch); instead we use a bogus
architecture "bogusW16W16" where WCharWidth=16 and WCharAlign=16.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
ae3607684c5978dc2d877141015056c9d24f17ea 03-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented initial support for "-triple" option to the clang driver. This
replaces the functionality previously provided by just "-arch" (which is still
supported but has different semantics).

The new behavior is as follows:

(1) If the user does not specify -triple:

(a) If no -arch options are specified, the target triple used is the host
triple (in llvm/Config/config.h).

(b) If one or more -arch's are specified (and no -triple), then there is
one triple for each -arch, where the specified arch is substituted
for the arch in the host triple. Example:
host triple = i686-apple-darwin9
command: clang -arch ppc -arch ppc64 ...
triples used: ppc-apple-darwin9 ppc64-apple-darwin9

(2) The user does specify a -triple (only one allowed):

(a) If no -arch options are specified, the triple specified by -triple
is used. E.g clang -triple i686-apple-darwin9

(b) If one or more -arch options are specified, then the triple specified
by -triple is used as the primary target, and the arch's specified
by -arch are used to create secondary targets. For example:

clang -triple i686-apple-darwin9 -arch ppc -arch ppc64

has the following targets:
i686-apple-darwin9 (primary target)
ppc-apple-darwin9
ppc64-apple-darwin9


Other changes related to the changes to the driver:

- TargetInfoImpl now includes the triple string.

- TargetInfo::getTargetTriple returns the triple for its primary target.

- test case test/Parser/portability.c has been updated because "-arch linux" is
no longer valid ("linux" is an OS, not an arch); instead we use a bogus
architecture "bogusW16W16" where WCharWidth=16 and WCharAlign=16.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44551 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
7a5f9d58033a557549ad5717c746522143f78afa 03-Dec-2007 Ted Kremenek <kremenek@apple.com> Added getTrueExpr() and getFalseExpr() to ConditionalOperator. These methods
provide handy accessors to the subexpressions of ConditionalOperator that
automatically take into account the GCC extension where the "LHS" expression is
omitted: e.g x ?: y;. When the LHS expression is available, getTrueExpr() is the
same as getLHS(); when LHS is NULL, getTrueExpr() returns the condition expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
395a2abf0028968d85958610e393e067885dc14f 03-Dec-2007 Ted Kremenek <kremenek@apple.com> Added getTrueExpr() and getFalseExpr() to ConditionalOperator. These methods
provide handy accessors to the subexpressions of ConditionalOperator that
automatically take into account the GCC extension where the "LHS" expression is
omitted: e.g x ?: y;. When the LHS expression is available, getTrueExpr() is the
same as getLHS(); when LHS is NULL, getTrueExpr() returns the condition expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44536 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e5860b7c6e1e6933b6c5602fc0259ef14d1dd5ce 03-Dec-2007 Chris Lattner <sabre@nondot.org> add a fixme


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
7c6b3d3ac3f8526c3ae444620ed7d58d25311aed 03-Dec-2007 Chris Lattner <sabre@nondot.org> add a fixme


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44523 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
56118007865a64979aa30c1d77d1363bfaabd7ad 02-Dec-2007 Anders Carlsson <andersca@mac.com> Implement __builtin_bswap32 and __builtin_bswap64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
df4852ac816e6050d53b808b86d7c1c9738eb99e 02-Dec-2007 Anders Carlsson <andersca@mac.com> Implement __builtin_bswap32 and __builtin_bswap64.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
6db92f3c6c455fbb4c5be97cfaf39df67ec1c8df 02-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Treat discarding array initializer elements as an extwarn (so -pedantic-errors flags it). Allow CodeGen to truncate the initializer if needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ce39faa836d0fe2f3be9ff11865c6433f734b2c6 02-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com> Treat discarding array initializer elements as an extwarn (so -pedantic-errors flags it). Allow CodeGen to truncate the initializer if needed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d22cc722e595723dfd77330c9efb64848fd3adf9 02-Dec-2007 Chris Lattner <sabre@nondot.org> all filevar's have static storage. Previously a global with
extern storage class was returning false from hasStaticStorage.
Ted, please review this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d411e04db18f7d07a889d51086861b23cbe05518 02-Dec-2007 Chris Lattner <sabre@nondot.org> all filevar's have static storage. Previously a global with
extern storage class was returning false from hasStaticStorage.
Ted, please review this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44515 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
db3fb0318d9bb4018161106a991fb5de8d96f263 02-Dec-2007 Chris Lattner <sabre@nondot.org> Teach clang the prototype for __builtin_alloca.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
434415af9de3cd9d72d43a78ffe714250fab83dc 02-Dec-2007 Chris Lattner <sabre@nondot.org> Teach clang the prototype for __builtin_alloca.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44504 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
22595b82d58fedcc01441558b8f8bef5e878db77 02-Dec-2007 Chris Lattner <sabre@nondot.org> Warn about unsupported codegen with the diags machinery, giving us:

t.c:3322:5: warning: cannot codegen this yet
__asm__ ("bswap %0" : "+r" (_data));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

instead of:

Unimplemented stmt!
(AsmStmt 0x80eaa0 <t.c:3331:5, line:3334:28>)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44501 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
fb97b03e42d397405f617be0252be83e77a66f6e 02-Dec-2007 Chris Lattner <sabre@nondot.org> Warn about unsupported codegen with the diags machinery, giving us:

t.c:3322:5: warning: cannot codegen this yet
__asm__ ("bswap %0" : "+r" (_data));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

instead of:

Unimplemented stmt!
(AsmStmt 0x80eaa0 <t.c:3331:5, line:3334:28>)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44501 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
5fec5968c1b24fe70629e4ba13e013e461acfb58 02-Dec-2007 Chris Lattner <sabre@nondot.org> register clz and ctz builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
bbb75f63001af0d9b62995d3a5d62f7469bd74d3 02-Dec-2007 Chris Lattner <sabre@nondot.org> register clz and ctz builtins.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
217df51d120a8290117d9e95e8e1314af9ac8504 02-Dec-2007 Chris Lattner <sabre@nondot.org> add support for custom client-specific diagnostics. As a testcase, make the
rewriter emit this error if it fails to rewrite an @encode:

t.m:17:9: error: rewriter could not replace sub-expression due to macros
c = ENC(char *)[2] + 4;
^~~~~~~~~~~

... where ENC is: #define ENC @encode



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
182745ae7892bca0842d9c023370ade5f8d1c6e8 02-Dec-2007 Chris Lattner <sabre@nondot.org> add support for custom client-specific diagnostics. As a testcase, make the
rewriter emit this error if it fails to rewrite an @encode:

t.m:17:9: error: rewriter could not replace sub-expression due to macros
c = ENC(char *)[2] + 4;
^~~~~~~~~~~

... where ENC is: #define ENC @encode



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44498 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
b8eb007afdef9e27fc536d6f693c974895cab374 02-Dec-2007 Oliver Hunt <oliver@apple.com> Add support for __builtin_expect which is needed for assert,
among other things.

Also change a codegen warning to dump to stderr so it doesn't
mess with -emit-llvm output



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
6f0768bc565028d2536fc41ee0d466c13985a921 02-Dec-2007 Oliver Hunt <oliver@apple.com> Add support for __builtin_expect which is needed for assert,
among other things.

Also change a codegen warning to dump to stderr so it doesn't
mess with -emit-llvm output



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44497 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
bb95a38f096c649c28e1c77b55071904c9f54fd1 02-Dec-2007 Chris Lattner <sabre@nondot.org> improve VC++ compatibility, patch by Cédric Venet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44496 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
2efcd2f04e6151ff3144e697529cfa483ad4cb65 02-Dec-2007 Chris Lattner <sabre@nondot.org> improve VC++ compatibility, patch by Cédric Venet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44496 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
d883a78da130374f8adc471769917b6bbdaa37d8 01-Dec-2007 Chris Lattner <sabre@nondot.org> Add #include, patch by Cédric Venet


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44491 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6e340496341a4704be0ede9c1ff4f8eacea7ee2c 01-Dec-2007 Chris Lattner <sabre@nondot.org> Add #include, patch by Cédric Venet


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44491 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4478db98dbface605441f93b77073d219a15f2a2 30-Nov-2007 Chris Lattner <sabre@nondot.org> start partitioning the diagnostics into two classes: those
that are builtin and those that are aren't. This is a bunch
of API refactoring that will make this possible, but there is
no functionality change yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
0750618b0beacdc9b0a9e210a661e4746823ced7 30-Nov-2007 Chris Lattner <sabre@nondot.org> start partitioning the diagnostics into two classes: those
that are builtin and those that are aren't. This is a bunch
of API refactoring that will make this possible, but there is
no functionality change yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44473 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
a8a6a48299e311a3bb58acb4a06f37ad70f333fe 30-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SelectorTable and Selectors.
Modified serialization of IdentifierTable to self-register itself with
the Deserializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
bdbb285aed1bb1e20090a16929f4c1da33d2d5c5 30-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SelectorTable and Selectors.
Modified serialization of IdentifierTable to self-register itself with
the Deserializer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44471 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
0fcdcadb2b4e1ebd91a434a0c4667339df79cad9 30-Nov-2007 Anders Carlsson <andersca@mac.com> Initialize LaxVectorConversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44459 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
b0ff33a9f4b2a75b6949976bbf3782ff0d839cb1 30-Nov-2007 Anders Carlsson <andersca@mac.com> Initialize LaxVectorConversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44459 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
e87cd98ad8fb36695704af0849c8edc2ed98b369 30-Nov-2007 Anders Carlsson <andersca@mac.com> Support lax vector conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44449 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
695dbb697d78d4c507e12b0acc6129b9650d4c3e 30-Nov-2007 Anders Carlsson <andersca@mac.com> Support lax vector conversions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44449 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
ca44ffdd6b645e52e041b92a1cd93d3be2c0eac8 30-Nov-2007 Steve Naroff <snaroff@apple.com> Yesterday, I simplified how we stream top-level decls.

After a discussion with Ted, we both came to the conclusion that adding a "HandleTopLevelDeclaration" hook to ASConsumer is far more elegant. The default implementation of HandleTopLevelDeclaration will be responsible for iterating over the ScopedDecl (which has a chain of the decls:-).

TODO: Once Ted adds HandleTopLevelDeclaration, make sure TagDecls are chainged appropriately...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44445 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
89307ffaf8acf4d6fdffd72b607ca4fbcfdffc9d 30-Nov-2007 Steve Naroff <snaroff@apple.com> Yesterday, I simplified how we stream top-level decls.

After a discussion with Ted, we both came to the conclusion that adding a "HandleTopLevelDeclaration" hook to ASConsumer is far more elegant. The default implementation of HandleTopLevelDeclaration will be responsible for iterating over the ScopedDecl (which has a chain of the decls:-).

TODO: Once Ted adds HandleTopLevelDeclaration, make sure TagDecls are chainged appropriately...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44445 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
3663e0c0126aeaf3f725b88c8555a257233b50b0 30-Nov-2007 Ted Kremenek <kremenek@apple.com> Added method "HandleTopLevelDeclaration" to ASTConsumer. This will eventually
be the new hook that ASTStreamer calls to feed top-level Decls to
ASTConsumers.

The difference between "HandleTopLevelDeclaration" and "HandleTopLevelDecl" is
that "HandleTopLevelDecl" is currently called by ASTStreamer for every
top-level declaration, including those that appear within a Decl chain. Using
the new interface, ASTStreamer would only call HandleTopLevelDeclaration for
Decls that appear that the beginning of a Decl chain (i.e., a group of related
decls).

To preserve the behavior that all subclasses of ASTConsumer currently expect,
the default implementation of HandleTopLevelDeclaration simply calls
HandleTopLevelDecl, and for decl chains it calls HandleTopLevelDecl for each
Decl* in a chain of Decls.

The advantage of this interface is that some subclasses of ASTConsumer only
really want the Decl chain, and not each individual Decl passed to them. This
extra level of indirection allows subclasses to override the default behavior
if they so desire.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44444 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
2ff3e691ecc63a5d82d4023b46b5b47ce14ace53 30-Nov-2007 Ted Kremenek <kremenek@apple.com> Added method "HandleTopLevelDeclaration" to ASTConsumer. This will eventually
be the new hook that ASTStreamer calls to feed top-level Decls to
ASTConsumers.

The difference between "HandleTopLevelDeclaration" and "HandleTopLevelDecl" is
that "HandleTopLevelDecl" is currently called by ASTStreamer for every
top-level declaration, including those that appear within a Decl chain. Using
the new interface, ASTStreamer would only call HandleTopLevelDeclaration for
Decls that appear that the beginning of a Decl chain (i.e., a group of related
decls).

To preserve the behavior that all subclasses of ASTConsumer currently expect,
the default implementation of HandleTopLevelDeclaration simply calls
HandleTopLevelDecl, and for decl chains it calls HandleTopLevelDecl for each
Decl* in a chain of Decls.

The advantage of this interface is that some subclasses of ASTConsumer only
really want the Decl chain, and not each individual Decl passed to them. This
extra level of indirection allows subclasses to override the default behavior
if they so desire.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44444 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ddedbe29217898338b166385b058bb7512fbc0e1 29-Nov-2007 Ted Kremenek <kremenek@apple.com> Added "isExact" field to FloatingLiteral. This flag indicates whether or not
the APFloat representing the parsed literal can represent the literal value
exactly. This is useful when performing various semantic checks on the code,
and issuing appropriate warnings to users.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
720c4ec57b6110873cd533ad434853a27e7c3f4a 29-Nov-2007 Ted Kremenek <kremenek@apple.com> Added "isExact" field to FloatingLiteral. This flag indicates whether or not
the APFloat representing the parsed literal can represent the literal value
exactly. This is useful when performing various semantic checks on the code,
and issuing appropriate warnings to users.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6fd865b6c22e31d8e9be0b3fa0773bc47613273a 28-Nov-2007 Steve Naroff <snaroff@apple.com> Several fixes/simplifications surrounding how we stream top-level decl AST's.

The following code...

typedef struct cssm_data {} CSSM_DATA, *CSSM_DATA_PTR;

struct Y { int A; };

struct X { int A; } D;

struct X E, F;

...now produces the following output...

> ../../Debug/bin/clang xx.c -ast-print
Read top-level tag decl: 'cssm_data'
typedef struct cssm_data CSSM_DATA;
typedef struct cssm_data *CSSM_DATA_PTR;
Read top-level tag decl: 'Y'
Read top-level tag decl: 'X'
Read top-level variable decl: 'D'
Read top-level variable decl: 'E'
Read top-level variable decl: 'F'

...which is much more accurate than the previous -ast-print output...

typedef struct cssm_data CSSM_DATA;
typedef struct cssm_data CSSM_DATA;
Read top-level variable decl: 'D'
Read top-level variable decl: 'E'
Read top-level variable decl: 'E'




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44421 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1f6443255894429fba384de0d5b6389ef578a5e9 28-Nov-2007 Steve Naroff <snaroff@apple.com> Several fixes/simplifications surrounding how we stream top-level decl AST's.

The following code...

typedef struct cssm_data {} CSSM_DATA, *CSSM_DATA_PTR;

struct Y { int A; };

struct X { int A; } D;

struct X E, F;

...now produces the following output...

> ../../Debug/bin/clang xx.c -ast-print
Read top-level tag decl: 'cssm_data'
typedef struct cssm_data CSSM_DATA;
typedef struct cssm_data *CSSM_DATA_PTR;
Read top-level tag decl: 'Y'
Read top-level tag decl: 'X'
Read top-level variable decl: 'D'
Read top-level variable decl: 'E'
Read top-level variable decl: 'F'

...which is much more accurate than the previous -ast-print output...

typedef struct cssm_data CSSM_DATA;
typedef struct cssm_data CSSM_DATA;
Read top-level variable decl: 'D'
Read top-level variable decl: 'E'
Read top-level variable decl: 'E'




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44421 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
db6be56204791960f4c36bb66a7b467e9aceec43 28-Nov-2007 Chris Lattner <sabre@nondot.org> Implement support for -fwritable-strings and make the code generator
merge string literals when it is not provided.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
odeGen/ModuleBuilder.h
45e8cbdce25c2e16c7aac2036a591f6190097ae6 28-Nov-2007 Chris Lattner <sabre@nondot.org> Implement support for -fwritable-strings and make the code generator
merge string literals when it is not provided.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44394 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
odeGen/ModuleBuilder.h
743ec37b37ef887b855c24a8ebbb21d91572b1b5 27-Nov-2007 Chris Lattner <sabre@nondot.org> add several cases that Expr::hasStaticStorage missed, pointed out by Oliver Hunt


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44376 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4cc627111453b75519d5130b57e06256da7b00e8 27-Nov-2007 Chris Lattner <sabre@nondot.org> add several cases that Expr::hasStaticStorage missed, pointed out by Oliver Hunt


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44376 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fb0d1395d81a1e202d11efc838921d0915fddf8b 27-Nov-2007 Anders Carlsson <andersca@mac.com> Add builtin type signature support for vector types. Add correct type signatures for a bunch of MMX builtins. We now parse all the intrinsics in mmintrin.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
142f36de332925dbe19d73d0612d9879b4f80e84 27-Nov-2007 Anders Carlsson <andersca@mac.com> Add builtin type signature support for vector types. Add correct type signatures for a bunch of MMX builtins. We now parse all the intrinsics in mmintrin.h

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44357 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
f257b4c5fec245de36cac7cefa8cb2b70f298d48 27-Nov-2007 Anders Carlsson <andersca@mac.com> Report errors for invalid casts from/to vectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a64db8fa2a7b4e24d0aeef7c22046fa37d8f1f3b 27-Nov-2007 Anders Carlsson <andersca@mac.com> Report errors for invalid casts from/to vectors.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44350 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4ce42301dacf13aae7a5340ec6fb02c496fb0669 27-Nov-2007 Anders Carlsson <andersca@mac.com> Add more semantic analysis for inline asm statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44349 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticKinds.def
asic/TargetInfo.h
d04c6e23f2e10eeb9936778d67f4a1c4a14cc4f6 27-Nov-2007 Anders Carlsson <andersca@mac.com> Add more semantic analysis for inline asm statements.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44349 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticKinds.def
asic/TargetInfo.h
fc2ebebefc4e3aee631f56a7bad24b41fa040e88 27-Nov-2007 Ted Kremenek <kremenek@apple.com> Added optional pass-by-reference argument "isExact" to
NumericLiteralParser::GetFloatValue(). Upon method return, this flag has the value
true if the returned APFloat can exactly represent the number in the parsed text,
and false otherwise.

Modified the implementation of GetFloatValue() to parse literals using APFloat's
convertFromString method (which allows us to set the value of isExact).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44339 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
427d5af5b601985093b6b4b33ba1e30fc24d86dc 27-Nov-2007 Ted Kremenek <kremenek@apple.com> Added optional pass-by-reference argument "isExact" to
NumericLiteralParser::GetFloatValue(). Upon method return, this flag has the value
true if the returned APFloat can exactly represent the number in the parsed text,
and false otherwise.

Modified the implementation of GetFloatValue() to parse literals using APFloat's
convertFromString method (which allows us to set the value of isExact).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44339 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
49dadd61b69613ecec27633129bea68a5eccafaf 25-Nov-2007 Anders Carlsson <andersca@mac.com> Check that the clobber registers are valid.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44311 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TargetInfo.h
6fa9086043b0338d895a4cdb0ec8542530af90d7 25-Nov-2007 Anders Carlsson <andersca@mac.com> Check that the clobber registers are valid.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44311 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TargetInfo.h
7dd1c95885c9c27979d59718b68fa1c273038fd2 25-Nov-2007 Anders Carlsson <andersca@mac.com> Add tables for GCC register names and aliases. This will be used for inline asm

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3346ae6bba10da0d08c8d548134ddab4e13d040f 25-Nov-2007 Anders Carlsson <andersca@mac.com> Add tables for GCC register names and aliases. This will be used for inline asm

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44308 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
759f45d5cfb417b39d6e249dbf4925492939d51c 24-Nov-2007 Anders Carlsson <andersca@mac.com> Keep track of whether the asm is volatile or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
39c47b56f45437bbc49c9568b7308a400234a730 24-Nov-2007 Anders Carlsson <andersca@mac.com> Keep track of whether the asm is volatile or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44297 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
b4487a88b714d33d366a62f14347a4ae1b4d9b56 23-Nov-2007 Anders Carlsson <andersca@mac.com> Check asm input and output expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
04728b7ea928b029f165fc67d32ced40e6868b31 23-Nov-2007 Anders Carlsson <andersca@mac.com> Check asm input and output expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44289 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
965d52002ff8e79e8ac26a4bd5b8df87d93bdaf4 22-Nov-2007 Anders Carlsson <andersca@mac.com> Store output and input operands as well as clobber information in the AsmStmt. Ted, could you please review the serialization/deserialization code?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
b235fc2cf37621c7fc6511bb2b8788c95f9fb9fc 22-Nov-2007 Anders Carlsson <andersca@mac.com> Store output and input operands as well as clobber information in the AsmStmt. Ted, could you please review the serialization/deserialization code?

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44266 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
076c11195af18f4af5765239dc25bff2697fbce3 20-Nov-2007 Anders Carlsson <andersca@mac.com> Store inline asm code in the AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
6a0ef4b83c91a6d6d5acb4ed5577c4659fe022a3 20-Nov-2007 Anders Carlsson <andersca@mac.com> Store inline asm code in the AST.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44255 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
arse/Parser.h
e79dbe20141db33e67e8576ff04ae31eac3456be 20-Nov-2007 Anders Carlsson <andersca@mac.com> Add __builtin_abs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
c2251dc59b0edc28f9303637dec970a7520939ad 20-Nov-2007 Anders Carlsson <andersca@mac.com> Add __builtin_abs

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44254 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
705386b208de04270c6fe62e29a52ca756172be6 20-Nov-2007 Ted Kremenek <kremenek@apple.com> Updated CFGStmtVisitor and CFGRecStmtVisitor to have a notion of
"block-expressions" when visiting arbitrary expressions (via calls to
"Visit()"). This results in a refactoring where a dataflow analysis no
longer needs to always special case when handling block-expressions versus
non-block expressions.

Updated LiveVariables and UninitializedValues to conform to the slightly
altered interface of these visitor classes.

Thanks to Nuno Lopes for providing a test case that illustrated some
fundamental problems in the current design of the CFGXXXStmtVisitor classes
and how they were used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44246 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
9f9141cd46b87cefd74625d92634a5aa93d2c9c6 20-Nov-2007 Ted Kremenek <kremenek@apple.com> Updated CFGStmtVisitor and CFGRecStmtVisitor to have a notion of
"block-expressions" when visiting arbitrary expressions (via calls to
"Visit()"). This results in a refactoring where a dataflow analysis no
longer needs to always special case when handling block-expressions versus
non-block expressions.

Updated LiveVariables and UninitializedValues to conform to the slightly
altered interface of these visitor classes.

Thanks to Nuno Lopes for providing a test case that illustrated some
fundamental problems in the current design of the CFGXXXStmtVisitor classes
and how they were used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44246 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
a1d79b7080bd898912888e048bf65fd7173cc3f1 19-Nov-2007 Ted Kremenek <kremenek@apple.com> Removed PersistentMap. It is now superseded in every way by the ImmutableMap
and ImmutableSet classes in the main LLVM libraries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44237 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ADT/PersistentMap.h
f57ef1ff27f2065785c5c80def628b7cf373acf3 19-Nov-2007 Ted Kremenek <kremenek@apple.com> Removed PersistentMap. It is now superseded in every way by the ImmutableMap
and ImmutableSet classes in the main LLVM libraries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44237 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ADT/PersistentMap.h
a917bbfd1821c5eabd2ec0782913a6866cbab5d7 15-Nov-2007 Chris Lattner <sabre@nondot.org> Fix transient failure on Lex/c90.c due to an uninit variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
825502a9ee613fdfb73b84cc85b9fdc58e680d86 15-Nov-2007 Chris Lattner <sabre@nondot.org> Fix transient failure on Lex/c90.c due to an uninit variable.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44180 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
d1670c4b3b60d1baa9d651ed4274cecaad749e97 15-Nov-2007 Chris Lattner <sabre@nondot.org> add header file I forgot to check in


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44179 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
25bfcb927d9169ea675ce6e98d8992efceeb0e42 15-Nov-2007 Chris Lattner <sabre@nondot.org> add header file I forgot to check in


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44179 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
9f176d13cf85ed4d3ecfb172ea206a6400253637 15-Nov-2007 Steve Naroff <snaroff@apple.com> Finish up variadic methods/messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
49f109c786f99eb7468dac3976db083a65493444 15-Nov-2007 Steve Naroff <snaroff@apple.com> Finish up variadic methods/messages.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
29fe74607889cd56d40c4958800f0abf1f73a436 15-Nov-2007 Steve Naroff <snaroff@apple.com> Implement support for variadic methods (work in progress).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
335eafa5be51f6440672a74c73d588af72e96732 15-Nov-2007 Steve Naroff <snaroff@apple.com> Implement support for variadic methods (work in progress).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44171 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
ca89334a3ac1627fe1a110e4705d296e6baeef68 15-Nov-2007 Nate Begeman <natebegeman@mac.com> Break out bool/true/false support into a LangOption



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44164 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
asic/TokenKinds.def
8aebcb739a4aff5ccf007fd740aa9105071feff4 15-Nov-2007 Nate Begeman <natebegeman@mac.com> Break out bool/true/false support into a LangOption



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44164 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
asic/TokenKinds.def
6b759ce37a32bd56946d9fb72109cf46365e8da7 15-Nov-2007 Steve Naroff <snaroff@apple.com> - Implement ivar rewrite (patch by Fariborz).
- RewriteMessageExpr()...make implicit casts explicit with synthesizing call (removing warnings when calling objc_msgSend()).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7e3411b23eb3724da5461dc6d6f97d14b3b0a52f 15-Nov-2007 Steve Naroff <snaroff@apple.com> - Implement ivar rewrite (patch by Fariborz).
- RewriteMessageExpr()...make implicit casts explicit with synthesizing call (removing warnings when calling objc_msgSend()).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
64be4ada44c719304c1dee75fb1e551f84b7779a 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Added QualType::ReadBackpatch to allow QualType initialization with
backpatching. This original was available, but then we removed it. It is back
again to help with deserialization of FieldDecls. Because FieldDecls are
currently owned by RecordDecls, which are owned by a TagType, the type of the
FieldDecl may not be deserialized prior to deserializing the FieldDecl. Thus
backpatching solves the problem of constructing a FieldDecl that references a
type that has not yet been deserialized.

Simplified serialization of TagType to not require passing in the
SerializedPtrID. Registration of the materialized type object is done after
the CreateImpl method returns (as with other types).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
21d50e12c3c412d8457071dc419363b7a7e8b855 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Added QualType::ReadBackpatch to allow QualType initialization with
backpatching. This original was available, but then we removed it. It is back
again to help with deserialization of FieldDecls. Because FieldDecls are
currently owned by RecordDecls, which are owned by a TagType, the type of the
FieldDecl may not be deserialized prior to deserializing the FieldDecl. Thus
backpatching solves the problem of constructing a FieldDecl that references a
type that has not yet been deserialized.

Simplified serialization of TagType to not require passing in the
SerializedPtrID. Registration of the materialized type object is done after
the CreateImpl method returns (as with other types).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44143 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
387539fbcc04cafeb648771cb5db9c4faab03e48 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of InitListExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6336f8dbae5145eb7b1429a8ec424c44e668f7cb 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of InitListExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44137 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2d85710dea4040b1a3d0503cc8a4f0e88a9be610 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4b7d9ca9fd65a5a68e907b1b7effe33bf1e93629 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CompoundLiteralExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44134 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9c2b8bd3ec1facd60e14e326db05b96f1f5a9b2a 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of EnumDecl and EnumConstantDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
583e008bbfbb937524d567ad6450b8f0e8485bca 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of EnumDecl and EnumConstantDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44127 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2f260e5577624b69d5b112babaea59ee34e9e6ef 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FieldDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f9d56c8be593e539098df95b636469104f2967a4 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FieldDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44126 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
581571c848395ba6c7401b5384f91ead457c9adc 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of RecordDecls. Changed serialization of TagType to
have an owning pointer to the referred TagDecl. This should hopefully fix a
bug where TagDecls (including decls from structs, etc.) were not serialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
aad48b6b2dfc81ad36a05d161c775cd6aab5b339 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of RecordDecls. Changed serialization of TagType to
have an owning pointer to the referred TagDecl. This should hopefully fix a
bug where TagDecls (including decls from structs, etc.) were not serialized.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
87f0429f888ee5d332304641611b88f7b54b5065 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FunctionTypeNoProto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2b14d46231fd75ad1e58043e9fab029c54c817cb 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FunctionTypeNoProto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44094 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5cde3834f43c0946ec8debfda9c6fb588b6b33fd 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of VariableArrayTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ed1a01d4d0ee773eb6478ff9701b46d2f0c06952 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of VariableArrayTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44093 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2f665cd2aa263b89ac880dc45283847e5322a6c2 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of TypedefType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b28166d11e788bc99fd5cd47c4f649ea0195c3b1 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of TypedefType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4234c1b1a9c858b005f4ad7dc85908b63adcafdd 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ConstantArrayType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44091 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
da5dbb4a0ad091791bdb0dad1b9ceba3c04a7f5c 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ConstantArrayType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44091 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
8db5aa1ca0d42cf8aeaa78cbe196a50f70fc9fc1 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of TagTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a225400804cc53dd9cf6b28cf0e8e7f103a7522f 14-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of TagTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44090 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
18c833800e358afc9926f2ba2874b4091f3a1258 14-Nov-2007 Steve Naroff <snaroff@apple.com> Rewrite method definition bodies. Also renamed a method to distinguish between method declarations and definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44080 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
71c0a951d08dc7a2a057df8c15f22b36f6aa47c7 14-Nov-2007 Steve Naroff <snaroff@apple.com> Rewrite method definition bodies. Also renamed a method to distinguish between method declarations and definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44080 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a7392b33f5f6a4fe080b3713877d5c58428cf39f 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Removed line with typo (declared friendship with ASTContext). Line was
not needed since friendship is declared elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
950ba9cc6aaa508381fbf56224c68d2da81caa4b 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Removed line with typo (declared friendship with ASTContext). Line was
not needed since friendship is declared elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44079 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
1dfb01cfef910819019c6ef028b82265241868b8 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of AsmStmt (or rather what is currently implemented
in AsmStmt).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
1f85acd5ff54345788b93111197088160fe9f06e 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of AsmStmt (or rather what is currently implemented
in AsmStmt).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44077 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
deac9c3cf701b04f18af21c222f75c9f6b9ae60b 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for SizeOfAlignOfTypeExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ea2fe9b435e1b55135de32dcac97366554706ac4 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for SizeOfAlignOfTypeExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
24160d3509ca6890815069aa59182fc07e650ea1 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for MemberExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
bd57e7c4754c0ce5d7d460041c8fd613e45c4319 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for MemberExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44074 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
84079d78c2a044e19e74609b356750fff3661fa5 13-Nov-2007 Nate Begeman <natebegeman@mac.com> Give AST-walk passes a way to access DeclSpec attributes on functions and
variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44073 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/DeclSpec.h
1b4e251f6d73997732f64e550a2b9cb5ac945c78 13-Nov-2007 Nate Begeman <natebegeman@mac.com> Give AST-walk passes a way to access DeclSpec attributes on functions and
variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44073 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/DeclSpec.h
034a78cafc3505323698ea72db19dc5095324e06 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Rewrote type serialization to used the same methodology as we do for Decls.
Removed tons of dead code in ASTContext concerning how types use to be
serialized.
Removed serialization methods from QualType that are no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
03ed44061df258e74a40383bda849e14b892a8c6 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Rewrote type serialization to used the same methodology as we do for Decls.
Removed tons of dead code in ASTContext concerning how types use to be
serialized.
Removed serialization methods from QualType that are no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
07f44dcac259134ce962a2517430d2196f27652f 13-Nov-2007 Chris Lattner <sabre@nondot.org> Clean up types, removing some casts. Patch contributed by
Cedric Venet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44050 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
a36c48676c0a48953c1a0885fa333be5851bbf94 13-Nov-2007 Chris Lattner <sabre@nondot.org> Clean up types, removing some casts. Patch contributed by
Cedric Venet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44050 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
ba3ddb21e973cc5e9ce9daf1cefe2e05813b78e9 13-Nov-2007 Chris Lattner <sabre@nondot.org> improve handling of address of global when checking for
constants and initializers. Patch by Sanghyeon Seo, thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44049 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1d09ecca892185ba067e47ba879f424de59950ef 13-Nov-2007 Chris Lattner <sabre@nondot.org> improve handling of address of global when checking for
constants and initializers. Patch by Sanghyeon Seo, thanks!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44049 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
16c1f61097a33cb93c71ff4661cd918f6a7d276a 13-Nov-2007 Steve Naroff <snaroff@apple.com> Minor indenting changes and removed a level of casting in getClassInterface();



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44039 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0b9cc05556c47b8aa02aea57c7679ff68f196051 13-Nov-2007 Steve Naroff <snaroff@apple.com> Minor indenting changes and removed a level of casting in getClassInterface();



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44039 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
a645d8779ae4e8f57136d5bfe1c661dc4adb4d3c 13-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to set context (interface, category, etc.) in which method is declared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
b245a33e6f562377946dc9cb5694a2d3cb8a98a3 13-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to set context (interface, category, etc.) in which method is declared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
acba361778a020cd919fca85cf45088e9b81a0af 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Renamed all serialization "Materialize" methods to "Create" to conform with
the new serialization API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ST/Stmt.h
ST/Type.h
asic/IdentifierTable.h
0f84c0059cec39fd1c73ac05bc2864dca664e7f4 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Renamed all serialization "Materialize" methods to "Create" to conform with
the new serialization API.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44035 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ST/Stmt.h
ST/Type.h
asic/IdentifierTable.h
ddf953af0136f591dd34f4ba7e6a7867ca564714 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Restructured serialization code for decls to make it cleaner, easier to
understand, and batched the emission owned subobjects (using
BatchEmitOwnedPtr) to get a smaller output bitcode size.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
928fd7f76808b895b68a9c6ed55a8f185fad6a35 13-Nov-2007 Ted Kremenek <kremenek@apple.com> Restructured serialization code for decls to make it cleaner, easier to
understand, and batched the emission owned subobjects (using
BatchEmitOwnedPtr) to get a smaller output bitcode size.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44033 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4af724922ea737ae8726aa879a50f36a4a667318 12-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to do statically typed ivar references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44028 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
232220c6982e3a70d8f7fc06a011ead490a2f516 12-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to do statically typed ivar references.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44028 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3123363889ae55dd0f3b35f776c4916d1ad5bbb3 12-Nov-2007 Steve Naroff <snaroff@apple.com> Add category method definitions incrementally, removing a FIXME (like we do for class implementations).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e1e6c0d5c79c0ee7ed62fef47a19aa7ecef40db4 12-Nov-2007 Steve Naroff <snaroff@apple.com> Add category method definitions incrementally, removing a FIXME (like we do for class implementations).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44027 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2ce5dc5f1986d12bf95a869670c3a9c2116f2b0c 12-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> 'super' nailed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44025 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0523aaf9759cd9524956f0930558737458849743 12-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> 'super' nailed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44025 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e015e9c5d8ef48fc703ea6d90c5ed179b1100e83 12-Nov-2007 Steve Naroff <snaroff@apple.com> Add an error diagnostic to Parse::ParseObjCMessageExpression().

This now exposes the following bug...

******************** TEST 'Sema/message.m' FAILED! ********************
Command:
clang -fsyntax-only -verify Sema/message.m
Output:
Errors seen but not expected:
Line 9: invalid receiver to message expression
******************** TEST 'Sema/message.m' FAILED! ********************

As far as I can tell, all messages to method agruments fail.

The method arguments are built by Sema::ObjcActOnStartOfMethodDef().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44022 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
11508212aacde5199b0475a578a481febf5dc067 12-Nov-2007 Steve Naroff <snaroff@apple.com> Add an error diagnostic to Parse::ParseObjCMessageExpression().

This now exposes the following bug...

******************** TEST 'Sema/message.m' FAILED! ********************
Command:
clang -fsyntax-only -verify Sema/message.m
Output:
Errors seen but not expected:
Line 9: invalid receiver to message expression
******************** TEST 'Sema/message.m' FAILED! ********************

As far as I can tell, all messages to method agruments fail.

The method arguments are built by Sema::ObjcActOnStartOfMethodDef().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44022 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d732bbd0e362ed22de357c22b40e708ba99ad614 12-Nov-2007 Ted Kremenek <kremenek@apple.com> In Stmt serialization, renamed directEmit to EmitImpl and
directMaterialize to CreateImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ec0aa78745f7b3bc96c20fffd1115bf26aaa0ead 12-Nov-2007 Ted Kremenek <kremenek@apple.com> In Stmt serialization, renamed directEmit to EmitImpl and
directMaterialize to CreateImpl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44020 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
5eb2a4a41a9c7df7124a79de8776cc8e7667547e 12-Nov-2007 Steve Naroff <snaroff@apple.com> Implement instance variable references.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
7779db42c94405ecbd6ee45efb293483fa6cbeff 12-Nov-2007 Steve Naroff <snaroff@apple.com> Implement instance variable references.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44016 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
dd2e26c9fbdd9097180b4d864551ddd14c0b02d3 12-Nov-2007 Steve Naroff <snaroff@apple.com> - Minor cleanup to yesterday's changes to Sema::ObjcActOnStartOfMethodDef();
- Add Sema::CurMethodDecl, in preparation for adding ObjcIvarRefExpr.
- Add ObjcInterfaceDecl::lookupInstanceVariable(), in prep for adding ivars.
- A couple renames in ObjcInterfaceDecl, while I was in the vicinity:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0330071714f1ba09e926becd666f4fc0ed62bc0b 12-Nov-2007 Steve Naroff <snaroff@apple.com> - Minor cleanup to yesterday's changes to Sema::ObjcActOnStartOfMethodDef();
- Add Sema::CurMethodDecl, in preparation for adding ObjcIvarRefExpr.
- Add ObjcInterfaceDecl::lookupInstanceVariable(), in prep for adding ivars.
- A couple renames in ObjcInterfaceDecl, while I was in the vicinity:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44015 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
84c3cb12f2570204568cf3e81426a3aff5f81234 12-Nov-2007 Steve Naroff <snaroff@apple.com> Forgot this file from my last commit...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44009 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d2baa9e075b8dd427fe16245cd91967bfb792c13 12-Nov-2007 Steve Naroff <snaroff@apple.com> Forgot this file from my last commit...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44009 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
99ee4309ff4a83dfd6ddad78d346a2668f76160b 12-Nov-2007 Steve Naroff <snaroff@apple.com> Replace 2 method definition actions (ActOnFunctionDefBody, ActOnMethodDefBody) with 1 method definition action (ActOnFinishFunctionBody). I can't think of any reason that we would need two action hooks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44000 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d6d054da8e0cfd320f2bba2f97ecdb1511b1cbc4 12-Nov-2007 Steve Naroff <snaroff@apple.com> Replace 2 method definition actions (ActOnFunctionDefBody, ActOnMethodDefBody) with 1 method definition action (ActOnFinishFunctionBody). I can't think of any reason that we would need two action hooks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44000 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9191a9e87a31cf970c4c50e875ba3f68b89a8d13 11-Nov-2007 Steve Naroff <snaroff@apple.com> Replace 3 method definition functions (ObjcParseMethodDefinition, ParseObjCInstanceMethodDefinition, ParseObjCClassMethodDefinition) with 1 method definition function (ParseObjCMethodDefinition).

Less code/confusion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43999 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
409be835b68344e0de56f99ef9a1e12760bc69ee 11-Nov-2007 Steve Naroff <snaroff@apple.com> Replace 3 method definition functions (ObjcParseMethodDefinition, ParseObjCInstanceMethodDefinition, ParseObjCClassMethodDefinition) with 1 method definition function (ParseObjCMethodDefinition).

Less code/confusion.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43999 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b82c50f435ecf93eccd42b07af631c776918a53f 11-Nov-2007 Steve Naroff <snaroff@apple.com> This is the last 5% of the solution to teaching Sema::ActOnInstanceMessage() about private methods (r43989).

While the diff is large, the idea is very simple. When we parse method definitions (in an @implementation), we need to add them incrementally (rather than wait until the @end).

Other details...

- Renamed Sema::ActOnAddMethodsToObjcDecl() to Sema::ActOnAtEnd(). The methods are now optional arguments.
- Removed Parser::AllImplMethods (a nice cleanup).
- Added location info to ObjcImplementationDecl (since we will need it very soon:-)
- Modified message.m test to no longer allow the bogus diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
0416fb9f379b49abb3eb0c1cb2ca75107e5a71d1 11-Nov-2007 Steve Naroff <snaroff@apple.com> This is the last 5% of the solution to teaching Sema::ActOnInstanceMessage() about private methods (r43989).

While the diff is large, the idea is very simple. When we parse method definitions (in an @implementation), we need to add them incrementally (rather than wait until the @end).

Other details...

- Renamed Sema::ActOnAddMethodsToObjcDecl() to Sema::ActOnAtEnd(). The methods are now optional arguments.
- Removed Parser::AllImplMethods (a nice cleanup).
- Added location info to ObjcImplementationDecl (since we will need it very soon:-)
- Modified message.m test to no longer allow the bogus diagnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43995 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
b1c7ad904eaf27fbcc33363c991efff5edd3575d 11-Nov-2007 Steve Naroff <snaroff@apple.com> Teach Sema::ActOnInstanceMessage() about private methods. That is, methods declared in an implementation (but not listed in the interface).

This commit is only 95% of the bug fix. The last piece to this puzzle is to add the method decls to the implementation incrementally (as we encounter them). At the moment, the methods aren't added until we see an @end (which is too late).

I will complete this later...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
c43d868355374d48296ad3be2c9c536698a5e9a8 11-Nov-2007 Steve Naroff <snaroff@apple.com> Teach Sema::ActOnInstanceMessage() about private methods. That is, methods declared in an implementation (but not listed in the interface).

This commit is only 95% of the bug fix. The last piece to this puzzle is to add the method decls to the implementation incrementally (as we encounter them). At the moment, the methods aren't added until we see an @end (which is too late).

I will complete this later...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
92053fda11f2576d503a6e3f33bb9abd293e2c5c 10-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Minor code clean up in method def area.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43980 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
439d28c1be7abc962afeb6a30f621b7b3b8bb13f 10-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Minor code clean up in method def area.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43980 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e6f59f1f5da7205cb942de24e5d121cbabdcae4b 10-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Represent method definitions as separate AST nodes. Pretty print will come next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
60fbca0b027ff5a6579f16cb6e3abab826e0d967 10-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Represent method definitions as separate AST nodes. Pretty print will come next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43979 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
b8a39d9bbbb65ed5afc542d4e2e4b12ab2269a9c 10-Nov-2007 Chris Lattner <sabre@nondot.org> rename getInstantiationLoc to match the scheme of isPhysicalLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
18807d2bfb9282a35b921b4feeda09ffaa110e6b 10-Nov-2007 Chris Lattner <sabre@nondot.org> rename getInstantiationLoc to match the scheme of isPhysicalLoc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43969 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c17d26c1c094001ce1b6a5b4309bf372703539bb 10-Nov-2007 Chris Lattner <sabre@nondot.org> change source location to have two bits for macros, tracking
whether the location is the start and/or end of an expansion.
These are currently not set or used by anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
b7489d8129136437953d412e2a6cf0ef87f4a461 10-Nov-2007 Chris Lattner <sabre@nondot.org> change source location to have two bits for macros, tracking
whether the location is the start and/or end of an expansion.
These are currently not set or used by anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43968 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ff746bc490247a7a4919ca449940ce9476392691 09-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Some code clean up in the form of name changes for functions which
process method definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43967 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
360300ca2ee298d585d29baf006519507d968812 09-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Some code clean up in the form of name changes for functions which
process method definitions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43967 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
8473b22fde0b777a9151cb4c06aed7ac3e81ce17 09-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Added class context to method declarations. Provide "interface *" type
to 'self' method of instance methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
1f7b6f88f18d7f6b10265acec5d41c4ed1897487 09-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Added class context to method declarations. Provide "interface *" type
to 'self' method of instance methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43957 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
dfb1c379a56177941067f86bc67b284e5b8057bd 09-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> First patch toward rewriting of method definitions. This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43915 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
306d68f5ef2eab86e0e86ebadd5a6eee1f752c0b 09-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> First patch toward rewriting of method definitions. This is work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43915 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
233875dfaa3dd0fb0dce7965bbb2d0e9d8a3df15 08-Nov-2007 Chris Lattner <sabre@nondot.org> add a getAtOffset() member to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43905 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ewrite/Rewriter.h
fab21b6d735a8f96e7dda595fecf72946d745871 08-Nov-2007 Chris Lattner <sabre@nondot.org> add a getAtOffset() member to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43905 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ewrite/Rewriter.h
9d182bb855af4f0e9bc47bf947d5d13cbbefbd00 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Rewrote serialization of IdentifierInfo and IdentifierTable to use methods Emit
and Materialize/Read instead of using specializations of SerializeTrait<>. The
resulting code is much cleaner. We are also setting the stage so that only the
parts of the IdentifierTable that are ever referenced within the ASTs are
serialized, and not the whole table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43904 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
93a9ab4bdc607b12fdcf6aa5cf56950dd45ae0f5 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Rewrote serialization of IdentifierInfo and IdentifierTable to use methods Emit
and Materialize/Read instead of using specializations of SerializeTrait<>. The
resulting code is much cleaner. We are also setting the stage so that only the
parts of the IdentifierTable that are ever referenced within the ASTs are
serialized, and not the whole table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43904 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
f2dbbe37fa7dec3fa17aab7c01245525ab38bc56 08-Nov-2007 Chris Lattner <sabre@nondot.org> add a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43902 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
474b29ee01a827075878ab1a101128d7969f2eba 08-Nov-2007 Chris Lattner <sabre@nondot.org> add a fixme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43902 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
6efaea56b10e82bbb5b23170abf991d019c5e2b1 08-Nov-2007 Chris Lattner <sabre@nondot.org> significantly simplify the implementation of RewriteRope by changing the
implementation to be list<RopePiece> instead of vector<RopePiece*>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43901 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
3585fcac5160d1498098e2abc364e00af86cd737 08-Nov-2007 Chris Lattner <sabre@nondot.org> significantly simplify the implementation of RewriteRope by changing the
implementation to be list<RopePiece> instead of vector<RopePiece*>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43901 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
829dfe5b13887f535326619aa79566d921f1ffa3 08-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Refactored parsing of main function body for reuse by objective-c methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43898 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
f9ed3157c93495474003a5ec360039030fd42e9c 08-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Refactored parsing of main function body for reuse by objective-c methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43898 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
aad0374dce1dc6e60a53ea3518d896d80b6418d9 08-Nov-2007 Chris Lattner <sabre@nondot.org> improve MakeRopeString to avoid doing a malloc for every 2-character string
that gets inserted. This speeds up the rewriter another 10%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43896 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
6969fd4292adfa44024f3bdac7c45bcfee75754f 08-Nov-2007 Chris Lattner <sabre@nondot.org> improve MakeRopeString to avoid doing a malloc for every 2-character string
that gets inserted. This speeds up the rewriter another 10%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43896 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
e6efb47fb6bebd734fcb80fa2e1af8808a4a2fc2 08-Nov-2007 Chris Lattner <sabre@nondot.org> Simplify interface to MakeRopeString.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43895 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ca305a0bbbf6a33a010c7e89f0c7a5a23a1bcf43 08-Nov-2007 Chris Lattner <sabre@nondot.org> Simplify interface to MakeRopeString.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43895 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
3a4dfc1434039e7ba4cbefa965be906998116acd 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of AddrLabelExpr.
Implemented serialization of ConditionalOperator.
Implemented serialization of StmtExpr.
Fixed bug in serialization of IndirectGoto (did not properly serialize subexpression).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
aa33763cc3dfa2fcb4fdb3c5b4be0c37f8d8f8e9 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of AddrLabelExpr.
Implemented serialization of ConditionalOperator.
Implemented serialization of StmtExpr.
Fixed bug in serialization of IndirectGoto (did not properly serialize subexpression).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43891 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9c75223141b06c586e902f4a76b565fc2e694e3e 08-Nov-2007 Chris Lattner <sabre@nondot.org> Add a new RewriteRope data structure which is a smarter way to represent the text
backing a rewrite buffer than using an std::vector<char>. This class was hacked
together very quickly and needs to be cleaned up, but it seems to work. It speeds
up rewriting a a 7M file from 6.43s to 0.24s on my machine. The impl could also
be made to be a lot more algorithmically sound.

This produces identical output to using vector on this testcase, if it causes a
problems or bugs are encountered, it can be disabled by changing the
RewriteBuffer::Buffer typedef back.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43884 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ewrite/Rewriter.h
8b0c2f659d350118cceee33c211a3dd5e3138ac2 08-Nov-2007 Chris Lattner <sabre@nondot.org> Add a new RewriteRope data structure which is a smarter way to represent the text
backing a rewrite buffer than using an std::vector<char>. This class was hacked
together very quickly and needs to be cleaned up, but it seems to work. It speeds
up rewriting a a 7M file from 6.43s to 0.24s on my machine. The impl could also
be made to be a lot more algorithmically sound.

This produces identical output to using vector on this testcase, if it causes a
problems or bugs are encountered, it can be disabled by changing the
RewriteBuffer::Buffer typedef back.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43884 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/RewriteRope.h
ewrite/Rewriter.h
162b32b02a24df680019e897723a3dc940acd8d3 08-Nov-2007 Chris Lattner <sabre@nondot.org> abstract out buffer type a bit better


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43883 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
cdd808e2af9f92ef406065c4855ac72d121dbcda 08-Nov-2007 Chris Lattner <sabre@nondot.org> abstract out buffer type a bit better


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43883 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
6d4adb27e6b9fdb74ea48d3ccda8df3daedc9d64 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Revised serialization of CaseStmt to emit all of the owned pointers (its
subexpressions) all together in one block at the end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
103fc81f12aa635aa0a573c94b1aceb496b4e587 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Revised serialization of CaseStmt to emit all of the owned pointers (its
subexpressions) all together in one block at the end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43862 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
dc4fc278b4511d15d6b3576eb38e9a589f8ff0e4 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CompoundAssignOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
83efb151a0c1df8cb8fb25d6dbb6c0f12f07f60a 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CompoundAssignOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e21b584bd53571c08456c493181aec7f2657779d 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of UnaryOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1049436d4b53d928b555f7381bc1639dd302bbc7 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of UnaryOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7a87333172641d9cf8327c3fb7a3649da2664c38 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d7fe4ea296646f049e4ff4cc37aa92ff4014a6b3 08-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CallExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43854 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
d7017492da8cb998874185450c2e9b06a8ecc9e1 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ArraySubscriptExpr.
Added "using ..." for "Serializer" and "Deserializer" to reduce amount
of typing for serialization methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
96fa54fc6dc7f4c8dad1fb22fc7fc4f4d775d6c0 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ArraySubscriptExpr.
Added "using ..." for "Serializer" and "Deserializer" to reduce amount
of typing for serialization methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43849 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
705cb5d216ced7e2529f82bf351eaf3bc3d99a4e 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CastExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9971c9ace70624987cd74645a75f4bfbc05afdf2 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CastExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43848 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8c9833bef9ae1fb5460b7c8f4ac8b0378a34c4d6 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ImplicitCastExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a7c20dd6c78db562ff463ee5fb13e248a1d3c93f 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ImplicitCastExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
efa540d7a27ba91dba8cdc05c6fc80890201c837 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of StringLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43834 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7febad7377c04607aa2c744d58af61e1abea6250 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of StringLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43834 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
105f21a0c5ca4d97e0e8c3ebd726b4c43561cb77 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ImaginaryLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1c72de1be77fc43cc27e9bf1cbfe7bd25bee2f81 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ImaginaryLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43833 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
18abf6b786e506dcd062485d18d7c81689f00aa6 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FloatingLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
612c9b9ca73593b3194866c9e1a51554db9752e7 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FloatingLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43832 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1d635454ecd6bb90a2185726f54e7f3147be1ea0 07-Nov-2007 Steve Naroff <snaroff@apple.com> Remove old asserts from ASTContext::isObjcIdType() and isObjcClassType(). Instead, return false if the declarations aren't in scope. This was a hold over from when 'id' and 'Class' were initialized lazily.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
45ecd5daa36385b7e0b2f657357805e01f5d8cbf 07-Nov-2007 Steve Naroff <snaroff@apple.com> Remove old asserts from ASTContext::isObjcIdType() and isObjcClassType(). Instead, return false if the declarations aren't in scope. This was a hold over from when 'id' and 'Class' were initialized lazily.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43827 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ce14dd1144de1dc6bd1f85e47b2d28d2f3bdd084 07-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed an array overflow bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
89079eac7d6e3091b74b477a4a5ff0cdaf35496c 07-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed an array overflow bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43826 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b80a1af42d7f4c388805fec58037970eac25dd72 07-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/DeclSpec.h
564576b225386cbff375351597dd5e2a92872d38 07-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed typo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43825 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/DeclSpec.h
42f440c6f76e9df129ed4878904db4112f8705e1 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CharacterLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43824 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7338a8299ec393eaf6bb580b5ef9ab2b08b5bd11 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of CharacterLiteral.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43824 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
539a418f6ac1f4a529ff003db85e36214539b195 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialiation of PreDefinedExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1ba485e582edfc8636afc25a6d7453c869530688 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialiation of PreDefinedExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43823 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
6c4dba7d96b48b6e5eefe05f62c60d8efaf16ab9 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ContinueStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43822 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
96f22423c52c22d263b4e5f7ee762122b607459e 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of ContinueStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43822 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e7d27d5205b282b7955e53d39a699b427e0d9c60 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of IndirectGotoStmt.
Added "FIXME" regarding the lack of source location information for IndirectGotoStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
225a2d946f73aed3b38f265fcb4e7d7d88136928 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of IndirectGotoStmt.
Added "FIXME" regarding the lack of source location information for IndirectGotoStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43821 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
affd8beaaea7ecc28eb0317cb8e639e32e848580 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of GotoStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
3f0767b74b16b37bcce60ff457609161a0665784 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of GotoStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43818 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f34da90170a3847a5d8cd44d1302f9a24215e538 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ForStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
07ba046c7d7bbc1f42b86b3ed012eec8fc7849da 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for ForStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43817 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ab97f4d0cd659bc71bac626acb6618bb16c2a7c7 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of DoStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e3299ef345bb8a71901108bf83a824591eae6c1a 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of DoStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43816 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
55e559a710c4777fb8c0652d25e1f528e1b12e27 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for WhileStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43815 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5572b94b76a78a35bac32d1ef04907c7a651adba 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for WhileStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43815 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ca22d35b4eb4d109425bbbf844cdfae952c974e3 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of IfStmt.

Fixed declarations of several "directEmit" methods of classes that subclass
Stmt that were missing a "virtual" keyword.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
4210f3dfd73ad3482f9cfa0a382e1fd78f22976d 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of IfStmt.

Fixed declarations of several "directEmit" methods of classes that subclass
Stmt that were missing a "virtual" keyword.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
249d7cdaa6eb9a1849ba2695c817082d9a8c018d 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SwitchStmt, CaseStmt, BreakStmt, DefaultStmt,
and ParenExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43806 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
9eea2ca5f2cb5d77569274702b5b06273e426dc2 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SwitchStmt, CaseStmt, BreakStmt, DefaultStmt,
and ParenExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43806 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
e9f69847484fc16fa464717edc0414d2bf8752e9 07-Nov-2007 Steve Naroff <snaroff@apple.com> Rewrite ObjC @try/@catch/@finally. Some minor tweaks to the AST nodes...

Still need to rewrite @throw (and do more testing)...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7573098b83e780d1c5bea13b384b610d8f155676 07-Nov-2007 Steve Naroff <snaroff@apple.com> Rewrite ObjC @try/@catch/@finally. Some minor tweaks to the AST nodes...

Still need to rewrite @throw (and do more testing)...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43803 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
08df2c65dc1843d432507088f8bad65738191a5f 07-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST for objective-c's @throw statement and its pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
39f8f159c488a900e5958d5aab3e467af9ec8a2b 07-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST for objective-c's @throw statement and its pretty-printing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
56a74bb45bf095baa0cb3a097f03ba0816683fa5 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of LabelStmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
b15132fda52046ba65eafd6f4b448f7aa16b7e8d 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of LabelStmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43800 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
25aaa265c75cadf0b85924bee245726a6c5419b2 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Added serialization/deserialization of NullStmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4927be6102784fc69c50234f7e2253283b3e99e4 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Added serialization/deserialization of NullStmts.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43797 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
2bd6e653973498d04da27eef1c855b194a0990fb 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Added serialization/deserialization of DeclStmts.
Reordered stmt serialization method implementations to be in alphabetical order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43796 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
0965f446e7685dc01fc0b5e718610530eed3cc63 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Added serialization/deserialization of DeclStmts.
Reordered stmt serialization method implementations to be in alphabetical order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43796 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
47281109ed285b89e60e3c52c5bc3edc79c16daf 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Overhauled serialization of statements. We no longer use specialized SerializeTrait<> classes,
but methods in Stmt (like other objects we are serializing). Full serialization of all statements
is not yet complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
2dc9ac73a8a34cabf261a81a1653d7379065ac61 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Overhauled serialization of statements. We no longer use specialized SerializeTrait<> classes,
but methods in Stmt (like other objects we are serializing). Full serialization of all statements
is not yet complete.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ca14c33a9b2c6548130e92759368494f37ef46d5 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Added static inline method "ReadVal" to QualType for more succinct
deserialization code of objects containing QualTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f623c85c80f875be9d20caf4a0c15092e42e0b9e 07-Nov-2007 Ted Kremenek <kremenek@apple.com> Added static inline method "ReadVal" to QualType for more succinct
deserialization code of objects containing QualTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43792 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d8df6d8004cd9784179ccc94d90bd368d1625b81 06-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for objc2's property ASTs, as well as pretty-priting the ASTs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
82a5fe3d1cf204b672cdab24d72275b6ad2c3527 06-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for objc2's property ASTs, as well as pretty-priting the ASTs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
b3b786280c1146b90ecc9156bce9065c930060ce 06-Nov-2007 Steve Naroff <snaroff@apple.com> Fix a "basic" bug that resulted in a bogus SourceLocation.

Off hand, I don't know why this change makes a difference (I thought the two constructor idioms were equivalent).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ccdbc5c6f14965d91a352d114c109a9d4d9552b8 06-Nov-2007 Steve Naroff <snaroff@apple.com> Fix a "basic" bug that resulted in a bogus SourceLocation.

Off hand, I don't know why this change makes a difference (I thought the two constructor idioms were equivalent).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5d9929476ce28d1c121a20b6256b72f4f74f5bd3 05-Nov-2007 Ted Kremenek <kremenek@apple.com> Made methods "Emit" and "Materialize" in ASTContext (used for serialization) public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
aa499b6ab30975d0cea225f71b33e7ee60b88a1f 05-Nov-2007 Ted Kremenek <kremenek@apple.com> Made methods "Emit" and "Materialize" in ASTContext (used for serialization) public.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43713 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1e1c391211712f267804d5a0f6cc27e4195fe5bf 03-Nov-2007 Steve Naroff <snaroff@apple.com> Add a method prototype slot/getter to the ObjCMessageExpr AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
db611d556f71f98b66b69514d45958d76e5727ab 03-Nov-2007 Steve Naroff <snaroff@apple.com> Add a method prototype slot/getter to the ObjCMessageExpr AST.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0add5d23d9c69bf307e94cacc195f253af6501a5 03-Nov-2007 Steve Naroff <snaroff@apple.com> Implement rewrite rules for ObjC string constants.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
arse/Action.h
arse/Parser.h
beaf299a2701c5559a4e5d76b0c40f805afb8e6a 03-Nov-2007 Steve Naroff <snaroff@apple.com> Implement rewrite rules for ObjC string constants.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43665 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
arse/Action.h
arse/Parser.h
8593cbf821294b7ffe0889fc056db5fbe41afff8 03-Nov-2007 Chris Lattner <sabre@nondot.org> Fix ownership model of ParseAST to allow the dtor of
ASTConsumer to process the AST before it is destroyed.
This allows elimination of HandleObjcMetaDataEmission.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43659 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ema/ASTStreamer.h
31e6c7ddfeeefe05b67220bc87fa23d4338d1056 03-Nov-2007 Chris Lattner <sabre@nondot.org> Fix ownership model of ParseAST to allow the dtor of
ASTConsumer to process the AST before it is destroyed.
This allows elimination of HandleObjcMetaDataEmission.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43659 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ema/ASTStreamer.h
2da6b3d1320e61f96c018ebaef5bef5a03d2c72e 03-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Provide both const and non-const accessor methods for @try and @finally ASTs.
My previous patch did the same for @catch AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8aab17e82aab6b3f266ef1884253226d2cb8b8d8 03-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Provide both const and non-const accessor methods for @try and @finally ASTs.
My previous patch did the same for @catch AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43654 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d45362449f3ffbc770ce1a20fe3a0efb20681121 03-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Provide const and none-const version of methods accessing various @catch nodes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
606efdfeb9eef70871eb62a26dfd115e209e899c 03-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Provide const and none-const version of methods accessing various @catch nodes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43653 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
59e9e043c380fd4dbef9096dd1b00cbc83ce049e 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> pretty-print @try/@catch/@finally from AST as the validation of AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7794cb85d394750db0631c02b7aa7837ae56764c 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> pretty-print @try/@catch/@finally from AST as the validation of AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43649 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e607c9ec6128dddca21c6f9b8ff6edd85ea06818 02-Nov-2007 Ted Kremenek <kremenek@apple.com> Added most of the boilerplate code for Decl serialization. Still a few
key functions to implement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0497331350e9f7838c03eca5f2782a53160f7423 02-Nov-2007 Ted Kremenek <kremenek@apple.com> Added most of the boilerplate code for Decl serialization. Still a few
key functions to implement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
b8bf60729f38262374422c27cc761a37d94a36c4 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST for @try statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
bd49a647afd9cc534fef13cadf652d4e9c396e2b 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST for @try statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
de3abf821fab1fd7ac1d399e52559afa0f4670d9 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST for @finally statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43629 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
161a9c5afaafb4d527b7efba9675a8b2cbbe32e0 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST for @finally statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43629 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0679836a831c0feef62acf2e2a75002419349bf3 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST build for @catch clause (this is work in progress).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
3b1191d7eaf2f4984564e01ab84b6713a9d80e70 02-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> AST build for @catch clause (this is work in progress).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43628 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
arse/Action.h
414bf8f439a8f8656ec48f79438232119d83cac2 01-Nov-2007 Ted Kremenek <kremenek@apple.com> Simplified Serialization code for SourceLocation and SourceRange, and
updated it to the recently updated Serialization API.

Changed clients of SourceLocation serialization to call the
appropriate new methods.

Updated Decl serialization code to put new skeleton serialization code
in place that is much better than the older trait-specialization
approach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43625 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/SourceLocation.h
beb7713c6102687f7e49e27b8228e84a69d8f6c6 01-Nov-2007 Ted Kremenek <kremenek@apple.com> Simplified Serialization code for SourceLocation and SourceRange, and
updated it to the recently updated Serialization API.

Changed clients of SourceLocation serialization to call the
appropriate new methods.

Updated Decl serialization code to put new skeleton serialization code
in place that is much better than the older trait-specialization
approach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43625 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/SourceLocation.h
709524816623144c1c9d25a1506573245cd1bd16 01-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Bunch of class declarations for objective-c's @try-catch statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Parser.h
b210bd0404f84b99259c9987d347a44d3c202238 01-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Bunch of class declarations for objective-c's @try-catch statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43623 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Parser.h
7a78e43db820f48c784ab6d24d2e4c85ac7c5ed6 01-Nov-2007 Devang Patel <dpatel@apple.com> Rename classes and collections that maintain record layout information.
Now, at AST level record info is maintained by ASTRecordLayout class.
Now, at code gen level record info is maintained by CGRecordLayout class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
88a981b47c7face1b1fdaa9074256245107b9ca9 01-Nov-2007 Devang Patel <dpatel@apple.com> Rename classes and collections that maintain record layout information.
Now, at AST level record info is maintained by ASTRecordLayout class.
Now, at code gen level record info is maintained by CGRecordLayout class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43619 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
e1fed7a7fd266a5fc8da531668dcdc785a0ea5c6 01-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of QualTypes within ASTContext. Clarified
ownership model of some type pointers. Added FIXMEs to serialization.

Added comments to ASTContext indicating which variables we are intentionally
*not* serializing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a9a4a24592a2164114a8a36717650e6341eb67a4 01-Nov-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of QualTypes within ASTContext. Clarified
ownership model of some type pointers. Added FIXMEs to serialization.

Added comments to ASTContext indicating which variables we are intentionally
*not* serializing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
65e7eb5a21e5114763acfb37c201d0c425060ebb 01-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Remaining work to collect objective-c's type qualifiers and use them to encode
method types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
ecb01e666665efabd2aa76a76f6080e2a78965fa 01-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> Remaining work to collect objective-c's type qualifiers and use them to encode
method types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43617 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
48532db77bc2c5321cbc5818d4c9cbd7d80c87f4 01-Nov-2007 Ted Kremenek <kremenek@apple.com> Reverted unnecessary inlining of operator!=, since negating operator== is
just as efficient and much more succinct.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
385cdaa3f583e600ffebc3f1035de76cd177f299 01-Nov-2007 Ted Kremenek <kremenek@apple.com> Reverted unnecessary inlining of operator!=, since negating operator== is
just as efficient and much more succinct.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43614 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
f616a24cbc5870ff19b33f70e1f8dbb1ead65ab4 01-Nov-2007 Devang Patel <dpatel@apple.com> Propagate bitfield info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
54e62357516ace7175a923dad4f94463e793e516 01-Nov-2007 Devang Patel <dpatel@apple.com> Propagate bitfield info.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5003e8bfcd7cf7a6e0ed8c5dd61a6c998bead4d7 01-Nov-2007 Chris Lattner <sabre@nondot.org> add support for vector type compatibility checking. Patch by Nate Begeman.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
770951b5bb6028a8d326ddb4a13cef7d4a128162 01-Nov-2007 Chris Lattner <sabre@nondot.org> add support for vector type compatibility checking. Patch by Nate Begeman.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43604 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2fd0daa387fb0fdd938e63b84bf0463b1027c3ed 01-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> 1) More additions for objective-c's qualifier type.
2) Fixed a test failure (which should have failed all along!).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43589 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
f1de0ca05e2df6f23bd559028693a12d1ebdaaf6 01-Nov-2007 Fariborz Jahanian <fjahanian@apple.com> 1) More additions for objective-c's qualifier type.
2) Fixed a test failure (which should have failed all along!).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43589 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
68228a90a7da28494437c03bcb2d93d4cda15d73 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented more of serialization/deserialization for ASTContext. We now
(hypothetically) read in/write out most of the types. Bugs likely exist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fee0452973f28691a61aab0fb074468ce3e34b9b 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented more of serialization/deserialization for ASTContext. We now
(hypothetically) read in/write out most of the types. Bugs likely exist.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6dab49b1916962f50e2c390d5a6f611a1e06e54c 31-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> More infrastructure to recognize objective-c's type qualifiers (in,inout, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43580 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
19d74e1494fe399f0e2a94e9419c095f8214851b 31-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> More infrastructure to recognize objective-c's type qualifiers (in,inout, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43580 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
arse/Parser.h
ebeb42830bb84346a3d0c2a1e494fa14547b65c2 31-Oct-2007 Steve Naroff <snaroff@apple.com> Implement ObjC built-in types in MinimalAction.

This fixes the recent regression with selector-1.m and -parse-noop.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43575 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b4292f221fb879fd2274683ace4f73d3d99af8c5 31-Oct-2007 Steve Naroff <snaroff@apple.com> Implement ObjC built-in types in MinimalAction.

This fixes the recent regression with selector-1.m and -parse-noop.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43575 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
a092334bb4bee918977af3b904efdf5cb51c33ee 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented short-circuited version of Builtin::Info::operator!=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
9b181b3eec13686ac05fb2c57c3f4baf2d4074a9 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented short-circuited version of Builtin::Info::operator!=.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43574 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.h
a8fccb84112bc0fef64b015a02dca5f9d535ce4e 31-Oct-2007 Devang Patel <dpatel@apple.com> Take 2.

Make target info available to clang code generator. This is far from complete but this helps clang codegen module make progress.

At the moment target triplet and target description strings are hard coded in clang::TargetInfo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43572 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/ModuleBuilder.h
7a4718e813e5e99d478567a482217c7eef8572c5 31-Oct-2007 Devang Patel <dpatel@apple.com> Take 2.

Make target info available to clang code generator. This is far from complete but this helps clang codegen module make progress.

At the moment target triplet and target description strings are hard coded in clang::TargetInfo


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43572 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/ModuleBuilder.h
8709373142dde1f527d9b0b3e319449995dc4782 31-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed problem with rewriting stand-alone @implementation (with no matching @interface).
A new test case added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3a3ca1b35a7121aea0bf465a192dce748465e10f 31-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed problem with rewriting stand-alone @implementation (with no matching @interface).
A new test case added.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ae84af8bf8a9251c9d044dc738d4009926653ab6 31-Oct-2007 Steve Naroff <snaroff@apple.com> Implement a more sensible strategy for ObjC built-in types (addressing a long standing FIXME in Sema::GetObjcIdType()).

This removes several gross hacks to work around the previous "lazy" behavior.

Two notes:
- MinimalActions still needs to be taught about the built-in types (This breaks one of the -noop test cases). I started this, then added a FIXME.
- I didn't convert Sema::GetObjcProtoType() yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43567 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
8ee529b5671295ea38c249df8b9d3766c905cfa7 31-Oct-2007 Steve Naroff <snaroff@apple.com> Implement a more sensible strategy for ObjC built-in types (addressing a long standing FIXME in Sema::GetObjcIdType()).

This removes several gross hacks to work around the previous "lazy" behavior.

Two notes:
- MinimalActions still needs to be taught about the built-in types (This breaks one of the -noop test cases). I started this, then added a FIXME.
- I didn't convert Sema::GetObjcProtoType() yet.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43567 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c8253192b917a5684717c58f4032e0891d089b00 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of Variable Array Types (VLAs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ST/Type.h
2e7d352dbec06755105237afba183492d31d03cb 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of Variable Array Types (VLAs).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43561 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ST/Type.h
738e6c088f67beb174062d6161528f8b7ee1a489 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Renamed ivar "ArrayTypes" in ASTContext to "ComplexArrayTypes".

Added skeleton code for serialization of ASTContext.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43558 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7192f8e9592729882a09d84d77838db26e39ebd4 31-Oct-2007 Ted Kremenek <kremenek@apple.com> Renamed ivar "ArrayTypes" in ASTContext to "ComplexArrayTypes".

Added skeleton code for serialization of ASTContext.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43558 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
07e823291fdbab9283cd77ea04d39a293f6af494 31-Oct-2007 Chris Lattner <sabre@nondot.org> temporarily revert devang's patch to link in the llvm codegen etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43544 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/ModuleBuilder.h
e03cd7b7c8dfcc2615fd6d53fffecd1c07c89fc6 31-Oct-2007 Chris Lattner <sabre@nondot.org> temporarily revert devang's patch to link in the llvm codegen etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43544 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/ModuleBuilder.h
7f23e3d8d24dfa5043e720b5057d51381f8391f8 31-Oct-2007 Anders Carlsson <andersca@mac.com> Encode Class, SEL and Objective-C objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
8baaca50f07d0c10bba69c8d88c1b9078c92d06d 31-Oct-2007 Anders Carlsson <andersca@mac.com> Encode Class, SEL and Objective-C objects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43540 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
2f1a2fc977dd7503ba8062673487667c38269210 31-Oct-2007 Devang Patel <dpatel@apple.com> Make target info available to clang code generator.
This is far from complete but this helps clang codegen module
make progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43536 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/ModuleBuilder.h
f767e218ee1a900475db90e8a44fff07f3ef3a09 31-Oct-2007 Devang Patel <dpatel@apple.com> Make target info available to clang code generator.
This is far from complete but this helps clang codegen module
make progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43536 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
odeGen/ModuleBuilder.h
2e09e44dfb579f93fe6e1c5051a9fe532b66c865 31-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Added new type and bitfield fields in some decl types in preparation for objective-c's type qualifiers.
Added initialization of Class/SEMA types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43534 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
8be9d0a9cdce8baa53844e54f6045c4600274269 31-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Added new type and bitfield fields in some decl types in preparation for objective-c's type qualifiers.
Added initialization of Class/SEMA types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43534 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
7670cca1f5dc931d9db246b52012a61e19812c02 30-Oct-2007 Ted Kremenek <kremenek@apple.com> Updated some comments.
Disabled assignments for ContentCache.
Copy-ctor for ContentCache now has an assertion preventing it to
be copied from an object that already has an allocated buffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43526 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
0d892d8bfddd4916cc4f3467e1184a623d0716da 30-Oct-2007 Ted Kremenek <kremenek@apple.com> Updated some comments.
Disabled assignments for ContentCache.
Copy-ctor for ContentCache now has an assertion preventing it to
be copied from an object that already has an allocated buffer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43526 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
dd364ea78bcc505a34851bcfb68df6ce251c1964 30-Oct-2007 Ted Kremenek <kremenek@apple.com> Removed SrcMgr::FileInfo and SrcMgr::InfoRec and replaced them with a
single class: ContentCache. This simplifies the logic in
SourceManager and makes the ownership of MemoryBuffers clearer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
78d85f53b093867bbb0123f016956178eea7343e 30-Oct-2007 Ted Kremenek <kremenek@apple.com> Removed SrcMgr::FileInfo and SrcMgr::InfoRec and replaced them with a
single class: ContentCache. This simplifies the logic in
SourceManager and makes the ownership of MemoryBuffers clearer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43518 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
c48deecfd383ba2d0f26fc439e11c4bcc4472d74 30-Oct-2007 Chris Lattner <sabre@nondot.org> shrinkify storage class to a bitfield, add a fixme about merging it in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e6889f961f2f29d10f6b4ce3e23fadb9309ddab7 30-Oct-2007 Chris Lattner <sabre@nondot.org> shrinkify storage class to a bitfield, add a fixme about merging it in the future.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43509 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
acc56d446a0ef2f7a3bb2b9ba658829f278b5fd8 30-Oct-2007 Chris Lattner <sabre@nondot.org> update some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43506 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/SourceManager.h
f17765d202d1ec34ada7ff3f18d18731588143c2 30-Oct-2007 Chris Lattner <sabre@nondot.org> update some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43506 91177308-0d34-0410-b5e6-96231b3b80d8
asic/FileManager.h
asic/SourceManager.h
2058dc43f8d01d65fce80b6287891b624c98e14a 30-Oct-2007 Ted Kremenek <kremenek@apple.com> Added vector to ASTContext to store references to "complete" VLA types
(VLAs with a specified size expresssion). This vector owns the
references to these type objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43502 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
347b9f33b3216459bcf60cdd52c739fa3028321e 30-Oct-2007 Ted Kremenek <kremenek@apple.com> Added vector to ASTContext to store references to "complete" VLA types
(VLAs with a specified size expresssion). This vector owns the
references to these type objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43502 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
667f16849c15fa9f75f81f369a48fba80c889949 30-Oct-2007 Steve Naroff <snaroff@apple.com> - Add location info to category/protocol AST's
- Rewrite categories.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
423cb565abc681b770fb4b9b4bc24d398c98157b 30-Oct-2007 Steve Naroff <snaroff@apple.com> - Add location info to category/protocol AST's
- Rewrite categories.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43501 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
ef20ed3ac942b1f3af877e7d9c0c58f6f50c8ddd 30-Oct-2007 Steve Naroff <snaroff@apple.com> More support for rewriting ObjC intefaces. Still some edge cases to handle...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
f908a87299d278164540f90b5b6e6cab7b14fb41 30-Oct-2007 Steve Naroff <snaroff@apple.com> More support for rewriting ObjC intefaces. Still some edge cases to handle...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43493 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
9b57fbac2b861414bf1e4c2320067da8574757ac 30-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Assert if isObjcIdType is called before 'id' type is built.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43484 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7ed05071969757ef84d7fd43168a82cb46d610fd 30-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Assert if isObjcIdType is called before 'id' type is built.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43484 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3793e1ab25169c0d5be43f3abe2b4dc92989c043 30-Oct-2007 Ted Kremenek <kremenek@apple.com> VariableArrayTypes (VLAs) without a size expression are now uniqued
and inserted into a FoldingSet owned by ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
2bd24ba6d10f8c811c8e2a57c8397e07082ba497 30-Oct-2007 Ted Kremenek <kremenek@apple.com> VariableArrayTypes (VLAs) without a size expression are now uniqued
and inserted into a FoldingSet owned by ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c81f316d260b8b8b9da21a0f9a22baa334e063fb 29-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Encoding for objectiive-c methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43481 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
33e1d64ab5cd5d27f8530ccd056191fe2c9f3f2e 29-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Encoding for objectiive-c methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43481 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
7f70eb7d19fd81f10779a0a2e5b02aea48229ad2 29-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Added a missing #include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
481038b5f37b77d7aa24c3ed5a751bc9c37e32e6 29-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Added a missing #include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43477 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
1a7fa7ba1d5f4eed5870e8953e1d794190602c28 29-Oct-2007 Steve Naroff <snaroff@apple.com> This commit contains lot's of small tweaks to how we pass around and store SourceLocation's for interfaces/protocols/categories/implementations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
60fcceeedbfc8b4a99cb942e2bc5aeb9e2f92a1f 29-Oct-2007 Steve Naroff <snaroff@apple.com> This commit contains lot's of small tweaks to how we pass around and store SourceLocation's for interfaces/protocols/categories/implementations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
fce813e3159a67a57a03cdca45ac4e10d4cffac3 29-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified StmtIterator to support iteration over the size expressions
of VariableTypeArray types that appear in DeclStmts.

Removed operator-- from StmtIterator. operator-- added undesired
complexity, and we have no consumers of it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
ST/Type.h
92866e2e90f6d93fb95e25a7ac4438e239d89ce6 29-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified StmtIterator to support iteration over the size expressions
of VariableTypeArray types that appear in DeclStmts.

Removed operator-- from StmtIterator. operator-- added undesired
complexity, and we have no consumers of it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtIterator.h
ST/Type.h
e0f97619d1bf13541971e1601fa0bf157c7102d9 29-Oct-2007 Ted Kremenek <kremenek@apple.com> Renamed internal variables of StmtIteratorBase to make the code
slightly more succinct.

Introduced VariableArrayType* within StmtIteratorBase to (soon)
support iteration over the size expressions of variable length arrays.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
65f31e451c8d631f0e76cb9c8935465d68830cb1 29-Oct-2007 Ted Kremenek <kremenek@apple.com> Renamed internal variables of StmtIteratorBase to make the code
slightly more succinct.

Introduced VariableArrayType* within StmtIteratorBase to (soon)
support iteration over the size expressions of variable length arrays.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43455 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
cf8b77d47f0c9dde19da4de74e42f095a7cc2723 29-Oct-2007 Ted Kremenek <kremenek@apple.com> For non-floating point types, added check for expressions of the form
"x == x" and "x != x". We emit a warning for these since they always evaluate
to a constant value and often indicate a logical error.

Added test case for this check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43450 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3ca0bf2a0ac27b1644ed73b8fc61077d2b9c6995 29-Oct-2007 Ted Kremenek <kremenek@apple.com> For non-floating point types, added check for expressions of the form
"x == x" and "x != x". We emit a warning for these since they always evaluate
to a constant value and often indicate a logical error.

Added test case for this check.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43450 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
36f07d8c36fad7b71488d5ba147b472d779b37f0 29-Oct-2007 Anders Carlsson <andersca@mac.com> Add (partial) support for @encode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
85f9bceab1542aafff012d4d28e998f4ba16e362 29-Oct-2007 Anders Carlsson <andersca@mac.com> Add (partial) support for @encode.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43439 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
de4d2bd06970a2914ab172431a1b741bb5a7adb2 29-Oct-2007 Chris Lattner <sabre@nondot.org> Add prototype info for __builtin_memcpy, reducing #diagnostics from 37 to 34 on
PR1750


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
52735a0339dd31750251a13aac73677693410c9d 29-Oct-2007 Chris Lattner <sabre@nondot.org> Add prototype info for __builtin_memcpy, reducing #diagnostics from 37 to 34 on
PR1750


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43435 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
8a40a83b02506a093be6649b11a67bbc04545387 29-Oct-2007 Chris Lattner <sabre@nondot.org> Implement *skeletal* support for representing GNU inline asm stmts in the AST,
resolving a crash on a .i file in PR1750. We now generate 49 errors on the
.i file in that bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Action.h
fe795956194141c91ae555985c9b930595bff43f 29-Oct-2007 Chris Lattner <sabre@nondot.org> Implement *skeletal* support for representing GNU inline asm stmts in the AST,
resolving a crash on a .i file in PR1750. We now generate 49 errors on the
.i file in that bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43433 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Action.h
2afc72b0b6b3d2f44ca2576c98d307310d556983 29-Oct-2007 Chris Lattner <sabre@nondot.org> Fix a major bug in the Type::getAs*Type methods: they didn't strip off
typeof(type) and typeof(expr) correctly. Now provide a single point of
contact (Type::getDesugaredType) for doing the shallow stripping we need.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dea6146deede4b89a1757d46cd92ebf158659c25 29-Oct-2007 Chris Lattner <sabre@nondot.org> Fix a major bug in the Type::getAs*Type methods: they didn't strip off
typeof(type) and typeof(expr) correctly. Now provide a single point of
contact (Type::getDesugaredType) for doing the shallow stripping we need.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43432 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
68ee6a63fe3a1a4d386d57057c8ad4859c85748d 28-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for TypedefType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4f50ee3e6db9d5ec8c1a56fa07510dab06194564 28-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for TypedefType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43423 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0b365b4f0b4aa1fdd5d89942342f6c6f6fefd882 28-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FunctionTypeProto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4340bfa9f442b450b8d81081fb463b03a0096230 28-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FunctionTypeProto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43419 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b4498bd320cffda59566b658b59fbbc70978adf5 27-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FunctionTypeNoProto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e81e24c84bae6d5a999d9e34a21c4ec73f91d37e 27-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FunctionTypeNoProto.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43418 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b90d06fb38d0b1862749bd0a0d24c3b94d4d5e4f 27-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for VectorType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
71ac846a4e20ad378700df040abeb3eb06163bca 27-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for VectorType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
27a32d6f18844a97446d6e2002bf181da591332a 27-Oct-2007 Ted Kremenek <kremenek@apple.com> More work on type serialization: added support for serializing BuiltinTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a4cb4525cf4bf8f61299147f22ffc187ed1eac9e 27-Oct-2007 Ted Kremenek <kremenek@apple.com> More work on type serialization: added support for serializing BuiltinTypes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43414 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3774dd9126402b3979f045f184ec7bb6d0d592c4 26-Oct-2007 Steve Naroff <snaroff@apple.com> Start rewriting ObjC interfaces. As a start, we comment out all the methods. This involved refining how the parser/AST passes/manages SourceLocations for ObjcMethodDecl's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
bef1185418705e16012b3dd50cd7c260c8d6b79c 26-Oct-2007 Steve Naroff <snaroff@apple.com> Start rewriting ObjC interfaces. As a start, we comment out all the methods. This involved refining how the parser/AST passes/manages SourceLocations for ObjcMethodDecl's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43404 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
arse/Parser.h
78f138f44886abc5ab7fc1551d501308f1846d80 26-Oct-2007 Ted Kremenek <kremenek@apple.com> Added skeleton implementation of serialization for types (not complete).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
73af669633e13c813f80cd15ecf3e6414778aee4 26-Oct-2007 Ted Kremenek <kremenek@apple.com> Added skeleton implementation of serialization for types (not complete).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43397 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f185aef283b7faf2db1887a6693d3172843e6a50 26-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to synthesize computation of Ivar offset in rewritten c file.
Thanks to Steve N. to point out using of offsetof for this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
26e4cd331c389a9b7d51c91981a7a10c8a909bf4 26-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to synthesize computation of Ivar offset in rewritten c file.
Thanks to Steve N. to point out using of offsetof for this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
15294058128b89eb2973536cd76891649b6e80c6 26-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified StmtIterator to now include visiting the initialization expression for EnumConstantDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/StmtIterator.h
b990f1834b4ba1c8e67ace010b0f554d0e59c1ea 26-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified StmtIterator to now include visiting the initialization expression for EnumConstantDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/StmtIterator.h
17377da57cc24b845a4fb5bbf9e227c71e1fc270 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Added skeleton for Decl serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2f1f8cb1b8f487086053579802407d64ca2b587f 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Added skeleton for Decl serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43361 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ec8696628940a3aa3304513feec54f575102f088 25-Oct-2007 Ted Kremenek <kremenek@apple.com> changed #include of Serialization.h to SerializationFwd.h to reduce
compilation time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/SourceLocation.h
0a449eed1dd2439b4b9c0a6291084816eab390c1 25-Oct-2007 Ted Kremenek <kremenek@apple.com> changed #include of Serialization.h to SerializationFwd.h to reduce
compilation time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43354 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/SourceLocation.h
9511ec8b102f18908a7171fac7f1b8ed43615b2b 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SourceLocation and SourceRange objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43343 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
19a95bcf3561ed977c48d5f2a2793b60a8c8e573 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of SourceLocation and SourceRange objects.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43343 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
000f48fc683f280bbb16fe9926d1385f8bbf1319 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Added constness to accessors in CompoundStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43342 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
cc326204dd97771c336b9aab3b9963ea30d69c29 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Added constness to accessors in CompoundStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43342 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
f624cd28f1a58e7eff980eb3740a6ba192bb3833 25-Oct-2007 Chris Lattner <sabre@nondot.org> Add a new ChooseExpr::isConditionTrue method to unify
some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
27437caadea35f84d550cd29f024fcf3ea240eec 25-Oct-2007 Chris Lattner <sabre@nondot.org> Add a new ChooseExpr::isConditionTrue method to unify
some code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43322 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
68e02272f5cc0e349ed568d005fd5de45ef630b2 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Added accessors to CompoundStmt to retrieve the source locations for the
left and right bracket. This is useful for serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
54395d440dc82a5e51b945c6c2a7f4bc4bea0358 25-Oct-2007 Ted Kremenek <kremenek@apple.com> Added accessors to CompoundStmt to retrieve the source locations for the
left and right bracket. This is useful for serialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43318 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7122603bb762d042baf25e20bcb2d357cb3992ce 25-Oct-2007 Steve Naroff <snaroff@apple.com> More work on translating message expressions.

Still to do:

- Chris will fix a bug in the rewriting engine for nested stmts. For example, the following:

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

tranlates to:

NSAutoreleasePool * pool = objc_msgSend(objc_msgSend(objc_getClass("NSAutoreleasePool"), sel_getUid("alloc")), sel_getUid("init"))utoreleasePool"), sel_getUid("alloc")) init];

...which is correct, except there is garbage after sel_getUid("init"). This is because the rewriter isn't updating the extent of the containing message expression.

- Do the crazy cast thang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
934f276cc5b45e19cd12ebb2d04fd7972a23865c 25-Oct-2007 Steve Naroff <snaroff@apple.com> More work on translating message expressions.

Still to do:

- Chris will fix a bug in the rewriting engine for nested stmts. For example, the following:

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

tranlates to:

NSAutoreleasePool * pool = objc_msgSend(objc_msgSend(objc_getClass("NSAutoreleasePool"), sel_getUid("alloc")), sel_getUid("init"))utoreleasePool"), sel_getUid("alloc")) init];

...which is correct, except there is garbage after sel_getUid("init"). This is because the rewriter isn't updating the extent of the containing message expression.

- Do the crazy cast thang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43316 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ce797d997b61815daa9220659534ffb959603361 24-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified current clients of Bitcode-Object serialization to use the
new split-header file configuration (Serialize.h and Deserialize.h)
now in place in the core LLVM repository.

Removed unneeded SerializeTrait specializations for enums in
TokenKinds.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43306 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/TokenKinds.h
a2bfb91c55a9baeb368dec97cd5971484b1d0656 24-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified current clients of Bitcode-Object serialization to use the
new split-header file configuration (Serialize.h and Deserialize.h)
now in place in the core LLVM repository.

Removed unneeded SerializeTrait specializations for enums in
TokenKinds.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43306 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/TokenKinds.h
c65a1fc4f4f84c5a08db7d08bbc2e49f0bb75ff5 24-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified operator* for StmtIterator to return Stmt*& instead of Stmt*.
This permits in-place replacement of the original AST statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/StmtIterator.h
22c0fcba14e069bd3d35305ecd6d952f41666610 24-Oct-2007 Ted Kremenek <kremenek@apple.com> Modified operator* for StmtIterator to return Stmt*& instead of Stmt*.
This permits in-place replacement of the original AST statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43295 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/StmtIterator.h
9b7c4ac68212fc094954a838423785abdd55ca5a 24-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Silenced a VC++ warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
79016528d20b6e95d94baefdee2d8f9b764e38f7 24-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Silenced a VC++ warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43277 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
634cadf816ddc884fa5c097ceafaffbb44f4e63e 24-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for IdentifierInfo and IdentifierTable.
Updated serialization test code in the driver to test serialization of
these types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/TokenKinds.h
c637e6b7afeebc6b4f751e4373715b6a8ea77272 24-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization for IdentifierInfo and IdentifierTable.
Updated serialization test code in the driver to test serialization of
these types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43266 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
asic/TokenKinds.h
4c4abed3000046bc27a919fbccc0df1a33cb6c43 23-Oct-2007 Steve Naroff <snaroff@apple.com> - Add rewrite rule for @class.
- Add setter/getter to ObjcClassDecl.
- Predefined key runtime functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7e15891fc89256fc013bd1003676ad3197b85c25 23-Oct-2007 Steve Naroff <snaroff@apple.com> - Add rewrite rule for @class.
- Add setter/getter to ObjcClassDecl.
- Predefined key runtime functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43257 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ce7357d49e780ed5414257a59eb2b4cfa5a9c419 19-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Silenced a VC++ warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e203877d239454182c94bc2f730d69f4937bf818 19-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Silenced a VC++ warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43179 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a6478551aaf4095fe3b0d6a41905223c951f82a2 19-Oct-2007 Ted Kremenek <kremenek@apple.com> Fixed DeclStmt::child_begin() to actually create an iterator that
visits its decls, rather than just creating an "end()" iterator.

Fixed child_end() for statements and expressions to use
child_iterator() to create the end() iterator, rather than just
returning NULL.

Fixed bug in StmtIterator where we did not correctly detect if we had
marched off the end of the ScopedDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtGraphTraits.h
ST/StmtIterator.h
9ac5928abeb3a47592201e1c30fe2930c20a507e 19-Oct-2007 Ted Kremenek <kremenek@apple.com> Fixed DeclStmt::child_begin() to actually create an iterator that
visits its decls, rather than just creating an "end()" iterator.

Fixed child_end() for statements and expressions to use
child_iterator() to create the end() iterator, rather than just
returning NULL.

Fixed bug in StmtIterator where we did not correctly detect if we had
marched off the end of the ScopedDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43156 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtGraphTraits.h
ST/StmtIterator.h
45d52f7b948d91fc8816c860f1192b09300d0941 19-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to rewrite ivar tables metadata for classes defined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
f4d331dd922f92478ebf30e808c0ca97ce49418b 19-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to rewrite ivar tables metadata for classes defined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43151 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6d1126731f34672a1eb196b064d2ee331bb3d61b 18-Oct-2007 Ted Kremenek <kremenek@apple.com> Refactored StmtIterator into classes StmtIteratorBase (non-templated)
and StmtIteratorImpl (templated), which StmtIterator and
ConstStmtIterator now succintly subclass.

Implemented iteration over the initializers in DeclStmts. This is not
thoroughly tested, so there may be bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
c325e7f51b4c92efd711b8ad289ec16da8cd64f0 18-Oct-2007 Ted Kremenek <kremenek@apple.com> Refactored StmtIterator into classes StmtIteratorBase (non-templated)
and StmtIteratorImpl (templated), which StmtIterator and
ConstStmtIterator now succintly subclass.

Implemented iteration over the initializers in DeclStmts. This is not
thoroughly tested, so there may be bugs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43138 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtIterator.h
4f398258f5e55a2fab236b4f515115ab0dd69e5d 18-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented 90% functionality of new child_iterator for Stmt objects
that will (soon) allow iteration over the initializers in
declarations. This new iterator mechanism is implemented by the
classes StmtIterator and ConstStmtIterator.

Patched a few files to use "operator++" instead of "operator+" on
child_iterators.

Friendship added in VarDecl to StmtIterator to allow returning a
reference to the initializer within the VarDecl. We may not wish this
as a permanent solution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Stmt.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
9caf8b1ca6beb254f420dada3c0e94d5ef027f58 18-Oct-2007 Ted Kremenek <kremenek@apple.com> Implemented 90% functionality of new child_iterator for Stmt objects
that will (soon) allow iteration over the initializers in
declarations. This new iterator mechanism is implemented by the
classes StmtIterator and ConstStmtIterator.

Patched a few files to use "operator++" instead of "operator+" on
child_iterators.

Friendship added in VarDecl to StmtIterator to allow returning a
reference to the initializer within the VarDecl. We may not wish this
as a permanent solution.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Stmt.h
ST/StmtGraphTraits.h
ST/StmtIterator.h
bf0bfa6ec1ef631ea5bf11596105db3a0e5a5851 18-Oct-2007 Chris Lattner <sabre@nondot.org> Add new API to rewrite one stmt/expr with another.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43101 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
01c5748c29e75b29cab5fc7d8ad1b173b29c7ecf 18-Oct-2007 Chris Lattner <sabre@nondot.org> Add new API to rewrite one stmt/expr with another.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43101 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
dcb9f5dca11b62e14b1b7788fd6e35f70935ee84 17-Oct-2007 Chris Lattner <sabre@nondot.org> Fix assertion for raw lexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43091 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
fd1f344f874799ce8a320d81043a431b65fd1fe2 17-Oct-2007 Chris Lattner <sabre@nondot.org> Fix assertion for raw lexer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43091 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
761d76bc9e98198cfe12f4995e5acf810a4d6853 17-Oct-2007 Chris Lattner <sabre@nondot.org> Move token length calculation out of the diagnostics machinery into
the lexer, where it can be shared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43090 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9a6119437672f42be5f50c3fe89fe843b1bfa5b5 17-Oct-2007 Chris Lattner <sabre@nondot.org> Move token length calculation out of the diagnostics machinery into
the lexer, where it can be shared.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43090 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
342dccb41228e7c365fedfc70b8b579ca567107a 17-Oct-2007 Chris Lattner <sabre@nondot.org> Add a new type of lexer: a raw lexer, which does not require a preprocessor
object in order to do its thing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43084 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
168ae2d44a443da75ea85db5f3b5081eb0bce113 17-Oct-2007 Chris Lattner <sabre@nondot.org> Add a new type of lexer: a raw lexer, which does not require a preprocessor
object in order to do its thing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43084 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
eb6d6b592d035568ef38820a92efc13f9f296c4e 17-Oct-2007 Chris Lattner <sabre@nondot.org> add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43079 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
e5956bd2730c051835f9acd9e957c5d79f99e7c3 17-Oct-2007 Chris Lattner <sabre@nondot.org> add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43079 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
b391e6e2a8faa67ecdb1ad5d1b86e01ec4f2aa05 17-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Implementation of AST for @protocol expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
390d50a725497e99247dc104a7d2c2a255d3af14 17-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Implementation of AST for @protocol expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43075 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
ff08d2c2d4e1f348d27dd8c33682b42adb23e853 17-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Updated VC++ build system.
Silenced some VC++ warnings.
Had to rephrase a partial specialization of the IntrospectionTrait struct in SerializationTest.cpp, please review.
Added a compiler specific workaround in IdentifierTable.h. Is that the way to fix this kind of issues?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
7b66000bdfc2684351fb03208e672f23012ed569 17-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Updated VC++ build system.
Silenced some VC++ warnings.
Had to rephrase a partial specialization of the IntrospectionTrait struct in SerializationTest.cpp, please review.
Added a compiler specific workaround in IdentifierTable.h. Is that the way to fix this kind of issues?


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43074 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
221bb8d0bbbc573b8f221e384d18d59b810f8e22 17-Oct-2007 Ted Kremenek <kremenek@apple.com> Started work on clang object serialization. Experimental
serialization logic as well as driver code is now in
Driver/SerializationTest.cpp. The status of this code is that it
should be used by no clients.

Added --test-pickling option to driver to run the serialization code.

Modified IdentifierInfo and IdentifierTable to have friend classes
that permit object serialization. Such friendship may not be needed
in the final design.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
bfa82c4c23ce96fdcf357a8f7ef70a9b71b69144 17-Oct-2007 Ted Kremenek <kremenek@apple.com> Started work on clang object serialization. Experimental
serialization logic as well as driver code is now in
Driver/SerializationTest.cpp. The status of this code is that it
should be used by no clients.

Added --test-pickling option to driver to run the serialization code.

Modified IdentifierInfo and IdentifierTable to have friend classes
that permit object serialization. Such friendship may not be needed
in the final design.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43052 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
957448a2bf1ce1fcda4f1dbbf99658a013fdb3ab 17-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Fix location processing of @selector: the range should include the @ sign.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
arse/Parser.h
2a35fa9b5e0f9d9429c04adb2e1249b6fd425e7a 17-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Fix location processing of @selector: the range should include the @ sign.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43051 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
arse/Parser.h
5266418f8cd86a47d491bd089bfd1a605af559cd 17-Oct-2007 Steve Naroff <snaroff@apple.com> Add Sema::CheckMessageArgumentTypes()...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
81bfde990c327ba6e5225cf207d71431937730f3 17-Oct-2007 Steve Naroff <snaroff@apple.com> Add Sema::CheckMessageArgumentTypes()...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43050 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cfd61c8faf638962f1f37807b5a8a565c20f4b57 17-Oct-2007 Chris Lattner <sabre@nondot.org> Fix location processing of @encode: the range should include the @ sign.
@selector probably gets this wrong also.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
arse/Parser.h
674af9541256dc3ef803e3723027a8b028f1f7a2 17-Oct-2007 Chris Lattner <sabre@nondot.org> Fix location processing of @encode: the range should include the @ sign.
@selector probably gets this wrong also.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43048 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
arse/Parser.h
6fe8b27c7cda9a6a307469be94770aed9c6ae343 17-Oct-2007 Chris Lattner <sabre@nondot.org> Add a new Rewriter::getRangeSize method.
Rename SourceRange::Begin()/End() to getBegin()/getEnd() for
consistency with other code.
Start building the rewriter towards handling @encode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43047 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
asic/SourceLocation.h
ewrite/Rewriter.h
311ff02fae0392bee6abe7723cdf5a69b2899a47 17-Oct-2007 Chris Lattner <sabre@nondot.org> Add a new Rewriter::getRangeSize method.
Rename SourceRange::Begin()/End() to getBegin()/getEnd() for
consistency with other code.
Start building the rewriter towards handling @encode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43047 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
asic/SourceLocation.h
ewrite/Rewriter.h
171f5b1258848d2b35a87b3ec345f7db899d69c6 16-Oct-2007 Steve Naroff <snaroff@apple.com> Remove ObjcMethodDecl::getNumMethodParams/getMethodParamDecl, they aren't used/needed.
Change ObjcMethodDecl::getMethodType to getResultType, to match FunctionDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43045 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3bea81bbae827195acfdf7bedfb7ac80c487dc63 16-Oct-2007 Steve Naroff <snaroff@apple.com> Remove ObjcMethodDecl::getNumMethodParams/getMethodParamDecl, they aren't used/needed.
Change ObjcMethodDecl::getMethodType to getResultType, to match FunctionDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43045 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
034beb260956032bfa6bceb97dfeb3aa5b98dcfa 16-Oct-2007 Chris Lattner <sabre@nondot.org> publish location info


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
05de8bc173c217f349f09b143bf5c6f6e82b87ae 16-Oct-2007 Chris Lattner <sabre@nondot.org> publish location info


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43044 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
74db1684571b0c7b77a5c2efdf012453d790654f 16-Oct-2007 Chris Lattner <sabre@nondot.org> Push the rewriter forward a bit more. Now it rewrites
#import to #include's as a test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43041 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ewrite/Rewriter.h
2c64b7b9381be4ff62fbdc404ed3f14c8086898d 16-Oct-2007 Chris Lattner <sabre@nondot.org> Push the rewriter forward a bit more. Now it rewrites
#import to #include's as a test.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43041 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
ewrite/Rewriter.h
53a24b70fa220fb20bccfcb33a2dbf7c062baf7f 16-Oct-2007 Chris Lattner <sabre@nondot.org> these aren't const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
10864b47250df7ae039fe9932bdf7a5b0c21280e 16-Oct-2007 Chris Lattner <sabre@nondot.org> these aren't const.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43040 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
f807c2061e08c74432b054a54c1b3da385bf0838 16-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to implement AST generation for objective-c's @selector expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
b62f6813406a03bf8a371c4e46c9fad51d102121 16-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to implement AST generation for objective-c's @selector expression.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43038 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
7e46145da63391e7c81e18f65271ba9f73391e30 16-Oct-2007 Steve Naroff <snaroff@apple.com> Emit diagnostics for methods not found.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
983df5b2280980e59b0b062bcc2882230465a61e 16-Oct-2007 Steve Naroff <snaroff@apple.com> Emit diagnostics for methods not found.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43037 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
056c6b076f495f267fc150d0e5dd217f4ae8b2f6 16-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse @selector expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43022 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
a0818e3cd7d59d05e6da41015033b5574c3d7893 16-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse @selector expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43022 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
f2e3031fe4911c5b82735c9495c2bb459d414693 16-Oct-2007 Steve Naroff <snaroff@apple.com> Change the type of ObjCStringLiteral from "struct __builtin_CFString *" to "NSConstantString *".

This makes the typecheck much happier. Without this change, the type checker would have to special case "struct __builtin_CFString *". This change does assume the interface for NSConstantString is declared in the translation unit.

I left ASTContext::getCFConstantStringType() around for now (with a comment that says it is currently unused).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
2198891824c38d45b2279de5d5e3ef9394eb457c 16-Oct-2007 Steve Naroff <snaroff@apple.com> Change the type of ObjCStringLiteral from "struct __builtin_CFString *" to "NSConstantString *".

This makes the typecheck much happier. Without this change, the type checker would have to special case "struct __builtin_CFString *". This change does assume the interface for NSConstantString is declared in the translation unit.

I left ASTContext::getCFConstantStringType() around for now (with a comment that says it is currently unused).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43021 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fb9dd7516fb564dab9980a84af0b2d01d500b2f2 15-Oct-2007 Steve Naroff <snaroff@apple.com> Fix a parser bug with message expressions - need to call ParsePostfixExpressionSuffix().

Now were correctly allow the following...

i = [str rangeOfString:@"]"].length;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43012 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
a642beb9f143130588dcf622f5f7020832b22707 15-Oct-2007 Steve Naroff <snaroff@apple.com> Fix a parser bug with message expressions - need to call ParsePostfixExpressionSuffix().

Now were correctly allow the following...

i = [str rangeOfString:@"]"].length;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43012 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
85f0dc588193fc73c58e73769e266cd83ed415fe 15-Oct-2007 Steve Naroff <snaroff@apple.com> Move type compatibility predicates from Type to ASTContext. In addition, the predicates are now instance methods (they were previously static class methods on Type).

This allowed me to fix the following hack from this weekend...

// FIXME: Devise a way to do this without using strcmp.
// Would like to say..."return getAsStructureType() == IdStructType;", but
// we don't have a pointer to ASTContext.
bool Type::isObjcIdType() const {
if (const RecordType *RT = getAsStructureType())
return !strcmp(RT->getDecl()->getName(), "objc_object");
return false;
}

...which is now...

bool isObjcIdType(QualType T) const {
return T->getAsStructureType() == IdStructType;
}

Side notes:

- I had to remove a convenience function from the TypesCompatibleExpr class.

int typesAreCompatible() const {return Type::typesAreCompatible(Type1,Type2);}

Which required a couple clients get a little more verbose...

- Result = TCE->typesAreCompatible();
+ Result = Ctx.typesAreCompatible(TCE->getArgType1(), TCE->getArgType2());

Overall, I think this change also makes sense for a couple reasons...

1) Since ASTContext vends types, it makes sense for the type compatibility API to be there.
2) This allows the type compatibility predeciates to refer to data not strictly present in the AST (which I have found problematic on several occasions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
ec0550fa3653d46560bf4484a2e988329c228e39 15-Oct-2007 Steve Naroff <snaroff@apple.com> Move type compatibility predicates from Type to ASTContext. In addition, the predicates are now instance methods (they were previously static class methods on Type).

This allowed me to fix the following hack from this weekend...

// FIXME: Devise a way to do this without using strcmp.
// Would like to say..."return getAsStructureType() == IdStructType;", but
// we don't have a pointer to ASTContext.
bool Type::isObjcIdType() const {
if (const RecordType *RT = getAsStructureType())
return !strcmp(RT->getDecl()->getName(), "objc_object");
return false;
}

...which is now...

bool isObjcIdType(QualType T) const {
return T->getAsStructureType() == IdStructType;
}

Side notes:

- I had to remove a convenience function from the TypesCompatibleExpr class.

int typesAreCompatible() const {return Type::typesAreCompatible(Type1,Type2);}

Which required a couple clients get a little more verbose...

- Result = TCE->typesAreCompatible();
+ Result = Ctx.typesAreCompatible(TCE->getArgType1(), TCE->getArgType2());

Overall, I think this change also makes sense for a couple reasons...

1) Since ASTContext vends types, it makes sense for the type compatibility API to be there.
2) This allows the type compatibility predeciates to refer to data not strictly present in the AST (which I have found problematic on several occasions).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43009 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Expr.h
ST/Type.h
36760330e9e1cff31a7bcb5581bc7244e347f9e0 15-Oct-2007 Anders Carlsson <andersca@mac.com> Add code generation and sema checking for __builtin_va_arg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43006 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
7c50aca2fe36f6daa9bf1c8c428f30e72f96470a 15-Oct-2007 Anders Carlsson <andersca@mac.com> Add code generation and sema checking for __builtin_va_arg.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43006 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
9d12c90f8c5aedbc20737a35feb370f9457d4e8e 15-Oct-2007 Steve Naroff <snaroff@apple.com> Added ASTContext::setObjcIdType/getObjcIdType(), set by Sema.

Also noticed ASTContext::BuiltinVaListType wasn't being initialized to the null type (so I set it).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
7e219e47de26346885d667131977bd9ca2d7662a 15-Oct-2007 Steve Naroff <snaroff@apple.com> Added ASTContext::setObjcIdType/getObjcIdType(), set by Sema.

Also noticed ASTContext::BuiltinVaListType wasn't being initialized to the null type (so I set it).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42983 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
1a402e6eccba8d1de9e1ceb5d6d271678af5933f 15-Oct-2007 Steve Naroff <snaroff@apple.com> Teach the type checker about "id". This removes the following bogus warning...

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang t.m
t.m:29:18: warning: incompatible pointer types assigning 'id' to 'NSString *'
resultString = [[NSString alloc] initWithFormat:0 arguments:0];
~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
954ea17353d3b24be52424bc287bdb6bef787fec 15-Oct-2007 Steve Naroff <snaroff@apple.com> Teach the type checker about "id". This removes the following bogus warning...

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang t.m
t.m:29:18: warning: incompatible pointer types assigning 'id' to 'NSString *'
resultString = [[NSString alloc] initWithFormat:0 arguments:0];
~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42975 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
55bfe0d2638f678e24e618a754859f7f26aa8c5b 15-Oct-2007 Anders Carlsson <andersca@mac.com> Add support for Pascal strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/LangOptions.h
ex/LiteralSupport.h
ee98ac5a1330db432b188dd2d38b6631aac47bf1 15-Oct-2007 Anders Carlsson <andersca@mac.com> Add support for Pascal strings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42974 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/LangOptions.h
ex/LiteralSupport.h
705380bc9b8eaa0e7285eb64f22ef18112fe9057 15-Oct-2007 Steve Naroff <snaroff@apple.com> - Teach ObjcInterfaceDecl::lookupInstance/ClassMethod to look through protocols.
- Start looking up methods in the global method pools (for "id").
- Start integrating interface types into the type system.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ff1afdb4f5ee2fc74ec0af788e18b3a036eaaafe 15-Oct-2007 Steve Naroff <snaroff@apple.com> - Teach ObjcInterfaceDecl::lookupInstance/ClassMethod to look through protocols.
- Start looking up methods in the global method pools (for "id").
- Start integrating interface types into the type system.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42971 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f66d84aea51d377e0c24853a3d5cb689be1887ff 14-Oct-2007 Steve Naroff <snaroff@apple.com> Add category lookup (removing a couple FIXME's).
Changed ObjcInterfaceDecl::ListCategories->CategoryList.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
3d58138992b9bc7b34aaa680f3ddf3971292eb7d 14-Oct-2007 Steve Naroff <snaroff@apple.com> Add category lookup (removing a couple FIXME's).
Changed ObjcInterfaceDecl::ListCategories->CategoryList.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42968 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8255b040036fd3b0156fad380995c94bcb444de5 14-Oct-2007 Steve Naroff <snaroff@apple.com> - Added Sema::AddFactoryMethodToGlobalPool and Sema::AddInstanceMethodToGlobalPool and DenseMaps. This will allow us to efficiently lookup a method from a selector given no type information (for the "id" data type).

- Fixed some funky "}
else {" indentation in Sema::ActOnAddMethodsToObjcDecl(). I'd prefer we stay away from this style...it wastes space and isn't any easier to read (from my perspective, at least:-)

- Changed Parser::ParseObjCInterfaceDeclList() to only call Action::ActOnAddMethodsToObjcDecl() when it actually has methods to add (since most interface have methods, this is a very minor cleanup).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42957 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
58ff9e8f06a88b74c093d67983c9a1808da1001c 14-Oct-2007 Steve Naroff <snaroff@apple.com> - Added Sema::AddFactoryMethodToGlobalPool and Sema::AddInstanceMethodToGlobalPool and DenseMaps. This will allow us to efficiently lookup a method from a selector given no type information (for the "id" data type).

- Fixed some funky "}
else {" indentation in Sema::ActOnAddMethodsToObjcDecl(). I'd prefer we stay away from this style...it wastes space and isn't any easier to read (from my perspective, at least:-)

- Changed Parser::ParseObjCInterfaceDeclList() to only call Action::ActOnAddMethodsToObjcDecl() when it actually has methods to add (since most interface have methods, this is a very minor cleanup).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42957 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
8b58e8aa66b5acdbfaaa39e0b915b2bd28e8d974 13-Oct-2007 Anders Carlsson <andersca@mac.com> Add __builtin_va_list definitions for x86_64 and ppc64.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
fb5e5ba3c7708f3aef4db0ed30e8470b3ed4206a 13-Oct-2007 Anders Carlsson <andersca@mac.com> Add __builtin_va_list definitions for x86_64 and ppc64.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
3cfe3d3885904b9fdc56aa99fed1cba1c2d5f0f0 13-Oct-2007 Chris Lattner <sabre@nondot.org> another step forward in rewriter stuff. This still has
some incredibly subtle details that I'm working on getting
right.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42940 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
7c239606f3a7a685653a0a7e64459c3f43522666 13-Oct-2007 Chris Lattner <sabre@nondot.org> another step forward in rewriter stuff. This still has
some incredibly subtle details that I'm working on getting
right.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42940 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
cebb8d62894435f30d3fc740faae304db4015b92 13-Oct-2007 Anders Carlsson <andersca@mac.com> Generate code for va_start and va_end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/TargetInfo.h
793680ed8104bf088d1b382b963a8badcb3f07de 13-Oct-2007 Anders Carlsson <andersca@mac.com> Generate code for va_start and va_end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42939 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
asic/TargetInfo.h
1003f49442e4f7ff2aba44c5732234a9e4238000 13-Oct-2007 Chris Lattner <sabre@nondot.org> remove dead method with bogus comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42937 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
833b2eb738a2a7a77b5c758555694a0d6bc10e1b 13-Oct-2007 Chris Lattner <sabre@nondot.org> remove dead method with bogus comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42937 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
550e05034c6c8efcb7ab4c65f58048eee0892237 13-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Check and diagnose that objective-c objects may not be statically allocated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticKinds.def
e7f64cc250245aa6c0e1ef6da7e9b6f62d5fedde 13-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Check and diagnose that objective-c objects may not be statically allocated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42936 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticKinds.def
035d87969d36950ea23f47b3dee507020b47b187 12-Oct-2007 Ted Kremenek <kremenek@apple.com> Added notion of '*' specified format width/specifiers when checking
printf format strings. Added type checking to see if the matching
width/precision argument was of type 'int'.

Thanks to Anders Carlsson for reporting this missing feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
580b664e9c2acd3bffddfea79b1ce2863cfd9dd0 12-Oct-2007 Ted Kremenek <kremenek@apple.com> Added notion of '*' specified format width/specifiers when checking
printf format strings. Added type checking to see if the matching
width/precision argument was of type 'int'.

Thanks to Anders Carlsson for reporting this missing feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42933 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
136df561df786ecb1b14b469ca637055e0d628c7 12-Oct-2007 Chris Lattner <sabre@nondot.org> add a new SM::getDecomposedFileLoc method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42931 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
3457e8cbaa8a6fec5d69173450655fe0bc38634b 12-Oct-2007 Chris Lattner <sabre@nondot.org> add a new SM::getDecomposedFileLoc method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42931 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
e267480a5dd16830c456700af628ef8a80778d7d 12-Oct-2007 Anders Carlsson <andersca@mac.com> Add some more diagnostics for va_start, fix tests so they pass with these new diags.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6eda8c9cefb498ac8403bc65854e6ce411a07855 12-Oct-2007 Anders Carlsson <andersca@mac.com> Add some more diagnostics for va_start, fix tests so they pass with these new diags.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42917 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
4a6e453e115cce570c0e01ee12b620a4d89eb7af 12-Oct-2007 Chris Lattner <sabre@nondot.org> add comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42887 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
cde8bc49a19bdb18643085e87bf1135d0a6672c0 12-Oct-2007 Chris Lattner <sabre@nondot.org> add comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42887 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
05d212ac3137d7f82471526a7cdc581ec8981a94 12-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> This patch implementa objective-c's @compatibilty-alias declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42883 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/DiagnosticKinds.def
arse/Action.h
243b64b0001172405ff803c61bdcaa8e98ec1552 12-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> This patch implementa objective-c's @compatibilty-alias declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42883 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
asic/DiagnosticKinds.def
arse/Action.h
569faa641ff1afcc7bf1a433e0ee360b6db58083 11-Oct-2007 Chris Lattner <sabre@nondot.org> Push the rewriting APIs along. Build a trivial client that replaces tabs
with x's for now. The APIs are all unimplemented, so it doesn't do
anything yet! :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ewrite/Rewriter.h
8a12c2777cccdf629b89745b6ecc89a8c1641e4e 11-Oct-2007 Chris Lattner <sabre@nondot.org> Push the rewriting APIs along. Build a trivial client that replaces tabs
with x's for now. The APIs are all unimplemented, so it doesn't do
anything yet! :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42868 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ewrite/Rewriter.h
d855a6ead44e3a875179400c472ac0b37df35f70 11-Oct-2007 Chris Lattner <sabre@nondot.org> slightly simplify interface


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
00bb283ecdfb1d5c69261c7663d166cee3f11a9b 11-Oct-2007 Chris Lattner <sabre@nondot.org> slightly simplify interface


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42858 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fb5b1e8f29523072ac5a2bf230de8b5334408e75 11-Oct-2007 Anders Carlsson <andersca@mac.com> Add __builtin_va_start to the list of builtins, make __builtin_va_list available to builtin functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
b2cf3573d7351094f6247fcca94703ce88eb9ee0 11-Oct-2007 Anders Carlsson <andersca@mac.com> Add __builtin_va_start to the list of builtins, make __builtin_va_list available to builtin functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42857 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
91193f64449fe1faf9306a04ade6539d26f44037 11-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to create protocol conforming class types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
4b6c9051c6522894978c9ba6a819a659d102db36 11-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to create protocol conforming class types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42856 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
7aeeda0c4b17182f87e249322d6db94d6095176e 11-Oct-2007 Steve Naroff <snaroff@apple.com> Refinements to Sema::GetObjcIdType()...

- Cache the typedef, not the type (avoids importing AST/Type.h).
- Emit an error if "id" cannot be found.
- Comment the routine and add a FIXME to reconsider how we emulate GCC's new fangled behavior. This isn't a priority for now, since almost no code depends on having "id" built-in.
- Add a test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42845 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e21b573bbfa7f53de694b81455d0627b7a3b6554 11-Oct-2007 Steve Naroff <snaroff@apple.com> Refinements to Sema::GetObjcIdType()...

- Cache the typedef, not the type (avoids importing AST/Type.h).
- Emit an error if "id" cannot be found.
- Comment the routine and add a FIXME to reconsider how we emulate GCC's new fangled behavior. This isn't a priority for now, since almost no code depends on having "id" built-in.
- Add a test.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42845 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
663733e9a0cfa1aae3644169d5f71b69db7be408 10-Oct-2007 Anders Carlsson <andersca@mac.com> Emit a warning when the body of an if block is a NullStmt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42840 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
2d85f8ba62fd6fdcf0ae303d77112b413d412cae 10-Oct-2007 Anders Carlsson <andersca@mac.com> Emit a warning when the body of an if block is a NullStmt.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42840 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
77cec47d0e45a620a5ea9d9f83fa8ddbd5b70042 10-Oct-2007 Chris Lattner <sabre@nondot.org> resolve a fixme, by moving __builtin_va_list to a more logical
place and making it correctly parameterized on the target.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42830 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
d19144b244f86227fcc2b0da794929fe83968dd5 10-Oct-2007 Chris Lattner <sabre@nondot.org> resolve a fixme, by moving __builtin_va_list to a more logical
place and making it correctly parameterized on the target.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42830 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
bd5c5fbb2038593120fecaff11bfa514b32db1b8 10-Oct-2007 Steve Naroff <snaroff@apple.com> Fix a latent bug in MinimalActions (created by a recent name change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42829 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
640db42222c9f3f6716cf4d4cbcabb0538c7f4d7 10-Oct-2007 Steve Naroff <snaroff@apple.com> Fix a latent bug in MinimalActions (created by a recent name change).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42829 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
415c183e6e2bb95f3c8f1337006c295f267240d6 10-Oct-2007 Steve Naroff <snaroff@apple.com> Remove Scope argument from ObjC actions that either don't need it or can now use TUScope.
Also improve a recently added comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42826 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e440eb8158e71deb1e4ab11618ae3d680aac6da1 10-Oct-2007 Steve Naroff <snaroff@apple.com> Remove Scope argument from ObjC actions that either don't need it or can now use TUScope.
Also improve a recently added comment.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42826 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d1f21e12121a100ef17e7e80343b92a0797eeedc 10-Oct-2007 Chris Lattner <sabre@nondot.org> Make a significant change to invert the control flow handling
predefined macros. Previously, these were handled by the driver,
now they are handled by the preprocessor.

Some fallout of this:

1. Instead of preprocessing two buffers (the predefines, then the
main source file) we now start preprocessing the main source
file and inject the predefines as a "psuedo #include" from the
main source file.
2. #1 allows us to nuke the Lexer::IsMainFile flag and simplify
Preprocessor::isInPrimaryFile.
3. The driver doesn't have to know about standard #defines, the
preprocessor knows, which is nice for people wanting to define
their own drivers.
4. This allows us to put normal tokens in the predefine buffer,
for example a definition for __builtin_va_list that is
target-specific, and a typedef for id in objc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42818 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
53b0dabbe52219a8057659b90539837394ef0fa1 10-Oct-2007 Chris Lattner <sabre@nondot.org> Make a significant change to invert the control flow handling
predefined macros. Previously, these were handled by the driver,
now they are handled by the preprocessor.

Some fallout of this:

1. Instead of preprocessing two buffers (the predefines, then the
main source file) we now start preprocessing the main source
file and inject the predefines as a "psuedo #include" from the
main source file.
2. #1 allows us to nuke the Lexer::IsMainFile flag and simplify
Preprocessor::isInPrimaryFile.
3. The driver doesn't have to know about standard #defines, the
preprocessor knows, which is nice for people wanting to define
their own drivers.
4. This allows us to put normal tokens in the predefine buffer,
for example a definition for __builtin_va_list that is
target-specific, and a typedef for id in objc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42818 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
9637a9be52c572af8bda21818126c76276bba7f3 10-Oct-2007 Steve Naroff <snaroff@apple.com> Make sure methods with no return type default to "id".

This fixes a crasher in Sema::MatchTwoMethodDeclarations(), identified by selector-overload.m (just added).

Added Action::ActOnTranslationUnitScope() and renamed Action::PopScope to ActOnPopScope.

Added a Translation Unit Scope instance variable to Sema (will be very useful to ObjC-related actions, since ObjC declarations are always file-scoped).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42817 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b216c8861c60af9c56c900a485233255c4452df2 10-Oct-2007 Steve Naroff <snaroff@apple.com> Make sure methods with no return type default to "id".

This fixes a crasher in Sema::MatchTwoMethodDeclarations(), identified by selector-overload.m (just added).

Added Action::ActOnTranslationUnitScope() and renamed Action::PopScope to ActOnPopScope.

Added a Translation Unit Scope instance variable to Sema (will be very useful to ObjC-related actions, since ObjC declarations are always file-scoped).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42817 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e51672d4e025afa6990962c2eb5d0e50ae4be789 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Remove comment about protocols and namespace no longer relevant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0be657cb85538ff20358b700062a17450716419b 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Remove comment about protocols and namespace no longer relevant.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42804 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
042e6e8101dfcd3401f8cd7df50a4ac5e91612df 09-Oct-2007 Chris Lattner <sabre@nondot.org> Update DeclKind enums to reflect ObjcProtocolDecl's inheritance change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4de884d3fba3250b3f2e7b54145f1e878ce7c3c3 09-Oct-2007 Chris Lattner <sabre@nondot.org> Update DeclKind enums to reflect ObjcProtocolDecl's inheritance change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42802 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ac142de525ab05fe14f21cfbb364833d1e7507a4 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Remove addition of protocol names to declaration scopes, use a separate
DenseMap to keep track of such declarations and derive ObjcProtocolDecl
directyly from NamedScope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
05672a0ce85f6a203a960a856d30c4606ab136a7 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Remove addition of protocol names to declaration scopes, use a separate
DenseMap to keep track of such declarations and derive ObjcProtocolDecl
directyly from NamedScope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
17a5fb67dd338ebcfa755a69a844b865dff397f7 09-Oct-2007 Chris Lattner <sabre@nondot.org> Add two new Token helper functions, "is" and "isNot". This allows us to write
stuff like this:

// If we don't have a comma, it is either the end of the list (a ';') or
// an error, bail out.
if (Tok.isNot(tok::comma))
break;
instead of:
// If we don't have a comma, it is either the end of the list (a ';') or
// an error, bail out.
if (Tok.getKind() != tok::comma)
break;

There is obviously no functionality change, but the code reads a bit better and is
more terse.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42795 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
000732226610650837478cba97843d19b75f648e 09-Oct-2007 Chris Lattner <sabre@nondot.org> Add two new Token helper functions, "is" and "isNot". This allows us to write
stuff like this:

// If we don't have a comma, it is either the end of the list (a ';') or
// an error, bail out.
if (Tok.isNot(tok::comma))
break;
instead of:
// If we don't have a comma, it is either the end of the list (a ';') or
// an error, bail out.
if (Tok.getKind() != tok::comma)
break;

There is obviously no functionality change, but the code reads a bit better and is
more terse.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42795 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
c5a342d3b1cc5fa6eef09653a6d8d091928366c0 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Added better comment about protocol list for class ObjcQualifiedInterfaceType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
878520b6413663a13b1b56c7e3f256b1ecbb8db4 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Added better comment about protocol list for class ObjcQualifiedInterfaceType.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ea14870788f4b1d08258121cde3faf1fa9e83546 09-Oct-2007 Chris Lattner <sabre@nondot.org> rename some "Parse" actions to "ActOn". Move code around in
ParseFunctionDefinition so that ActOnFunctionDefBody is always
called if ActOnStartOfFunctionDef is called. This fixes a crash
reported by Nuno Lopes.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42793 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
b652cea7d7b70ebe3744fb6d72c9ad9cf3c95429 09-Oct-2007 Chris Lattner <sabre@nondot.org> rename some "Parse" actions to "ActOn". Move code around in
ParseFunctionDefinition so that ActOnFunctionDefBody is always
called if ActOnStartOfFunctionDef is called. This fixes a crash
reported by Nuno Lopes.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42793 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
90120e89387d474b5c8dfeb749e7d16db0fa9231 09-Oct-2007 Steve Naroff <snaroff@apple.com> Remove 2 protocol related actions from MinimalActions (protocols shouldn't be recognized as types).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42777 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
71e99080e7b2d79bd6f23573124917cda96e8f33 09-Oct-2007 Steve Naroff <snaroff@apple.com> Remove 2 protocol related actions from MinimalActions (protocols shouldn't be recognized as types).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42777 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
c04aff17dcfaa5f628bcfed0e393f2e946ea5184 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Added a new class for Interfaces qualified by protocol list.
Protocols are now sorted and made unique in the list.
Enhanced pretty printer for @interface (So, I can see the protocol list).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e37882ad335896dedf345102bb425383e6221c37 09-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Added a new class for Interfaces qualified by protocol list.
Protocols are now sorted and made unique in the list.
Enhanced pretty printer for @interface (So, I can see the protocol list).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3fc54197f86651e64f81d14410db2fd4e1e5af8e 08-Oct-2007 Steve Naroff <snaroff@apple.com> Removed unused instance variable from FieldDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
22cdd239dc1a5ed3635afc67465b12d5e6437578 08-Oct-2007 Steve Naroff <snaroff@apple.com> Removed unused instance variable from FieldDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42773 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3289bca033c3d7e3ee9089b6abe26db01e3f0e08 08-Oct-2007 Chris Lattner <sabre@nondot.org> Rename FileVariable -> FileVar for consistency with its class name,
likewise block and param. Reorder the layout of the Decl kind enum
so that the inheritance tree is reflected in the ordering. This allows
trivial range comparisons to determine whether something is an instance
of some abstract class, making classof faster.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42772 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
aa9fc46c6a797c86ae004092ab4f2b1bed6c4616 08-Oct-2007 Chris Lattner <sabre@nondot.org> Rename FileVariable -> FileVar for consistency with its class name,
likewise block and param. Reorder the layout of the Decl kind enum
so that the inheritance tree is reflected in the ordering. This allows
trivial range comparisons to determine whether something is an instance
of some abstract class, making classof faster.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42772 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
ef93303b885c292b3df3d195cf21a05e203c763e 08-Oct-2007 Chris Lattner <sabre@nondot.org> add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
2d29581d2b7ad5ec5df6ff3947fb0711339361a4 08-Oct-2007 Chris Lattner <sabre@nondot.org> add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42771 91177308-0d34-0410-b5e6-96231b3b80d8
asic/IdentifierTable.h
ac20be2b3aaae316b1f7e17b5c2c1d0ad9250c52 08-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Several small patches to do pretty printing for objective-c top-level decls
(minimal printing), Derive ObjcClassDecl from Decl. Ted may want to
take note of the change I made to CFGRecStmtDeclVisitor.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42764 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
ab0aeb0bf3eb289013e9f37e75c3dfc4c618f53c 08-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Several small patches to do pretty printing for objective-c top-level decls
(minimal printing), Derive ObjcClassDecl from Decl. Ted may want to
take note of the change I made to CFGRecStmtDeclVisitor.h


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42764 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
935877d6939694f69d612d8d8d673e178e4ebb8e 08-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Removed unnecessary base class from some of objective-c classes:
ObjcProtocolDecl is now derived from ScopedDecl. ObjcForwardProtocolDecl from Decl.
ObjcImplementationDecl fom NamedDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6d4caf26945095cc21dd7c79d2442668ed3a61b6 08-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Removed unnecessary base class from some of objective-c classes:
ObjcProtocolDecl is now derived from ScopedDecl. ObjcForwardProtocolDecl from Decl.
ObjcImplementationDecl fom NamedDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42756 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
2fd1c65311af21735a004f3cb1e1250d79c57bee 07-Oct-2007 Chris Lattner <sabre@nondot.org> move IdentifierTable.h from liblex to libbasic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
asic/IdentifierTable.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Action.h
c7229c338c21ef26b01ef3ecf9eec4fd373fa9ec 07-Oct-2007 Chris Lattner <sabre@nondot.org> move IdentifierTable.h from liblex to libbasic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42730 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
ST/Expr.h
asic/IdentifierTable.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Action.h
7a1b0889b003583bf276f9a698c5122fe86a1a62 07-Oct-2007 Chris Lattner <sabre@nondot.org> improve layering:
Now instead of IdentifierInfo knowing anything about MacroInfo,
only the preprocessor knows. This makes MacroInfo truly private
to the Lex library (and its direct clients) instead of being
accessed in the Basic library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42727 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
ex/MacroExpander.h
ex/Preprocessor.h
cc1a875f94630e58d24a55577ffbf0e89b7da8c7 07-Oct-2007 Chris Lattner <sabre@nondot.org> improve layering:
Now instead of IdentifierInfo knowing anything about MacroInfo,
only the preprocessor knows. This makes MacroInfo truly private
to the Lex library (and its direct clients) instead of being
accessed in the Basic library.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42727 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
ex/MacroExpander.h
ex/Preprocessor.h
4826cbc22a5906cbc34932e86b7148a74c3a8e02 07-Oct-2007 Chris Lattner <sabre@nondot.org> add a hasMacroDefinition() method to IdentifierInfo, strength reduce a
call to getMacroInfo to call it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42725 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
9c46de446d18f4a28446cb798d4131bd05515699 07-Oct-2007 Chris Lattner <sabre@nondot.org> add a hasMacroDefinition() method to IdentifierInfo, strength reduce a
call to getMacroInfo to call it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42725 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
9899020887dad62b0d287b3701ac824c421f5aec 07-Oct-2007 Chris Lattner <sabre@nondot.org> update comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42724 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
6d9a3e648d6bf6b347174152f191bd1377528f8c 07-Oct-2007 Chris Lattner <sabre@nondot.org> update comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42724 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
11f32778a8e330c4268df6172c8ef15cce3982d7 07-Oct-2007 Chris Lattner <sabre@nondot.org> Remove the PPID bitfield from IdentifierInfo, shrinking it by a word
(because all bitfields now fit in 32 bits). This shrinks the identifier
table for carbon.h from 1634428 to 1451424 bytes (12%) and has no impact
on compile time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/IdentifierTable.h
387b98d37e08f7aa9ddf23e067e1d27e39ce16f3 07-Oct-2007 Chris Lattner <sabre@nondot.org> Remove the PPID bitfield from IdentifierInfo, shrinking it by a word
(because all bitfields now fit in 32 bits). This shrinks the identifier
table for carbon.h from 1634428 to 1451424 bytes (12%) and has no impact
on compile time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42723 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
ex/IdentifierTable.h
0371c0e8bc1b304cb0b88be07232c42afbe1d199 07-Oct-2007 Chris Lattner <sabre@nondot.org> First step to fixing a long lived layering violation: this
moves the MacroInfo pointer to a side hash table (which currently
lives in IdentifierTable.cpp). This removes a pointer from
Identifier info, but doesn't shrink it, as it requires a new bit
be added. This strange approach with the 'hasmacro' bit is needed
to not lose preprocessor performance.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42722 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
4365a7e46822700357a272d839ee2656d9603d5a 07-Oct-2007 Chris Lattner <sabre@nondot.org> First step to fixing a long lived layering violation: this
moves the MacroInfo pointer to a side hash table (which currently
lives in IdentifierTable.cpp). This removes a pointer from
Identifier info, but doesn't shrink it, as it requires a new bit
be added. This strange approach with the 'hasmacro' bit is needed
to not lose preprocessor performance.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42722 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
b2aa7cea4c96befa4a122c21d22aad7b4bb9edf7 07-Oct-2007 Chris Lattner <sabre@nondot.org> classof isn't right. This is causing assertion failures somehow now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42720 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f47a7f8531668b0b84a7638b6d899c0fbfb483fa 07-Oct-2007 Chris Lattner <sabre@nondot.org> classof isn't right. This is causing assertion failures somehow now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42720 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
70f10f68fb028f196ab806382f39ca250761ce08 07-Oct-2007 Chris Lattner <sabre@nondot.org> Shrink the builtinID down by 3 bits, allowing all the bitfields to
fit in 32-bits, shrinking IdentifierInfo by a word.

This shrinks the total size of the identifier pool from
1817264 to 1634428 bytes (11%) on carbon.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42719 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
adb83b41cb00acac7a9c035996318d88ecf2e6c8 07-Oct-2007 Chris Lattner <sabre@nondot.org> Shrink the builtinID down by 3 bits, allowing all the bitfields to
fit in 32-bits, shrinking IdentifierInfo by a word.

This shrinks the total size of the identifier pool from
1817264 to 1634428 bytes (11%) on carbon.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42719 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
d031a45ae433b647baf4688bcaf9c58f8ee6e2c1 07-Oct-2007 Chris Lattner <sabre@nondot.org> simplify the interfaces to create selectors: getSelector can take any
number of arguments now and does the right thing, but the nullary/unary
accessors are preserved as convenience functions. This allows us to
slightly simplify clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42716 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
ff38491c18b060526d754765b952f4a497a89416 07-Oct-2007 Chris Lattner <sabre@nondot.org> simplify the interfaces to create selectors: getSelector can take any
number of arguments now and does the right thing, but the nullary/unary
accessors are preserved as convenience functions. This allows us to
slightly simplify clients.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42716 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
64610dd798e056f378a7095bd5d89f2c8039d093 07-Oct-2007 Chris Lattner <sabre@nondot.org> simplify some Selector interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42715 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
f836e3fea2c77fdbb18170fb313ee0d45551320b 07-Oct-2007 Chris Lattner <sabre@nondot.org> simplify some Selector interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42715 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
a7a191caaabffadaddc6e3ce26ca5718a8ca19b6 07-Oct-2007 Chris Lattner <sabre@nondot.org> move ImplementationClassInfo out of ASTContext into Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f38766870882b8cdd3d9de05f734c024f556b5bc 07-Oct-2007 Chris Lattner <sabre@nondot.org> move ImplementationClassInfo out of ASTContext into Sema.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42714 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
e8d6ae78cb12747ce077a91b0e05fe66d44a0cca 07-Oct-2007 Chris Lattner <sabre@nondot.org> add comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42712 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
675218bd93229b0b63f172711391234f66f5f62a 07-Oct-2007 Chris Lattner <sabre@nondot.org> add comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42712 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
79b008459bd61e5f67f052fd07e168920f292d17 07-Oct-2007 Chris Lattner <sabre@nondot.org> switch ObjcCategoryImplDecl over to being a NamedDecl, remove dead ctor argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42711 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6a0e89eece63e238ce873810f6f9bb50822e0296 07-Oct-2007 Chris Lattner <sabre@nondot.org> switch ObjcCategoryImplDecl over to being a NamedDecl, remove dead ctor argument.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42711 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
910435b63b345aaf5c2cdac9d3fc1efba8a0fe37 07-Oct-2007 Chris Lattner <sabre@nondot.org> introduce a new NamedDecl class, switch a couple of things over to using it.
NamedDecl is a Decl that has an IdentifierInfo (for example, ScopedDecl),
but not ObjcMethodDecl.

Simplify some code in ActOnAddMethodsToObjcDecl, by doing the cast from
DeclTy to Decl at the start of the method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
fd5de471478a507dd2495c4ea9bcab801ea5fa65 07-Oct-2007 Chris Lattner <sabre@nondot.org> introduce a new NamedDecl class, switch a couple of things over to using it.
NamedDecl is a Decl that has an IdentifierInfo (for example, ScopedDecl),
but not ObjcMethodDecl.

Simplify some code in ActOnAddMethodsToObjcDecl, by doing the cast from
DeclTy to Decl at the start of the method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42710 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
8d336eed195f3ae2a24753571f59ebd899d2f2f0 07-Oct-2007 Chris Lattner <sabre@nondot.org> Every decl has a SourceLocation, move the location info into the Decl class instead of being in subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
e5ab7f31054e87ee812830480a828a762cd9eb73 07-Oct-2007 Chris Lattner <sabre@nondot.org> Every decl has a SourceLocation, move the location info into the Decl class instead of being in subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42709 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
2443d912f8b779a65180dda5309fabb34205f0d3 06-Oct-2007 Chris Lattner <sabre@nondot.org> simplify the interface to create ObjcClassDecl's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7e620729fcb5a0042107f999dcf524f7357ce819 06-Oct-2007 Chris Lattner <sabre@nondot.org> simplify the interface to create ObjcClassDecl's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42706 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
6b1ed8d95b813c214fb3ee7e00dc1d31c4116067 06-Oct-2007 Chris Lattner <sabre@nondot.org> simplify the interface for creating ObjcForwardProtocolDecl



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Type.h
b97de3eddf0a0f7ff97204e7def6b7e0aa8953f2 06-Oct-2007 Chris Lattner <sabre@nondot.org> simplify the interface for creating ObjcForwardProtocolDecl



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Type.h
d5c9d3dfe91d5928fc2eb98d1dd60079605a7c80 06-Oct-2007 Chris Lattner <sabre@nondot.org> stub out some printing of objc decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
9fa5e65d08aee1875c5f2a841c8b0b4069bd00e5 06-Oct-2007 Chris Lattner <sabre@nondot.org> stub out some printing of objc decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42703 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0db667aadbc4d6f698be4dce56b6473e2fc49aac 06-Oct-2007 Chris Lattner <sabre@nondot.org> speed up clang startup another 28% by avoiding std::vector<std::string>
for holding builtin target-specific macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
d15fa82aebca0c26160805497bd88a4e61ebe011 06-Oct-2007 Chris Lattner <sabre@nondot.org> speed up clang startup another 28% by avoiding std::vector<std::string>
for holding builtin target-specific macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42689 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
94067f8bf133f81b419ef8cfa359d371e3709768 06-Oct-2007 Ted Kremenek <kremenek@apple.com> Removed DataflowStmtVisitor. It is no longer used, and is obsoleted
by newer visitor interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42662 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/DataflowStmtVisitor.h
48569ed9223bf60aabcd7605bb54d8ba8999e7be 06-Oct-2007 Ted Kremenek <kremenek@apple.com> Removed DataflowStmtVisitor. It is no longer used, and is obsoleted
by newer visitor interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42662 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/DataflowStmtVisitor.h
a096e1dc691004efeaca00a597caf287e9568e4a 05-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> This is the first patch toward supporting protocol conforming
objective-c types. It also removes use of Scope* parameter in
getObjCProtocolDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
245f92a8867c02378ab485ac256ca2315a0ef94d 05-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> This is the first patch toward supporting protocol conforming
objective-c types. It also removes use of Scope* parameter in
getObjCProtocolDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42649 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Action.h
48ed6f88bdfc88c5b596fee868b72309d81a4bdb 05-Oct-2007 Chris Lattner <sabre@nondot.org> Implement DenseMapInfo for Selector, allowing use of DenseMap/DenseSet of
Selector's instead of requiring void* to be used. I converted one use of
DenseSet<void*> over to use DenseSet<Selector> but the others should change
as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42645 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
85994260c41a54cab061a434ed378fc448333a4e 05-Oct-2007 Chris Lattner <sabre@nondot.org> Implement DenseMapInfo for Selector, allowing use of DenseMap/DenseSet of
Selector's instead of requiring void* to be used. I converted one use of
DenseSet<void*> over to use DenseSet<Selector> but the others should change
as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42645 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
f9e80dbb8e4fe683f6c20071d5cee8b7c8c7a015 05-Oct-2007 Steve Naroff <snaroff@apple.com> Layering refinements for selectors (suggested by Chris). Specifics...

- Add SelectorTable, which enables us to remove MultiKeywordSelector from the public header.
- Remove FoldingSet from IdentifierInfo.h and Preprocessor.h.
- Remove Parser::ObjcGetUnarySelector and Parser::ObjcGetKeywordSelector, they are subsumed by SelectorTable.
- Add MultiKeywordSelector to IdentifierInfo.cpp.
- Move a bunch of selector related methods from ParseObjC.cpp to IdentifierInfo.cpp.
- Added some comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Parser.h
29238a0bf7cbf5b396efb451a0adb5fe4aa037ca 05-Oct-2007 Steve Naroff <snaroff@apple.com> Layering refinements for selectors (suggested by Chris). Specifics...

- Add SelectorTable, which enables us to remove MultiKeywordSelector from the public header.
- Remove FoldingSet from IdentifierInfo.h and Preprocessor.h.
- Remove Parser::ObjcGetUnarySelector and Parser::ObjcGetKeywordSelector, they are subsumed by SelectorTable.
- Add MultiKeywordSelector to IdentifierInfo.cpp.
- Move a bunch of selector related methods from ParseObjC.cpp to IdentifierInfo.cpp.
- Added some comments.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42643 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Parser.h
67907bd05f10d430df8a0c8b4e13e8026bca4060 05-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for 1) Checking for duplicate methods decls in intterface and category.
2) Use of the new DenseSet<t> abstractions instead of DenseMap<t,char>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
85ff2646c1aeedd1105f867a5bba8a58febd1d2a 05-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for 1) Checking for duplicate methods decls in intterface and category.
2) Use of the new DenseSet<t> abstractions instead of DenseMap<t,char>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42641 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
e58e080af0f4949d8acffe5960751f1b9c44c7e6 05-Oct-2007 Devang Patel <dpatel@apple.com> switch statement code gen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
51b09f2c528c8460b5465c676173324e44176d62 05-Oct-2007 Devang Patel <dpatel@apple.com> switch statement code gen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
37c9c61fc340220487a31d4055590615f41d27e8 04-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> this patch accomodates clattner's comments on expression processing in @try-statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42611 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b384d329e0b727d4f2effa28fbb9aba2ac420e7b 04-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> this patch accomodates clattner's comments on expression processing in @try-statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42611 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
d77ce0edf1977c138b0dc05174df320080e3e758 04-Oct-2007 Chris Lattner <sabre@nondot.org> minor cleanups, make code more defensive, less branchy in Selector ctor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42603 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
0e2dfd3963465d238e791eb8996e4d49fa47b615 04-Oct-2007 Chris Lattner <sabre@nondot.org> minor cleanups, make code more defensive, less branchy in Selector ctor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42603 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
9dd383ac2f38fd7c2ea27a5c5ef9726e4eaa2da5 04-Oct-2007 Chris Lattner <sabre@nondot.org> fix an incorrect assertion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42602 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
1b386424dfbea0175430345172b5306fda03a3ff 04-Oct-2007 Chris Lattner <sabre@nondot.org> fix an incorrect assertion


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42602 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
fa601d5b9f81a4c43c45f58844b1defde5dac54a 04-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed all my recent test cases to have the RUN command and
fixed consequence of these changes in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42600 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
4b6df3fa953267c5d755628c8afd818bb571e579 04-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Fixed all my recent test cases to have the RUN command and
fixed consequence of these changes in clang.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42600 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
25aace8f19a9d952350a99be2ff01191ec116117 03-Oct-2007 Steve Naroff <snaroff@apple.com> Finish renaming ObjC declaration actions.
Add comments.
Switch to new indentation style for the Action class. Since many actions take many arguments, the new style will...
- make it easier to add/remove arguments without messing up the indentation...
- make it easier to add comments to each argument (see ActOnMethodDeclaration for an example)...
- in general, just makes it easier to see what is being passed.

The rest of Actions will be converted "lazily"...there is no immediate need to hack all the existing methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42587 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
3a165b066e665870c163af64844073a664c042d0 03-Oct-2007 Steve Naroff <snaroff@apple.com> Finish renaming ObjC declaration actions.
Add comments.
Switch to new indentation style for the Action class. Since many actions take many arguments, the new style will...
- make it easier to add/remove arguments without messing up the indentation...
- make it easier to add comments to each argument (see ActOnMethodDeclaration for an example)...
- in general, just makes it easier to see what is being passed.

The rest of Actions will be converted "lazily"...there is no immediate need to hack all the existing methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42587 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
78adb3998130b04401da53def39b65dacccdace0 03-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Renamed getCatLoc() to getLocation() to be consistant for such
getter names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
79139a121781854c3742273dd7b8289fa215341a 03-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Renamed getCatLoc() to getLocation() to be consistant for such
getter names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7f58c140d0b0fbeee832f90c75ac29af2dff6bd6 03-Oct-2007 Ted Kremenek <kremenek@apple.com> Fixed bug where intrusive_ptr_add_ref and intrusive_ptr_release were
not declared "static inline."

Removed member templates for operator= and copy constructor. They simply
didn't work as expected.

Fixed reference counting bug when a smart pointer is assigned the
value of another smart pointer that refers to the same address.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42562 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/IntrusiveSPtr.h
e260e62ddaefa0db5226f88313d30d5b50182d3a 03-Oct-2007 Ted Kremenek <kremenek@apple.com> Fixed bug where intrusive_ptr_add_ref and intrusive_ptr_release were
not declared "static inline."

Removed member templates for operator= and copy constructor. They simply
didn't work as expected.

Fixed reference counting bug when a smart pointer is assigned the
value of another smart pointer that refers to the same address.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42562 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/IntrusiveSPtr.h
b4dfe3670ab33eac91ddfb8402007e46b3772943 03-Oct-2007 Steve Naroff <snaroff@apple.com> Rename several ObjC action methods to use the "ActOn" prefix (still a few more to do).
Remove Action::ObjCStartCategoryInterface/ObjCFinishInterface - they are unused.
.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42559 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
37e58d104d7756f7c18f525b74e46b8eeec8ef81 03-Oct-2007 Steve Naroff <snaroff@apple.com> Rename several ObjC action methods to use the "ActOn" prefix (still a few more to do).
Remove Action::ObjCStartCategoryInterface/ObjCFinishInterface - they are unused.
.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42559 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
91b708d7144f9ba5ac06d5552f375dde032e892c 03-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Unified SuperClass field name in an objective-c class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42556 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
93efc029bf485de724fd783ad14b58aaec9c919b 03-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Unified SuperClass field name in an objective-c class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42556 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
1c095a701313edd270c3ef5c5f17ed00d883c9eb 03-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Unified such names as protocol references, instance methods and class methods
and their accessors in a variety of objective-c classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
7ed9e0f97f4645edc5d4670385b985ea4c617ce7 03-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Unified such names as protocol references, instance methods and class methods
and their accessors in a variety of objective-c classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
89529b1f2cb5b36563c2c1eb67b56d7e13ceec20 02-Oct-2007 Steve Naroff <snaroff@apple.com> Remove Action::ActOnImpleIvarVsClassIvars(), it is only called by Sema (not Parser).
Add Sema::CheckImplementationIvars() to replace the previous action.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
a5997c4f36e0f5aa44623a5b1e3b914760d1ec68 02-Oct-2007 Steve Naroff <snaroff@apple.com> Remove Action::ActOnImpleIvarVsClassIvars(), it is only called by Sema (not Parser).
Add Sema::CheckImplementationIvars() to replace the previous action.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42553 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
arse/Action.h
f4bc79a4abcf7bd4a628ba1b2dc46bd5891089ad 02-Oct-2007 Steve Naroff <snaroff@apple.com> Rename ObjcInterfaceDecl::getIsForwardDecl() to isForwardDecl().
Rename ObjcProtocolDecl::getIsForwardProtoDecl() to isForwardDecl().
Rename ObjcInterfaceDecl::setIsForwardDecl() to setForwardDecl().
Rename ObjcProtocolDecl::setIsForwardProtoDecl() to setForwardDecl().

Two reasons:

#1: boolean predicates should start with "is".
#2: Since these two sets of methods represent the same concept, they should be named the same (polymorphism is good:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
768f26ee5892cd63ff0335a15d71a2385ba7c5ea 02-Oct-2007 Steve Naroff <snaroff@apple.com> Rename ObjcInterfaceDecl::getIsForwardDecl() to isForwardDecl().
Rename ObjcProtocolDecl::getIsForwardProtoDecl() to isForwardDecl().
Rename ObjcInterfaceDecl::setIsForwardDecl() to setForwardDecl().
Rename ObjcProtocolDecl::setIsForwardProtoDecl() to setForwardDecl().

Two reasons:

#1: boolean predicates should start with "is".
#2: Since these two sets of methods represent the same concept, they should be named the same (polymorphism is good:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42545 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
d3952f3baefee27164f4001d6b16df443e30feec 02-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Previously, I warned those methods not implemented in implementation class/category.
Now, I also warn those class/categories which are incomplete because of this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
ca3adf7e8cac8c9fbaf592b1e5c2be6f082de7ba 02-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Previously, I warned those methods not implemented in implementation class/category.
Now, I also warn those class/categories which are incomplete because of this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42544 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
asic/DiagnosticKinds.def
fa465d1b96a38ec63dcdd4577630bf4710cff5cc 02-Oct-2007 Steve Naroff <snaroff@apple.com> - Add ObjcInterfaceDecl::lookupInstanceMethod(), lookupClassMethod().
- Add ObjcMessageExpr::getSelector(), getClassName().
- Change Sema::getObjCInterfaceDecl() to simply take an IdentifierInfo (no Scope needed).
- Remove FIXME for printing ObjCMessageExpr's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Expr.h
6a8a9a41e9067b708498c02180159bafecfa044f 02-Oct-2007 Steve Naroff <snaroff@apple.com> - Add ObjcInterfaceDecl::lookupInstanceMethod(), lookupClassMethod().
- Add ObjcMessageExpr::getSelector(), getClassName().
- Change Sema::getObjCInterfaceDecl() to simply take an IdentifierInfo (no Scope needed).
- Remove FIXME for printing ObjCMessageExpr's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42543 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
ST/Expr.h
97456458081dc6ca251199da0cab7dc8b32b493f 02-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> ObjcCategoryDecl Does not subclass from ScopedDecl any more.
Ted may want to take a look at the change I made at
FGRecStmtDeclVisitor.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
60199032e41216fa2fca635c7a942e5473cdf979 02-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> ObjcCategoryDecl Does not subclass from ScopedDecl any more.
Ted may want to take a look at the change I made at
FGRecStmtDeclVisitor.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42535 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
35bc4d26039ff5633a8c4edf9697a2f81a2a6429 02-Oct-2007 Ted Kremenek <kremenek@apple.com> Moved ProgramEdge out out include/.../Analysis/PathSensitive to include/.../Analysis, as it is now used by the FlowSensitive subsystem as well.

Removed "Edge" nested class by CFG, as it is now subsumed by ProgramEdge.

Adjusted DataflowSolver and DataflowValues to use ProgramEdges instead
of CFG::Edge.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42534 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/PathSensitive/ProgramEdge.h
nalysis/ProgramEdge.h
4d20f2dd79e7829ade5e23945a2ef65a8fe1cf39 02-Oct-2007 Ted Kremenek <kremenek@apple.com> Moved ProgramEdge out out include/.../Analysis/PathSensitive to include/.../Analysis, as it is now used by the FlowSensitive subsystem as well.

Removed "Edge" nested class by CFG, as it is now subsumed by ProgramEdge.

Adjusted DataflowSolver and DataflowValues to use ProgramEdges instead
of CFG::Edge.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42534 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/PathSensitive/ProgramEdge.h
nalysis/ProgramEdge.h
a91aa32e224397b875e51e463dc6bf88c5bf5951 02-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> This patch introduces the ObjcCategoryImplDecl class and does the checking related to
unimplemented methods in category implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
arse/Action.h
8f3fde00ad4d4f943321e338b914ae4740711c84 02-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> This patch introduces the ObjcCategoryImplDecl class and does the checking related to
unimplemented methods in category implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/DeclObjC.h
arse/Action.h
9e99008f75a31ff44e857509fd6a9a74c1cb98e9 02-Oct-2007 Ted Kremenek <kremenek@apple.com> Added DenseMapInfo traits for ProgramEdges


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42530 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ProgramEdge.h
4c3fbe33194cd9b1bfff773647ed785b403e1ba5 02-Oct-2007 Ted Kremenek <kremenek@apple.com> Added DenseMapInfo traits for ProgramEdges


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42530 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ProgramEdge.h
379cf513af71280a53c9be51a3bbc022946b629d 02-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Added a missing #include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42516 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
c1581a0d64b0ee4f822ed2fca4442a111d03569a 02-Oct-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Added a missing #include.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42516 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
f280f5fb53b34dc171390f4ebf6c80088e291f2a 02-Oct-2007 Steve Naroff <snaroff@apple.com> Add comment to ObjcClassDecl.
Move ObjcClassDecl to be next to ObjcForwardProtocolDecl. Since they are very similar, might want to unify their names (e.g. ObjcForwardClassDecl).
Change indentation of ObjcForwardProtocolDecl to conform to everything else in DeclObjC.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
06ae8d68ef258ccd40c9cd1ce762eaae6f3d4432 02-Oct-2007 Steve Naroff <snaroff@apple.com> Add comment to ObjcClassDecl.
Move ObjcClassDecl to be next to ObjcForwardProtocolDecl. Since they are very similar, might want to unify their names (e.g. ObjcForwardClassDecl).
Change indentation of ObjcForwardProtocolDecl to conform to everything else in DeclObjC.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42513 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
e8f248dc3f1ac362aa989ce8a091d2cccd82dba1 02-Oct-2007 Steve Naroff <snaroff@apple.com> Add comments for ObjC Decl's.
Removed a constructor that was #if 0's out.
Added a FIXME for fariborz...categories shouldn't inherit from ScopedDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
0c6b6243d3efd958c17943130e2a773653511edc 02-Oct-2007 Steve Naroff <snaroff@apple.com> Add comments for ObjC Decl's.
Removed a constructor that was #if 0's out.
Added a FIXME for fariborz...categories shouldn't inherit from ScopedDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42507 91177308-0d34-0410-b5e6-96231b3b80d8
ST/DeclObjC.h
8ce772b211cea74357ae57348c386c6b589aca7e 01-Oct-2007 Ted Kremenek <kremenek@apple.com> Migrated LiveVariables and UninitializedVariables to now use the
tracked BlkExpr information now maintained by the CFG class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42498 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
nalysis/LiveVariables.h
nalysis/UninitializedValues.h
11e7218db51efc825ec24e80d5b071892ca268bd 01-Oct-2007 Ted Kremenek <kremenek@apple.com> Migrated LiveVariables and UninitializedVariables to now use the
tracked BlkExpr information now maintained by the CFG class.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42498 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
nalysis/LiveVariables.h
nalysis/UninitializedValues.h
3a8198213c7834c5f122fc73ea90180f885b699e 01-Oct-2007 Ted Kremenek <kremenek@apple.com> CFG objects now internally store a (lazily created) map from block-level
expressions to IDs. This is used by various dataflow analyses, but is
also useful for anyone querying a CFG to determine where an expression
is evaluated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42495 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
63f5887f316fb52d243fcbb3631c039de6c4b993 01-Oct-2007 Ted Kremenek <kremenek@apple.com> CFG objects now internally store a (lazily created) map from block-level
expressions to IDs. This is used by various dataflow analyses, but is
also useful for anyone querying a CFG to determine where an expression
is evaluated.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42495 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
3fafa108e3efbcc21b9a69e2564307350120566b 01-Oct-2007 Steve Naroff <snaroff@apple.com> Move ObjC decls to DeclObjC.h, a new AST header.
Update clients and add to project file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42494 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
980e508ca70d6de75d2abfd96b4681fc98bb2698 01-Oct-2007 Steve Naroff <snaroff@apple.com> Move ObjC decls to DeclObjC.h, a new AST header.
Update clients and add to project file.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42494 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/ASTContext.h
ST/Decl.h
ST/DeclObjC.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
a950a57363fb95ff32f182b32b31583021ef9ac6 01-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Moved two bitfields back to top of class ObjcMethodDecl so they pack
with those in their base class. In response to clattner's
September 30, 2007 12:54:49 AM PDT email.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42491 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
991e48b283e6c683f91fdaa467776bdc4b50f099 01-Oct-2007 Fariborz Jahanian <fjahanian@apple.com> Moved two bitfields back to top of class ObjcMethodDecl so they pack
with those in their base class. In response to clattner's
September 30, 2007 12:54:49 AM PDT email.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42491 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ad5682f2e714da183ed07cbc4c8592e4f72620d7 01-Oct-2007 Ted Kremenek <kremenek@apple.com> Removed "hasImplicitControlFlow" from class CFG, and moved it to class Stmt
as a member function. This function is no longer needed within the CFG
class, and logically belongs to the Stmt class as a predicate for a
Stmt instance.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/Stmt.h
d48ade633d96b94cb435d73e2c935ea457152dec 01-Oct-2007 Ted Kremenek <kremenek@apple.com> Removed "hasImplicitControlFlow" from class CFG, and moved it to class Stmt
as a member function. This function is no longer needed within the CFG
class, and logically belongs to the Stmt class as a predicate for a
Stmt instance.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42489 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/Stmt.h
ad21a61bb1f1f3e834ae028c6fd70dcce91d6625 30-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Unused ObjcProtoMethod is removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42485 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d664ff7beb054a2f2f56ec438ff3ce65be96eddc 30-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Unused ObjcProtoMethod is removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42485 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2edb1731218065561e80fc0bd378396afd497939 30-Sep-2007 Chris Lattner <sabre@nondot.org> Add a new getLength() method to IdentifierInfo, which relies on a newly added
method to StringMapEntry. Steve, please use this to remove the
strlen calls in selector processing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42481 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
1f945f632ae993bbb9f9e69d908f7526924c1a88 30-Sep-2007 Chris Lattner <sabre@nondot.org> Add a new getLength() method to IdentifierInfo, which relies on a newly added
method to StringMapEntry. Steve, please use this to remove the
strlen calls in selector processing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42481 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
90f163b4e94137e85019271a7a06155bca6f3466 30-Sep-2007 Chris Lattner <sabre@nondot.org> improve comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42478 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
7cb8491a8bb09de32174959f3f634a44264fd48f 30-Sep-2007 Chris Lattner <sabre@nondot.org> improve comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42478 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
a00e0747ef35b1aa6a5d570e29e6a2c4689e231c 29-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch fixes all issues mentioned in clattner's feedback of
September 28, 2007 4:39:24 PM PDT
Please let me know if I missed anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42473 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
3a63da7053b07583fe3881388ef35181b2d34d3e 29-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch fixes all issues mentioned in clattner's feedback of
September 28, 2007 4:39:24 PM PDT
Please let me know if I missed anything.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42473 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
dd243eff0724a4ba016415bf3c809de920e404d2 29-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to remove use of has table for protocol name lookup. This patch mirrors my
previous patch to do the same for class name lookup using a hash table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
1b6351f76e1e06893337441641c0e349939afb31 29-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to remove use of has table for protocol name lookup. This patch mirrors my
previous patch to do the same for class name lookup using a hash table.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42471 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
0c5affb00a28ede46ad76793708b7c6ec5d8f14f 29-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Removed use of hash table for class decls and do a name look up directly.
There is still an issue if doing ScopedLookup is an overkill and we can
just access the decl using the identifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42463 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
arse/Action.h
9d048ff59ffb5d41e57297c6509c11920052cf67 29-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Removed use of hash table for class decls and do a name look up directly.
There is still an issue if doing ScopedLookup is an overkill and we can
just access the decl using the identifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42463 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
arse/Action.h
5b82d959fd7622cba372b694d551a7d345fb389b 29-Sep-2007 Steve Naroff <snaroff@apple.com> Add some comments to MultiKeywordSelector, make all methods private, add a friend, move some methods around.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42456 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
5b6b72f53ad164497cf62484b60cdbb4361f1978 29-Sep-2007 Steve Naroff <snaroff@apple.com> Add some comments to MultiKeywordSelector, make all methods private, add a friend, move some methods around.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42456 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
319e89ef7557195ea13e4b49f758c46d836b63ac 29-Sep-2007 Ted Kremenek <kremenek@apple.com> Added ProgramEdge.h, which defines ProgramEdge (and subclasses) that
encapsulate a program point within a CFG for use by our path-sensitive
dataflow solver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42455 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ProgramEdge.h
eb19188e668d0ad2c968fc0286a6922f9194deb4 29-Sep-2007 Ted Kremenek <kremenek@apple.com> Added ProgramEdge.h, which defines ProgramEdge (and subclasses) that
encapsulate a program point within a CFG for use by our path-sensitive
dataflow solver.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42455 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/PathSensitive/ProgramEdge.h
6cb1d3671bd17eb439e0f0742a9ee6a0f50dbbc0 29-Sep-2007 Steve Naroff <snaroff@apple.com> Yesterday I discovered that 78% of all selectors in "Cocoa.h" take 0/1 argument.

This motivated implementing a devious clattner inspired solution:-)

This approach uses a small value "Selector" class to point to an IdentifierInfo for the 0/1 case. For multi-keyword selectors, we instantiate a MultiKeywordSelector object (previously known as SelectorInfo). Now, the incremental cost for selectors is only 24,800 for Cocoa.h! This saves 156,592 bytes, or 86%!! The size reduction is also the result of getting rid of the AST slot, which was not strictly necessary (we will associate a selector with it's method using another table...most likely in Sema).

This change was critical to make now, before we have too many clients.

I still need to add some comments to the Selector class...will likely add later today/tomorrow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Action.h
arse/Parser.h
bcfb06ac6da1aa3c74ac1ef7a49c2807522366e7 29-Sep-2007 Steve Naroff <snaroff@apple.com> Yesterday I discovered that 78% of all selectors in "Cocoa.h" take 0/1 argument.

This motivated implementing a devious clattner inspired solution:-)

This approach uses a small value "Selector" class to point to an IdentifierInfo for the 0/1 case. For multi-keyword selectors, we instantiate a MultiKeywordSelector object (previously known as SelectorInfo). Now, the incremental cost for selectors is only 24,800 for Cocoa.h! This saves 156,592 bytes, or 86%!! The size reduction is also the result of getting rid of the AST slot, which was not strictly necessary (we will associate a selector with it's method using another table...most likely in Sema).

This change was critical to make now, before we have too many clients.

I still need to add some comments to the Selector class...will likely add later today/tomorrow.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42452 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Action.h
arse/Parser.h
eebf131945a2aae91ea7921cd9da52a2f61c35d7 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Significant cleanups and bug-fixes to LiveVariables. Uses new refactored
ExprDeclBitVector class for defining dataflow state.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42446 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
f63aa45ca9d4f4782aa236415c63e00f7ffaf185 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Significant cleanups and bug-fixes to LiveVariables. Uses new refactored
ExprDeclBitVector class for defining dataflow state.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42446 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
67c0b618bde39b42683e10eed8c4bb3cebcbeb41 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Refactored ExprDeclBitVector into two classes:
DeclBitVector
ExprDeclBitVector (which subclasses the former)

DeclBitVector is for analyses that just want to track bitvector state
for declarations.

ExprDeclBitVector is for analyses that want to track bitvector state
for both both declarations and CFGBlock-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42445 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
ca64cef65c2fcc3d22908b121bc101993604c286 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Refactored ExprDeclBitVector into two classes:
DeclBitVector
ExprDeclBitVector (which subclasses the former)

DeclBitVector is for analyses that just want to track bitvector state
for declarations.

ExprDeclBitVector is for analyses that want to track bitvector state
for both both declarations and CFGBlock-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42445 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
528e2a5bd2c8897141df229882b95a8a0dfb6872 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed bug where declaration initializer expressions were not
traversed by the visitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42438 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
677190ffddcc12fc57d10e217ee7b61c87d4edc3 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed bug where declaration initializer expressions were not
traversed by the visitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42438 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtDeclVisitor.h
3a887aaad8ef830806ebf974118a0d28bf170ac6 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Added iterator mechanism to iterator over the decls and expressions
tracked by an ExprDeclBitVector analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42437 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
cb152a7e8718324ef7c2f2f01c18049319078041 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Added iterator mechanism to iterator over the decls and expressions
tracked by an ExprDeclBitVector analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42437 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
5975f77cfa30e87b5e59827e57799b364e0a350c 28-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to warn on umimplemented methods coming from class's
protocols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
00ae8d595534c0a444326204adee3486bbb43dcd 28-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to warn on umimplemented methods coming from class's
protocols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42436 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
6b57649b2dcd47feeae608965c6316324f11f4a2 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed several bugs in the propagation of "uninitialized value"
taintness across expressions.

Made "smart-culling" of taint propagation (for error reporting)
correctly handle conditional expressions and a few other edge cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42421 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/UninitializedValues.h
a1de8c784a574a89a8a828331a8ce6b1aa57bed1 28-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed several bugs in the propagation of "uninitialized value"
taintness across expressions.

Made "smart-culling" of taint propagation (for error reporting)
correctly handle conditional expressions and a few other edge cases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42421 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/UninitializedValues.h
1e4e82f98a9fb1d08c9bdb1259af99ad0f10b45b 27-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for method implementation. It populates ObjcImplementationDecl object with method implementation declarations .
It checks and warns on those methods declared in class interface and not implemented.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
d0b015461a819913efa1161c56a8b897d7e8cdb2 27-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for method implementation. It populates ObjcImplementationDecl object with method implementation declarations .
It checks and warns on those methods declared in class interface and not implemented.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42412 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
e41de35c7128a2d89f9bc6df0fdbadafa5ecbcfc 27-Sep-2007 Steve Naroff <snaroff@apple.com> Fix bug in SelectorInfo::getName() - method buffer needs to be passed by reference.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42411 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
4cbcb897fe7c4ff1ed5322ee4dfd490c581e33d5 27-Sep-2007 Steve Naroff <snaroff@apple.com> Fix bug in SelectorInfo::getName() - method buffer needs to be passed by reference.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42411 91177308-0d34-0410-b5e6-96231b3b80d8
ex/IdentifierTable.h
bfbb7fb831324d275da33689ddc0cc2267e0697e 27-Sep-2007 Ted Kremenek <kremenek@apple.com> Created new "ExprDeclBitVector" type bundle for dataflow analyses that need boolean
values associated with ScopedDecls and CFGBlock-level Exprs. This is the common
boilerplate needed by UninitializedValues and LiveVariables.

Refactored UninitializedValues to use ExprDeclBitVector.

Shortened the string diagnostic for UninitializedValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42408 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
nalysis/UninitializedValues.h
asic/DiagnosticKinds.def
aead1539e7481fde73725d8eadeea82087982bf3 27-Sep-2007 Ted Kremenek <kremenek@apple.com> Created new "ExprDeclBitVector" type bundle for dataflow analyses that need boolean
values associated with ScopedDecls and CFGBlock-level Exprs. This is the common
boilerplate needed by UninitializedValues and LiveVariables.

Refactored UninitializedValues to use ExprDeclBitVector.

Shortened the string diagnostic for UninitializedValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42408 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ExprDeclBitVector.h
nalysis/UninitializedValues.h
asic/DiagnosticKinds.def
4ed9d662047bb65315e1fe1b0a4175c87f5fe627 27-Sep-2007 Steve Naroff <snaroff@apple.com> Add SelectorInfo (similar in spirit to IdentifierInfo). The key difference is SelectorInfo is not string-oriented, it is a unique aggregate of IdentifierInfo's (using a folding set). SelectorInfo also has a richer API that simplifies the parser/action interface. 3 noteworthy benefits:

#1: It is cleaner. I never "liked" storing keyword selectors (i.e. foo:bar:baz) in the IdentifierTable.

#2: It is more space efficient. Since Cocoa keyword selectors can be quite long, this technique is space saving. For Cocoa.h, pulling the keyword selectors out saves ~180k. The cost of the SelectorInfo data is ~100k. Saves ~80k, or 43%.

#3: It results in many API simplifications. Here are some highlights:

- Removed 3 actions (ActOnKeywordMessage, ActOnUnaryMessage, & one flavor of ObjcBuildMethodDeclaration that was specific to unary messages).
- Removed 3 funky structs from DeclSpec.h (ObjcKeywordMessage, ObjcKeywordDecl, and ObjcKeywordInfo).
- Removed 2 ivars and 2 constructors from ObjCMessageExpr (fyi, this space savings has not been measured).

I am happy with the way it turned out (though it took a bit more hacking than I expected). Given the central role of selectors in ObjC, making sure this is "right" will pay dividends later.

Thanks to Chris for talking this through with me and suggesting this approach.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Action.h
arse/DeclSpec.h
68d331a78e655d97294e94fcfa63f92cc1f40578 27-Sep-2007 Steve Naroff <snaroff@apple.com> Add SelectorInfo (similar in spirit to IdentifierInfo). The key difference is SelectorInfo is not string-oriented, it is a unique aggregate of IdentifierInfo's (using a folding set). SelectorInfo also has a richer API that simplifies the parser/action interface. 3 noteworthy benefits:

#1: It is cleaner. I never "liked" storing keyword selectors (i.e. foo:bar:baz) in the IdentifierTable.

#2: It is more space efficient. Since Cocoa keyword selectors can be quite long, this technique is space saving. For Cocoa.h, pulling the keyword selectors out saves ~180k. The cost of the SelectorInfo data is ~100k. Saves ~80k, or 43%.

#3: It results in many API simplifications. Here are some highlights:

- Removed 3 actions (ActOnKeywordMessage, ActOnUnaryMessage, & one flavor of ObjcBuildMethodDeclaration that was specific to unary messages).
- Removed 3 funky structs from DeclSpec.h (ObjcKeywordMessage, ObjcKeywordDecl, and ObjcKeywordInfo).
- Removed 2 ivars and 2 constructors from ObjCMessageExpr (fyi, this space savings has not been measured).

I am happy with the way it turned out (though it took a bit more hacking than I expected). Given the central role of selectors in ObjC, making sure this is "right" will pay dividends later.

Thanks to Chris for talking this through with me and suggesting this approach.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42395 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ex/IdentifierTable.h
ex/Preprocessor.h
arse/Action.h
arse/DeclSpec.h
85a7ea342eb0e5b580676d4cad0040f0e001d272 26-Sep-2007 Ted Kremenek <kremenek@apple.com> Added extra guard for null Stmt* when traversing the AST using VisitChildren.
Added assertion that Block-level statements should not be NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42376 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
c592522b86fa3ea7d5a0f81c186e5ccba41d3b85 26-Sep-2007 Ted Kremenek <kremenek@apple.com> Added extra guard for null Stmt* when traversing the AST using VisitChildren.
Added assertion that Block-level statements should not be NULL.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42376 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
d34caf9a80dfb04817f8e2f1f5932d3fc3f00bb6 26-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch inserts ivars declared in @implementation in its object and verifies
that they conform(in type, name and numbers) to those declared in @interface.
Test case highlights kind of checking we do here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42360 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
d0b90bff98bafb72ea9809f509bf37c93c60e74e 26-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch inserts ivars declared in @implementation in its object and verifies
that they conform(in type, name and numbers) to those declared in @interface.
Test case highlights kind of checking we do here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42360 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
10d8046a19cd088cbe9b0cb2a8d2ba05c6ae0bdb 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved "DataflowSolver.h" to the "include/" subtree. Adjusted client
code that uses the solver to reflect the new location.

Created "FlowSensitive" subdirectory in include/clang/Analysis to hold
header files relating to flow-sensitive analyses. Moved
"DataflowValues.h" into this subdirectory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42320 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/LiveVariables.h
nalysis/UninitializedValues.h
1de632bf4abb75fcd39f5d6fdf59337f0ff0edd4 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved "DataflowSolver.h" to the "include/" subtree. Adjusted client
code that uses the solver to reflect the new location.

Created "FlowSensitive" subdirectory in include/clang/Analysis to hold
header files relating to flow-sensitive analyses. Moved
"DataflowValues.h" into this subdirectory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42320 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
nalysis/FlowSensitive/DataflowSolver.h
nalysis/FlowSensitive/DataflowValues.h
nalysis/LiveVariables.h
nalysis/UninitializedValues.h
1c0eedbb720bbc574e4833fad59b36b629e03950 25-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to make ObjcImplementationDecl derived from TypeDecl and supprt legacy
objective-c code with no @interface declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0da1c1033832b572d23ff2fe7bb2ab959768727e 25-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to make ObjcImplementationDecl derived from TypeDecl and supprt legacy
objective-c code with no @interface declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42319 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c091b5df8f32a4805837fb909bbff82a01faafb5 25-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch introduces a new class to keep track of class implementation info. It also adds more
semantic checks for class and protocol declarations. Test cases are good indications of kind of
checking being done in this patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42311 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
ccb4f314248fb2202637d3290f2b17af5646da08 25-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch introduces a new class to keep track of class implementation info. It also adds more
semantic checks for class and protocol declarations. Test cases are good indications of kind of
checking being done in this patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42311 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
d7a2f811896a028916f515abcf9a6be90a742558 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Further refactored DataflowSolver. Now most code for the solver is shared
between forward and backward analyses, with trait classes being used
to implement the key differences in operations/functionality.

Converted the LiveVariables analysis to use the generic DataflowSolver. This,
along with removing some extra functionality that was not needed, reduced
the code for LiveVariables by over half.

Modified Driver code to handle the updated interface to LiveVariables.

Modified the DeadStores checker to handle the update interface to
LiveVariables.

Updated DataflowValues (generic ADT to store dataflow values) to also
store values for blocks. This is used by DeadStores. Updated some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42293 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
nalysis/LiveVariables.h
nalysis/LocalCheckers.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
fdd225ed6f362a8550e597eb875d9c402b8a309c 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Further refactored DataflowSolver. Now most code for the solver is shared
between forward and backward analyses, with trait classes being used
to implement the key differences in operations/functionality.

Converted the LiveVariables analysis to use the generic DataflowSolver. This,
along with removing some extra functionality that was not needed, reduced
the code for LiveVariables by over half.

Modified Driver code to handle the updated interface to LiveVariables.

Modified the DeadStores checker to handle the update interface to
LiveVariables.

Updated DataflowValues (generic ADT to store dataflow values) to also
store values for blocks. This is used by DeadStores. Updated some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42293 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
nalysis/LiveVariables.h
nalysis/LocalCheckers.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
22cbc57b598953e2a27a553b9319f28e19b70625 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Added extra "constness" to parameter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
d9bfa8c49c22de789ca719a6324f80ec90bb18f0 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Added extra "constness" to parameter.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42292 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
9b8c88b8e41c80548f6cf7933d7e1f583dc99a68 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Added PersistentMap, an ADT that implements a map data structure that
is persistent. Adds/removals to a PersistentMap do not result in
a map being modified, but a new map being created. This will be useful
for path-sensitive analyses.

The current implementation mainly makes copies to implement this
functionality. If the map turns out to be extensively used, this
implementation will be replaced with a more efficient one that uses
data sharing (see comments in PersistentMap.h for more information).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42290 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ADT/PersistentMap.h
67cfad6fda64fd8d1a22142a894a3892e87e76be 25-Sep-2007 Ted Kremenek <kremenek@apple.com> Added PersistentMap, an ADT that implements a map data structure that
is persistent. Adds/removals to a PersistentMap do not result in
a map being modified, but a new map being created. This will be useful
for path-sensitive analyses.

The current implementation mainly makes copies to implement this
functionality. If the map turns out to be extensively used, this
implementation will be replaced with a more efficient one that uses
data sharing (see comments in PersistentMap.h for more information).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42290 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/ADT/PersistentMap.h
058dfe0af30469ffe7384f042e3fe17e3769e384 24-Sep-2007 Ted Kremenek <kremenek@apple.com> Added smart pointer class "IntrusiveSPtr" that handles reference
counted objects that maintain their own internal reference count.
This smart pointer implementation is compatible with LLVM-style
down-casting (see in llvm: include/llvm/Support/Casting.h).

Implemented "RefCounted", a base class that objects that wish to be
managed using IntrusiveSPtrs can subclass.

Reference counted objects are being targeted for use in path-sensitive
dataflow analyses where managing many live objects becomes difficult.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42260 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/IntrusiveSPtr.h
d33218cd684ff38ad3e197f4128768906e72f0c5 24-Sep-2007 Ted Kremenek <kremenek@apple.com> Added smart pointer class "IntrusiveSPtr" that handles reference
counted objects that maintain their own internal reference count.
This smart pointer implementation is compatible with LLVM-style
down-casting (see in llvm: include/llvm/Support/Casting.h).

Implemented "RefCounted", a base class that objects that wish to be
managed using IntrusiveSPtrs can subclass.

Reference counted objects are being targeted for use in path-sensitive
dataflow analyses where managing many live objects becomes difficult.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42260 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/Support/IntrusiveSPtr.h
4351e711c580b92eacd82d6e7043bb2efadbb0e4 24-Sep-2007 Chris Lattner <sabre@nondot.org> Fix for 64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42253 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
031b2d21fe1b0ad8c8fd927f654353035ed06562 24-Sep-2007 Chris Lattner <sabre@nondot.org> Fix for 64-bit systems.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42253 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
92803daaa6a40a3899c2e599bddc42732c2ce593 24-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed VC++ bitfield to unsigned/signed sign propagation issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a8ae51f79d35b7c1822ba4a086176b4a8c862862 24-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed VC++ bitfield to unsigned/signed sign propagation issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
4e33ba30e07959f8f24b614617bd2e1f15578601 22-Sep-2007 Chris Lattner <sabre@nondot.org> add comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
3d2313ef5de46228b157b1f1f6e306812dae3942 22-Sep-2007 Chris Lattner <sabre@nondot.org> add comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42237 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7f298768e81651806d11343b9b1c6434002055cf 22-Sep-2007 Chris Lattner <sabre@nondot.org> further apfloat'ize the front-end, allowing codegen to pass
APFloat straight through to LLVM now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c9bec4bfea9090a08dd83a7b213f0c8adf8d78ec 22-Sep-2007 Chris Lattner <sabre@nondot.org> further apfloat'ize the front-end, allowing codegen to pass
APFloat straight through to LLVM now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42236 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
36f46b8a6b4c0c8274b8f2ea63f13098a0ef3351 22-Sep-2007 Chris Lattner <sabre@nondot.org> work around bugs and missing features in apfloat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1c9bdaef20398390818e9114269cd9925534b89c 22-Sep-2007 Chris Lattner <sabre@nondot.org> work around bugs and missing features in apfloat.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42235 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
858eece2d335c82c4de7773d1da968298f858f44 22-Sep-2007 Chris Lattner <sabre@nondot.org> Use APFloat for the representation of FP immediates, ask the target
for *which* apfloat to use for a particular type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/TargetInfo.h
ex/LiteralSupport.h
525a05093a4816af961fe2bc6b8a81c17e2e26c2 22-Sep-2007 Chris Lattner <sabre@nondot.org> Use APFloat for the representation of FP immediates, ask the target
for *which* apfloat to use for a particular type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42234 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/TargetInfo.h
ex/LiteralSupport.h
ac7758315f120e0cfd7d7bc3ea5974c10f0987c4 22-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch adds to new things to clang:
1. Handles saving and checking on protocols used in an @interface declaration
2. Checks and saves class's super class.
3. Adds semantic check to category declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
b27c156688ca557cb277ecdfea6dccc1dac5b49f 22-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch adds to new things to clang:
1. Handles saving and checking on protocols used in an @interface declaration
2. Checks and saves class's super class.
3. Adds semantic check to category declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42218 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
766afb8a7f1ecde2060728637ab20f85b50c2265 21-Sep-2007 Chris Lattner <sabre@nondot.org> Make case sorting deterministic by not depending on pointer
values. Patch mostly by Gabor Greif for PR1682.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
764a7ce5217f9569e100a3445f47496ee82daf86 21-Sep-2007 Chris Lattner <sabre@nondot.org> Make case sorting deterministic by not depending on pointer
values. Patch mostly by Gabor Greif for PR1682.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42203 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
c716c94b77c762aaa320b24b51d238cfdcc6b6c5 21-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch instantiates objects for forward protocols and in general handles use of
protocols referenced in @protocol declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42191 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
894c57f565869b26a65436d250a9ca7a04d2abe0 21-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> This patch instantiates objects for forward protocols and in general handles use of
protocols referenced in @protocol declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42191 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
a36bd923626cc8a75c4f7e3814cfd414a265be78 20-Sep-2007 Ted Kremenek <kremenek@apple.com> Renamed "include/clang/Analysis/CFGVisitors" "<snip>/Analysis/Visitors".

"Visitors" is more general than "CFGVisitors", as we aren't just using
visitation useful for CFG analysis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42174 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGVisitors/CFGRecStmtDeclVisitor.h
nalysis/CFGVisitors/CFGRecStmtVisitor.h
nalysis/CFGVisitors/CFGStmtVisitor.h
nalysis/CFGVisitors/CFGVarDeclVisitor.h
nalysis/CFGVisitors/DataflowStmtVisitor.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
nalysis/Visitors/DataflowStmtVisitor.h
57634c7cecef75a13b21856376347f1c7cb5bc93 20-Sep-2007 Ted Kremenek <kremenek@apple.com> Renamed "include/clang/Analysis/CFGVisitors" "<snip>/Analysis/Visitors".

"Visitors" is more general than "CFGVisitors", as we aren't just using
visitation useful for CFG analysis.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42174 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGVisitors/CFGRecStmtDeclVisitor.h
nalysis/CFGVisitors/CFGRecStmtVisitor.h
nalysis/CFGVisitors/CFGStmtVisitor.h
nalysis/CFGVisitors/CFGVarDeclVisitor.h
nalysis/CFGVisitors/DataflowStmtVisitor.h
nalysis/Visitors/CFGRecStmtDeclVisitor.h
nalysis/Visitors/CFGRecStmtVisitor.h
nalysis/Visitors/CFGStmtVisitor.h
nalysis/Visitors/CFGVarDeclVisitor.h
nalysis/Visitors/DataflowStmtVisitor.h
73a70e9f94f4693deb1e076a17553c492b88c238 20-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved include/clang/Analysis/*Visitor.h to include/clang/Analysis/CFGVisitors.

We had enough visitors that it was cluttering the Analysis directory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42173 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGRecStmtDeclVisitor.h
nalysis/CFGRecStmtVisitor.h
nalysis/CFGStmtVisitor.h
nalysis/CFGVarDeclVisitor.h
nalysis/CFGVisitors/CFGRecStmtDeclVisitor.h
nalysis/CFGVisitors/CFGRecStmtVisitor.h
nalysis/CFGVisitors/CFGStmtVisitor.h
nalysis/CFGVisitors/CFGVarDeclVisitor.h
nalysis/CFGVisitors/DataflowStmtVisitor.h
nalysis/DataflowStmtVisitor.h
adfb987d1936fb4f955236ccf77ec4be888a6456 20-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved include/clang/Analysis/*Visitor.h to include/clang/Analysis/CFGVisitors.

We had enough visitors that it was cluttering the Analysis directory.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42173 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGRecStmtDeclVisitor.h
nalysis/CFGRecStmtVisitor.h
nalysis/CFGStmtVisitor.h
nalysis/CFGVarDeclVisitor.h
nalysis/CFGVisitors/CFGRecStmtDeclVisitor.h
nalysis/CFGVisitors/CFGRecStmtVisitor.h
nalysis/CFGVisitors/CFGStmtVisitor.h
nalysis/CFGVisitors/CFGVarDeclVisitor.h
nalysis/CFGVisitors/DataflowStmtVisitor.h
nalysis/DataflowStmtVisitor.h
a5f40405e24ca51e92e5ff9b692bad588edae078 20-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Handle forward declaration of classes and prevent re-instantiation of
ObjcInterfaceClass Objects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
bd51b8745c7424fb95abb91370d1a38a24451a6e 20-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Handle forward declaration of classes and prevent re-instantiation of
ObjcInterfaceClass Objects.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42172 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
0b59d9cbe33a1062a9795c09a04d2f15d4f54cca 20-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Match to do some semantic analysis on objective-c class decl.
1. Detect used of undeclared/forward declared super class.
2. Detect duplicate definition of a class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
1d5b0e37cd569f3d1ddfc5cabff649ef7e42f3c6 20-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Match to do some semantic analysis on objective-c class decl.
1. Detect used of undeclared/forward declared super class.
2. Detect duplicate definition of a class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42168 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
51b0acaa81a2070b66fa5ebd8669dfc8f8fc0c3d 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved GraphTraits<Stmt*> to StmtGraphTraits.h. This allows consumers of Stmt.h not to have to pay the cost
of parsing the GraphTraits templates if they don't need that functionality.

Defined nodes_iterator for GraphTraits<Stmt*> to be based on llvm::df_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtGraphTraits.h
d2a4a1af1088fca80e2dc76eb3369db0fbbfdefd 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved GraphTraits<Stmt*> to StmtGraphTraits.h. This allows consumers of Stmt.h not to have to pay the cost
of parsing the GraphTraits templates if they don't need that functionality.

Defined nodes_iterator for GraphTraits<Stmt*> to be based on llvm::df_iterator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42150 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtGraphTraits.h
64b864e855ff1e44fe9f8d31e46ba6ef5982e52a 19-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse objective-c's @try-statement and @throw-statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
397fcc117e5631db53879fbfcca66966088f3f07 19-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse objective-c's @try-statement and @throw-statement.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42148 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
2f491fb1bf65cf0349371c6882442b058c7bc901 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Added GraphTraits template specialization for Stmt* to treat ASTs like graphs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42146 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5e97d4b5ec7ce97e311d7aa4e8bd2b4fd9dbfa2e 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Added GraphTraits template specialization for Stmt* to treat ASTs like graphs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42146 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
1ff4115fefef0abe23a514d6e7d802e4bd28344a 19-Sep-2007 Ted Kremenek <kremenek@apple.com> More refactoring: decl and expr regisitration now uses CFGRecStmtDeclVisitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42145 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
b2977544b4372fd54a8c24e12920d7c7c50cd7ef 19-Sep-2007 Ted Kremenek <kremenek@apple.com> More refactoring: decl and expr regisitration now uses CFGRecStmtDeclVisitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42145 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
9fa28891f079faee36b300e02d1b6e3c6ed6e9e4 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Added two new visitors that extend CFGStmtVisitor: CFGRecStmtVisitor and CFGRecStmtDeclVisitor.
The extended functionality of these visitors is that they automatically visit all statements in
an AST (no explicit recursion is required from subclasses), and the for the latter, decls are visited
as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGRecStmtDeclVisitor.h
nalysis/CFGRecStmtVisitor.h
ba0c5d6305a6fd164d0e4f186a735aca799194c3 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Added two new visitors that extend CFGStmtVisitor: CFGRecStmtVisitor and CFGRecStmtDeclVisitor.
The extended functionality of these visitors is that they automatically visit all statements in
an AST (no explicit recursion is required from subclasses), and the for the latter, decls are visited
as well.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42144 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGRecStmtDeclVisitor.h
nalysis/CFGRecStmtVisitor.h
4bc52cec7be91d70529b409efaeebf1b69705df3 19-Sep-2007 Steve Naroff <snaroff@apple.com> Remove SelectorTable/SelectorInfo, simply store all selectors in the central IdentifierTable.

Rationale:

We currently have a separate table to unique ObjC selectors. Since I don't need all the instance data in IdentifierInfo, I thought this would save space (and make more sense conceptually).

It turns out the cost of having duplicate entries for unary selectors (i.e. names without colons) outweighs the cost difference between the IdentifierInfo & SelectorInfo structures. Here is the data:

Two tables:

*** Selector/Identifier Stats:
# Selectors/Identifiers: 51635
Bytes allocated: 1999824

One table:

*** Identifier Table Stats:
# Identifiers: 49500
Bytes allocated: 1990316




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ex/IdentifierTable.h
21d5a95b8f50be3e0fdd8c53f92fc201f665a4b4 19-Sep-2007 Steve Naroff <snaroff@apple.com> Remove SelectorTable/SelectorInfo, simply store all selectors in the central IdentifierTable.

Rationale:

We currently have a separate table to unique ObjC selectors. Since I don't need all the instance data in IdentifierInfo, I thought this would save space (and make more sense conceptually).

It turns out the cost of having duplicate entries for unary selectors (i.e. names without colons) outweighs the cost difference between the IdentifierInfo & SelectorInfo structures. Here is the data:

Two tables:

*** Selector/Identifier Stats:
# Selectors/Identifiers: 51635
Bytes allocated: 1999824

One table:

*** Identifier Table Stats:
# Identifiers: 49500
Bytes allocated: 1990316




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42139 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Expr.h
ex/IdentifierTable.h
c39ca26d397ee4d285d4f9fa1caf5e3c33e1874a 19-Sep-2007 Steve Naroff <snaroff@apple.com> Progress on message expressions...

- Add ObjcMessageExpr AST node and associated constructors.
- Add SourceLocation's to ActOnKeywordMessage/ActOnUnaryMessage API.
- Instantiate message expressions...
- Replace alloca usage with SmallString.

Next step, installing a correct type, among other tweaks...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
563477da25f824e37c535131695dc4dc9b68c465 19-Sep-2007 Steve Naroff <snaroff@apple.com> Progress on message expressions...

- Add ObjcMessageExpr AST node and associated constructors.
- Add SourceLocation's to ActOnKeywordMessage/ActOnUnaryMessage API.
- Instantiate message expressions...
- Replace alloca usage with SmallString.

Next step, installing a correct type, among other tweaks...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42116 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
5b3036e422499a86776581e16a6047be7453ef87 19-Sep-2007 Ted Kremenek <kremenek@apple.com> DataflowSolver now acccepts an "_Equal" template parameter that allows the user
to specify how two dataflow values should be compared for equality. The default
is to use std::equal_to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42115 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
fe1b1e686f6bd97995a15081cae343708f22b496 19-Sep-2007 Ted Kremenek <kremenek@apple.com> DataflowSolver now acccepts an "_Equal" template parameter that allows the user
to specify how two dataflow values should be compared for equality. The default
is to use std::equal_to.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42115 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
05d09a2ecf326371e598414c8bb2f5f5dbd6ea9c 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed bug where getBitRef would incorrectly grab the bit from the
wrong bitvector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42114 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
f5a9518ec408de44a4dac6e2cbfe44ddbfc45d89 19-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed bug where getBitRef would incorrectly grab the bit from the
wrong bitvector.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42114 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
f92ba51c4814e61f31e4a2ab2679bc455224c5cb 18-Sep-2007 Ted Kremenek <kremenek@apple.com> More refactoring and code reduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42109 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
43a1698cfbdd6623737d72bdf6ab9a13cdeadd14 18-Sep-2007 Ted Kremenek <kremenek@apple.com> More refactoring and code reduction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42109 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
68447a6a4556976021ef856989ec561a2dd264fc 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Added member template CFG::VisitBlockStmts to provide a succinct way
of visiting all block-level statements in a CFG.

Tightened implementation of UninitializedValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
a90b0d1e585d993621a342d0b2874e61941372d5 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Added member template CFG::VisitBlockStmts to provide a succinct way
of visiting all block-level statements in a CFG.

Tightened implementation of UninitializedValues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42106 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
9439387416ec6dd0cec4ddfb58d6ef47dd30642d 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Additional comments and cosmetic cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
a36c6540346266f570b2fc7457950dea45d89988 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Additional comments and cosmetic cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42105 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
f25220eb00bec12652342dfb98668ab3d310dfd1 18-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for object creation and handling of category declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
fd225cc227143553898f2d3902242d25db9a4902 18-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for object creation and handling of category declarations.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42104 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
2e3e6303db220be622ac426779236af620020cd1 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Modified DataFlowValues and DataflowSolver to associate dataflow value
with CFG *edges* instead of blocks. This will fascilitate dataflow
analyses that are sensitive to block terminators, and also simplifies
some reasoning.

Updated UninitializedValues to comply to this new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42099 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
105bfee9d691b56bfa75a7c44b411533c5a369f0 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Modified DataFlowValues and DataflowSolver to associate dataflow value
with CFG *edges* instead of blocks. This will fascilitate dataflow
analyses that are sensitive to block terminators, and also simplifies
some reasoning.

Updated UninitializedValues to comply to this new interface.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42099 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowValues.h
d1472a55c9f8534547157abf95671ee43c78950f 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Added type "CFG::Edge" to encapsulate the notion of directed-edges
within source-level CFGs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
4c64e8ee46ad6e2336f9c160a79eded6b16c68f8 18-Sep-2007 Ted Kremenek <kremenek@apple.com> Added type "CFG::Edge" to encapsulate the notion of directed-edges
within source-level CFGs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42098 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
8b5ab6f93f260d2dfce140fc6b852c74faf8d9b7 18-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Uses more description name for method implementation kind argument.
Moves such argument as the last argument and uses defaul value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42073 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
00933591a2795d09dd1acff12a2d21bce7cb12c5 18-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Uses more description name for method implementation kind argument.
Moves such argument as the last argument and uses defaul value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42073 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
4a2b0acffc9516aad938da641d0b4201be4e8281 18-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to remove ObjcProtoMethodDecl and use ObjcMethodDecl
instead for @protocol method decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
146fbb0c8b81cb62c8bf0e9a10ce8bc8403132c8 18-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to remove ObjcProtoMethodDecl and use ObjcMethodDecl
instead for @protocol method decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42070 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
65a506b364fb5cb27f18851f313c551dc6d56b3b 17-Sep-2007 Steve Naroff <snaroff@apple.com> Add a comment and remove unused constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42063 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
6d6cfbfa8cff13deaad662ef8b8cd190917c37b4 17-Sep-2007 Steve Naroff <snaroff@apple.com> Add a comment and remove unused constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42063 91177308-0d34-0410-b5e6-96231b3b80d8
arse/DeclSpec.h
6d87ce556801a0e0e596bec8fd25287800d00ee0 17-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed a VC++ issue related to bitmasks. As it turns out the compiler fills the unused bits of the word a bitmask is stored in with '1' (or randomly, I can't tell, I've seen '1' so far only), which creates wrong results in certain cases.

Please review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42061 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
0bcccc763bef79171015c3b270e505b9c864ea8b 17-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed a VC++ issue related to bitmasks. As it turns out the compiler fills the unused bits of the word a bitmask is stored in with '1' (or randomly, I can't tell, I've seen '1' so far only), which creates wrong results in certain cases.

Please review.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42061 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
63ca8ae2f3f4a1ecfc0fa5a938f68419ce4e3140 17-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to add objective-c's @protocl type declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42060 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
25e077d59a8e8e43b65882b69610a3d5e2aaf53c 17-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to add objective-c's @protocl type declaration.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42060 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Parser.h
d3f5ee4f162fb5c6f832e3ae9b95c0042ab9cc56 17-Sep-2007 Steve Naroff <snaroff@apple.com> Finish defining Action API for message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42059 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
708391a0e6cf848acc5277a1b9eaa919912944f5 17-Sep-2007 Steve Naroff <snaroff@apple.com> Finish defining Action API for message expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42059 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
0a03ce6781c509e8620e2ee1e212dd819a2c3838 17-Sep-2007 Ted Kremenek <kremenek@apple.com> UninitialuzedValues now only tracks BlockVarDecls; obviating false positives with
globals and function parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42055 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGVarDeclVisitor.h
nalysis/UninitializedValues.h
2bf55140b893c874ef16929bfe953f7cc7823425 17-Sep-2007 Ted Kremenek <kremenek@apple.com> UninitialuzedValues now only tracks BlockVarDecls; obviating false positives with
globals and function parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42055 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGVarDeclVisitor.h
nalysis/UninitializedValues.h
253118ba5c0603d6d34b91836fca75d8def34f81 17-Sep-2007 Steve Naroff <snaroff@apple.com> - Refactored ObjcKeywordInfo into ObjcKeywordInfo, ObjcKeywordDecl, and ObjcKeywordMessage.
- Removed helper ObjcGetSelectorInfo(), moving the code directly into ObjcBuildMethodDeclaration().
- Many refinements to ParseObjCMessageExpression().
- Add ActOnMessageExpression().

Next step, finish the message actions and (finally) create/instantiate an ObjcMessageExpr AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42050 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
37387c932855c6d58d70bdd705cd3a9fdcd2a931 17-Sep-2007 Steve Naroff <snaroff@apple.com> - Refactored ObjcKeywordInfo into ObjcKeywordInfo, ObjcKeywordDecl, and ObjcKeywordMessage.
- Removed helper ObjcGetSelectorInfo(), moving the code directly into ObjcBuildMethodDeclaration().
- Many refinements to ParseObjCMessageExpression().
- Add ActOnMessageExpression().

Next step, finish the message actions and (finally) create/instantiate an ObjcMessageExpr AST.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42050 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
3871d8ee4dd8d4b33a7a67e6db7cb0dd5ad04266 17-Sep-2007 Ted Kremenek <kremenek@apple.com> More progress on UnitializedValues checker. We now have preliminary support
for reporting errors and running the checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42046 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/UninitializedValues.h
asic/DiagnosticKinds.def
cd5860ce7a793cdad1e55552bb23937263ea2921 17-Sep-2007 Ted Kremenek <kremenek@apple.com> More progress on UnitializedValues checker. We now have preliminary support
for reporting errors and running the checker.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42046 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
nalysis/UninitializedValues.h
asic/DiagnosticKinds.def
334b30a6b7b303ef4acd63e07e754180f58fb216 17-Sep-2007 Ted Kremenek <kremenek@apple.com> Split tracking of unitialized values for Decls and CFGBlock-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42041 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
20ee4fbee7db6b551de7d509801bbe25367aacf2 17-Sep-2007 Ted Kremenek <kremenek@apple.com> Split tracking of unitialized values for Decls and CFGBlock-level expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42041 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/UninitializedValues.h
3e03975356e847c4503c95946346097cfc1c2fb6 17-Sep-2007 Ted Kremenek <kremenek@apple.com> Removed "ObserverTy" from core DataflowValues types. The observer
mechanism can be implemented simply by affixing the Observer to an
analysis meta data, so it doesn't need to be a required type. This
also permits analyses not to implement an Observer if it doesn't make
sense.

Changed "DataflowValues::MetaDataTy" to
"DataflowValues::AnalysisDataTy" to reflect that the type
enscapsulated the data associated with analyzing a given CFG.

Changed CFGStmtVisitor::BlockStmt_VisitImplicitControlFlowStmt(Stmt*)
to ...VisitImplicitControlFlowExpr(Expr*). The type narrowing is more
precise and more useful to clients.

Added CFGStmtVisitor::BlockStmt_VisitExpr to reflect the visitation of
expressions at the block statement level. This captures all implicit
control-flow statements as well as other expressions that are hoisted
to the block level (such as conditions for terminators and function
calls). This is especially useful for dataflow analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42034 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGStmtVisitor.h
nalysis/CFGVarDeclVisitor.h
nalysis/DataflowValues.h
nalysis/UninitializedValues.h
56d516d18a789a13696a310dbca67d4b5d9fc798 17-Sep-2007 Ted Kremenek <kremenek@apple.com> Removed "ObserverTy" from core DataflowValues types. The observer
mechanism can be implemented simply by affixing the Observer to an
analysis meta data, so it doesn't need to be a required type. This
also permits analyses not to implement an Observer if it doesn't make
sense.

Changed "DataflowValues::MetaDataTy" to
"DataflowValues::AnalysisDataTy" to reflect that the type
enscapsulated the data associated with analyzing a given CFG.

Changed CFGStmtVisitor::BlockStmt_VisitImplicitControlFlowStmt(Stmt*)
to ...VisitImplicitControlFlowExpr(Expr*). The type narrowing is more
precise and more useful to clients.

Added CFGStmtVisitor::BlockStmt_VisitExpr to reflect the visitation of
expressions at the block statement level. This captures all implicit
control-flow statements as well as other expressions that are hoisted
to the block level (such as conditions for terminators and function
calls). This is especially useful for dataflow analysis.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42034 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGStmtVisitor.h
nalysis/CFGVarDeclVisitor.h
nalysis/DataflowValues.h
nalysis/UninitializedValues.h
590aba84dc921d487378ca65d7e0b47b9dcdd1f0 17-Sep-2007 Steve Naroff <snaroff@apple.com> Add const to debug hook...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42025 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e5ea380858f3d0a168c44ba42684e821997933d7 17-Sep-2007 Steve Naroff <snaroff@apple.com> Add const to debug hook...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42025 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
948fd378c0fb7aec046ef8a5d16929d2d7601fce 17-Sep-2007 Steve Naroff <snaroff@apple.com> Add support for ObjC keyword selectors.

- Add SelectorInfo/SelectorTable classes, modeled after IdentifierInfo/IdentifierTable.
- Add SelectorTable instance to ASTContext, created lazily through ASTContext::getSelectorInfo().
- Add SelectorInfo slot to ObjcMethodDecl.
- Add helper function to derive a SelectorInfo from ObjcKeywordInfo.

Misc: Got the Decl stats stuff up and running again...it was missing support for ObjC AST's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ex/IdentifierTable.h
3f128ad2691d299b96663da85a9e069c4081ea7c 17-Sep-2007 Steve Naroff <snaroff@apple.com> Add support for ObjC keyword selectors.

- Add SelectorInfo/SelectorTable classes, modeled after IdentifierInfo/IdentifierTable.
- Add SelectorTable instance to ASTContext, created lazily through ASTContext::getSelectorInfo().
- Add SelectorInfo slot to ObjcMethodDecl.
- Add helper function to derive a SelectorInfo from ObjcKeywordInfo.

Misc: Got the Decl stats stuff up and running again...it was missing support for ObjC AST's.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42023 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ex/IdentifierTable.h
b4134a8fee91c78653ad9af2d7e013087f593db4 16-Sep-2007 Chris Lattner <sabre@nondot.org> remove some obsolete interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42014 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ASTStreamer.h
4b1aa816bb62e4610bb1c5ea369cbff6f624fcca 16-Sep-2007 Chris Lattner <sabre@nondot.org> remove some obsolete interfaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42014 91177308-0d34-0410-b5e6-96231b3b80d8
ema/ASTStreamer.h
03c512e38cbee5bf4f8d586be8461c7a92b358ed 16-Sep-2007 Chris Lattner <sabre@nondot.org> Fix a GCC warning, patch by Justin Handville


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9e6622dbf397edd79a4300240e0c06ef22c55774 16-Sep-2007 Chris Lattner <sabre@nondot.org> Fix a GCC warning, patch by Justin Handville


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f0c31dd3324dd50bc2d3177f3a789db70fe8982c 16-Sep-2007 Steve Naroff <snaroff@apple.com> Fixes/tweaks that prevent "defaults-i.m" from compiling.

- Allow classnames as the receiver (removing a FIXME from ParseObjCMessageExpression).
- Added a FIXME to ParseObjCMessageExpression()...we need to return a message expr AST node!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8c9f13e494109426f358ef73bf873f77b1221564 16-Sep-2007 Steve Naroff <snaroff@apple.com> Fixes/tweaks that prevent "defaults-i.m" from compiling.

- Allow classnames as the receiver (removing a FIXME from ParseObjCMessageExpression).
- Added a FIXME to ParseObjCMessageExpression()...we need to return a message expr AST node!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42001 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5cbb02ff6d1067e6dd7a055f884dcd3048bc31e5 16-Sep-2007 Steve Naroff <snaroff@apple.com> Rename statement actions (from Parse-prefix to ActOn-prefix).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42000 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
1b273c403734d343d720acb28f04011807c8aa56 16-Sep-2007 Steve Naroff <snaroff@apple.com> Rename statement actions (from Parse-prefix to ActOn-prefix).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42000 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
87d58b4d035ff3643b530cfcea4247cc567ca652 16-Sep-2007 Steve Naroff <snaroff@apple.com> Rename expression actions (from Parse-prefix to ActOn-prefix).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41997 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f69936d1ba843c2d3186e4aa2faa87c68e5bf2fb 16-Sep-2007 Steve Naroff <snaroff@apple.com> Rename expression actions (from Parse-prefix to ActOn-prefix).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41997 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
612f174209fca0b927fe1ef48f1c515d9282d821 16-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Updated VC++ build system.
Silenced a couple of VC++ warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41994 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
arse/Action.h
1ff4f0cc794561e9a71f984551894be0f8660ead 16-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Updated VC++ build system.
Silenced a couple of VC++ warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41994 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
arse/Action.h
52332d08ad8f40145cf5ca375998d1d6148c9c8c 16-Sep-2007 Chris Lattner <sabre@nondot.org> switch the various CFG-based stuff over to using ASTConsumer interface,
this eliminates their dependence on the preprocessor and eliminates some
duplicated code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41993 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
c0508f9fe37a3afb1ccad39879348272545e55db 16-Sep-2007 Chris Lattner <sabre@nondot.org> switch the various CFG-based stuff over to using ASTConsumer interface,
this eliminates their dependence on the preprocessor and eliminates some
duplicated code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41993 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
1cc0171e8276e7cb3875b65784800a0a2abc8035 16-Sep-2007 Chris Lattner <sabre@nondot.org> add a new ASTConsumer consumer to simplify stuff in the driver.
Switch -parse-ast over to it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ema/ASTStreamer.h
556beb71b8820ed5243e385ffcc91433a494c170 16-Sep-2007 Chris Lattner <sabre@nondot.org> add a new ASTConsumer consumer to simplify stuff in the driver.
Switch -parse-ast over to it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41991 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTConsumer.h
ema/ASTStreamer.h
576293755221f8309360879ca982b06f298b79a3 16-Sep-2007 Chris Lattner <sabre@nondot.org> Initial checkin of rewriter interface. It is just stubbed out for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41990 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
8bd12b848bc353a9d34b54144c3dd3407b064292 16-Sep-2007 Chris Lattner <sabre@nondot.org> Initial checkin of rewriter interface. It is just stubbed out for now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41990 91177308-0d34-0410-b5e6-96231b3b80d8
ewrite/Rewriter.h
0acc9c9e548751e89229f8476156f331b7254d26 15-Sep-2007 Steve Naroff <snaroff@apple.com> Start converting Action methods from Parse-prefix to ActOn-prefix.

The previous naming scheme was confusing, since it resulted in both the Parser and Action modules having methods with the same name. In addition, the Action module never does any parsing...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/AttributeList.h
08d92e46d2ec2895f3c2ca14876830120bbe4f78 15-Sep-2007 Steve Naroff <snaroff@apple.com> Start converting Action methods from Parse-prefix to ActOn-prefix.

The previous naming scheme was confusing, since it resulted in both the Parser and Action modules having methods with the same name. In addition, the Action module never does any parsing...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41986 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/AttributeList.h
c2e4644913c3c831b6498085c39fe05f3596ed7f 15-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Couple of new classes for objective-c's @protocol typings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e1076476e948325af6b867180d4b20b50bc89cf6 15-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Couple of new classes for objective-c's @protocol typings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41985 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ffeaa55db4b1d84ee8796eec07f4d70a01ae4f49 15-Sep-2007 Steve Naroff <snaroff@apple.com> Rename Action::ParseRecordBody() to ProcessFieldDecls(), and add a visibility argument.

Remove Action::ObjcAddVisibilityToIvars(). No need for an extra API when it is trivial to add this info to the previous hook.

In general, I want to start migrating away from having Actions prefixed with "Parse" (which is confusing, since the Action API doesn't do any parsing, per se).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41973 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f13271f8402b4434f978b64143f236db0a99c13a 15-Sep-2007 Steve Naroff <snaroff@apple.com> Rename Action::ParseRecordBody() to ProcessFieldDecls(), and add a visibility argument.

Remove Action::ObjcAddVisibilityToIvars(). No need for an extra API when it is trivial to add this info to the previous hook.

In general, I want to start migrating away from having Actions prefixed with "Parse" (which is confusing, since the Action API doesn't do any parsing, per se).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41973 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7f49f50d6015179cb1b1809215de63fb616c3af6 15-Sep-2007 Ted Kremenek <kremenek@apple.com> Prototype implementation of new template-based dataflow solver.

Preliminary implementation of UninitializedValues, which is based on
new solver (doesn't work yet, but compiles).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41970 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGVarDeclVisitor.h
nalysis/DataflowValues.h
nalysis/UninitializedValues.h
13ed7fea9728a89abc8fe1530d148a3589867b4c 15-Sep-2007 Ted Kremenek <kremenek@apple.com> Prototype implementation of new template-based dataflow solver.

Preliminary implementation of UninitializedValues, which is based on
new solver (doesn't work yet, but compiles).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41970 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGVarDeclVisitor.h
nalysis/DataflowValues.h
nalysis/UninitializedValues.h
9bb759f16cf586e4439a78fea0fc8870c52a03c1 15-Sep-2007 Steve Naroff <snaroff@apple.com> Several improvement to Sema::ParseRecordBody()...

- Adding a safer prologue. The previous prologue would accept a null and therefore assume we had an interface (which was incorrect).
- Fixed FieldDecl's classof method. This allowed me to simplify some unnecessary casting.
- When diagnosing errors, make sure the FieldDecl/EnclosingDecl are marked as invalid. In addition, don't delete the field...rather, add all fields to the enclosing decl. Memory management can/should be done elsewhere. This code was never "upgraded" to the recently added invalid decl strategy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
74216648a51e3aee7e59c27e1f1e5c132c024830 15-Sep-2007 Steve Naroff <snaroff@apple.com> Several improvement to Sema::ParseRecordBody()...

- Adding a safer prologue. The previous prologue would accept a null and therefore assume we had an interface (which was incorrect).
- Fixed FieldDecl's classof method. This allowed me to simplify some unnecessary casting.
- When diagnosing errors, make sure the FieldDecl/EnclosingDecl are marked as invalid. In addition, don't delete the field...rather, add all fields to the enclosing decl. Memory management can/should be done elsewhere. This code was never "upgraded" to the recently added invalid decl strategy.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41964 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ebcc9b632f62f436f56e10b6eddffc7dd1d7ab32 14-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to store ivars into interface class object.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
b04a02184c5ec8745ea8a639fbdff2293fe0ae96 14-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to store ivars into interface class object.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41961 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
dc1ad7633d6628a1c0fbbf47404ed6b1fc0e37cd 14-Sep-2007 Steve Naroff <snaroff@apple.com> Now that the dust has settled on the Decl refactoring, I noticed FieldDecl didn't need NextDeclarator. As a result, I'm removing it.

Removing both slots (NextDeclarator/Next) end up reducing the size of fields/ivars by 40%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41948 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f38661ec6e803b553bddae17325ac59809b45d83 14-Sep-2007 Steve Naroff <snaroff@apple.com> Now that the dust has settled on the Decl refactoring, I noticed FieldDecl didn't need NextDeclarator. As a result, I'm removing it.

Removing both slots (NextDeclarator/Next) end up reducing the size of fields/ivars by 40%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41948 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
2591e1be4e9470da55cca6bdfe7e1ecf98919ba8 14-Sep-2007 Steve Naroff <snaroff@apple.com> Move Decl::NextDeclarator (w/ setters/getters) down to ScopedDecl/FieldDecl.

Decl is now svelte:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41935 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
9474504790f11617479b8d6ef8b64e32d071f251 14-Sep-2007 Steve Naroff <snaroff@apple.com> Move Decl::NextDeclarator (w/ setters/getters) down to ScopedDecl/FieldDecl.

Decl is now svelte:-)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41935 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
cb59747c5e40847b0886355bcd97eeaa94dfb9ae 13-Sep-2007 Steve Naroff <snaroff@apple.com> Phase 2 of making the Decl class more lightweight...

Move Identifier/Loc instance variables (and associated getters/setters) down from Decl to ScopedDecl/FieldDecl.

Objc AST's can now inherit from Decl without getting instance variables and types that are C specific. For now, I am keeping NextDeclarator, since I believe it may be useful to ObjC. If not, it can be moved later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/Stmt.h
8e74c93ddaa8268a999e1b25c723dc1984a434b4 13-Sep-2007 Steve Naroff <snaroff@apple.com> Phase 2 of making the Decl class more lightweight...

Move Identifier/Loc instance variables (and associated getters/setters) down from Decl to ScopedDecl/FieldDecl.

Objc AST's can now inherit from Decl without getting instance variables and types that are C specific. For now, I am keeping NextDeclarator, since I believe it may be useful to ObjC. If not, it can be moved later.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41934 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Expr.h
ST/Stmt.h
3957dae352cd9508fc97833b679b54060db17adc 13-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for collecting ivars before running action on them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41932 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
7d6402f753916a82d93ef0bf0f703ae4243a52be 13-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for collecting ivars before running action on them.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41932 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
d21bc0d43b0e3f89e4aa55ad417e378ce7dc6c59 13-Sep-2007 Steve Naroff <snaroff@apple.com> Add "ScopedDecl" AST, used by ValueDecl and TypeDecl.

This allows us to sink the "Next" field, which isn't used by FieldDecl and ObjcIvarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c752d041b5d9bdd31dfb8ec9b059e6be9247b5af 13-Sep-2007 Steve Naroff <snaroff@apple.com> Add "ScopedDecl" AST, used by ValueDecl and TypeDecl.

This allows us to sink the "Next" field, which isn't used by FieldDecl and ObjcIvarDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41931 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
409dfd126d424555116e0c561e95d961b6dbd7fb 13-Sep-2007 Chris Lattner <sabre@nondot.org> make the sourcemgr available through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
b800dc2d5e27ec60f567567b623cdc61152b8fb8 13-Sep-2007 Chris Lattner <sabre@nondot.org> make the sourcemgr available through ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41906 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f7f1a1f7600c7ee836ebd8773f70c3c2d64c7522 13-Sep-2007 Steve Naroff <snaroff@apple.com> Add ASTContext::StringMap<char> to unique selector names.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
a9aa5e69d8253e196be90c070738ab5bd9813730 13-Sep-2007 Steve Naroff <snaroff@apple.com> Add ASTContext::StringMap<char> to unique selector names.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41894 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
420d0f515b45377be0bac00ca898d4a824dd2533 12-Sep-2007 Steve Naroff <snaroff@apple.com> Remove a FIXME. Replace a couple asserts with an appropriate error
diagnostic for illegal initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41889 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
410e3e206b50e0336bd294fa5fb8dfcca3ee1af5 12-Sep-2007 Steve Naroff <snaroff@apple.com> Remove a FIXME. Replace a couple asserts with an appropriate error
diagnostic for illegal initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41889 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
de8e2bcadc2c44da562217ffea62e52014d533f9 12-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed logic bug in recursion to visiting child statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41887 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowStmtVisitor.h
85d28b4e5de6119712110705090da804f02cbd56 12-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed logic bug in recursion to visiting child statements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41887 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/DataflowStmtVisitor.h
8cd5abaae77da2bfd6b3789d92738e89afc4d40f 12-Sep-2007 Ted Kremenek <kremenek@apple.com> Added extensions (subclasses) to the StmtVisitor class that
are useful for dataflow analysis: CFGStmtVisitor and DataflowStmtVisitor.

CFGStmtVisitor is the same as StmtVisitor is that it has separate visitors
for "root" statements in a CFGBlock (statements that have a designated
slot int the list of statements in a CFGBlock). It also recognizes statements
that have implicit control-flow, and calls special visitor methods for those.

DataflowStmtVisitor extends CFGStmtVisitor to serve as a template for
implementing transfer functions. It does a pre-/post-order traversal of
substatements depending on whether we are doing a forward/backward analysis.
It also has special handling for implicit-control-flow statements so that
they are visited only once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGStmtVisitor.h
nalysis/DataflowStmtVisitor.h
73c80c2b8adec0b86de16f3a0c2c5c7861a3e6c2 12-Sep-2007 Ted Kremenek <kremenek@apple.com> Added extensions (subclasses) to the StmtVisitor class that
are useful for dataflow analysis: CFGStmtVisitor and DataflowStmtVisitor.

CFGStmtVisitor is the same as StmtVisitor is that it has separate visitors
for "root" statements in a CFGBlock (statements that have a designated
slot int the list of statements in a CFGBlock). It also recognizes statements
that have implicit control-flow, and calls special visitor methods for those.

DataflowStmtVisitor extends CFGStmtVisitor to serve as a template for
implementing transfer functions. It does a pre-/post-order traversal of
substatements depending on whether we are doing a forward/backward analysis.
It also has special handling for implicit-control-flow statements so that
they are visited only once.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41884 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/CFGStmtVisitor.h
nalysis/DataflowStmtVisitor.h
86f74a46b4f62a9b403e646b5118c2a3171435f4 12-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for building method declaration nodes. Also fixed a segfault in cocoa.m due
to use of @property.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
e55cd00d23f0951c29b3b93e6034b2c4b3933a23 12-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch for building method declaration nodes. Also fixed a segfault in cocoa.m due
to use of @property.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41880 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6a0e2094e7d41c9e601e70b47298a4b0be8dc9da 12-Sep-2007 Steve Naroff <snaroff@apple.com> Fix the following bug submitted by Ted Kremenek:

void func() {
int xx = xx; // incorrectly diagnosed 'xx' as an undeclared identifier.
}

This smallish bug resulted in a largish fix. Here are some highlights:

- Needed to make sure ParseDeclarator is called *before* parsing any
initializer. Removed the "Init" argument to ParseDeclarator.
- Added AddInitializerToDecl() to the Action & Sema classes.
In Sema, this hook is responsible for validating the initializer and
installing it into the respective decl.
- Moved several semantic checks from ParseDeclarator() to
FinalizeDeclaratorGroup(). Previously, this hook was only responsible for
reversing a list. Now it plays a much larger semantic role.

All of the above changes ended up simplifying ParseDeclarator(), which
is goodness...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41877 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
bb204693855fe87a6e4b23dfd053722026dbe87c 12-Sep-2007 Steve Naroff <snaroff@apple.com> Fix the following bug submitted by Ted Kremenek:

void func() {
int xx = xx; // incorrectly diagnosed 'xx' as an undeclared identifier.
}

This smallish bug resulted in a largish fix. Here are some highlights:

- Needed to make sure ParseDeclarator is called *before* parsing any
initializer. Removed the "Init" argument to ParseDeclarator.
- Added AddInitializerToDecl() to the Action & Sema classes.
In Sema, this hook is responsible for validating the initializer and
installing it into the respective decl.
- Moved several semantic checks from ParseDeclarator() to
FinalizeDeclaratorGroup(). Previously, this hook was only responsible for
reversing a list. Now it plays a much larger semantic role.

All of the above changes ended up simplifying ParseDeclarator(), which
is goodness...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41877 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
999c58d3d11af5647c73d3bab8157b19c5a8c0a1 12-Sep-2007 Ted Kremenek <kremenek@apple.com> Added static method "CFG::hasImplicitControlFlow".

This method is used to determine if an expression contains implicit
control-flow, and thus appears in a distinct statement slot in the CFG.

For example:

(1) x = ... ? ... ? ...

logically becomes:

(1) ... ? ... : ... (a unique statement slot for the ternary ?)
(2) x = [E1] (where E1 is actually the ConditionalOperator*)

A client of the CFG, when walking the statement at (2), will encounter
E1. In this case, hasImplicitControlFlow(E1) == true, and the client
will know that the expression E1 is explicitly placed into its own statement
slot to capture the implicit control-flow it has.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
155383b0fcd0a12a103310010f8c0d084b90b090 12-Sep-2007 Ted Kremenek <kremenek@apple.com> Added static method "CFG::hasImplicitControlFlow".

This method is used to determine if an expression contains implicit
control-flow, and thus appears in a distinct statement slot in the CFG.

For example:

(1) x = ... ? ... ? ...

logically becomes:

(1) ... ? ... : ... (a unique statement slot for the ternary ?)
(2) x = [E1] (where E1 is actually the ConditionalOperator*)

A client of the CFG, when walking the statement at (2), will encounter
E1. In this case, hasImplicitControlFlow(E1) == true, and the client
will know that the expression E1 is explicitly placed into its own statement
slot to capture the implicit control-flow it has.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41868 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
75494896d07edfb63a46a9f82e132641447b1e29 11-Sep-2007 Steve Naroff <snaroff@apple.com> - Add an ObjcIvarDecl AST node (a subclass of FieldDecl).
- Instantiate the node in Sema::ParseField(), based on the type of the TagDecl.
- Add Sema::ObjcAddInstanceVariable(), responsible for adorning/adding the ObjcIvarDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41864 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
4473921b663539cc489435d6eae5c14df1bc4a96 11-Sep-2007 Steve Naroff <snaroff@apple.com> - Add an ObjcIvarDecl AST node (a subclass of FieldDecl).
- Instantiate the node in Sema::ParseField(), based on the type of the TagDecl.
- Add Sema::ObjcAddInstanceVariable(), responsible for adorning/adding the ObjcIvarDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41864 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
4d627f5423338381d3465e2bf01e6f83bdfb65a5 11-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Change ObjcMethodDecl class derivation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
8a4010d40c7ba61a92c728814639674726888e8f 11-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Change ObjcMethodDecl class derivation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41860 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
61ce98c13c4e13f2f399533cac2f0c7469c4aea7 11-Sep-2007 Gabor Greif <ggreif@gmail.com> get rid of ugly "warning: no newline at end of file"
warnings that some compilers diagnose


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
8467583c2704e7a9691ea56939a029015f0ade0a 11-Sep-2007 Gabor Greif <ggreif@gmail.com> get rid of ugly "warning: no newline at end of file"
warnings that some compilers diagnose


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41847 91177308-0d34-0410-b5e6-96231b3b80d8
ST/PrettyPrinter.h
74a340749eb63af1ba7098c67f3ef72bd48f5ae8 11-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed isFunctionPointerType to correctly handle typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
01c2c6e3c94a3fa2ac15851b4af5de6dc3ae2af8 11-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed isFunctionPointerType to correctly handle typedefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3dc7cbc04c4f7e80829dd526e869b3188d2e6b09 10-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Early patch to collect objective-c methods inserts them in
class object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
e3a2ca7e30601cdd31c77a830f4cc487851e8096 10-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Early patch to collect objective-c methods inserts them in
class object.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41801 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/Action.h
arse/Parser.h
6b2b4e3a9a0f9c938341d7517ff3eaec13a1ec8e 10-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed LiveVariables to no longer track the liveness of function pointers
that refer to direct function calls.

Modified interface of LiveVariables to only track liveness of VarDecls.
This cleans up a bunch of edge cases, and removed the bug just mentioned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41797 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
c0576ca6c6ba136e583985041bd324b0acc38f40 10-Sep-2007 Ted Kremenek <kremenek@apple.com> Fixed LiveVariables to no longer track the liveness of function pointers
that refer to direct function calls.

Modified interface of LiveVariables to only track liveness of VarDecls.
This cleans up a bunch of edge cases, and removed the bug just mentioned.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41797 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
83b01279f2e6718581eeb1e5bdba58aa88e4649b 10-Sep-2007 Ted Kremenek <kremenek@apple.com> Added "isFunctionPointerType()" so that we can readily see if a DeclRefExpr
refers to a function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
498b0d1aba38f5ec64d566d1dd9e6be237ecc50f 10-Sep-2007 Ted Kremenek <kremenek@apple.com> Added "isFunctionPointerType()" so that we can readily see if a DeclRefExpr
refers to a function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41795 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d1d882631b038edbcaecff44998812da4ecd225d 10-Sep-2007 Ted Kremenek <kremenek@apple.com> Renaming of the LiveVariablesAuditor interface. Changed "Auditor" and
"Audit" to "Observer" and "Observe"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41794 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
b00c95eab9919ee1dd7805a0e6f2218129a9733e 10-Sep-2007 Ted Kremenek <kremenek@apple.com> Renaming of the LiveVariablesAuditor interface. Changed "Auditor" and
"Audit" to "Observer" and "Observe"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41794 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
3d06ad9e5e5ca3b1f7e73cda36b3428641af15d7 08-Sep-2007 Chris Lattner <sabre@nondot.org> Don't rely on ADL to find this member, patch by Justin Handville


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41783 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
4d33275624e53bf0c16e188d9b1f6a08b2068fcc 08-Sep-2007 Chris Lattner <sabre@nondot.org> Don't rely on ADL to find this member, patch by Justin Handville


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41783 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
7c6f0c755e48a2782bc0a0a4cfc63dc84e0f11d5 07-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed compilation on Windows.
Silenced a couple of warnings.
Added *.vcproj file for new clangAnalysis library.
Renamed Basic to clangBasic projects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
124dd7b5777e29ecac006822bd4d4623f0dc4264 07-Sep-2007 Hartmut Kaiser <hartmut.kaiser@gmail.com> Fixed compilation on Windows.
Silenced a couple of warnings.
Added *.vcproj file for new clangAnalysis library.
Renamed Basic to clangBasic projects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41767 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
ST/Type.h
e9646a0d0fd5f6e6e5de53a8892582e01085a36b 07-Sep-2007 Ted Kremenek <kremenek@apple.com> Forgot to check in the actual "dead stores" checker in the last commit!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41755 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
1ed6d2e4fda310af2de2ec09cdfedfa280cce948 07-Sep-2007 Ted Kremenek <kremenek@apple.com> Forgot to check in the actual "dead stores" checker in the last commit!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41755 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LocalCheckers.h
e805c4ab96e8698386e4166ea47cbe096fedbd49 07-Sep-2007 Ted Kremenek <kremenek@apple.com> Added "Dead Stores", a flow-sensitive checker that checks for stores
to variables that are no longer live. This analysis is built on top
of CFGs and the LiveVariables analysis.

changes to driver:
added driver option "-check-dead-stores" to run the analysis


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41754 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
asic/DiagnosticKinds.def
055c275fabcbe1ef246942c8b5f7d49b3a173500 07-Sep-2007 Ted Kremenek <kremenek@apple.com> Added "Dead Stores", a flow-sensitive checker that checks for stores
to variables that are no longer live. This analysis is built on top
of CFGs and the LiveVariables analysis.

changes to driver:
added driver option "-check-dead-stores" to run the analysis


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41754 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
asic/DiagnosticKinds.def
0533468f00d9817a48b8d8db560adaa40f838d35 06-Sep-2007 Ted Kremenek <kremenek@apple.com> LiveVariables:
- Finished 99% of analysis logic. Probably a few bugs.
- Added querying functions to query liveness.
- Added better pretty printing of liveness.
- Added better bookkeeping of per-variable liveness information.
- Added LiveVariablesAuditor interface, which allows "lazy" querying
of intra-basic block liveness information.

Driver:
- Minor cleanups involved in dumping liveness information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41753 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
27b07c5fb9926c9d69fa1d8239e96ad0b7a178f7 06-Sep-2007 Ted Kremenek <kremenek@apple.com> LiveVariables:
- Finished 99% of analysis logic. Probably a few bugs.
- Added querying functions to query liveness.
- Added better pretty printing of liveness.
- Added better bookkeeping of per-variable liveness information.
- Added LiveVariablesAuditor interface, which allows "lazy" querying
of intra-basic block liveness information.

Driver:
- Minor cleanups involved in dumping liveness information.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41753 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
81f1bbabbdb7dce07802111e2d9648eedc866d51 06-Sep-2007 Steve Naroff <snaroff@apple.com> The goal of this commit is to get just enough Sema support to recognize Objective-C classes
as types. That said, the AST nodes ObjcInterfaceDecl, ObjcInterfaceType, and ObjcClassDecl are *very*
preliminary.

The good news is we no longer need -parse-noop (aka MinimalActions) to parse cocoa.m.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41752 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Type.h
arse/Action.h
arse/Parser.h
3536b443bc50d58a79f14fca9b6842541a434854 06-Sep-2007 Steve Naroff <snaroff@apple.com> The goal of this commit is to get just enough Sema support to recognize Objective-C classes
as types. That said, the AST nodes ObjcInterfaceDecl, ObjcInterfaceType, and ObjcClassDecl are *very*
preliminary.

The good news is we no longer need -parse-noop (aka MinimalActions) to parse cocoa.m.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41752 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
ST/Type.h
arse/Action.h
arse/Parser.h
a65ad464c65453caee78a7c811682afcf42aefb5 06-Sep-2007 Ted Kremenek <kremenek@apple.com> Added LabelLoc to GotoStmt to record the source location of the label token
in the actual GotoStmt.

Fixed bug where GotoStmt::getSourceRange incorrectly used the target LabelStmt
to compute its extent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41745 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
61f62165220e75694fe333179c78815e2e48d71f 06-Sep-2007 Ted Kremenek <kremenek@apple.com> Added LabelLoc to GotoStmt to record the source location of the label token
in the actual GotoStmt.

Fixed bug where GotoStmt::getSourceRange incorrectly used the target LabelStmt
to compute its extent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41745 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
aa04c514ff8f1b5d1c51cf157249fa401b32d7d8 06-Sep-2007 Ted Kremenek <kremenek@apple.com> Added an early implementation of Live-Variables analysis built on
source-level CFGs. This code may change significantly in the near
future as we explore different means to implement dataflow analyses.

Added a driver option, -dump-live-variables, to view the output of
live variable analysis. This output is very ALPHA; it will be improved shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41737 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
e4e633400b1993c1174b47b774fa015220fa695c 06-Sep-2007 Ted Kremenek <kremenek@apple.com> Added an early implementation of Live-Variables analysis built on
source-level CFGs. This code may change significantly in the near
future as we explore different means to implement dataflow analyses.

Added a driver option, -dump-live-variables, to view the output of
live variable analysis. This output is very ALPHA; it will be improved shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41737 91177308-0d34-0410-b5e6-96231b3b80d8
nalysis/LiveVariables.h
ef371a09917003d38e64f39ab1b6f2f2275dab84 06-Sep-2007 Chris Lattner <sabre@nondot.org> remove the FATAL classifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f3a031f47d87cb9925cf8d28eaa26dc81a5dde50 06-Sep-2007 Chris Lattner <sabre@nondot.org> remove the FATAL classifier.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41736 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
eb851e889684b8b58fc8601c09e005a0454af27c 06-Sep-2007 Chris Lattner <sabre@nondot.org> remove sorry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41734 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3936c585cc07361a69cdf0c2c66c72f482b39dbe 06-Sep-2007 Chris Lattner <sabre@nondot.org> remove sorry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41734 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
304ed3940b99c01e770c27989f5800402cede047 06-Sep-2007 Steve Naroff <snaroff@apple.com> Start implementing Actions interface for ObjC classes, instance variables, and methods.

Lot's of small changes to the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41732 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
f28b264437053fb0deacc9ba02b18a0966f7290a 06-Sep-2007 Steve Naroff <snaroff@apple.com> Start implementing Actions interface for ObjC classes, instance variables, and methods.

Lot's of small changes to the parser.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41732 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/DeclSpec.h
arse/Parser.h
145945746c3eae2a8d82558a33f6dc661649a57b 05-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved tracking of CFG block IDs into the CFG class.
Added CFG::getNumBlockIDs() to query the number of distinct block ids created.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
9438252ad2ecae5338df565ca33c6969e4fbfa41 05-Sep-2007 Ted Kremenek <kremenek@apple.com> Moved tracking of CFG block IDs into the CFG class.
Added CFG::getNumBlockIDs() to query the number of distinct block ids created.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41724 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
1e534dc2c740d9cb4c00781319bbfbfb3ea736af 05-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> 1. Fix parsing of method prototype involving c-style argument declarations.
2. Fixes all allowable key-words used as selectors.
3. Template to do the messaging parse.
4. A test case for all allowable selector names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41723 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
0ccb27ded12fd03eb6818a880f50901bb70254fe 05-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> 1. Fix parsing of method prototype involving c-style argument declarations.
2. Fixes all allowable key-words used as selectors.
3. Template to do the messaging parse.
4. A test case for all allowable selector names.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41723 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4f9109983a4b4e69c41436ac4b3ae9a370e9a725 04-Sep-2007 Steve Naroff <snaroff@apple.com> Simplified initializer semantic analysis by adding the following 2 methods:

- ArrayType::getBaseType(), and
- ConstantArrayType::getMaximumElements().

Wanted to do this cleanup before adding structure support, which will add more complexity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7cf8c444320313f0e5b8a483daa996ba844b11ff 04-Sep-2007 Steve Naroff <snaroff@apple.com> Simplified initializer semantic analysis by adding the following 2 methods:

- ArrayType::getBaseType(), and
- ConstantArrayType::getMaximumElements().

Wanted to do this cleanup before adding structure support, which will add more complexity.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41715 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
b62aff34d2ced9bed9b18ad29d2f0ea7930a72d1 04-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse objective-c's @compatibility_alias directive.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41709 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e992af01d14e2e31037562c123af0a71ae1ed374 04-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse objective-c's @compatibility_alias directive.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41709 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
e6a8c9bf9c09ff6528ede8d0c472f3a12431cdb9 04-Sep-2007 Steve Naroff <snaroff@apple.com> Make sure initializer type promotions get propagated.

This fixes a recent regression with Codegen/mandel.c.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9e8925e72f53a9e2c4633b6b48e965ed01702fe4 04-Sep-2007 Steve Naroff <snaroff@apple.com> Make sure initializer type promotions get propagated.

This fixes a recent regression with Codegen/mandel.c.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41696 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
509d0b5869d31184dcbdd12aef0a8889ff8af5ad 04-Sep-2007 Steve Naroff <snaroff@apple.com> More fun with initializers!

- Fixed many bugs, enhanced test case considerably, added a diagnostic, etc.
- Refactored CheckInitList() into CheckVariableInitList()/CheckConstantInitList().
- Added CheckInitExpr().
- Support for multi-dimensional arrays looking good.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41690 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
371227d6dc3cf89a3165d592cd9a4cbb400ec45c 04-Sep-2007 Steve Naroff <snaroff@apple.com> More fun with initializers!

- Fixed many bugs, enhanced test case considerably, added a diagnostic, etc.
- Refactored CheckInitList() into CheckVariableInitList()/CheckConstantInitList().
- Added CheckInitExpr().
- Support for multi-dimensional arrays looking good.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41690 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c75ccff9e318638cac63fe392f68893ab4177f45 03-Sep-2007 Chris Lattner <sabre@nondot.org> Eliminate some VC++ warnings, patch by Hartmut Kaiser!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TargetInfo.h
ex/IdentifierTable.h
ex/Token.h
arse/DeclSpec.h
b8128140956c6f8f0ab143818775a81f4b4aa477 03-Sep-2007 Chris Lattner <sabre@nondot.org> Eliminate some VC++ warnings, patch by Hartmut Kaiser!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41685 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/TargetInfo.h
ex/IdentifierTable.h
ex/Token.h
arse/DeclSpec.h
1c9de71e63999f59f49d24893dc188e8167f70a5 03-Sep-2007 Steve Naroff <snaroff@apple.com> Finish getting "array-init.c" to work properly.

Array scalar initialization is now is reasonable shape.

Next step, structure and array of structure initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41681 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
d35005ece906cca5238d75b031b8db7eac0ac6e1 03-Sep-2007 Steve Naroff <snaroff@apple.com> Finish getting "array-init.c" to work properly.

Array scalar initialization is now is reasonable shape.

Next step, structure and array of structure initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41681 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
7c9d72d2c2077df381e3b66460333a7ff90d8ecb 02-Sep-2007 Steve Naroff <snaroff@apple.com> More progress on array initializers.

- Added Expr::isConstantExpr().
- Added type checking for InitListExpr elements.
- Added diagnostic for trying to initialize a variable sized object.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
38374b05791ee93300b9fbe8ceb3957f54184b37 02-Sep-2007 Steve Naroff <snaroff@apple.com> More progress on array initializers.

- Added Expr::isConstantExpr().
- Added type checking for InitListExpr elements.
- Added diagnostic for trying to initialize a variable sized object.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41674 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
9091f3fd683b9f5063970616c6c6e6031d8bc146 02-Sep-2007 Steve Naroff <snaroff@apple.com> More semantic analysis of initializers.

Added 2 errors and one warning, updated test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6f9f307d527e3451470dd07ae932475f26c6de6e 02-Sep-2007 Steve Naroff <snaroff@apple.com> More semantic analysis of initializers.

Added 2 errors and one warning, updated test case.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41672 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a610eabeb3fed484c251fa67c8de4437f43b4af6 01-Sep-2007 Steve Naroff <snaroff@apple.com> Finish converting SwitchStmt AST to source ranges.
Move DumpSourceRange() to DumpStmt().

Now -parse-ast-dump will display source range info for all stmts/exprs.

One day we should implement the source range protocol for Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
9dcbfa450d751bd68fc4af8b75da381d4f6984b9 01-Sep-2007 Steve Naroff <snaroff@apple.com> Finish converting SwitchStmt AST to source ranges.
Move DumpSourceRange() to DumpStmt().

Now -parse-ast-dump will display source range info for all stmts/exprs.

One day we should implement the source range protocol for Decls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41670 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
027c23b42f2741324b581c52901ecdfb56c97964 01-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse @implementation prologue, method definitions,
objc2's @synthesize and @dynamic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
ac00b7f4a933e60e2f0afd83092339160adc140c 01-Sep-2007 Fariborz Jahanian <fjahanian@apple.com> Patch to parse @implementation prologue, method definitions,
objc2's @synthesize and @dynamic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41667 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
arse/Parser.h
c32a20d907fcfde8a078c903241665a823a7fae9 01-Sep-2007 Steve Naroff <snaroff@apple.com> Convert more statments over to SourceRanges...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
507f2d5811bd7da1a4d9d2f4960f32177dfab9de 01-Sep-2007 Steve Naroff <snaroff@apple.com> Convert more statments over to SourceRanges...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41666 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
5d2fff8f77b7e6d127af1d3fa25d1c4b24cd52f6 01-Sep-2007 Steve Naroff <snaroff@apple.com> Move SourceRange protocol from Expr->Stmt.

Converted many of the statements over. Still a hanful left...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
b5a69586f1b8855ee4c1f0bb7a8f0ff4fe32ce09 01-Sep-2007 Steve Naroff <snaroff@apple.com> Move SourceRange protocol from Expr->Stmt.

Converted many of the statements over. Still a hanful left...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41663 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
f2b0757000544812f2fd83027823873ba9164a0c 31-Aug-2007 Chris Lattner <sabre@nondot.org> Fix a bug/missing-feature Ted noticed: the 'unused' warning should not
warn about the last stmt in a stmtexpr, f.e. there should be no warning for:

int maxval_stmt_expr(int x, int y) {
return ({int _a = x, _b = y; _a > _b ? _a : _b; });
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41655 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
98414c1b7d1944a57156d52e29bd41c005de09ac 31-Aug-2007 Chris Lattner <sabre@nondot.org> Fix a bug/missing-feature Ted noticed: the 'unused' warning should not
warn about the last stmt in a stmtexpr, f.e. there should be no warning for:

int maxval_stmt_expr(int x, int y) {
return ({int _a = x, _b = y; _a > _b ? _a : _b; });
}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41655 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
arse/Parser.h
21701c7aac527d34953b3002e8a1413d7b608094 31-Aug-2007 Chris Lattner <sabre@nondot.org> new diag


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41652 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e436dda806afee42b630b2153385661f1f882f8d 31-Aug-2007 Chris Lattner <sabre@nondot.org> new diag


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41652 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
08176a5484771ab326f230aca24029ac40d11088 31-Aug-2007 Ted Kremenek <kremenek@apple.com> Added "PrinterHelper" interface (include/AST/PrinterHelper) that can
be passed as an (optional) argument to StmtPrinter to customize
printing of AST nodes.

Used new PrinterHelper interface to enhance printing and visualization
of CFGs. The CFGs now illustrate the semantic connectives between
statements and terminators, wheras in the previous printing certain
expressions would (visible) be printed multiple times to reflect which
expressions used the results of other expressions.

The end result is that the CFG is easier to read for flow of
expression values (following principles similar to the LLVM IR).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/PrettyPrinter.h
ST/Stmt.h
42a509f6a4f71bb805cc4abbb26722a34dffddde 31-Aug-2007 Ted Kremenek <kremenek@apple.com> Added "PrinterHelper" interface (include/AST/PrinterHelper) that can
be passed as an (optional) argument to StmtPrinter to customize
printing of AST nodes.

Used new PrinterHelper interface to enhance printing and visualization
of CFGs. The CFGs now illustrate the semantic connectives between
statements and terminators, wheras in the previous printing certain
expressions would (visible) be printed multiple times to reflect which
expressions used the results of other expressions.

The end result is that the CFG is easier to read for flow of
expression values (following principles similar to the LLVM IR).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ST/PrettyPrinter.h
ST/Stmt.h
ce9d5fe7e23345c3822d23e53ab837732d8f7616 31-Aug-2007 Ted Kremenek <kremenek@apple.com> Added #ifndef/#endif statements to protect the header from multiple inclusion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
cd881d534517f09a2fae10445f9b865f49ccc6c8 31-Aug-2007 Ted Kremenek <kremenek@apple.com> Added #ifndef/#endif statements to protect the header from multiple inclusion.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41648 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
5eb879b0ab7cc0b98c5700b0c19cae3797530d9c 31-Aug-2007 Steve Naroff <snaroff@apple.com> Removed Sema::VerifyConstantArrayType(). With the new Array/ConstantArray/VariableArray nodes, this
routine was causing more trouble than it was worth. Anders/Chris noticed that it could return an error code
without emiting a diagnostic (which results in an silent invalid decl, which should *never* happen). In addition,
this routine didn't work well for typedefs and field decls. Lastly, it didn't consider that initializers aren't
in place yet.

Added Type::getAsConstantArrayType(), Type::getAsVariableArrayType(), Type::getAsVariablyModifiedType(),
and Type::isVariablyModifiedType();

Modified Sema::ParseDeclarator() and Sema::ParseField() to use the new predicates. Also added a FIXME for
the initializer omission. Also added a missing test for "static" @ file scope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d7444aac1af1c2c1d5e5b7467ecf6006ee2d8abe 31-Aug-2007 Steve Naroff <snaroff@apple.com> Removed Sema::VerifyConstantArrayType(). With the new Array/ConstantArray/VariableArray nodes, this
routine was causing more trouble than it was worth. Anders/Chris noticed that it could return an error code
without emiting a diagnostic (which results in an silent invalid decl, which should *never* happen). In addition,
this routine didn't work well for typedefs and field decls. Lastly, it didn't consider that initializers aren't
in place yet.

Added Type::getAsConstantArrayType(), Type::getAsVariableArrayType(), Type::getAsVariablyModifiedType(),
and Type::isVariablyModifiedType();

Modified Sema::ParseDeclarator() and Sema::ParseField() to use the new predicates. Also added a FIXME for
the initializer omission. Also added a missing test for "static" @ file scope.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41647 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
6668b8c77696e66e713e51520c6756c3a149b7a0 31-Aug-2007 Fariborz Jahanian <fjahanian@apple.com> Author: F. Jahanian
Log:
Implement parsing of objective-c's new @property declaration.

Modified:
include/clang/Basic/DiagnosticKinds.def
include/clang/Parse/Parser.h
Parse/ParseObjc.cpp
Parse/Parser.cpp



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41644 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
d0f97d1716a138a8d9e0df8e5af77334663723d8 31-Aug-2007 Fariborz Jahanian <fjahanian@apple.com> Author: F. Jahanian
Log:
Implement parsing of objective-c's new @property declaration.

Modified:
include/clang/Basic/DiagnosticKinds.def
include/clang/Parse/Parser.h
Parse/ParseObjc.cpp
Parse/Parser.cpp



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41644 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
762b7c71edb68cf759f947bceae37654f900ab45 31-Aug-2007 Anders Carlsson <andersca@mac.com> Add InitListExpr class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
66b5a8a39088598c01a9fa6f032dc908612dc8ec 31-Aug-2007 Anders Carlsson <andersca@mac.com> Add InitListExpr class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41636 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
b26b7adce1e4a01d12a6ddef46f7e6777e60469f 31-Aug-2007 Chris Lattner <sabre@nondot.org> add actions for deleting expr/stmt nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41635 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
394a3fd57d2430f26dd1872cc7226437f5698e63 31-Aug-2007 Chris Lattner <sabre@nondot.org> add actions for deleting expr/stmt nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41635 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e1765f25167e1cafcb9f2013e60a2dcc45afa482 31-Aug-2007 Chris Lattner <sabre@nondot.org> add some accessors for querying attributes of builtins. Add the new 'F' attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
d74c15fc0a492fe3ca32cd1865d84911dd0d6e99 31-Aug-2007 Chris Lattner <sabre@nondot.org> add some accessors for querying attributes of builtins. Add the new 'F' attribute.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
ST/Builtins.h
63b6a647e9dc9dcb0e0d9580388c446e9074abee 31-Aug-2007 Steve Naroff <snaroff@apple.com> Final phase of array cleanup (for now), removing a FIXME from yesterday.

Moved several array constraints checks from Sema::VerifyConstantArrayType() to
Sema::GetTypeForDeclarator(). VerifyConstantArrayType() is now very simple, and
could be removed eventually.

Now, we get the following (correct) messages for BlockVarDecls:-)

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang x.c -pedantic
x.c:4:20: error: size of array has non-integer type 'float'
int size_not_int[f];
^
x.c:5:21: error: array size is negative
int negative_size[1-2];
^~~
x.c:6:17: warning: zero size arrays are an extension
int zero_size[0];
^
3 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
42471f8bc6c1179a54941fac3c483ec1bd319436 31-Aug-2007 Steve Naroff <snaroff@apple.com> Final phase of array cleanup (for now), removing a FIXME from yesterday.

Moved several array constraints checks from Sema::VerifyConstantArrayType() to
Sema::GetTypeForDeclarator(). VerifyConstantArrayType() is now very simple, and
could be removed eventually.

Now, we get the following (correct) messages for BlockVarDecls:-)

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang x.c -pedantic
x.c:4:20: error: size of array has non-integer type 'float'
int size_not_int[f];
^
x.c:5:21: error: array size is negative
int negative_size[1-2];
^~~
x.c:6:17: warning: zero size arrays are an extension
int zero_size[0];
^
3 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41624 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e2579e398d370a480f4803d3337630a4a1f2f68a 30-Aug-2007 Steve Naroff <snaroff@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
bdbf7b030a3e0ddb95240076683830e6f78c79a5 30-Aug-2007 Steve Naroff <snaroff@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41618 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
24c9b98cc6a8de4a080e2dedb2797bdc2eeb688b 30-Aug-2007 Steve Naroff <snaroff@apple.com> Polish yesterday's Array/ConstantArray/VariableArray rewrite, removing a couple FIXME's.

Refactored Array/VariableArray, moving SizeModifier/IndexTypeQuals back up to Array. These
attributes are not specific to VLA's. Most of them are specific to array parameter types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
c9406125e2cac9208098655ac8058c095c2c3a65 30-Aug-2007 Steve Naroff <snaroff@apple.com> Polish yesterday's Array/ConstantArray/VariableArray rewrite, removing a couple FIXME's.

Refactored Array/VariableArray, moving SizeModifier/IndexTypeQuals back up to Array. These
attributes are not specific to VLA's. Most of them are specific to array parameter types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41616 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
2af6a80d611735efcba1dd0d8f9ee09b60a21e8f 30-Aug-2007 Chris Lattner <sabre@nondot.org> implement pretty printing of offsetof


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
704fe35d13c6c7c17ee8472da2321211fc5197c9 30-Aug-2007 Chris Lattner <sabre@nondot.org> implement pretty printing of offsetof


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41615 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
0d9bcea5eeecaa5c0e91951d185056154f65d102 30-Aug-2007 Chris Lattner <sabre@nondot.org> implement initial sema support for __builtin_offsetof


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
asic/DiagnosticKinds.def
73d0d4fac161ed12926e010dcf8b448a8de6a2ec 30-Aug-2007 Chris Lattner <sabre@nondot.org> implement initial sema support for __builtin_offsetof


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41613 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
asic/DiagnosticKinds.def
1b6b5be72f1216435647138517bc7e62659b9558 30-Aug-2007 Chris Lattner <sabre@nondot.org> Pass the location of the type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41612 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
9fddf0afb57a863be04369a268dab33b2a7f76f6 30-Aug-2007 Chris Lattner <sabre@nondot.org> Pass the location of the type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41612 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
e07b67e2390fd269d2dd1e9a8bc46aac6988583a 30-Aug-2007 Ted Kremenek <kremenek@apple.com> Fixed bug for CaseStmt where the child_begin/child_end methods were not
including the expressions in the case statement itself (not the body of
the case).

This required moving SubStmt out of SwitchCase into CaseStmt and DefaultStmt
respectively. getSubStmt() now is a virtual call for SwitchCase, but is
a direct (static) call for CaseStmt and DefaultStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
d97bb6c1384cb773ba5cdbd198008dec127cebad 30-Aug-2007 Ted Kremenek <kremenek@apple.com> Fixed bug for CaseStmt where the child_begin/child_end methods were not
including the expressions in the case statement itself (not the body of
the case).

This required moving SubStmt out of SwitchCase into CaseStmt and DefaultStmt
respectively. getSubStmt() now is a virtual call for SwitchCase, but is
a direct (static) call for CaseStmt and DefaultStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41609 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
69638b1512434b196336faa4a0bff864bd50e979 30-Aug-2007 Chris Lattner <sabre@nondot.org> add an action callback for __builtin_offsetof


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41606 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
f9aa3cb0348cb567a930248992eb54b0e6915961 30-Aug-2007 Chris Lattner <sabre@nondot.org> add an action callback for __builtin_offsetof


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41606 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
99b994b4386a39a2d784e57ac411770d729e9b0a 30-Aug-2007 Chris Lattner <sabre@nondot.org> Teach the stmtdumper to dump location/range info when a SourceMgr is available.
For example, -parse-ast-dump now prints:

static inline int __inline_isinff(float __x)
(CompoundStmt 0x2409a20
(ReturnStmt 0x2409a10
(BinaryOperator 0x24099f0 'int' <///usr/include/architecture/i386/math.h:183:63, col:102> '=='
(CallExpr 0x24098f0 'float' <col:63, col:82>
(ImplicitCastExpr 0x24098e0 'float (*)(float)' <col:63>
(DeclRefExpr 0x2409880 'float (float)' <col:63> Decl='__builtin_fabsf' 0x2409840))
(DeclRefExpr 0x24098a0 'float' <col:79> Decl='__x' 0x2409810))
(CallExpr 0x24099c0 'float' <col:87, col:102>
(ImplicitCastExpr 0x2409870 'float (*)(void)' <col:87>
(DeclRefExpr 0x2409980 'float (void)' <col:87> Decl='__builtin_inff' 0x2409940))))))

where it only prints filename/line# if it changes from the previous value. We
really need loc info on stmts though, like we have on exprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
e300c870f08d08badf2ebcb53ded49f304af37fc 30-Aug-2007 Chris Lattner <sabre@nondot.org> Teach the stmtdumper to dump location/range info when a SourceMgr is available.
For example, -parse-ast-dump now prints:

static inline int __inline_isinff(float __x)
(CompoundStmt 0x2409a20
(ReturnStmt 0x2409a10
(BinaryOperator 0x24099f0 'int' <///usr/include/architecture/i386/math.h:183:63, col:102> '=='
(CallExpr 0x24098f0 'float' <col:63, col:82>
(ImplicitCastExpr 0x24098e0 'float (*)(float)' <col:63>
(DeclRefExpr 0x2409880 'float (float)' <col:63> Decl='__builtin_fabsf' 0x2409840))
(DeclRefExpr 0x24098a0 'float' <col:79> Decl='__x' 0x2409810))
(CallExpr 0x24099c0 'float' <col:87, col:102>
(ImplicitCastExpr 0x2409870 'float (*)(void)' <col:87>
(DeclRefExpr 0x2409980 'float (void)' <col:87> Decl='__builtin_inff' 0x2409940))))))

where it only prints filename/line# if it changes from the previous value. We
really need loc info on stmts though, like we have on exprs.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41602 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
37f0411779e6acce0999770abcb0efb79de7f403 30-Aug-2007 Chris Lattner <sabre@nondot.org> constify a method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8b6ca8866f09fd8e018a329a0749d2dcf11b146a 30-Aug-2007 Chris Lattner <sabre@nondot.org> constify a method.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41600 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
83c13010359c33354c581acee65d0c986a75247e 30-Aug-2007 Steve Naroff <snaroff@apple.com> Fix the following redefinition errors submitted by Keith Bauer...

[dylan:~/llvm/tools/clang] admin% cat tentative_decls.c
// incorrectly generates redefinition error
extern int array[3];
int array[3];

// incorrectly generates a redefinition error
extern void nup(int a[3]);
void nup(int a[3]) {}

It turns out that this exposed a fairly major flaw in the type system,
array types were never getting uniqued! This is because all array types
contained an expression, which aren't unique.

To solve this, we now have 2 array types, ConstantArrayType and
VariableArrayType. ConstantArrayType's are unique, VAT's aren't.

This is a fairly extensive set of fundamental changes. Fortunately,
all the tests pass. Nevertheless, there may be some collateral damage:-)
If so, let me know!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
fb22d96692c5240fb8d611290dbf7eeed3759c73 30-Aug-2007 Steve Naroff <snaroff@apple.com> Fix the following redefinition errors submitted by Keith Bauer...

[dylan:~/llvm/tools/clang] admin% cat tentative_decls.c
// incorrectly generates redefinition error
extern int array[3];
int array[3];

// incorrectly generates a redefinition error
extern void nup(int a[3]);
void nup(int a[3]) {}

It turns out that this exposed a fairly major flaw in the type system,
array types were never getting uniqued! This is because all array types
contained an expression, which aren't unique.

To solve this, we now have 2 array types, ConstantArrayType and
VariableArrayType. ConstantArrayType's are unique, VAT's aren't.

This is a fairly extensive set of fundamental changes. Fortunately,
all the tests pass. Nevertheless, there may be some collateral damage:-)
If so, let me know!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41592 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
bbc51adc4e01ab1bda471ac39ab924c4fd7ee316 30-Aug-2007 Chris Lattner <sabre@nondot.org> Allow a SourceManager to optionally be passed into Stmt::dump


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
0c727a35718556866a978f64ac549d9798735f08 30-Aug-2007 Chris Lattner <sabre@nondot.org> Allow a SourceManager to optionally be passed into Stmt::dump


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41588 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ec055e1daa47fad09e4a430ab2926c48a35bf2c1 30-Aug-2007 Ted Kremenek <kremenek@apple.com> Added an (optional) explicit "Label" statement to CFGBlock. If a
block begins with a label or case statement, CFGBlock::getLabel() will
return the corresponding LabelStmt/CaseStmt/DefaultStmt.

LabelStmts and SwitchCases no longer appear within the "executable"
statements of a CFGBlock.

More cleanups on visualization/pretty-printing of CFGs (less verbose).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
9cffe7366ea3beb33c2d58f43a8c3a04c1873e11 30-Aug-2007 Ted Kremenek <kremenek@apple.com> Added an (optional) explicit "Label" statement to CFGBlock. If a
block begins with a label or case statement, CFGBlock::getLabel() will
return the corresponding LabelStmt/CaseStmt/DefaultStmt.

LabelStmts and SwitchCases no longer appear within the "executable"
statements of a CFGBlock.

More cleanups on visualization/pretty-printing of CFGs (less verbose).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
323524648d5d48d144ccb06c433f74b81b1e0a61 30-Aug-2007 Chris Lattner <sabre@nondot.org> cleanup context-sensitive objc keyword recognition. Patch by Fariborz Jahanian.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41583 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
34870da70fa42b0391b79627ebd0cfc6eb22213b 30-Aug-2007 Chris Lattner <sabre@nondot.org> cleanup context-sensitive objc keyword recognition. Patch by Fariborz Jahanian.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41583 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
b3bb91b8e968ca4e40567de7809306cc61a0163b 29-Aug-2007 Ted Kremenek <kremenek@apple.com> Added GraphTraits to source-level CFGs (CFG and CFGBlock) to allow
(LLVM-provided) graph algorithms such as DFS and graph visualization
to work effortless on source-level CFGs.

Further cleanup on pretty printing of CFGs. CFGBlock::dump and
CFGBlock::print now take the parent CFG as an argument. This allows
CFGBlocks to print their own appropriate label indicating whether or
not they are the Entry/Exit/IndirectGotoBlock without the CFG::print
routine doing it instead.

Added Graphviz visualization for CFGs: CFG::viewCFG. This employs the
GraphTraits just implemented.

Added "-view-cfg" mode the to clang driver. This is identical to
"-dump-cfg" except that it calls Graphviz to visualize the CFGs
instead of dumping them to the terminal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
7dba8607e59096014b7139ff20ef00870041d518 29-Aug-2007 Ted Kremenek <kremenek@apple.com> Added GraphTraits to source-level CFGs (CFG and CFGBlock) to allow
(LLVM-provided) graph algorithms such as DFS and graph visualization
to work effortless on source-level CFGs.

Further cleanup on pretty printing of CFGs. CFGBlock::dump and
CFGBlock::print now take the parent CFG as an argument. This allows
CFGBlocks to print their own appropriate label indicating whether or
not they are the Entry/Exit/IndirectGotoBlock without the CFG::print
routine doing it instead.

Added Graphviz visualization for CFGs: CFG::viewCFG. This employs the
GraphTraits just implemented.

Added "-view-cfg" mode the to clang driver. This is identical to
"-dump-cfg" except that it calls Graphviz to visualize the CFGs
instead of dumping them to the terminal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41580 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
ec761afe9c2c37e775af6ec1df24ebe96e7daf48 29-Aug-2007 Ted Kremenek <kremenek@apple.com> Added checking (during parsing) of comparison of floating point values using == or !=.
This is the same functionality gcc provides via --Wfloat-equal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
9b3d3a9f3d60eff7b7c8d383203ff348527e3874 29-Aug-2007 Ted Kremenek <kremenek@apple.com> Added checking (during parsing) of comparison of floating point values using == or !=.
This is the same functionality gcc provides via --Wfloat-equal.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41574 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
bbe686be29157b575e53fbed328613117b525f26 29-Aug-2007 Chris Lattner <sabre@nondot.org> Teach Type::is[un]SignedIntegerType about enum decls. This allows the code generator
to emit signed comparisons when needed for enum decl references. This implements
test/CodeGen/enum.c. I think enums should be good now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
d5bbce4382622feb4ca5978c4bb8fcceb7aaec00 29-Aug-2007 Chris Lattner <sabre@nondot.org> Teach Type::is[un]SignedIntegerType about enum decls. This allows the code generator
to emit signed comparisons when needed for enum decl references. This implements
test/CodeGen/enum.c. I think enums should be good now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41572 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e0d976993a47507ddb565c660ed95845600cee34 29-Aug-2007 Chris Lattner <sabre@nondot.org> add some accessors



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
293c0baa7db9a338c7478a04457dc6801af5d308 29-Aug-2007 Chris Lattner <sabre@nondot.org> add some accessors



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41570 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d1ad6ae336bfad6062147f187b9973d47a3c355b 28-Aug-2007 Steve Naroff <snaroff@apple.com> Finish converting decls over to the new invalid decl API.

Also removed an old FIXME (FIXME: "auto func();" passes through...).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5912a3544e438a92832b8c52c13f48d4f54795dc 28-Aug-2007 Steve Naroff <snaroff@apple.com> Finish converting decls over to the new invalid decl API.

Also removed an old FIXME (FIXME: "auto func();" passes through...).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41555 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
0edd3a990acf17ccdde8d3e6e15caf324e302b57 28-Aug-2007 Ted Kremenek <kremenek@apple.com> Added support for indirect-gotos (GCC extension) in source-level CFGs.
This involves the construction of a specialized "dispatch" block that
all basic blocks containing indirect gotos unconditionally transfer
control-flow to. The successors of the dispatch block has as its successors
all of the blocks containing labels whose address was taken somewhere in
the function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41554 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
19bb356317952445b03ee341c02f6147083c9eea 28-Aug-2007 Ted Kremenek <kremenek@apple.com> Added support for indirect-gotos (GCC extension) in source-level CFGs.
This involves the construction of a specialized "dispatch" block that
all basic blocks containing indirect gotos unconditionally transfer
control-flow to. The successors of the dispatch block has as its successors
all of the blocks containing labels whose address was taken somewhere in
the function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41554 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
cae537d8b590de1e8cd0247563703188789c9c2d 28-Aug-2007 Steve Naroff <snaroff@apple.com> Move the "invalid decl" idiom up to Decl (where we have some bits to steal:-)

Converted ParmVarDecl, FileVarDecl, BlockVarDecl, and Sema::ParseIdentifierExpr() to use the idiom.

Updated array-constraint.c to make sure we no longer get "undeclared identifier" errors:-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
53a3234f4bc3fd5c7e2403321bff9c907e1f2de6 28-Aug-2007 Steve Naroff <snaroff@apple.com> Move the "invalid decl" idiom up to Decl (where we have some bits to steal:-)

Converted ParmVarDecl, FileVarDecl, BlockVarDecl, and Sema::ParseIdentifierExpr() to use the idiom.

Updated array-constraint.c to make sure we no longer get "undeclared identifier" errors:-)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41552 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
f420df1c16b610f6741168d5ac5dbb8b677c7311 28-Aug-2007 Chris Lattner <sabre@nondot.org> add a sourcelocation to binary operator to keep track of the location of the operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41550 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
17d1b2ac9f8371a0a2e79d4f8e0008658164f080 28-Aug-2007 Chris Lattner <sabre@nondot.org> add a sourcelocation to binary operator to keep track of the location of the operator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41550 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
90a018d9bb3d506fb9c240135fd76f4d4fccac05 28-Aug-2007 Chris Lattner <sabre@nondot.org> Change EnumDecl to store its corresponding integer type
directly in it. Remove TargetInfo::getEnumPolicy, as there is only
one policy that we support right now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/TargetInfo.h
e00b18cfc3967a0349745055b49d0f3196d28f75 28-Aug-2007 Chris Lattner <sabre@nondot.org> Change EnumDecl to store its corresponding integer type
directly in it. Remove TargetInfo::getEnumPolicy, as there is only
one policy that we support right now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41548 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Decl.h
asic/TargetInfo.h
47958f63a455276b136ccafc49135599fd98739d 28-Aug-2007 Chris Lattner <sabre@nondot.org> extwarn about VLAs in C89 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
94f81fd0b0f81a99d215b225c8c5616295b063f6 28-Aug-2007 Chris Lattner <sabre@nondot.org> extwarn about VLAs in C89 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41545 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
11f20f9abaeeb895ce09ddc9bd1dd5f63ecb2ba0 28-Aug-2007 Chris Lattner <sabre@nondot.org> warn about long long when in c89 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b23deda7333cfc2316c989d10745c145dfbea6d6 28-Aug-2007 Chris Lattner <sabre@nondot.org> warn about long long when in c89 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41543 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c02f4a9efaf8d81291d284d2e66defeaf2041450 28-Aug-2007 Steve Naroff <snaroff@apple.com> Tweak declaration...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41542 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4e6526b2de501f2bbc261fd8017c92c75bd8d8f7 28-Aug-2007 Steve Naroff <snaroff@apple.com> Tweak declaration...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41542 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
206754a1aacecbaf10a86a2a4025acfe956d6d6e 28-Aug-2007 Chris Lattner <sabre@nondot.org> compute the required destination type for an enum, emitting various warnings.

TODO: update the types of the constants and the enum.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41532 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TargetInfo.h
ac60968d4541aa4e80fa71f64c36adfe5aa586e4 28-Aug-2007 Chris Lattner <sabre@nondot.org> compute the required destination type for an enum, emitting various warnings.

TODO: update the types of the constants and the enum.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41532 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TargetInfo.h
2b8d885f5b49ff8714ebde12073f558e3376e317 28-Aug-2007 Chris Lattner <sabre@nondot.org> remove dead method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
050785860b8541c837982beef3f06d292d1d0c1d 28-Aug-2007 Chris Lattner <sabre@nondot.org> remove dead method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41531 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
cb33ae1fe495b75343024a60f9be8930a56336bc 28-Aug-2007 Chris Lattner <sabre@nondot.org> add a diagnostic:

t.c:1:12: warning: ISO C restricts enumerator values to range of 'int' (180388626432 is too large)
enum e {A, B = 42LL << 32, C = -4, D = 12456 };
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41530 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
211a30e92837fb32199d0c2700246b0c7cba5543 28-Aug-2007 Chris Lattner <sabre@nondot.org> add a diagnostic:

t.c:1:12: warning: ISO C restricts enumerator values to range of 'int' (180388626432 is too large)
enum e {A, B = 42LL << 32, C = -4, D = 12456 };
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41530 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
06611052eb69e018bf26ad0af90e3b5b2355a92d 28-Aug-2007 Chris Lattner <sabre@nondot.org> now that all the infrastructure is in place, enforce C99 6.8.5p3.

Note the FIXME: we need some way to mark a decl erroneous :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ae3b701f59e78e058b83344be17206af3bf5d277 28-Aug-2007 Chris Lattner <sabre@nondot.org> now that all the infrastructure is in place, enforce C99 6.8.5p3.

Note the FIXME: we need some way to mark a decl erroneous :)



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41524 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
91b03f7ab33aa738411a4aab073d4965726b642e 28-Aug-2007 Steve Naroff <snaroff@apple.com> Implement more thoughful error recovery when dealing with bogus declarator types.

For example, the following code was resulting in spurious warnings. This was the result of
Sema::GetTypeForDeclarator() synthesizing a type to hand back to the caller (in this case,
"int []", instead of "struct s[]", which is invalid).

struct s;
struct s* t (struct s z[]) { // expected-error {{array has incomplete element type}}
return z;
}

Strategy: Flag the error in Declarator/DeclaratorChunk. This info is later stored in
the ParmVarDecl. If the decl is referenced, Sema::ParseIdentifierExpr() will check if
the type is invalid. If so, it quietly returns "true", without instantiating a DeclRefExpr.

This seems to work nicely. If Chris is happy with the approach, I will generalize this to
all VarDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/DeclSpec.h
e1223f7246c2c297f7b62816fd8c6a0a14151977 28-Aug-2007 Steve Naroff <snaroff@apple.com> Implement more thoughful error recovery when dealing with bogus declarator types.

For example, the following code was resulting in spurious warnings. This was the result of
Sema::GetTypeForDeclarator() synthesizing a type to hand back to the caller (in this case,
"int []", instead of "struct s[]", which is invalid).

struct s;
struct s* t (struct s z[]) { // expected-error {{array has incomplete element type}}
return z;
}

Strategy: Flag the error in Declarator/DeclaratorChunk. This info is later stored in
the ParmVarDecl. If the decl is referenced, Sema::ParseIdentifierExpr() will check if
the type is invalid. If so, it quietly returns "true", without instantiating a DeclRefExpr.

This seems to work nicely. If Chris is happy with the approach, I will generalize this to
all VarDecls.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41521 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
arse/DeclSpec.h
2cda879f409a0a529b4608d88759619c859fac55 27-Aug-2007 Chris Lattner <sabre@nondot.org> Fix a few enum-related fixme's



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
421a23d405a28920fb4d6dd83b0f825fd7808c88 27-Aug-2007 Chris Lattner <sabre@nondot.org> Fix a few enum-related fixme's



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41513 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6f1231830505f26b31dcb52c1e4e2b9fef648441 27-Aug-2007 Chris Lattner <sabre@nondot.org> constify some stuff



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fb071532de6ebd5685de34d65a5440604ee570bb 27-Aug-2007 Chris Lattner <sabre@nondot.org> constify some stuff



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41503 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
eb56d2997a2f6751afa78a2f6cefc5cbda1c1ad2 27-Aug-2007 Chris Lattner <sabre@nondot.org> implement sizeof(enum x), patch inspired by Keith Bauer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
6cd862c631eb4fc10755c146bbeaea37c330e815 27-Aug-2007 Chris Lattner <sabre@nondot.org> implement sizeof(enum x), patch inspired by Keith Bauer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41500 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
86630055ef3c9c06e51bfd1dc2224efc1b53d9e6 27-Aug-2007 Chris Lattner <sabre@nondot.org> add some accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41496 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5ae962da4dc277f1819a00361d4dcd49dc66bd89 27-Aug-2007 Chris Lattner <sabre@nondot.org> add some accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41496 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
277f23c26b6f8facce4a28952eacc37123fcb516 27-Aug-2007 Chris Lattner <sabre@nondot.org> Add enum type conversion policies, patch by Keith Bauer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
6569ce02671c7b33995e7ff0ee8387020fca2459 27-Aug-2007 Chris Lattner <sabre@nondot.org> Add enum type conversion policies, patch by Keith Bauer


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41495 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
45fc9823e1978b227826409ffa8d54e7e0facf1f 27-Aug-2007 Steve Naroff <snaroff@apple.com> Replaced ASTContext::maxFloatingType() with ASTContext::compareFloatingType().

Changed Sema::UsualArithmeticConversions to use the new API.

This fixes the following case...

_Complex double X;
double y;

void foo() {
X = X + y;
}

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang complex.c -parse-ast-dump
Read top-level variable decl: 'X'
Read top-level variable decl: 'y'

void foo()
(CompoundStmt 0x2605cc0
(BinaryOperator 0x2605ca0 '_Complex double' '='
(DeclRefExpr 0x2605c10 '_Complex double' Decl='X' 0x2605ab0)
(BinaryOperator 0x2605c80 '_Complex double' '+'
(DeclRefExpr 0x2605c30 '_Complex double' Decl='X' 0x2605ab0)
(ImplicitCastExpr 0x2605c70 '_Complex double'
(DeclRefExpr 0x2605c50 'double' Decl='y' 0x2605ae0)))))



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
fb0d49669aa370b4c0993c5cee60275ef9fd6518 27-Aug-2007 Steve Naroff <snaroff@apple.com> Replaced ASTContext::maxFloatingType() with ASTContext::compareFloatingType().

Changed Sema::UsualArithmeticConversions to use the new API.

This fixes the following case...

_Complex double X;
double y;

void foo() {
X = X + y;
}

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang complex.c -parse-ast-dump
Read top-level variable decl: 'X'
Read top-level variable decl: 'y'

void foo()
(CompoundStmt 0x2605cc0
(BinaryOperator 0x2605ca0 '_Complex double' '='
(DeclRefExpr 0x2605c10 '_Complex double' Decl='X' 0x2605ab0)
(BinaryOperator 0x2605c80 '_Complex double' '+'
(DeclRefExpr 0x2605c30 '_Complex double' Decl='X' 0x2605ab0)
(ImplicitCastExpr 0x2605c70 '_Complex double'
(DeclRefExpr 0x2605c50 'double' Decl='y' 0x2605ae0)))))



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41483 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3ea3b66260920973fbd4cda53c6049b2880fc326 27-Aug-2007 Chris Lattner <sabre@nondot.org> extwarn about decls intermixed with code in c89 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41477 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c30ebfbf23d6a471146e3c68c2cf7f170b7e55dc 27-Aug-2007 Chris Lattner <sabre@nondot.org> extwarn about decls intermixed with code in c89 mode.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41477 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
c33c060e2f4e7c7e89e3b809f52cfc6d55ea9838 27-Aug-2007 Steve Naroff <snaroff@apple.com> Add Type::getAsBuiltinType() and Type::builtinTypesAreCompatible().
Modified Type::typesAreCompatible() to use the above.

This fixes the following bug submitted by Keith Bauer (thanks!).

int equal(char *a, const char *b)
{
return a == b;
}

Also tweaked Sema::CheckCompareOperands() to ignore the qualifiers when
comparing two pointer types (though it doesn't relate directly to this bug).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
77878cc5aa6ad01fc0c91bac1a61819dbf3bf691 27-Aug-2007 Steve Naroff <snaroff@apple.com> Add Type::getAsBuiltinType() and Type::builtinTypesAreCompatible().
Modified Type::typesAreCompatible() to use the above.

This fixes the following bug submitted by Keith Bauer (thanks!).

int equal(char *a, const char *b)
{
return a == b;
}

Also tweaked Sema::CheckCompareOperands() to ignore the qualifiers when
comparing two pointer types (though it doesn't relate directly to this bug).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41476 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fa0c453f572da6441d5a5997025bf0301d471b3b 27-Aug-2007 Steve Naroff <snaroff@apple.com> Tweak a comment and assert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
716c7304ff5d27a95e1e7823acd1d09d5ec3e37f 27-Aug-2007 Steve Naroff <snaroff@apple.com> Tweak a comment and assert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
3cf497f1272a7f6ca5066af13db1a7adbba81a7a 27-Aug-2007 Steve Naroff <snaroff@apple.com> Replaced ASTContext::maxComplexType() with ASTContext::getFloatingTypeOfSizeWithinDomain().

Changed Sema::UsualArithmeticConversions to correctly implement complex/float conversions,
using maxFloatingType() with getFloatingTypeOfSizeWithinDomain().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
f1448a0e4a1e868ff873a8530a61a09cb68666cc 27-Aug-2007 Steve Naroff <snaroff@apple.com> Replaced ASTContext::maxComplexType() with ASTContext::getFloatingTypeOfSizeWithinDomain().

Changed Sema::UsualArithmeticConversions to correctly implement complex/float conversions,
using maxFloatingType() with getFloatingTypeOfSizeWithinDomain().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41474 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
4716005144b12ee54ece88667eaacfecafdd03ab 27-Aug-2007 Chris Lattner <sabre@nondot.org> If a visitor doesn't define VisitBinMulAssign, fallback to VisitCompoundAssignOperator
instead of VisitBinaryOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
61919a125a9422002588a7b59e9d1df70089ee17 27-Aug-2007 Chris Lattner <sabre@nondot.org> If a visitor doesn't define VisitBinMulAssign, fallback to VisitCompoundAssignOperator
instead of VisitBinaryOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41462 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
26d8315f8ded4b34bd43990998f18f4cf91c4020 26-Aug-2007 Chris Lattner <sabre@nondot.org> dispatch to functions like VisitBinRemAssign with knowledge that
the operand is of type CompoundAssignOperator, not just BinaryOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41459 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
402f72f83f433a4b45bcad0c35f4d9f692b6a0fd 26-Aug-2007 Chris Lattner <sabre@nondot.org> dispatch to functions like VisitBinRemAssign with knowledge that
the operand is of type CompoundAssignOperator, not just BinaryOperator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41459 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
a75499065c9f9260dbca98ed3bdbe6148a45af2b 26-Aug-2007 Chris Lattner <sabre@nondot.org> Break the assumption that any sort of scope (e.g. a loop scope) can
hold declarations. Instead, introduce a new "DeclScope" scope type that
holds them explicitly. For now, all scopes have this bit, but in the
future we can use them to fix some issues Neil noticed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41431 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
31e057270232c1c37602579cb6461c2704175672 26-Aug-2007 Chris Lattner <sabre@nondot.org> Break the assumption that any sort of scope (e.g. a loop scope) can
hold declarations. Instead, introduce a new "DeclScope" scope type that
holds them explicitly. For now, all scopes have this bit, but in the
future we can use them to fix some issues Neil noticed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41431 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
5f5cd4eb3711826e4cbdca5eb40ed43f99425f65 26-Aug-2007 Chris Lattner <sabre@nondot.org> remove some dead enum values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41430 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
a7c98959345da4cbfa4988b1806e111c40d4f335 26-Aug-2007 Chris Lattner <sabre@nondot.org> remove some dead enum values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41430 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Scope.h
a16e42d4deeb897d854d1a62c525e8f9842b9fc6 26-Aug-2007 Chris Lattner <sabre@nondot.org> require that operands to __real/__imag are complex or arithmetic. This
fixes GCC PR33193




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41428 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
cc26ed7dfc54b39f4b7ad1778c3fff93fc63c0d0 26-Aug-2007 Chris Lattner <sabre@nondot.org> require that operands to __real/__imag are complex or arithmetic. This
fixes GCC PR33193




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41428 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
0b80eee9df670f090d4679aba84f4b6cc5aae87b 26-Aug-2007 Neil Booth <neil@daikokuya.co.uk> Make some diags EXTENSION so they are errors with pedantic errors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
48a80946f5632bf7287984e3f7b515a336d43acd 26-Aug-2007 Neil Booth <neil@daikokuya.co.uk> Make some diags EXTENSION so they are errors with pedantic errors

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41422 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
42deafb3a1fb04cab328b4400b90392746fb66f2 26-Aug-2007 Chris Lattner <sabre@nondot.org> Why didn't gcc catch this? :(


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41420 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
d3f6ca6942169131ce55dac18366d80f0393ed4f 26-Aug-2007 Chris Lattner <sabre@nondot.org> Why didn't gcc catch this? :(


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41420 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c7ac5ed8019764850639ece242b43bd8bdd5304e 26-Aug-2007 Chris Lattner <sabre@nondot.org> fix a bug introduced by the recent childification of ForStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
af458c9f658335bdea482395ff4a25c75935e129 26-Aug-2007 Chris Lattner <sabre@nondot.org> fix a bug introduced by the recent childification of ForStmt.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41417 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
987058afafa52e7cca35fd27100a385b7be53b8c 26-Aug-2007 Chris Lattner <sabre@nondot.org> Make parse-ast-print print the storage class and inline
specifier of functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41416 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
70c8b2eccc9f1739a85cea9c4776b6b4c130071c 26-Aug-2007 Chris Lattner <sabre@nondot.org> Make parse-ast-print print the storage class and inline
specifier of functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41416 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
1de66eb40361fa106b7cbe7f7095d9392ebb24ae 26-Aug-2007 Chris Lattner <sabre@nondot.org> add a new ImaginaryLiteral AST node that is used to
represent imaginary literals:

float _Complex A;
void foo() {
A = 1.0iF;
}

generates:

(BinaryOperator 0x2305ec0 '_Complex float' '='
(DeclRefExpr 0x2305e60 '_Complex float' Decl='A' 0x2305cf0)
(ImaginaryLiteral 0x2305f40 '_Complex float'
(FloatingLiteral 0x2305ea0 'float' 1.000000))))



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
5d66145eed1c319df5a69977cb8ff74f597ea544 26-Aug-2007 Chris Lattner <sabre@nondot.org> add a new ImaginaryLiteral AST node that is used to
represent imaginary literals:

float _Complex A;
void foo() {
A = 1.0iF;
}

generates:

(BinaryOperator 0x2305ec0 '_Complex float' '='
(DeclRefExpr 0x2305e60 '_Complex float' Decl='A' 0x2305cf0)
(ImaginaryLiteral 0x2305f40 '_Complex float'
(FloatingLiteral 0x2305ea0 'float' 1.000000))))



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41413 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
c04a0bd24f09ffaf61850d6f4032a5165a9a6bcf 26-Aug-2007 Chris Lattner <sabre@nondot.org> 1.0 is double, 1.0F is a float.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41412 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
6e400c286b485e28d04a742ea87860ddfefa672e 26-Aug-2007 Chris Lattner <sabre@nondot.org> 1.0 is double, 1.0F is a float.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41412 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
ae71e4845f921f96a8def22c73ab00e755b3bc97 26-Aug-2007 Chris Lattner <sabre@nondot.org> 1) refactor some code.
2) Add support for lexing imaginary constants (a GCC extension):

t.c:5:10: warning: imaginary constants are an extension
A = 1.0iF;
^

3) Make the 'invalid suffix' diagnostic pointer more accurate:

t.c:6:10: error: invalid suffix 'qF' on floating constant
A = 1.0qF;
^

instead of:

t.c:6:10: error: invalid suffix 'qF' on floating constant
A = 1.0qF;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/LiteralSupport.h
506b8dec4ed3db3c60bf9e0dd37901f0cf3d6749 26-Aug-2007 Chris Lattner <sabre@nondot.org> 1) refactor some code.
2) Add support for lexing imaginary constants (a GCC extension):

t.c:5:10: warning: imaginary constants are an extension
A = 1.0iF;
^

3) Make the 'invalid suffix' diagnostic pointer more accurate:

t.c:6:10: error: invalid suffix 'qF' on floating constant
A = 1.0qF;
^

instead of:

t.c:6:10: error: invalid suffix 'qF' on floating constant
A = 1.0qF;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41411 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ex/LiteralSupport.h
ac5d4f13e3dd13d6e26cd8e4cbf41ec4623561ef 25-Aug-2007 Steve Naroff <snaroff@apple.com> Give CXXBoolLiteralExpr a type (all expressions need a valid type).

This fixes the following:

******************** TEST 'Parser/cxx-bool.cpp' FAILED! ********************
Command:
clang -fsyntax-only Parser/cxx-bool.cpp
Output:
SemaExpr.cpp:731: failed assertion `!t.isNull() && "DefaultFunctionArrayConversion - missing type"'
Output/cxx-bool.cpp.out.script: line 1: 22697 Abort trap clang -fsyntax-only Parser/cxx-bool.cpp



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
210679cacc47640107e46090de1a138977a0431e 25-Aug-2007 Steve Naroff <snaroff@apple.com> Give CXXBoolLiteralExpr a type (all expressions need a valid type).

This fixes the following:

******************** TEST 'Parser/cxx-bool.cpp' FAILED! ********************
Command:
clang -fsyntax-only Parser/cxx-bool.cpp
Output:
SemaExpr.cpp:731: failed assertion `!t.isNull() && "DefaultFunctionArrayConversion - missing type"'
Output/cxx-bool.cpp.out.script: line 1: 22697 Abort trap clang -fsyntax-only Parser/cxx-bool.cpp



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41401 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
f7b2e5527ff496c5011340aca2c789796bfd140d 25-Aug-2007 Chris Lattner <sabre@nondot.org> refactor enough of the top-level parsing logic to parse and
ignore 'namespace foo {}'



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41400 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
8f08cb7d0b97786b17ef05e05caa55aad4d6bd39 25-Aug-2007 Chris Lattner <sabre@nondot.org> refactor enough of the top-level parsing logic to parse and
ignore 'namespace foo {}'



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41400 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
06078d28fdbd047463840f78986c3193e14007af 25-Aug-2007 Chris Lattner <sabre@nondot.org> Split the ASTNode out for compound assignments out from binary operators. Now
they show up in dumps etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
eb14fe839ec24c2ca14e5f094be147a34e3d3339 25-Aug-2007 Chris Lattner <sabre@nondot.org> Split the ASTNode out for compound assignments out from binary operators. Now
they show up in dumps etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41393 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
d10426a074d37ef9ff0bf20b9fee807ee906c79d 25-Aug-2007 Chris Lattner <sabre@nondot.org> Fix clang -parse-ast-dump carbon.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
94f67810bcbdff4cef9177f7727caf91f3e1efa1 25-Aug-2007 Chris Lattner <sabre@nondot.org> Fix clang -parse-ast-dump carbon.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41391 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
03931a70695381cc41ae6f19ddc880d0b2d33cae 24-Aug-2007 Chris Lattner <sabre@nondot.org> Implement sema support for __real/__imag nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dbb36971c68ea944ac4b1fbe2d97fe7cca3b20ac 24-Aug-2007 Chris Lattner <sabre@nondot.org> Implement sema support for __real/__imag nodes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41375 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
51be056a9c4fbb98da0a457eb4b52f34d76ba9e8 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Added child_begin/child_end to all subclasses of Stmt in Stmt.h. All
concrete subclasses of Stmt are now required to implement
child_begin/child_end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8297777fbe19c4d39e8a70c55346474868055fa1 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Added child_begin/child_end to all subclasses of Stmt in Stmt.h. All
concrete subclasses of Stmt are now required to implement
child_begin/child_end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41374 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
3cb01e268be3307b41932fa118e2c88babbfb551 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Implemented child_begin/child_end for our current set of C++ expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
c10d33c01478f2444b2b87aefa090493f028d2d5 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Implemented child_begin/child_end for our current set of C++ expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41368 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
9fdc8a9aba187772c470e52314fce5d1c5b42647 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Finished adding child_begin/child_end to all subclasses of Stmt in Expr.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1237c673c07f9d827129ba02720108816abde562 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Finished adding child_begin/child_end to all subclasses of Stmt in Expr.h.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41366 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
8f708368adf41c6b1ee0e028b574232d609f4e8b 24-Aug-2007 Steve Naroff <snaroff@apple.com> Surpress ImplicitCastExprs for compound assignment expressions. For compound assignments,
it is o.k. for the LHS and RHS to have different types. Converting the type can cause
errors like the one Chris noticed (below).

This change required a fair number of diffs (since there is a lot of shared code
between single and compound assignments). This makes the API's look a bit uglier,
however I couldn't think of a better way to do it (without duplicating code).

Fix the following (incorrect) error:

int A;
long long B;

void foo() {
A /= B;
}

$ clang ~/scalar.c -emit-llvm
/Users/sabre/scalar.c:6:5: error: expression is not assignable
A /= B;
~ ^

Now it works properly...

[dylan:~/llvm/tools/clang] admin% cat compound.c
int A;
long long B;

void foo() {
A /= B;
}
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang compound.c -parse-ast-dump
Read top-level variable decl: 'A'
Read top-level variable decl: 'B'

void foo()
(CompoundStmt 0x2605c40
(BinaryOperator 0x2605c20 'int' '/=' ComputeTy='long long'
(DeclRefExpr 0x2605be0 'int' Decl='A' 0x2605a80)
(DeclRefExpr 0x2605c00 'long long' Decl='B' 0x2605ab0)))




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
9f5fa9bfc37c3e15895cd777e42f3dd8a7ec7a9d 24-Aug-2007 Steve Naroff <snaroff@apple.com> Surpress ImplicitCastExprs for compound assignment expressions. For compound assignments,
it is o.k. for the LHS and RHS to have different types. Converting the type can cause
errors like the one Chris noticed (below).

This change required a fair number of diffs (since there is a lot of shared code
between single and compound assignments). This makes the API's look a bit uglier,
however I couldn't think of a better way to do it (without duplicating code).

Fix the following (incorrect) error:

int A;
long long B;

void foo() {
A /= B;
}

$ clang ~/scalar.c -emit-llvm
/Users/sabre/scalar.c:6:5: error: expression is not assignable
A /= B;
~ ^

Now it works properly...

[dylan:~/llvm/tools/clang] admin% cat compound.c
int A;
long long B;

void foo() {
A /= B;
}
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang compound.c -parse-ast-dump
Read top-level variable decl: 'A'
Read top-level variable decl: 'B'

void foo()
(CompoundStmt 0x2605c40
(BinaryOperator 0x2605c20 'int' '/=' ComputeTy='long long'
(DeclRefExpr 0x2605be0 'int' Decl='A' 0x2605a80)
(DeclRefExpr 0x2605c00 'long long' Decl='B' 0x2605ab0)))




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41364 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtNodes.def
e4acb9c47c9ab4d2e9d5cff04735dcbd59ac84c0 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Began implementing "child iterator" interface for Stmts and Exprs. Each
subclass of Stmt will implement child_begin() and child_end(), which will
be used to iterate over all the children (subexpressions/substatements) of
a Stmt object. This will provide for easy traversal over the AST, which
is useful for a variety of purposes.

None of the interfaces to subclasses of Stmt will be changed (other than
adding the child_begin and child_end methods).

The only caveat is that the implementation of subclasses of Stmt will require
colocating all substatements (subexpressions) in an array. This is because
we define child_iterator as Stmt**. All accessor methods to subexpressions
will need to be altered to reflect this new implementation.

This patch includes the typedefs for child_iterator, as well the implementation
for child_begin/child_end for the primary expressions and some postfix
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41363 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
77ed8e4edf6ed78c53fb20ec3210aff2a59c9d87 24-Aug-2007 Ted Kremenek <kremenek@apple.com> Began implementing "child iterator" interface for Stmts and Exprs. Each
subclass of Stmt will implement child_begin() and child_end(), which will
be used to iterate over all the children (subexpressions/substatements) of
a Stmt object. This will provide for easy traversal over the AST, which
is useful for a variety of purposes.

None of the interfaces to subclasses of Stmt will be changed (other than
adding the child_begin and child_end methods).

The only caveat is that the implementation of subclasses of Stmt will require
colocating all substatements (subexpressions) in an array. This is because
we define child_iterator as Stmt**. All accessor methods to subexpressions
will need to be altered to reflect this new implementation.

This patch includes the typedefs for child_iterator, as well the implementation
for child_begin/child_end for the primary expressions and some postfix
expressions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41363 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
d30e19361364e68f2cbce0ee657edf9dc06c5788 24-Aug-2007 Steve Naroff <snaroff@apple.com> Make sure we get extension diagnostics for GCC's complex extensions.

Now we emit the following when -pedantic-errors is enabled...

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang complex.c -pedantic-errors
complex.c:4:3: error: ISO C does not support '++'/'--' on complex integer types
++x;
^ ~
complex.c:9:7: error: ISO C does not support '~' for complex conjugation
X = ~Y;
^
complex.c:10:7: error: ISO C does not support '~' for complex conjugation
x = ~y;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
084f9ed404a4cb266a2b5343b7bfb8393cf4aeea 24-Aug-2007 Steve Naroff <snaroff@apple.com> Make sure we get extension diagnostics for GCC's complex extensions.

Now we emit the following when -pedantic-errors is enabled...

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang complex.c -pedantic-errors
complex.c:4:3: error: ISO C does not support '++'/'--' on complex integer types
++x;
^ ~
complex.c:9:7: error: ISO C does not support '~' for complex conjugation
X = ~Y;
^
complex.c:10:7: error: ISO C does not support '~' for complex conjugation
x = ~y;
^



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41362 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
87c329f3b3134925198049ebc4f6fb587d289e85 23-Aug-2007 Steve Naroff <snaroff@apple.com> Add helper functions Token::isObjCAtKeyword() and Token::getObjCKeywordID().

Convert all clients to the new cleaner, more robust API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41330 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
861cf3effdc0fbc97d401539bc3050da76b2476f 23-Aug-2007 Steve Naroff <snaroff@apple.com> Add helper functions Token::isObjCAtKeyword() and Token::getObjCKeywordID().

Convert all clients to the new cleaner, more robust API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41330 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Token.h
320956f9547c896722ce891d4b9ab2a84d10cc32 23-Aug-2007 Ted Kremenek <kremenek@apple.com> Refactored "getSubStmt" and "SubStmt" from the CaseStmt and DefaultStmt
class to their common parent class SwitchCase.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
edcc752060be38bfa7e7b32691c0cc4d843622a8 23-Aug-2007 Ted Kremenek <kremenek@apple.com> Refactored "getSubStmt" and "SubStmt" from the CaseStmt and DefaultStmt
class to their common parent class SwitchCase.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41329 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
7443e0f09990abd8b9d73eb56b5c476e98ae452b 23-Aug-2007 Chris Lattner <sabre@nondot.org> detect and diagnose empty case ranges:

switch.c:16:8: warning: empty case range specified
case 100 ... 99: ; // expected-warning {{empty case range}}
^~~~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41328 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
6efc4d3659632ddcea4a58cb62e9ee54ca4a373e 23-Aug-2007 Chris Lattner <sabre@nondot.org> detect and diagnose empty case ranges:

switch.c:16:8: warning: empty case range specified
case 100 ... 99: ; // expected-warning {{empty case range}}
^~~~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41328 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ff2a8c57663f8976360916f3cea8ea6601efa7a3 23-Aug-2007 Ted Kremenek <kremenek@apple.com> Modified CFG to have explicit "Exit" pointer for exit block. This should
have been committed with my previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41324 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
504927ac167053f3b5c2ae38c7ee3fa55bbf3a6c 23-Aug-2007 Ted Kremenek <kremenek@apple.com> Modified CFG to have explicit "Exit" pointer for exit block. This should
have been committed with my previous patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41324 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
2996b4e62611f25f5c388bb7d9a36c547d865f7d 23-Aug-2007 Anders Carlsson <andersca@mac.com> Parse ObjC @protocol expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41320 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
29b2cb1ff1a3dd78edd38e2f43ee7041d3e4ec3c 23-Aug-2007 Anders Carlsson <andersca@mac.com> Parse ObjC @protocol expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41320 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
1a4066d4b8df0cc7383434a0772b665a0a6c6aa0 23-Aug-2007 Chris Lattner <sabre@nondot.org> report duplicate case values. TODO: report duplicate/overlapping ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
b2ec9d6fede9cccc170a202de7bf7f523dea8be4 23-Aug-2007 Chris Lattner <sabre@nondot.org> report duplicate case values. TODO: report duplicate/overlapping ranges.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41315 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
3429a81b729428df85333bf49a4b758f0ccad65f 23-Aug-2007 Chris Lattner <sabre@nondot.org> start checking case values of switch stmts more closely. Emit overflow
warnings when converting case values to the expression type.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41313 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f4021e7d5228a2be5a380269dffa0331a6c78b95 23-Aug-2007 Chris Lattner <sabre@nondot.org> start checking case values of switch stmts more closely. Emit overflow
warnings when converting case values to the expression type.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41313 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a8ee2260ef407e1e23d8e8c183b0dfe0d65a5411 23-Aug-2007 Steve Naroff <snaroff@apple.com> With this commit, we now successfully parse "Cocoa.h"!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41303 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4fa7afd07421e7276d1717e4fdf43a5fdd65a622 23-Aug-2007 Steve Naroff <snaroff@apple.com> With this commit, we now successfully parse "Cocoa.h"!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41303 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
228ed36c06e55b9dcb8ce8cbeffd5faf0b3c9a9f 23-Aug-2007 Steve Naroff <snaroff@apple.com> Fix a misleading comment...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
a5e7df5cc9f486495c55e7dc754dc9efd9bfcf7d 23-Aug-2007 Steve Naroff <snaroff@apple.com> Fix a misleading comment...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41301 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
72f17fbab5fc87f7b68f44656b2e0f025ba5bc6a 23-Aug-2007 Steve Naroff <snaroff@apple.com> Add support for parsing protocols.

Now we can parse quite a bit of "Foundation.h" (a couple bugs remain).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41300 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
7ef58fdbefddf693910e6403a71b3d367444c897 23-Aug-2007 Steve Naroff <snaroff@apple.com> Add support for parsing protocols.

Now we can parse quite a bit of "Foundation.h" (a couple bugs remain).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41300 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
2e41cb30170a23478ee199c5ce8484f697c17370 22-Aug-2007 Ted Kremenek <kremenek@apple.com> Added explicit pointer within class CFG to the Entry block.
Before we assumed that the first block in the list of blocks was the entry
block, but this has posed hurdles during CFG construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
fa2be43dbd6fdc4414e261db69aaf35dfb21a416 22-Aug-2007 Ted Kremenek <kremenek@apple.com> Added explicit pointer within class CFG to the Entry block.
Before we assumed that the first block in the list of blocks was the entry
block, but this has posed hurdles during CFG construction.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41293 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
0bbffd8ed31055dc64532712c552f871e38d1d93 22-Aug-2007 Steve Naroff <snaroff@apple.com> Add support for parsing method prototypes (and other stuff required by @interface).

Still need to finish Parser::ParseObjCMethodDecl(). Before I do, I need to do a minor
refactoring of ParseDeclarationOrFunctionDefinition(), to disallow function definitions.
At the moment, @inteface allows function defs (which is incorrect).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TokenKinds.def
arse/Parser.h
294494e1cce92043562b4680c613df7fd028c02e 22-Aug-2007 Steve Naroff <snaroff@apple.com> Add support for parsing method prototypes (and other stuff required by @interface).

Still need to finish Parser::ParseObjCMethodDecl(). Before I do, I need to do a minor
refactoring of ParseDeclarationOrFunctionDefinition(), to disallow function definitions.
At the moment, @inteface allows function defs (which is incorrect).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41275 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TokenKinds.def
arse/Parser.h
8be1d4083346393791752ecec48c99e499bd252a 22-Aug-2007 Anders Carlsson <andersca@mac.com> Parse @encode expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
f9bcf01f82dfd2688f81e57bcc6300c9b13c51a6 22-Aug-2007 Anders Carlsson <andersca@mac.com> Parse @encode expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41273 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
c5de2228fbca2371924a413536ad11050edc98ad 22-Aug-2007 Ted Kremenek <kremenek@apple.com> Added CFG support for gotos and labels.

Modified CFG so that getEntry(), getExit(), front() and back() return
CFGBlock& instead of CFGBlock*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
0cebe3e29b22d11f2c65ef28fcfb5f0431877266 22-Aug-2007 Ted Kremenek <kremenek@apple.com> Added CFG support for gotos and labels.

Modified CFG so that getEntry(), getExit(), front() and back() return
CFGBlock& instead of CFGBlock*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41258 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
97f7531cdce6c2e875aaae42195d1724053e9f04 21-Aug-2007 Ted Kremenek <kremenek@apple.com> Added CFG infrastructure (CFG.cpp and CFG.h) for clang ASTs.

Added builder code to translate ASTs to CFGs. This currently supports
if, return, and non-control flow statements.

Added pretty-printer to debug CFGs.

Added a "-dump-cfg" option to the clang driver to dump CFGs for code
sent through the frontend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
fddd51853f8ccaa1df2476376e6fd74d2f315c73 21-Aug-2007 Ted Kremenek <kremenek@apple.com> Added CFG infrastructure (CFG.cpp and CFG.h) for clang ASTs.

Added builder code to translate ASTs to CFGs. This currently supports
if, return, and non-control flow statements.

Added pretty-printer to debug CFGs.

Added a "-dump-cfg" option to the clang driver to dump CFGs for code
sent through the frontend.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41252 91177308-0d34-0410-b5e6-96231b3b80d8
ST/CFG.h
c4474990a3f90e61f55d8fa3e022fa1cf2fe9fcb 21-Aug-2007 Steve Naroff <snaroff@apple.com> Implement parsing for objc instance variables.

Next step, method...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TokenKinds.def
arse/Parser.h
ddbff78fb719a645b04bd27099fa6ec8c4693b3c 21-Aug-2007 Steve Naroff <snaroff@apple.com> Implement parsing for objc instance variables.

Next step, method...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41251 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/TokenKinds.def
arse/Parser.h
26116566c7e9a4d286c65fd2c0b81765a9ce0b21 21-Aug-2007 Ted Kremenek <kremenek@apple.com> Added reverse iterators for the body of CompountStmt. These are useful for
CFG construction (among other potential uses).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
4ce854736dd196e2304f554ebeac8b43c89cf9e2 21-Aug-2007 Ted Kremenek <kremenek@apple.com> Added reverse iterators for the body of CompountStmt. These are useful for
CFG construction (among other potential uses).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41248 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
94ac052f0a7c16f1265d1e39158be86129991837 21-Aug-2007 Chris Lattner <sabre@nondot.org> add unary operator support to the stmtvisitor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
13d130c3d225cdb5b1e6d9e86cea12eea718c707 21-Aug-2007 Chris Lattner <sabre@nondot.org> add unary operator support to the stmtvisitor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41242 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
a66cad4cbdef80f34d163983e1d7a79c4cfc5c19 21-Aug-2007 Anders Carlsson <andersca@mac.com> Implement parsing and code generation of Objective-C string literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
5508518a2702b00be3b15a26d772bde968972f54 21-Aug-2007 Anders Carlsson <andersca@mac.com> Implement parsing and code generation of Objective-C string literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41238 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
arse/Parser.h
7a85fa1ba94c9f4cf960463dd3eb444ef6f89446 21-Aug-2007 Chris Lattner <sabre@nondot.org> add getAsComplexType() for consistency


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c6fb90a7246c2d5d3233e70107bf9d8c7c9e535b 21-Aug-2007 Chris Lattner <sabre@nondot.org> add getAsComplexType() for consistency


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41229 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fb3befa4a5029542a98b14395c714637e988759a 21-Aug-2007 Chris Lattner <sabre@nondot.org> Add the comparisons and logical binops to the visitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
2d5049fcbb4cb9b67086de32b806fffd9f856e30 21-Aug-2007 Chris Lattner <sabre@nondot.org> Add the comparisons and logical binops to the visitor.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41227 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
76cb1893629e72f4781b3c308aa8fd554be39d58 21-Aug-2007 Chris Lattner <sabre@nondot.org> Add the ability to visit binary operators without having to
match on binop then explicitly switching again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
03d6fb99224c36935c9af9f4785cb33453c99b2b 21-Aug-2007 Chris Lattner <sabre@nondot.org> Add the ability to visit binary operators without having to
match on binop then explicitly switching again.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41214 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtVisitor.h
66ef2b998a19aadfa01bfec702a8263a81feac84 21-Aug-2007 Chris Lattner <sabre@nondot.org> Now that the visitor is defined in one place, it is nice and easy to allow clients
to have visitors that return non-void.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
e12b4301820bbae6b67a88fa98617dc571331555 21-Aug-2007 Chris Lattner <sabre@nondot.org> Now that the visitor is defined in one place, it is nice and easy to allow clients
to have visitors that return non-void.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41212 91177308-0d34-0410-b5e6-96231b3b80d8
ST/StmtVisitor.h
7ba21fafbb3cd2958bcdcfaf05a213086c185a27 21-Aug-2007 Chris Lattner <sabre@nondot.org> Switch StmtVisitor from using dynamic to static dispatch. This makes it
significantly faster and actually reduces the amount of code in the system.
This also allows for future visitor changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtVisitor.h
c5598cbc4c3f2fb515af7f142f78ff630bdb5c01 21-Aug-2007 Chris Lattner <sabre@nondot.org> Switch StmtVisitor from using dynamic to static dispatch. This makes it
significantly faster and actually reduces the amount of code in the system.
This also allows for future visitor changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41211 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtVisitor.h
a9adf11afa4a6eb66d5ab78dc44b47de18d99295 21-Aug-2007 Steve Naroff <snaroff@apple.com> Added Parser::ParseStructDeclaration() as a result of refactoring Parser::ParseStructUnionBody().

Motivation: Objective-C can now share this rule. It also makes Parser::ParseStructUnionBody()
a bit smaller/cleaner..



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41201 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
28a7ca80da5dd2d0fca75d9a3b7a5f4851712592 21-Aug-2007 Steve Naroff <snaroff@apple.com> Added Parser::ParseStructDeclaration() as a result of refactoring Parser::ParseStructUnionBody().

Motivation: Objective-C can now share this rule. It also makes Parser::ParseStructUnionBody()
a bit smaller/cleaner..



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41201 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
fb36788a4ccc1609d2124ba0a60efae0381be743 20-Aug-2007 Steve Naroff <snaroff@apple.com> Start parsing ObjC classes/categories!

Next step, refactor Parser::ParseStructUnionBody() so that struct declarations can
be shared with Objective-C (for declaring instance variables).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41200 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
dac269b65eed82182fc3e96566dedd6562dfe11e 20-Aug-2007 Steve Naroff <snaroff@apple.com> Start parsing ObjC classes/categories!

Next step, refactor Parser::ParseStructUnionBody() so that struct declarations can
be shared with Objective-C (for declaring instance variables).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41200 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
arse/Parser.h
1c1700f559db902f4c170a5aa0d0d697e06c2fa0 20-Aug-2007 Ted Kremenek <kremenek@apple.com> Modified ArraySubscriptExpr to have accessors getLHS and getRHS in addition
to getBase and getIdx. getBase and getIdx now return a "normalized" view
of the expression (e.g., always "A[4]" instead of possibly "4[A]"). getLHS
and getRHS return the expressions with syntactic fidelity to the original
source code.

Also modified client code of ArraySubscriptExpr, including the AST dumper
and pretty printer, the return-stack value checker, and the LLVM code
generator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2324512285caac0332bbbc6e4cab6245d2a370a1 20-Aug-2007 Ted Kremenek <kremenek@apple.com> Modified ArraySubscriptExpr to have accessors getLHS and getRHS in addition
to getBase and getIdx. getBase and getIdx now return a "normalized" view
of the expression (e.g., always "A[4]" instead of possibly "4[A]"). getLHS
and getRHS return the expressions with syntactic fidelity to the original
source code.

Also modified client code of ArraySubscriptExpr, including the AST dumper
and pretty printer, the return-stack value checker, and the LLVM code
generator.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41180 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1fadcd86b36392e4f31569c22a4a2d2eef6119a9 18-Aug-2007 Ted Kremenek <kremenek@apple.com> Fixed bug in VarDecl::hasAutoStorage: function parameters implicitly have
auto storage, but this routine would incorrectly return false.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
602f754796e00662445d58e1263d168f2b13490a 18-Aug-2007 Ted Kremenek <kremenek@apple.com> Fixed bug in VarDecl::hasAutoStorage: function parameters implicitly have
auto storage, but this routine would incorrectly return false.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
45925abcaca19794f63988d30f4158f4977c0070 17-Aug-2007 Ted Kremenek <kremenek@apple.com> Added extra semantic checking to do basic detection of
"return of stack addresses." ParseReturnStmt now calls CheckReturnStackAddr
to determine if the expression in the return statement evaluates to an
address of a stack variable. If so, we issue a warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41141 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
06de276fff91264437fa75111ed76de43097e089 17-Aug-2007 Ted Kremenek <kremenek@apple.com> Added extra semantic checking to do basic detection of
"return of stack addresses." ParseReturnStmt now calls CheckReturnStackAddr
to determine if the expression in the return statement evaluates to an
address of a stack variable. If so, we issue a warning.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41141 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e7e7aa2c1a2d87e2ac26da4645dd881f66f24763 17-Aug-2007 Anders Carlsson <andersca@mac.com> Add initial support for constant CFStrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41136 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
asic/DiagnosticKinds.def
71993dd85eed9cc42c6b2fa61ee5c53026b74817 17-Aug-2007 Anders Carlsson <andersca@mac.com> Add initial support for constant CFStrings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41136 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Builtins.def
asic/DiagnosticKinds.def
4462cb085276cc634c469057d9c76557421f9054 16-Aug-2007 Steve Naroff <snaroff@apple.com> Fixed Sema::CheckEqualityOperands() and Sema::CheckRelationalOperands() to deal more
thoughtfully with incompatible pointers. This includes:

- Emit a diagnostic when two pointers aren't compatible!
- Promote one of the pointers/integers so we maintain the invariant expected by the
code generator (i.e. that the left/right types match).
- Upgrade the pointer/integer comparison diagnostic to include the types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
e77fd3c15c8c4a2f1225e75d5742b6ad07578913 16-Aug-2007 Steve Naroff <snaroff@apple.com> Fixed Sema::CheckEqualityOperands() and Sema::CheckRelationalOperands() to deal more
thoughtfully with incompatible pointers. This includes:

- Emit a diagnostic when two pointers aren't compatible!
- Promote one of the pointers/integers so we maintain the invariant expected by the
code generator (i.e. that the left/right types match).
- Upgrade the pointer/integer comparison diagnostic to include the types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41127 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
43a30985dfd581255d367932c960e9bd428fbc8a 16-Aug-2007 Ted Kremenek <kremenek@apple.com> Added a comment to ArraySubscriptExpr to note that the expressions like
"A[4]" are equivalent to "4[A]", and that a test that the expression
returned by "getBase()" has a pointer type is required to resolve which
subexpression is the "true" base expression of the array index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
fc4a1601a84d280d7e5c424b77843fdd743beec8 16-Aug-2007 Ted Kremenek <kremenek@apple.com> Added a comment to ArraySubscriptExpr to note that the expressions like
"A[4]" are equivalent to "4[A]", and that a test that the expression
returned by "getBase()" has a pointer type is required to resolve which
subexpression is the "true" base expression of the array index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5c41c215b79370ae71c45d703aa0dbb71b3eb072 15-Aug-2007 Ted Kremenek <kremenek@apple.com> Added the following utility methods to VarDecl that provide
canonicalized queries of a variable's storage:

hasAutoStorage - Does a variable have (implicit) auto storage?

hasStaticStorage - Does a variable have (implicit) static storage?

hasLocalStorage - Is the variable a non-static local variable?

hasGlobalStorage - Is the variable a global variable or a static
local variable?

Additional comments documenting these functions are included in the
source.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
87ce144920a4f9c4cc8d6b021b1d759d7785317c 15-Aug-2007 Ted Kremenek <kremenek@apple.com> Added the following utility methods to VarDecl that provide
canonicalized queries of a variable's storage:

hasAutoStorage - Does a variable have (implicit) auto storage?

hasStaticStorage - Does a variable have (implicit) static storage?

hasLocalStorage - Is the variable a non-static local variable?

hasGlobalStorage - Is the variable a global variable or a static
local variable?

Additional comments documenting these functions are included in the
source.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41092 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
081ed87ede8040ec379846de94c062e4bc7ea238 14-Aug-2007 Ted Kremenek <kremenek@apple.com> Added support for additional format string checking for the printf
family of functions. Previous functionality only included checking to
see if the format string was a string literal. Now we check parse the
format string (if it is a literal) and perform the following checks:

(1) Warn if: number conversions (e.g. "%d") != number data arguments.

(2) Warn about missing format strings (e.g., "printf()").

(3) Warn if the format string is not a string literal.

(4) Warn about the use se of '%n' conversion. This conversion is
discouraged for security reasons.

(5) Warn about malformed conversions. For example '%;', '%v'; these
are not valid.

(6) Warn about empty format strings; e.g. printf(""). Although these
can be optimized away by the compiler, they can be indicative of
broken programmer logic. We may need to add additional support to
see when such cases occur within macro expansion to avoid false
positives.

(7) Warn if the string literal is wide; e.g. L"%d".

(8) Warn if we detect a '\0' character WITHIN the format string.

Test cases are included.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
71895b9aa3ad71957359497e136b50fcb6136bdf 14-Aug-2007 Ted Kremenek <kremenek@apple.com> Added support for additional format string checking for the printf
family of functions. Previous functionality only included checking to
see if the format string was a string literal. Now we check parse the
format string (if it is a literal) and perform the following checks:

(1) Warn if: number conversions (e.g. "%d") != number data arguments.

(2) Warn about missing format strings (e.g., "printf()").

(3) Warn if the format string is not a string literal.

(4) Warn about the use se of '%n' conversion. This conversion is
discouraged for security reasons.

(5) Warn about malformed conversions. For example '%;', '%v'; these
are not valid.

(6) Warn about empty format strings; e.g. printf(""). Although these
can be optimized away by the compiler, they can be indicative of
broken programmer logic. We may need to add additional support to
see when such cases occur within macro expansion to avoid false
positives.

(7) Warn if the string literal is wide; e.g. L"%d".

(8) Warn if we detect a '\0' character WITHIN the format string.

Test cases are included.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41076 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
5ac50b585c1a9dd73a84db81690f4f4f9f0bf339 14-Aug-2007 Ted Kremenek <kremenek@apple.com> Added documentation to StringLiteral noting that the strings returned by
getStrData() are not null-terminated, and the lengths of these strings should
be determined using getByteLength().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
e6a82b2c29ad05534841e5f8fd033fb17b6f61e2 14-Aug-2007 Ted Kremenek <kremenek@apple.com> Added documentation to StringLiteral noting that the strings returned by
getStrData() are not null-terminated, and the lengths of these strings should
be determined using getByteLength().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41055 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2e64c078269a9ab8352b531bda7c3511aee72a8d 10-Aug-2007 Chris Lattner <sabre@nondot.org> initial support for checking format strings, patch by Ted Kremenek:

"I've coded up some support in clang to flag warnings for non-constant format strings used in calls to printf-like functions (all the functions listed in "man fprintf"). Non-constant format strings are a source of many security exploits in C/C++ programs, and I believe are currently detected by gcc using the flag -Wformat-nonliteral."



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
59907c4d8f6fc8aacfdaa0273bd7a9c140fbb45f 10-Aug-2007 Chris Lattner <sabre@nondot.org> initial support for checking format strings, patch by Ted Kremenek:

"I've coded up some support in clang to flag warnings for non-constant format strings used in calls to printf-like functions (all the functions listed in "man fprintf"). Non-constant format strings are a source of many security exploits in C/C++ programs, and I believe are currently detected by gcc using the flag -Wformat-nonliteral."



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41003 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
ac485c1382b200b6d26d23e24adf0d47e5310326 09-Aug-2007 Chris Lattner <sabre@nondot.org> move a switch to common code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
36460eea641bf20a67b8b767b6d26373a90f0965 09-Aug-2007 Chris Lattner <sabre@nondot.org> move a switch to common code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40967 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ExprCXX.h
538590e41d60834560e967650be749112b3bb1ca 09-Aug-2007 Chris Lattner <sabre@nondot.org> minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
06184086c10c6672f4bcc3630a5a2b0bed048f63 09-Aug-2007 Chris Lattner <sabre@nondot.org> minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40966 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
95578787e1c051dcec0637fc0a2e2d22c4829a9c 09-Aug-2007 Chris Lattner <sabre@nondot.org> add a new AST dumper interface (E->dump()). This dumps out
the AST in a structural, non-pretty, form useful for understanding
the AST. It isn't quite done yet, but is already somewhat useful.

For this example:

int test(short X, long long Y) {
return X < ((100));
}

we get (with -parse-ast-dump):

int test(short X, long long Y)
(CompoundStmt 0x2905ce0
(ReturnStmt 0x2905cd0
(BinaryOperator 0x2905cb0 '<'
(ImplicitCastExpr 0x2905ca0
(DeclRefExpr 0x2905c20 Decl='X' 0x2905bb0))
(ParenExpr 0x2905c80
(ParenExpr 0x2905c60
(IntegerLiteral 0x2905c40 100))))))




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
6000dace22f110d8768476989313e9d981d690d0 09-Aug-2007 Chris Lattner <sabre@nondot.org> add a new AST dumper interface (E->dump()). This dumps out
the AST in a structural, non-pretty, form useful for understanding
the AST. It isn't quite done yet, but is already somewhat useful.

For this example:

int test(short X, long long Y) {
return X < ((100));
}

we get (with -parse-ast-dump):

int test(short X, long long Y)
(CompoundStmt 0x2905ce0
(ReturnStmt 0x2905cd0
(BinaryOperator 0x2905cb0 '<'
(ImplicitCastExpr 0x2905ca0
(DeclRefExpr 0x2905c20 Decl='X' 0x2905bb0))
(ParenExpr 0x2905c80
(ParenExpr 0x2905c60
(IntegerLiteral 0x2905c40 100))))))




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40954 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
8d3b170e5cb1700b5cbd227182bc29ca0d16819d 09-Aug-2007 Steve Naroff <snaroff@apple.com> Finish implementing __builtin_classify_type()...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
13b7c5ff42d6077a8d59e2c9ec9e7fedd0150ae6 09-Aug-2007 Steve Naroff <snaroff@apple.com> Finish implementing __builtin_classify_type()...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40951 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
48a87933ae7a1bfc3cbc43879eba6d3510125e88 08-Aug-2007 Steve Naroff <snaroff@apple.com> Add support for __builtin_classify_type(). This builtin function isn't "public", however
it is used by "tgmath.h" (so we need to support it). It might also come in handy when
developing the overloaded function macros for OpenCU.

Next check-in will make this an integer constant expression...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
e8770421d8463db203b78eb96f93a75ea5e58346 08-Aug-2007 Steve Naroff <snaroff@apple.com> Add support for __builtin_classify_type(). This builtin function isn't "public", however
it is used by "tgmath.h" (so we need to support it). It might also come in handy when
developing the overloaded function macros for OpenCU.

Next check-in will make this an integer constant expression...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40930 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Builtins.def
2e3b1d2ed22e5638fa9c55cc1ea5dac4db6aecdc 07-Aug-2007 Chris Lattner <sabre@nondot.org> add some helpers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7effa1aceac1219529af23c776835f855b8d905c 07-Aug-2007 Chris Lattner <sabre@nondot.org> add some helpers


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40901 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
5e4f6bd2743aeff08f409f198b7ab4422c1a57ca 05-Aug-2007 Steve Naroff <snaroff@apple.com> Make sure the good old "function/array conversion" is done to function parameters.

This resulted in the following error...

[dylan:clang/test/Parser] admin% cat parmvardecl_conversion.c
// RUN: clang -parse-ast-check %s

void f (int p[]) { p++; }

[dylan:clang/test/Parser] admin% clang -parse-ast-check parmvardecl_conversion.c
Errors seen but not expected:
Line 3: cannot modify value of type 'int []'

With this fix, the test case above succeeds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
69625f4925646669f68caa234cd9133261acaaa1 05-Aug-2007 Steve Naroff <snaroff@apple.com> Make sure the good old "function/array conversion" is done to function parameters.

This resulted in the following error...

[dylan:clang/test/Parser] admin% cat parmvardecl_conversion.c
// RUN: clang -parse-ast-check %s

void f (int p[]) { p++; }

[dylan:clang/test/Parser] admin% clang -parse-ast-check parmvardecl_conversion.c
Errors seen but not expected:
Line 3: cannot modify value of type 'int []'

With this fix, the test case above succeeds.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40831 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
4048bab9bc3c0aedfa4d564b709da60135db5218 04-Aug-2007 Chris Lattner <sabre@nondot.org> fix constness issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40798 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
c1b607db38501f73c8e1461fc749a6b0e469f157 04-Aug-2007 Chris Lattner <sabre@nondot.org> fix constness issues.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40798 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
893455279ca8cafde80cbf54fb47260ad5255ac8 04-Aug-2007 Steve Naroff <snaroff@apple.com> Restrict vector component access (using "." and "[]") to variables.
Chris suggested this, since it simplifies the code generator.
If this features is needed (and we don't think it is), we can revisit.

The following test case now produces an error.
[dylan:~/llvm/tools/clang] admin% cat t.c

typedef __attribute__(( ocu_vector_type(4) )) float float4;

static void test() {
float4 vec4;

vec4.rg.g;
vec4.rg[1];
}
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang t.c
t.c:8:12: error: vector component access limited to variables
vec4.rg.g;
^~
t.c:9:12: error: vector component access limited to variables
vec4.rg[1];
^~~
2 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40795 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
608e0ee4b4b8c313dd5e1b4407f742d8bff246b3 04-Aug-2007 Steve Naroff <snaroff@apple.com> Restrict vector component access (using "." and "[]") to variables.
Chris suggested this, since it simplifies the code generator.
If this features is needed (and we don't think it is), we can revisit.

The following test case now produces an error.
[dylan:~/llvm/tools/clang] admin% cat t.c

typedef __attribute__(( ocu_vector_type(4) )) float float4;

static void test() {
float4 vec4;

vec4.rg.g;
vec4.rg[1];
}
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang t.c
t.c:8:12: error: vector component access limited to variables
vec4.rg.g;
^~
t.c:9:12: error: vector component access limited to variables
vec4.rg[1];
^~~
2 diagnostics generated.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40795 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
93c53018b1bf9f4299e1469b4b902da997e14471 03-Aug-2007 Steve Naroff <snaroff@apple.com> Implement __builtin_choose_expr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
d04fdd5f99f985abf2e7b7d7d4d427eebe001e55 03-Aug-2007 Steve Naroff <snaroff@apple.com> Implement __builtin_choose_expr.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40794 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
asic/DiagnosticKinds.def
arse/Action.h
9ae0ec74e1a444b7eadbffccee8a72b8f638991f 03-Aug-2007 Chris Lattner <sabre@nondot.org> fix a buggy comment I added


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
dd652cdb7046155437eeb3dff512768f0a57369b 03-Aug-2007 Chris Lattner <sabre@nondot.org> fix a buggy comment I added


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40787 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
a0d03a715738f38c1f7a7e8a757eabd629786ab1 03-Aug-2007 Chris Lattner <sabre@nondot.org> Rename AddrLabel and OCUVectorComponent -> AddrLabelExpr and OCUVectorElementExpr respectively. This is for consistency with other expr nodes end with *Expr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
6481a57fefbf1a313ff439028470fe4c27a3b7a3 03-Aug-2007 Chris Lattner <sabre@nondot.org> Rename AddrLabel and OCUVectorComponent -> AddrLabelExpr and OCUVectorElementExpr respectively. This is for consistency with other expr nodes end with *Expr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40785 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
5054785f432e9c057af52fafbf01d5167d63ef0d 03-Aug-2007 Chris Lattner <sabre@nondot.org> add OCUVectorComponent::getNumComponents()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4d0ac88428b3ed7c6f3a2f4e758ea5424ecd70ae 03-Aug-2007 Chris Lattner <sabre@nondot.org> add OCUVectorComponent::getNumComponents()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40778 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
42158e7b3a95f41d3482f1fb3a67392dbbf745da 03-Aug-2007 Chris Lattner <sabre@nondot.org> Add support for encoding a OCUVectorComponent into a single integer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
b8f849da3cedee2f61ad98389115ddd04e439d60 03-Aug-2007 Chris Lattner <sabre@nondot.org> Add support for encoding a OCUVectorComponent into a single integer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40768 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
9096b795541c783297fb19684a58c54d0fe823b8 03-Aug-2007 Chris Lattner <sabre@nondot.org> rename some helpers, have them return the idx of the field being accessed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40764 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
88dca0464804b8b26ae605f89784c927e8493ddd 03-Aug-2007 Chris Lattner <sabre@nondot.org> rename some helpers, have them return the idx of the field being accessed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40764 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ea255914df6c2d8fb79de53b5c2728b7b69e0d99 03-Aug-2007 Chris Lattner <sabre@nondot.org> mark some methods static, don't consider a vector to be an ocuvector


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40762 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
667405a3b00b04a36537d3a35ab7bdc6e2dd8c38 03-Aug-2007 Chris Lattner <sabre@nondot.org> mark some methods static, don't consider a vector to be an ocuvector


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40762 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f4bf5510976068f53ef19996aa1fbcc7cd3708a0 02-Aug-2007 Chris Lattner <sabre@nondot.org> Minor comment improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
cb92a118145c2a425666068d37c4049c38e24914 02-Aug-2007 Chris Lattner <sabre@nondot.org> Minor comment improvements.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40760 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
0434327934aa574471aac7eb1955cfdc5e32ee5e 02-Aug-2007 Chris Lattner <sabre@nondot.org> switch a fixme to an assert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
4cabcfea26bc3465d8723fe7997ab4a1a657aea8 02-Aug-2007 Chris Lattner <sabre@nondot.org> switch a fixme to an assert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40717 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
18d38be41b6bb22b6f6378c868d237ae13a3d59f 02-Aug-2007 Steve Naroff <snaroff@apple.com> Add a couple const modifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
7f28fe8e00ec4fac17977374d8da491f873a3b05 02-Aug-2007 Steve Naroff <snaroff@apple.com> Add a couple const modifiers.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40708 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
1200b5a897982a428411e5fea413d065f517f996 02-Aug-2007 Steve Naroff <snaroff@apple.com> Hack Expr::isConstantExpr() to allow for __builtin_types_compatible_p.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
389cecc83f33e93c8ba6bf2e8269b8690404416f 02-Aug-2007 Steve Naroff <snaroff@apple.com> Hack Expr::isConstantExpr() to allow for __builtin_types_compatible_p.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40705 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5b5289288e689ff5bafde0af7716f05e076b3d71 02-Aug-2007 Steve Naroff <snaroff@apple.com> - Finish hooking up support for __builtin_types_compatible_p().
- Fix type printing code for recently added TypeOfExpr/TypeOfType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
363bcff47df2fda3cfcfcd994b7888157df58c43 02-Aug-2007 Steve Naroff <snaroff@apple.com> - Finish hooking up support for __builtin_types_compatible_p().
- Fix type printing code for recently added TypeOfExpr/TypeOfType.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40700 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
arse/Action.h
63bad2d3e9e4fecaa6fb9e7ccf4e7419f74a4b16 02-Aug-2007 Steve Naroff <snaroff@apple.com> Add AST/Sema support for __builtin_types_compatible_p (a GNU extension).
Todo...still need to call the action from the parser...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
d34e915f33224c508ad55fbf975bd10b7876e197 02-Aug-2007 Steve Naroff <snaroff@apple.com> Add AST/Sema support for __builtin_types_compatible_p (a GNU extension).
Todo...still need to call the action from the parser...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40693 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
11b649c13734d15817f4780084bb220a338b1431 01-Aug-2007 Steve Naroff <snaroff@apple.com> Two typeof() related changes...

- Changed the name of ASTContext::getTypeOfType(Expr*)->getTypeOfExpr().
- Remove FIXME for TypeOfExpr::getAsStringInternal(). This will work fine for printing the AST. It isn't ideal
for error diagnostics (since it's more natural to display the expressions type).

One "random" (or at least delayed:-) change...

- Changed all "ext_typecheck_*" diagnostics from EXTENSION->WARNING. Reason: Since -pedantic is now
off (by default), these diagnostics were never being emitted (which is bad). With this change, clang will
emit the warning all the time. The only downside (wrt GCC compatibility) is -pedantic-errors will not turn
this diagnostics into errors (a "feature" of making tagging them with EXTENSION). When/if this becomes
an issue, we can revisit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
8d1a3b8ca1e5fcc4567b5a6f51d82be2e460de1c 01-Aug-2007 Steve Naroff <snaroff@apple.com> Two typeof() related changes...

- Changed the name of ASTContext::getTypeOfType(Expr*)->getTypeOfExpr().
- Remove FIXME for TypeOfExpr::getAsStringInternal(). This will work fine for printing the AST. It isn't ideal
for error diagnostics (since it's more natural to display the expressions type).

One "random" (or at least delayed:-) change...

- Changed all "ext_typecheck_*" diagnostics from EXTENSION->WARNING. Reason: Since -pedantic is now
off (by default), these diagnostics were never being emitted (which is bad). With this change, clang will
emit the warning all the time. The only downside (wrt GCC compatibility) is -pedantic-errors will not turn
this diagnostics into errors (a "feature" of making tagging them with EXTENSION). When/if this becomes
an issue, we can revisit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40676 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/DiagnosticKinds.def
b0fdfd50e1e4011486d5cb3773e1e87c8ec4325a 31-Jul-2007 Chris Lattner <sabre@nondot.org> move trivial type predicates inline.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
611c1fff195d32df97706e0920c92468b2509900 31-Jul-2007 Chris Lattner <sabre@nondot.org> move trivial type predicates inline.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40651 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
e35a104a7d5caf8fa71117fbaa6f18cacc53c7a7 31-Jul-2007 Chris Lattner <sabre@nondot.org> split the rest of the type predicates into pure predicates:
there is now an isXXXType and a getAsXXXType


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
c8629630ce3e7f0da231bf10a4b39240caaac68a 31-Jul-2007 Chris Lattner <sabre@nondot.org> split the rest of the type predicates into pure predicates:
there is now an isXXXType and a getAsXXXType


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40646 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
f0c4a0a830c9154b1ae72e497c2ce586c10e9b71 31-Jul-2007 Chris Lattner <sabre@nondot.org> rename isReferenceType to follow the new scheme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
a1d9fdea79ba7bbd71862b9f9f78f5f117331fc7 31-Jul-2007 Chris Lattner <sabre@nondot.org> rename isReferenceType to follow the new scheme.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40640 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7931f4a186bc76b21dd4629ee74d64264a7fb8a2 31-Jul-2007 Chris Lattner <sabre@nondot.org> make isPointerType() a pure predicate, rename the
existing one to getAsPointerType()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
befee48ff2a1dab236c5700f00ecca1cfdcd5837 31-Jul-2007 Chris Lattner <sabre@nondot.org> make isPointerType() a pure predicate, rename the
existing one to getAsPointerType()


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40639 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7cbb14653934a298c09002b87704dc6531261771 31-Jul-2007 Steve Naroff <snaroff@apple.com> Add parsing and AST support for GNU "typeof".
Many small changes to lot's of files.
Still some FIXME's, however the basic support is in place.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
arse/DeclSpec.h
arse/Parser.h
d1861fd633d5096a00777c918eb8575ea7162fe7 31-Jul-2007 Steve Naroff <snaroff@apple.com> Add parsing and AST support for GNU "typeof".
Many small changes to lot's of files.
Still some FIXME's, however the basic support is in place.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40631 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
arse/DeclSpec.h
arse/Parser.h
6154214e20225a883a8a00226499534e9b514315 30-Jul-2007 Steve Naroff <snaroff@apple.com> Upgrade a comment...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
fcac0fff877a461bc5d5a57e6c6727a4c819d95a 30-Jul-2007 Steve Naroff <snaroff@apple.com> Upgrade a comment...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40585 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ba67f698f4380bf0533195e7332f45501c10504e 30-Jul-2007 Steve Naroff <snaroff@apple.com> Finish up semantic analysis for vector components.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
fec0b49c3fa621fbf63e420f3d54a5bb3a0265d2 30-Jul-2007 Steve Naroff <snaroff@apple.com> Finish up semantic analysis for vector components.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40584 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
asic/DiagnosticKinds.def
82113e3a7b26c1a4b71d253c86de95f87cc8892e 29-Jul-2007 Steve Naroff <snaroff@apple.com> Implement pretty diagnostics when doing on-the-fly vector sizing (for vector component access).

For example, before this commit, the following diagnostics would be emitted...

ocu.c:49:12: error: incompatible types assigning 'float __attribute__((ocu_vector_type(3)))' to 'float4'
vec4_2 = vec4.rgb; // shorten
~~~~~~ ^ ~~~~~~~~
ocu.c:51:7: error: incompatible types assigning 'float __attribute__((ocu_vector_type(2)))' to 'float'
f = vec2.xx; // shorten
~ ^ ~~~~~~~

Now, the diagnostics look as you would expect...

ocu.c:49:12: error: incompatible types assigning 'float3' to 'float4'
vec4_2 = vec4.rgb; // shorten
~~~~~~ ^ ~~~~~~~~
ocu.c:51:7: error: incompatible types assigning 'float2' to 'float'
f = vec2.xx; // shorten
~ ^ ~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40579 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
bea0b34d99dddb7829857bbc96628713ab9c274b 29-Jul-2007 Steve Naroff <snaroff@apple.com> Implement pretty diagnostics when doing on-the-fly vector sizing (for vector component access).

For example, before this commit, the following diagnostics would be emitted...

ocu.c:49:12: error: incompatible types assigning 'float __attribute__((ocu_vector_type(3)))' to 'float4'
vec4_2 = vec4.rgb; // shorten
~~~~~~ ^ ~~~~~~~~
ocu.c:51:7: error: incompatible types assigning 'float __attribute__((ocu_vector_type(2)))' to 'float'
f = vec2.xx; // shorten
~ ^ ~~~~~~~

Now, the diagnostics look as you would expect...

ocu.c:49:12: error: incompatible types assigning 'float3' to 'float4'
vec4_2 = vec4.rgb; // shorten
~~~~~~ ^ ~~~~~~~~
ocu.c:51:7: error: incompatible types assigning 'float2' to 'float'
f = vec2.xx; // shorten
~ ^ ~~~~~~~



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40579 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
c11705f9b742b542724dd56796bf90e07191e342 29-Jul-2007 Steve Naroff <snaroff@apple.com> Added a new expression, OCUVectorComponent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
ST/Type.h
31a458462c6cf417a84e0c47852b18fb22d79acb 29-Jul-2007 Steve Naroff <snaroff@apple.com> Added a new expression, OCUVectorComponent.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40577 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
ST/Type.h
1b8a46c945927340ae7e79b771e93e7d36da4851 28-Jul-2007 Steve Naroff <snaroff@apple.com> Implement syntax/semantic analysis for OCU Vector Components.
Next step, AST support...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticKinds.def
e1b31fedbc006e6e4071bbb4f74c6116b56cfa9f 28-Jul-2007 Steve Naroff <snaroff@apple.com> Implement syntax/semantic analysis for OCU Vector Components.
Next step, AST support...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40568 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
asic/DiagnosticKinds.def
806b319509d01bffe47317f11140c930da800dbb 26-Jul-2007 Steve Naroff <snaroff@apple.com> Add Type::isOCUVectorType().
Convert isFunctionType(), isStructureType(), and isUnionType() to the new API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
7064f5c95bbdb17680d0ea658d4090898c2592d3 26-Jul-2007 Steve Naroff <snaroff@apple.com> Add Type::isOCUVectorType().
Convert isFunctionType(), isStructureType(), and isUnionType() to the new API.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40541 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
2cb6638a26cfa999e5fb999e6af9211127e681c1 26-Jul-2007 Steve Naroff <snaroff@apple.com> Various improvements to Sema::ParseMemberReferenceExpr().

- Added source range support to Diag's.
- Used the new type predicate API to remove dealing with the canonical
type explicitly.
- Added Type::isRecordType().
- Removed some casts.
- Removed a const qualifier from RecordType::getDecl().




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
dfa6aae5a119a527e537c35566ba3272fd8c5d74 26-Jul-2007 Steve Naroff <snaroff@apple.com> Various improvements to Sema::ParseMemberReferenceExpr().

- Added source range support to Diag's.
- Used the new type predicate API to remove dealing with the canonical
type explicitly.
- Added Type::isRecordType().
- Removed some casts.
- Removed a const qualifier from RecordType::getDecl().




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40508 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
756440670c6e7f338b95d38bc5ad82b70cf65b00 25-Jul-2007 Steve Naroff <snaroff@apple.com> - Fix commit in Parser.h (patch by Kevin Andre).
- Add comment and minor cleanup to yesterday's fix to ParseCallExpr().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40492 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
82c7e6d8215567935d3d52741ccca9876a8ea461 25-Jul-2007 Steve Naroff <snaroff@apple.com> - Fix commit in Parser.h (patch by Kevin Andre).
- Add comment and minor cleanup to yesterday's fix to ParseCallExpr().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40492 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
4b0096578e961587d1ec0ed5dce45f592a65ed41 25-Jul-2007 Chris Lattner <sabre@nondot.org> Fix a couple of bugs, add some new cool stuff.

1. Fix a todo in Parser::ParseTag, to recover better. On code like
that in test/Sema/decl-invalid.c it causes us to return a single
error instead of multiple.
2. Fix an error in Sema::ParseDeclarator, where it would crash if the
declarator didn't have an identifier. Instead, diagnose the problem.
3. Start adding infrastructure to track the range of locations covered
by a declspec or declarator. This is mostly implemented for declspec,
but could be improved, it is missing for declarator.

Thanks to Neil for pointing out this crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40482 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/ASTContext.h
ST/Builtins.def
ST/Builtins.h
ST/Decl.h
ST/Expr.h
ST/ExprCXX.h
ST/RecordLayout.h
ST/Stmt.h
ST/StmtNodes.def
ST/StmtVisitor.h
ST/Type.h
asic/Diagnostic.h
asic/DiagnosticKinds.def
asic/FileManager.h
asic/LangOptions.h
asic/SourceLocation.h
asic/SourceManager.h
asic/TargetInfo.h
asic/TokenKinds.def
asic/TokenKinds.h
odeGen/ModuleBuilder.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/IdentifierTable.h
ex/Lexer.h
ex/LiteralSupport.h
ex/MacroExpander.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/Pragma.h
ex/Preprocessor.h
ex/ScratchBuffer.h
ex/Token.h
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
ema/ASTStreamer.h
e80a59cc41d42a970466cb020b6f44c5b8831d70 25-Jul-2007 Chris Lattner <sabre@nondot.org> Fix a couple of bugs, add some new cool stuff.

1. Fix a todo in Parser::ParseTag, to recover better. On code like
that in test/Sema/decl-invalid.c it causes us to return a single
error instead of multiple.
2. Fix an error in Sema::ParseDeclarator, where it would crash if the
declarator didn't have an identifier. Instead, diagnose the problem.
3. Start adding infrastructure to track the range of locations covered
by a declspec or declarator. This is mostly implemented for declspec,
but could be improved, it is missing for declarator.

Thanks to Neil for pointing out this crash.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40482 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
asic/SourceLocation.h
arse/DeclSpec.h
700204c74b455746752e851b25565ebf932f5340 24-Jul-2007 Steve Naroff <snaroff@apple.com> Fix Sema::ParseCallExpr()...it wasn't doing the default array/function promotions on it's argument types.

This resulted in the following errors when compiling promote_types_in_proto.c test...

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang test/Parser/promote_types_in_proto.c
test/Parser/promote_types_in_proto.c:7:24: error: incompatible types passing 'char *[]' to function expecting 'char *const []'
arrayPromotion(argv);
~~~~~~~~~~~~~~ ^~~~
test/Parser/promote_types_in_proto.c:8:27: error: incompatible types passing 'void (char *const [])' to function expecting 'void (char *const [])'
functionPromotion(arrayPromotion);
~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~
2 diagnostics generated.

When fixing this, noticed that both ParseCallExpr() and ParseReturnStmt() were prematurely comparing types for
equivalence. This is incorrect (since the expr. promotions haven't been done yet). To fix this, I moved the
check "down" to Sema::CheckAssignmentConstraints().

I also converted Type::isArrayType() to the modern API (since I needed it). Still more Type predicates to
convert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40475 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ab18c4c0ac1a46a38aa84c2c8ea485612e21a614 24-Jul-2007 Chris Lattner <sabre@nondot.org> implement ast building and trivial semantic analysis of stmt exprs.
This implements test/Sema/stmt_exprs.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40465 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Stmt.h
ST/StmtNodes.def
arse/Action.h
d8e3083840fef752d11ca183f42786470ed061e3 24-Jul-2007 Chris Lattner <sabre@nondot.org> Use a smallstring instead of an std::string in FileChanged to avoid some malloc traffic.

This speeds up -E on xalancbmk by 2.4%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40461 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/Lexer.h
5e36a7a89da5d69ece23fc8228624a053f75c645 24-Jul-2007 Chris Lattner <sabre@nondot.org> Add a cache to SourceManager to accellerate line # lookup. This is a
bottleneck for -E computation, because every token that starts a line needs
to determine *which* line it is on (so -E mode can insert the appropriate
vertical whitespace). This optimization improves this common case where
it is striding through the line # table.

This speeds up -E on xalancbmk by 3.2%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40459 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
8a87e57beb96212ee61dc08a5f691cd7f7710703 23-Jul-2007 Chris Lattner <sabre@nondot.org> correctly verify that default and case are in a switchstmt,
this fixes test/Sema/switch.c.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40438 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
f1c99acc544a4e70f308db4e7200ca04cd5a06d2 23-Jul-2007 Chris Lattner <sabre@nondot.org> refactor the interface to Preprocessor::GetIncludeFilenameSpelling,
no functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40414 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Preprocessor.h
448cec4c1c3705f6f49ffdefb58a7329942a2dd8 22-Jul-2007 Chris Lattner <sabre@nondot.org> Change hte lexer to start a start pointer to the underlying
memorybuffer instead of a pointer to the memorybuffer itself. This
reduces coupling and eliminates a pointer dereference on a hot path.
This speeds up -Eonly on 483.xalancbmk by 2.1%


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40394 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9960ae8ecfa2c4278dac708a02e463f83fdf17e8 22-Jul-2007 Chris Lattner <sabre@nondot.org> Implement a simple cache in headersearch. This speeds up
preprocessing 483.xalancbmk by about 10%, reducing the number
of file lookup queries from 2139411 to 199466 (over 10x)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40390 91177308-0d34-0410-b5e6-96231b3b80d8
ex/HeaderSearch.h
c1fcb7762673be706b0a40477d5e93411e918f93 22-Jul-2007 Anders Carlsson <andersca@mac.com> Refactor switch analysis to make it possible to detect duplicate case values

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40388 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
ST/StmtNodes.def
arse/Action.h
arse/Scope.h
bd24776a825a18a59067c68a9d32f2d22e4cbf79 22-Jul-2007 Chris Lattner <sabre@nondot.org> when running in -E mode on multiple files, there is no reason to accumulate
fileid's and macroid's across files. Clearing between files keeps the tables
smaller and slightly speeds up compilation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40383 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
9c683062752a26014197df1c8792a19efa9e93cf 22-Jul-2007 Chris Lattner <sabre@nondot.org> Fix a really subtle bug in the macro expander caching code, where
redefinition of a macro could cause invalid memory to be deleted.
Found preprocessing 253.perlbmk.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40380 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
d1623a81992a24abbfcd5520b32a0dd90857b8a8 21-Jul-2007 Chris Lattner <sabre@nondot.org> Add support for reusing macroid's with negative physical loc deltas. This
keeps the MacroInfo table more compact.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40281 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
aa4166c6c86e174362c0dc4e2cb63345f72cc5a0 21-Jul-2007 Chris Lattner <sabre@nondot.org> implement getSourceRange for ImplicitCast


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40264 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
4565d4e83cec55356fe9c75929579eacced9da36 21-Jul-2007 Chris Lattner <sabre@nondot.org> better wording for an error, suggested by Neil.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40163 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
227426661be33ff3e21f2b6b9f97971da2da044f 21-Jul-2007 Anders Carlsson <andersca@mac.com> Implement code generation for __func__, __FUNCTION__ and __PRETTY_FUNCTION__

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40162 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
arse/Action.h
0fa152e72bb71c4aa184d0edd91caa9cbebbf70e 21-Jul-2007 Chris Lattner <sabre@nondot.org> Two fixes:
1) fix a crash on test/Sema/default.c by making
sure that the switch scope is non-null.
2) if there is an error sema'ing a default or case stmt,
make sure to return the substmt up, so that the error
recovery code has more acurate info to continue with.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40134 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
942cfd37297528918616d06cd6e4e8bd6e4915a2 20-Jul-2007 Chris Lattner <sabre@nondot.org> Fix a valgrind error noticed by Benoit Boissinot


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40113 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
31bb8be680ee2facf7fbb3c6c87b9bbd20248328 20-Jul-2007 Chris Lattner <sabre@nondot.org> improve comments, implement a trivial single-entry cache in
SourceManager::getInstantiationLoc. With this change, every token
expanded from a macro doesn't get its own MacroID. :)

This reduces # macro IDs in carbon.h from 16805 to 9197



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40108 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
d217773f106856a11879ec79dc468efefaf2ee75 20-Jul-2007 Chris Lattner <sabre@nondot.org> At one point there were going to be lexer and parser tokens.
Since that point is now long gone, we should rename LexerToken to
Token, as it is the only kind of token we have.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40105 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/LexerToken.h
ex/LiteralSupport.h
ex/MacroExpander.h
ex/MacroInfo.h
ex/Pragma.h
ex/Preprocessor.h
ex/Token.h
arse/Action.h
arse/Parser.h
25bdb51276d3bfc180a68688082071505a00ed27 20-Jul-2007 Chris Lattner <sabre@nondot.org> simplify the lexer ctor to take a SLoc instead of a sloc and a redundant buffer*.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40104 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9dc1f530c086d2c16f8cba758b0f59a5bf41323a 20-Jul-2007 Chris Lattner <sabre@nondot.org> Reimplement SourceLocation. Instead of having a
fileid/offset pair, it now contains a bit discriminating between
mapped locations and file locations. This separates the tables for
macros and files in SourceManager, and allows better separation of
concepts in the rest of the compiler. This allows us to have *many*
macro instantiations before running out of 'addressing space'.

This is also more efficient, because testing whether something is a
macro expansion is now a bit test instead of a table lookup (which
also used to require having a srcmgr around, now it doesn't).

This is fully functional, but there are several refinements and
optimizations left.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40103 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceLocation.h
asic/SourceManager.h
ex/Lexer.h
aff1edd84aaafef15b737acd8ec61abcca6d6bc3 19-Jul-2007 Steve Naroff <snaroff@apple.com> Finish fixing crasher with compound literals.

We still need to do sematic analysis (and implement initializers), however this
should complete the parsing & ast building for compound literals.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40067 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
4aa88f8d8469ced8fe04a0c411bbccc5d313e055 19-Jul-2007 Steve Naroff <snaroff@apple.com> Work towards fixing crasher with compound literals...

Before this commit, we crashed in ParseBinOp...

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang -parse-ast-check compound_literal.c
SemaExpr.cpp:1298: failed assertion `(rhs != 0) && "ParseBinOp(): missing right expression"'

With this commit, we still crash in the newly added action ParseCompoundLiteral (which is progress:-)

[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang -parse-ast-check compound_literal.c
SemaExpr.cpp:478: failed assertion `(Op != 0) && "ParseCompoundLiteral(): missing expression"'

The crash go away once the actions return AST nodes. I will do this in a separate commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40032 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Action.h
76e773a443be9f006610f46529e07d4c8d857680 18-Jul-2007 Chris Lattner <sabre@nondot.org> implement i-c-e correct evaluation for sizeof/alignof, remove some obsolete fixme's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40012 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
5d2a6303467184b1f159bb6556efc434e50e3c28 18-Jul-2007 Chris Lattner <sabre@nondot.org> implement sizeof/alignof support for structs, unions and complex.

This allows us to compile this:

struct abc { char A; double D; };

int foo() {
return sizeof(struct abc);
return __alignof__(struct abc);
}

Into:

ret i32 16
ret i32 8



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40010 91177308-0d34-0410-b5e6-96231b3b80d8
ST/RecordLayout.h
ST/Type.h
73322924127c873c13101b705dd823f5539ffa5f 18-Jul-2007 Steve Naroff <snaroff@apple.com> First round of extended vector support. Here is an overview...

- added ocu_vector_type attribute, Sema::HandleOCUVectorTypeAttribute().
- added new AST node, OCUVectorType, a subclass of VectorType.
- added ASTContext::getOCUVectorType.
- changed ASTContext::convertToVectorType() to ASTContext::getVectorType(). This is
unrelated to extended vectors, however I was in the vicinity and it was on my todo list.
Added a FIXME to Sema::HandleVectorTypeAttribute to deal with converting complex types.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40007 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
asic/DiagnosticKinds.def
464175bba1318bef7905122e9fda20cff926df78 18-Jul-2007 Chris Lattner <sabre@nondot.org> initial layout support for structures and unions. This isn't actually
hooked up to anything, so it's not very useful yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40006 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/RecordLayout.h
a8fe39eb2b955253c113162533d62b555f389de7 18-Jul-2007 Chris Lattner <sabre@nondot.org> add accessors


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40005 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
6c36be5b383875b490684bcf439d6d427298c1af 18-Jul-2007 Chris Lattner <sabre@nondot.org> Add initial switch stmt support, patch by Anders Carlsson!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39989 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Stmt.h
asic/DiagnosticKinds.def
arse/Action.h
arse/Scope.h
251dcaf8616c6f04051e214f35cadb7de42aef7e 17-Jul-2007 Bill Wendling <isanbard@gmail.com> Return the correct type from isReferenceType().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39956 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
08ad47cbd1f81fcb31dbc731c13b885a07e12704 17-Jul-2007 Bill Wendling <isanbard@gmail.com> Fix references:
According to the spec (C++ 5p6[expr]), we need to adjust "T&" to
"T" before further analysis. We do this via the "implicit cast"
thingy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39953 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
16beff840865ce36794e495bce10fd0a3e473ab0 17-Jul-2007 Steve Naroff <snaroff@apple.com> Implement semantic analysis for the cast operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39943 91177308-0d34-0410-b5e6-96231b3b80d8
asic/DiagnosticKinds.def
a2c7767ce7d8feb10253f4b650826a20f3324c6f 17-Jul-2007 Chris Lattner <sabre@nondot.org> In the final step for preserving typedef info better in the AST, upgrade
isPointerType and isVectorType to only look through a single level of typedef
when one is present. For this invalid code:

typedef float float4 __attribute__((vector_size(16)));
typedef int int4 __attribute__((vector_size(16)));
typedef int4* int4p;
void test(float4 a, int4p result, int i) {
result[i] = a;
}

we now get:

t.c:5:15: error: incompatible types assigning 'float4' to 'int4'
result[i] = a;
~~~~~~~~~ ^ ~

instead of:

t.c:5:15: error: incompatible types assigning 'float4' to 'int __attribute__((vector_size(16)))'
result[i] = a;
~~~~~~~~~ ^ ~

The rest of the type predicates should be upgraded to do the same thing.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39932 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
ca51c97fbb10b9d48e1857e01c532493f87cd5f0 16-Jul-2007 Bill Wendling <isanbard@gmail.com> Constify the is*Lvalue() methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39907 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
97ba77cf09bf7b83b679165ce67ad7d49ffd568c 16-Jul-2007 Chris Lattner <sabre@nondot.org> Add a new Preprocessor::AdvanceToTokenCharacter method which, given a sloc
specifying the start of a token and a logical (phase 3) character number,
returns a sloc representing the input character corresponding to it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39905 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
ex/Preprocessor.h
f66d3e390fac1dce6b0e3ff1a3d0180638e560f6 16-Jul-2007 Chris Lattner <sabre@nondot.org> factor a common predicate into a static method.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39903 91177308-0d34-0410-b5e6-96231b3b80d8
ex/Lexer.h
9505581a3a89dec7f4fa323dd3e23ca9c3bcdce2 16-Jul-2007 Chris Lattner <sabre@nondot.org> Doug Gregor pointed out that _Complex actually isn't C++ at all.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39898 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TokenKinds.def
d4b80f1a0e946aa38c5db7d6f8afcdf05ed57116 16-Jul-2007 Chris Lattner <sabre@nondot.org> Add support for C++'0x keywords, patch by Doug Gregor



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39897 91177308-0d34-0410-b5e6-96231b3b80d8
asic/LangOptions.h
asic/TokenKinds.def
7a2e047c602d6ba28d6c434c990d4b9f7ef8c694 16-Jul-2007 Chris Lattner <sabre@nondot.org> Now that isPointerType can return a pointer type, avoid stripping off typedef
information in the common case. On this invalid code:

typedef float float4 __attribute__((vector_size(16)));
typedef int int4 __attribute__((vector_size(16)));
void test(float4 a, int4 *result, int i) {
result[i] = a;
}

we now generate:
t.c:5:15: error: incompatible types assigning 'float4' to 'int4'
instead of:
t.c:5:15: error: incompatible types assigning 'float4' to 'int __attribute__((vector_size(16)))'

This implements test/Sema/typedef-retain.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39892 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
3acb13805673d47be95829bd5a4b1707952c0b6f 16-Jul-2007 Chris Lattner <sabre@nondot.org> as a very useful feature, make isVectorType and isPointerType return
the actual vectortype or pointertype when they return success.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39890 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Type.h
26dc7b39267b7d29b35a7887a5b8e54697192192 16-Jul-2007 Chris Lattner <sabre@nondot.org> Remove an extraneous QualType from CastExpr, it's type is always
the result type of the expr node.

Implement isIntegerConstantExpr for ImplicitCastExpr nodes the same
was as for CastExpr nodes.

Implement proper sign/zero extension as well as truncation and noop
conversion in the i-c-e evaluator. This allows us to correctly
handle i-c-e's like these:

char array[1024/(sizeof (long))];
int x['\xBb' == (char) 187 ? 1: -1];

this implements test/Sema/i-c-e2.c



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39888 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
2eadfb638eb1bb6ccfd6fd0453e764d47e27eed9 16-Jul-2007 Chris Lattner <sabre@nondot.org> set the correct width for a character literal when evaluating it as an i-c-e.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39886 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
590b6646ef747d2f7b42e5f40487ff07642d7b6f 16-Jul-2007 Chris Lattner <sabre@nondot.org> Refactor code so that isIntegerConstantExpr has an ASTContext available.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39884 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/Type.h
abca2bba54197256f2830f757218cfbea2ed9cd1 15-Jul-2007 Chris Lattner <sabre@nondot.org> Change SourceManager::getInstantiationLoc to take virtual locations, doing its
virtual->physical mapping explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39867 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
fa2eaabd304172dd8afc561f6156a65f8d0e442b 15-Jul-2007 Steve Naroff <snaroff@apple.com> This is the final step/commit for implementing exlicit implicit casts. Unlike the
previous two checkins, which involved lot's of tedious refactoring, this checkin is nice and clean:-)

- Hacked UsualUnaryConversions, UsualArithmeticConversions, and DefaultFunctionArrayConversion
to create the AST node (using a helper function promoteExprToType).
- Added a setType method to Expr.
- Changed Expr::isIntegerConstantExpr to allow for the new node.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39866 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
9594acf32de2939b15eafa8fe818607bfc56bf66 15-Jul-2007 Chris Lattner <sabre@nondot.org> Cache macro expander objects to avoid thrashing malloc in heavy expansion situations.
This doesn't significantly improve carbon.h, but it does speed up
INPUTS/macro_pounder_obj.c by 48%



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39864 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroExpander.h
ex/Preprocessor.h
9e344c65b1e8b83e1d3ada507cf653526ff2c005 15-Jul-2007 Chris Lattner <sabre@nondot.org> Make parser scope cache be a member of the parser instead of a global,
which makes it multithread clean.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39863 91177308-0d34-0410-b5e6-96231b3b80d8
arse/Parser.h
25c9648909193d380a4e135d2e3d25394ba12922 15-Jul-2007 Chris Lattner <sabre@nondot.org> switch function-like macros from using a vector for their arguments to an
explicitly new'd array. The array never mutates once created, so a vector
is overkill.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39862 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
f46f68b5587b6933a92260220567ea7c36924a80 15-Jul-2007 Chris Lattner <sabre@nondot.org> switch from using a vector to a smallvector for macro replacement tokens
This speeds up parsing carbon.h by 3.3% by avoiding some malloc traffic for
small macros.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39861 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
c215bd659d8266a1d6b66ce231a63405a4c61daf 15-Jul-2007 Chris Lattner <sabre@nondot.org> expose an iterator interface to getReplacementTokens instead of the datastructure itself.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39860 91177308-0d34-0410-b5e6-96231b3b80d8
ex/MacroInfo.h
d2d2a11a91d7ddf468bfb70f66362d24806ed601 14-Jul-2007 Chris Lattner <sabre@nondot.org> A significant refactoring of the type size stuff to also
compute type alignment. This info is needed for struct layout.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39850 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
asic/TargetInfo.h
90045e8ebabf50d6f1b3a67081a621b20b5e5341 14-Jul-2007 Steve Naroff <snaroff@apple.com> More changes related to implementing ImplicitCastExpr.

- Fixed a recent regression discovered by Keith Bauer (thanks!).
The fix involved adding (back) two arguments to UsualArithmeticConversions.
Without the reference arguments, no unary conversions were being passed back
to the caller. This had the effect of turning off the UsualUnaryConversions.
- Refactored CheckAssignmentConstraints into 3 functions. CheckAssignmentConstraints,
CheckSingleAssignmentConstraints, and CheckCompoundAssignmentConstraints.
- Changed the argument type of DefaultFunctionArrayConversion from QualType->Expr*&.
- Removed a bunch of casts in routines I was working on (cleanup).
- Fixed the visitor for ImplicitCastExpr (oops).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39840 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
692233e90a99c3a81dd04879d36eb9688f137c44 14-Jul-2007 Chris Lattner <sabre@nondot.org> Use target info to decide the sizes of basic types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39838 91177308-0d34-0410-b5e6-96231b3b80d8
asic/TargetInfo.h
a7674d8a9a69f3f6fe16e70cf2a3b2b15fb7c43d 14-Jul-2007 Chris Lattner <sabre@nondot.org> Move getSize() out of type, into ASTContext, where it has target info, and
where ASTContext can manage caches for struct layout, etc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39835 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
d0d560a0975c2f8c4a9559e84ec556b6a0baf7df 13-Jul-2007 Chris Lattner <sabre@nondot.org> eliminate extraneous type, add accessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39830 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
49b4526992a8c8a6a290aa3efa9828154a24af8d 13-Jul-2007 Steve Naroff <snaroff@apple.com> Add (explicit) AST support for implicit casts. This should simplify the
code generator. Source translation tools can simply ignore this node.

- Added a new Expr node, ImplicitCastExpr.
- Changed UsualUnaryConversions/UsualArithmeticConversions to take references
to Expr *'s. This will allow these routines to instantiate the new AST node
and pass it back.
- Changed all clients of UsualUnary/UsualArithmetic (lot's of diff's).
- Changed some names in CheckConditionalOperands. Several variables where
only distinguished by their case (e.g. Cond, cond). Yuck (what was I thinking).
- Removed an old/crufty constructor in CastExpr (cleanup).

This check-in does not actually create the new AST node. I wanted to separate
the mechanical changes from the semantic changes. In addition, I need to
coordinate with Chris, since the semantic change will break the code generator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39814 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Expr.h
ST/StmtNodes.def
88a69ad80e1550e9932666e6efa050a5b1223889 13-Jul-2007 Chris Lattner <sabre@nondot.org> implement support for basic codegen of global variables with no initializers.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39795 91177308-0d34-0410-b5e6-96231b3b80d8
odeGen/ModuleBuilder.h
8b9023ba35a86838789e2c9034a6128728c547aa 13-Jul-2007 Chris Lattner <sabre@nondot.org> Implement codegen for + and - with pointers. Patch contributed by
Keith Bauer.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39793 91177308-0d34-0410-b5e6-96231b3b80d8
ST/ASTContext.h
ST/Type.h
6fa5f0943a84233b2e1ec9716eae55643225bfd4 12-Jul-2007 Chris Lattner <sabre@nondot.org> Fix "no newline at end of file" warnings. Patch contributed by
Benoit Boissinot!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39780 91177308-0d34-0410-b5e6-96231b3b80d8
ex/LiteralSupport.h
9dc62f044a6ba21f503bd56607d94b32704e7945 12-Jul-2007 Chris Lattner <sabre@nondot.org> Improve portability to compilers where <cassert> is not implicitly
included. Patch contributed by Benoit Boissinot!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39779 91177308-0d34-0410-b5e6-96231b3b80d8
asic/SourceManager.h
ex/IdentifierTable.h
ex/Lexer.h
ex/MacroInfo.h
f86638365f4801ec2d2970f7c0663e94590618b8 12-Jul-2007 Chris Lattner <sabre@nondot.org> Allow this to compile on compilers where <string>
doesn't imply <cassert>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39778 91177308-0d34-0410-b5e6-96231b3b80d8
asic/Diagnostic.h
3724c00ab70b1f86ae1afa01587c4cb811570433 12-Jul-2007 Chris Lattner <sabre@nondot.org> add missing specification for a default argument. I guess g++ 4.0 doesn't
notice this.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39776 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
24c3990cd2469f9692c4b0c3edea4fba67baaf6e 12-Jul-2007 Chris Lattner <sabre@nondot.org> remember the initializer for a variable in the AST and teach the
pretty printer to print it.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39770 91177308-0d34-0410-b5e6-96231b3b80d8
ST/Decl.h
5f016e2cb5d11daeb237544de1c5d59f20fe1a6e 11-Jul-2007 Reid Spencer <rspencer@reidspencer.com> Stage two of getting CFE top correct.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39734 91177308-0d34-0410-b5e6-96231b3b80d8
ST/AST.h
ST/ASTContext.h
ST/Builtins.def
ST/Builtins.h
ST/Decl.h
ST/Expr.h
ST/ExprCXX.h
ST/Stmt.h
ST/StmtNodes.def
ST/StmtVisitor.h
ST/Type.h
asic/Diagnostic.h
asic/DiagnosticKinds.def
asic/FileManager.h
asic/LangOptions.h
asic/SourceLocation.h
asic/SourceManager.h
asic/TargetInfo.h
asic/TokenKinds.def
asic/TokenKinds.h
odeGen/ModuleBuilder.h
ex/DirectoryLookup.h
ex/HeaderSearch.h
ex/IdentifierTable.h
ex/Lexer.h
ex/LexerToken.h
ex/LiteralSupport.h
ex/MacroExpander.h
ex/MacroInfo.h
ex/MultipleIncludeOpt.h
ex/PPCallbacks.h
ex/Pragma.h
ex/Preprocessor.h
ex/ScratchBuffer.h
arse/Action.h
arse/AttributeList.h
arse/DeclSpec.h
arse/Parser.h
arse/Scope.h
ema/ASTStreamer.h